Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
I am Dead 918 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 @ARTLantist Функция такая я как понял в OGSR моде присутствует. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381939
ARTLantist 16 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 @I am Dead так у тебя ОГСР? Тогда другое дело. Там и итератор тебе сразу есть, и эти проверки - is_on_belt, is_on_ruck и куча всего другого. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381940
I am Dead 918 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 (изменено) @ARTLantist Тогда вопрос уже другой, как эту функцию переделать под огср. Скрытый текст -- переносим все вещи из ящика с указанным story_id function transfer_from_box(box_sid) local box = level_object_by_sid(box_sid) if box then box:iterate_inventory_box(function(item) box:transfer_item(item, db.actor) end) end end С такой функцией у меня идет ругань на iterate_inventory_box так как в движке его нету, происходит вылет. Изменено 28 Апреля 2021 пользователем I am Dead Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381941
Stalkersof 232 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 Рнебята пытаюсь прикрутить гуи окно с двумя кнопками к функции обыска монстров. function generic_object_binder:use_callback(obj, who) if self.use_flag == nil and self.object:section()~="m_trader" then self.object:set_nonscript_usable(false) self.use_flag = true end -------------------------- -------------------------- -------------------------- NewUI4.main() --self:mutanter_use(obj,who) end Разделил функцию на две. Где self:mutanter_use(obj,who) это все действия по обыску трупов. NewUI4.main() это собственно окно с двумя кнопками. Если вызываю из окна при нажатии кнопки скрипт валиться из за отсутствия переменных. Если функцию без окна запускаю все работает. Вызываю собственно так. function NewUI4:button1_button_clicked() bind_monster.generic_object_binder:mutanter_use() --bind_monster.generic_object_binder:mutanter_use(obj,who) self:Hide() end Freeplay Graphic Mod(FGM) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381944
I am Dead 918 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 @Stalkersof Попробуй так сделать: Скрытый текст function generic_object_binder:use_callback(obj, who) if self.use_flag == nil and self.object:section()~="m_trader" then self.object:set_nonscript_usable(false) self.use_flag = true end -------------------------- -------------------------- -------------------------- level.start_stop_menu(NewUI4.main(), true) --self:mutanter_use(obj,who) end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381945
Stalkersof 232 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 44 минуты назад, I am Dead сказал(а): @Stalkersof Попробуй так сделать: Показать function generic_object_binder:use_callback(obj, who) if self.use_flag == nil and self.object:section()~="m_trader" then self.object:set_nonscript_usable(false) self.use_flag = true end -------------------------- -------------------------- -------------------------- level.start_stop_menu(NewUI4.main(), true) --self:mutanter_use(obj,who) end Не а не получается. NewUI4.main() это скрипт и функция в нем. Окно появляется и кнопки и все. function main() local hud = NewUI4(get_hud()) level.start_stop_menu(hud, true) end Попытаюсь еще раз объяснить проблему функция self:mutanter_use(obj,who) вызываемая непосредственно в скрипте. Прекрасно работает. Комментирую ее и пытаюсь вызвать при нажатии кнопки вылет. Либо не корректные параметры либо отсутствие параметров. Т.е вот это (obj,who)я не могу передать из другого скрипта. Freeplay Graphic Mod(FGM) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381949
ARTLantist 16 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 @Stalkersof заведомо безнадёжная идея делать так, как сделано у тебя. При смерти мутанта в биндере он отлавливается и все действия относятся к нему, а когда ты хочешь заупустить из другой функции что-то из биндера монстров, ты уже теряешь этого монстра. Используй логические переменные и пересылай их в свой скрипт с ГУИ окном, там после нажатия кнопки делай true и в апдейте биндера монстров отлавливай момент, когда эта переменная true, выполняй нужные действия. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381951
Stalkersof 232 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 2 минуты назад, ARTLantist сказал(а): @Stalkersof заведомо безнадёжная идея делать так, как сделано у тебя. При смерти мутанта в биндере он отлавливается и все действия относятся к нему, а когда ты хочешь заупустить из другой функции что-то из биндера монстров, ты уже теряешь этого монстра. Используй логические переменные и пересылай их в свой скрипт с ГУИ окном, там после нажатия кнопки делай true и в апдейте биндера монстров отлавливай момент, когда эта переменная true, выполняй нужные действия. Вроде с переменными тоже пробовал. Хорошо еще раз попробую. Freeplay Graphic Mod(FGM) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381952
ARTLantist 16 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 (изменено) @I am Dead ну, либо лезть в движок, либо костыльно как-то перебирать все предметы в ящике. Как вариант, попробуй так: Скрытый текст local cnt = box:object_count() for i=0, cnt-1 do local item = box:object(i) --нужные действия end Сразу говорю, что не ручаюсь за работоспособность у inventory_box, я эту функцию раньше использовал только для актора @Stalkersof и вообще, зачем тебе обратно ссылаться на биндер монстров? Можно же в скрипте с ГУИ выдать все нужные предметы и не забивать себе голову. Изменено 28 Апреля 2021 пользователем ARTLantist Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381953
Stalkersof 232 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 11 минут назад, ARTLantist сказал(а): @Stalkersof и вообще, зачем тебе обратно ссылаться на биндер монстров? Можно же в скрипте с ГУИ выдать все нужные предметы и не забивать себе голову. У меня там не только предметы(запчасти) чтение конфига монстра, удар ножом, хит монстру и анимация. Мне вот это и актор нужен там и монстр(obj,who) надо. Freeplay Graphic Mod(FGM) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381954
ARTLantist 16 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 1 минуту назад, Stalkersof сказал(а): и актор нужен там и монстр(obj,who) Перешли их в скрипт с ГУИ окном: NewUI4.main(obj,who) и там уже устанавливай в той функции function main(obj,who) self.actor = who self.monstr = obj --и далее нужное и всё. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381956
Space.Marine 466 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 Попросил помощи с проверкой скрипта на предыдущей странице, но в виду "оживлённой" беседы моё сообщение, видимо, просто осталось без внимания... Попрошу ешо раз: Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1381974
Biblia 4 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 @ARTLantist я все переправил уже. Сделал плюс-минус как ты, только естесн, параметры назвал по-другому Вот еще вопрос: может кто-то может подсказать мод на ЗП, в котором была перенесена из ТЧ скриптовая система фейк слотов с ножом, фонариком и т.д. Просто ввиду того, что еще новичок - скрипты-то совместить я умею, и даже что-то элементарное написать, но вот перенести с одной платформы на другую... Ибо я просто не знаю различий в функциях и т.д. Потому и спрашиваю, может что-то готовое есть 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382000
ARTLantist 16 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 (изменено) 9 часов назад, Biblia сказал(а): Просто ввиду того, что еще новичок - скрипты-то совместить я умею, и даже что-то элементарное написать, но вот перенести с одной платформы на другую... Ибо я просто не знаю различий в функциях и т.д. Пробуй, экспериментируй - что-то да получится. Это самый лучший способ научиться что-то делать. А вообще, я не вижу смысла всех этих костылей-фейк слотов, когда можно залезть в движок и за 5 минут прописать настоящие, нормально работающие слоты. Изменено 28 Апреля 2021 пользователем ARTLantist 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382099
naxac 2 605 Опубликовано 28 Апреля 2021 Поделиться Опубликовано 28 Апреля 2021 (изменено) @Stalkersof , тебе надо при вызове гуя сохранить ссылку на биндер. Например, так: function generic_object_binder:use_callback(obj, who) if self.use_flag == nil and self.object:section()~="m_trader" then self.object:set_nonscript_usable(false) self.use_flag = true end local wnd = NewUI4.main() level.start_stop_menu( wnd, true ) wnd.owner = self -- сохраняем ссылку на биндер --self:mutanter_use(obj,who) end А потом в гуе вызывать нужную функцию так: function NewUI4:button1_button_clicked() self.owner:mutanter_use() self:Hide() end Изменено 29 Апреля 2021 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382107
Biblia 4 Опубликовано 29 Апреля 2021 Поделиться Опубликовано 29 Апреля 2021 @ARTLantist были бы у меня исходники движка СТКоПа версии 3.4 - я бы так и сделал. Но так как вынужден работать с тем, что имею - только фейк-слоты. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382110
ARTLantist 16 Опубликовано 29 Апреля 2021 Поделиться Опубликовано 29 Апреля 2021 @Biblia не поверишь, точно такая же проблема у меня была. Я просто скачал более старый пак, который не требует установки библиотек движка, и всё. Поверь, возможность править движок куда важнее, чем красивый оружейный пак. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382113
Biblia 4 Опубликовано 29 Апреля 2021 Поделиться Опубликовано 29 Апреля 2021 @ARTLantist на красивый ОП мне как-то по-барабану. Туеву кучу моделей сейчас можно найти и добавить в стулкер. Просто оптимизация 3д прицелов и их реализация лучшая, что я встречал. Товарищ Мортан там потрудился на славу. Да и я просто хочу накатить маленькую сборку для души. И заключительный вопрос: кол-во артов на поясе в ЗП зашито в двигле? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382114
_Sk8_AsTeR_ 122 Опубликовано 29 Апреля 2021 Поделиться Опубликовано 29 Апреля 2021 Господа, доброго времени! Возникла необходимость перманентно держать на экране определенную информацию. Решил использовать шаблон из туториала: "нажмите "клавиша" чтобы присесть" В конфиге имеем: Скрытый текст <item><!-- Для того чтобы пройти под невысоким препятствием - нажмите клавишу "ctrl" $$ACTION_CROUCH$$--> <length_sec>5</length_sec> <pause_state>off</pause_state> <guard_key/> <sound/> <cursor_pos/> <pda_section/> <grab_input>0</grab_input> <main_wnd> <auto_static start_time="0" length_sec="5000" x="712" y="475" width="400" height="150" alignment="c" stretch="1" light_anim="" la_cyclic="1" la_texture="1" la_alpha="1"> <window_name>w1</window_name> <text font="graffiti22" r="225" g="225" b="250" a="255">crouch_tutorial</text> </auto_static> </main_wnd> </item> <length_sec>5</length_sec> - время показа 5 секунд (если я правильно понял). А как сделать вывод информации бесконечным? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382135
ARTLantist 16 Опубликовано 29 Апреля 2021 Поделиться Опубликовано 29 Апреля 2021 (изменено) 5 часов назад, Biblia сказал(а): кол-во артов на поясе в ЗП зашито в двигле да. 1 час назад, _Sk8_AsTeR_ сказал(а): А как сделать вывод информации бесконечным? function xxx() local hud = get_hud() if (hud) then hud:AddCustomStatic("static", true) hud:GetCustomStatic("static"):wnd():TextControl():SetTextST(game.translate_string("text")) end end static - название твоего статического элемента в ui_custom_msgs.xml Скрытый текст <static x="200" y="70" width="600" height="50" ttl="3"> <text font="graffiti32" r="240" g="217" b="182" a="255" align="c">text(нужный текст)</text> </static> потом удаляешь тогда, когда тебе захочется: Скрытый текст function yyy() local hud = get_hud() if (hud) then local custom_static = hud:GetCustomStatic("dosimeter_rad") if custom_static ~= nil then hud:RemoveCustomStatic("dosimeter_rad") end end end Изменено 29 Апреля 2021 пользователем ARTLantist 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/557/#findComment-1382137
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти