UriZzz 1 004 Опубликовано 17 Мая 2021 Поделиться Опубликовано 17 Мая 2021 (изменено) Привет всем. Вопрос такой глупый: Допускается ли такое оформление условий определяющих значение переменной? Скрытый текст if uslovie_1 then var = 1 elseif uslovie_2 then var = 2 end function blablabla() if tratata == true then metod(var) end end Изменено 17 Мая 2021 пользователем UriZzz Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
I am Dead 912 Опубликовано 17 Мая 2021 Поделиться Опубликовано 17 Мая 2021 @UriZzz По факту да, если обозначенная локальная переменная. 1 Ссылка на комментарий
UriZzz 1 004 Опубликовано 17 Мая 2021 Поделиться Опубликовано 17 Мая 2021 (изменено) @I am Dead То есть выше просто объявить local var ? Хм, надо будет потестировать, когда доберусь до компьютера. Изменено 17 Мая 2021 пользователем UriZzz Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
Norman Eisenherz 313 Опубликовано 17 Мая 2021 Поделиться Опубликовано 17 Мая 2021 Здрасьте. Кто умеет читать C++, подскажите, что должен делать следующий код (платформа ЗП): Spoiler [xrGame\ui\UIComboBox.cpp] void CUIComboBox::disable_id(int id) { if(m_disabled.end()==std::find(m_disabled.begin(),m_disabled.end(),id)) m_disabled.push_back(id); } void CUIComboBox::enable_id(int id) { xr_vector<int>::iterator it = std::find(m_disabled.begin(),m_disabled.end(),id); if(m_disabled.end()!=it) m_disabled.erase(it); } Ожидаемый результат: отключение и обратное включение строки с заданным id в выпадающем списке CUIComboBox(). Видимый результат отсутствует: строка не удаляется и не становится неактивной, а методы CurrentID() и GetTextOf(id) дают старые значения при ее выборе. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
naxac 2 445 Опубликовано 18 Мая 2021 Поделиться Опубликовано 18 Мая 2021 (изменено) @Norman Eisenherz , это работает только с комбо-боксами, используемыми для игровых опций. После disable/enable_id нужно вызвать SetCurrentOptValue - только там заполняется лист с проверкой по этому m_disabled. Изменено 18 Мая 2021 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Zander_driver 10 334 Опубликовано 18 Мая 2021 Поделиться Опубликовано 18 Мая 2021 10 часов назад, Norman Eisenherz сказал(а): Кто умеет читать C++ Добавляет / убирает id в список m_disabled. И собственно все, больше показанный код ничего не делает. А этот m_disabled уже в свою очередь, используется... 36 минут назад, naxac сказал(а): для игровых опций. После disable/enable_id нужно вызвать SetCurrentOptValue - только там заполняется лист с проверкой по этому m_disabled. Но, никто не запрещает при желании, использовать этот же m_disabled где-нибудь еще и для чего-то более другого, для чего потребуется код свой написать. 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 19 Мая 2021 Поделиться Опубликовано 19 Мая 2021 Господа, вопрос к знатокам логики нпс. 1) Возможно ли в логике нпс вызвать скриптовую функцию? Например по сигналу. 2) логику же можно переключать в зависимости от инфопорций. А можно переключать логику в зависимости от какого нибудь скриптового прекондишена, как это сделано в диалогах, например? Ссылка на комментарий
Это популярное сообщение. naxac 2 445 Опубликовано 19 Мая 2021 Это популярное сообщение. Поделиться Опубликовано 19 Мая 2021 @_Sk8_AsTeR_ , 1) on_signal = sig_name| %=func% Функция func должна находится в файле xr_effects.script. Если нужно передать в функцию аргументы, то так: on_signal = sig_name| %=func(arg1:arg2)% Примеров в файлах игры море. 2) on_info = {=precond} new_section_logic Функция precond должна находиться в файле xr_conditions.script. Примеров, опять же, хватает. 2 2 3 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Капрал Хикс 532 Опубликовано 19 Мая 2021 Поделиться Опубликовано 19 Мая 2021 Я тут снова по поводу боевой схемы БТРов... Немного, КМК, разобрался в её работе, в итоге в db.script: Скрытый текст creature = {} monster_stock = {} function add_obj( obj ) - корректно ли тут производится проверка и добавление сталкеров и монстров? if IsStalker(obj) then creature[obj:id()] = true monster_stock[obj:id()] = false elseif IsMonster(obj) then creature[obj:id()] = false monster_stock[obj:id()] = true end end function del_obj( obj ) storage [obj:id()] = nil if IsStalker(obj) or IsMonster(obj) then creature[obj:id()] = nil end end Собственно не очень красивая функция апдейта друзей и врагов в ph_car.script: Скрытый текст function action_car:update_friends_and_target() if self.st.fire_target == "monsters" then for k in pairs(db.monster_stock) do local obj = level.object_by_id(k) if obj and IsMonster(obj) and obj:alive() and self.car:IsObjectVisible(obj) then self.target_obj = obj self.state_firetarget = state_firetarget_enemy end end end if self.st.fire_target == "stalker_group" then --for a=1,65534,1 do --local obj = level.object_by_id(a) for k in pairs(db.creature) do local obj = level.object_by_id(k) if obj and IsStalker(obj) and obj:alive() and obj:character_community()=="stalker" and self.car:IsObjectVisible(obj) then self.target_obj = obj self.state_firetarget = state_firetarget_enemy end end end end По ней такой вопрос... if obj and IsMonster(obj) and obj:alive() and self.car:IsObjectVisible(obj) then if obj and IsStalker(obj) and obj:alive() and obj:character_community()=="stalker" and self.car:IsObjectVisible(obj) then - тут вроде выделенные жирным проверки лишние? Ведь если объекты берутся из for k in pairs(db.monster_stock) и for k in pairs(db.creature) do, там же уже была соотв. проверка: function add_obj( obj ) if IsStalker(obj) then creature[obj:id()] = true monster_stock[obj:id()] = false elseif IsMonster(obj) then creature[obj:id()] = false monster_stock[obj:id()] = true end end Просьба не пинать :), хочу разобраться и сделать идеальный ph_car.script с рабочей боевой схемой и правками от переворачивания машин. Ссылка на комментарий
I am Dead 912 Опубликовано 20 Мая 2021 Поделиться Опубликовано 20 Мая 2021 Обрыл весь форум, но так нашёл ответа. Как запустить анимацию через add_cam_effector циклично? Ссылка на комментарий
Manool 145 Опубликовано 20 Мая 2021 Поделиться Опубликовано 20 Мая 2021 2 часа назад, I am Dead сказал(а): Как запустить анимацию через add_cam_effector циклично Вот так - level.add_cam_effector("camera_effects\\earthquake.anm", 2002, true, "") true в данном случае и определяет повторять ли анимацию. Объединённый Пак OGSR Engine Ссылка на комментарий
I am Dead 912 Опубликовано 20 Мая 2021 Поделиться Опубликовано 20 Мая 2021 @Manool Странно, так она и вовсе не запускается. Ссылка на комментарий
Norman Eisenherz 313 Опубликовано 21 Мая 2021 Поделиться Опубликовано 21 Мая 2021 Здрасьте. ЗП 1.6.02. Задача: вывести поверх инвентаря окно с набором дочерних статиков. Ссылка level.main_input_receiver() отсутствует, остается отслеживание режима инвентаря в [actor_menu.script] и вывод окна поверх через add_dialog_to_render с небольшой задержкой. Проблема 1: любые дочерние окна рендер-статика не видны, даже если применить к метод Show(true) – каждый элемент приходится выводить по отдельности. Проблема 2: рендер-статик выводится поверх всех элементов инвентаря, включая всплывающие окна с информацией. Кроме варианта "вырезать область в текстуре инвентаря и подставить ее обратно через AddCustomStatic вместе с новым окном", как можно решить задачу? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 334 Опубликовано 22 Мая 2021 Поделиться Опубликовано 22 Мая 2021 13 часов назад, Norman Eisenherz сказал(а): Проблема 2: рендер-статик выводится поверх всех элементов инвентаря, включая всплывающие окна с информацией. Естественно. А почему должно быть иначе, если вы скриптами статик прилепили? 13 часов назад, Norman Eisenherz сказал(а): как можно решить задачу? Править движок. В принципе, вполне мыслимо написать и экспортировать в скрипты, методы позволяющие лепить свои статики не поверх, а прямо к выбранным-интересующим элементам интерфейса. Только зачем такие костыли нужны... не знаю. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Norman Eisenherz 313 Опубликовано 22 Мая 2021 Поделиться Опубликовано 22 Мая 2021 @Zander_driver Есть пара модов, которые хотелось бы повторить в ЗП. Вот такой, например: https://drive.google.com/file/d/1yMX6bX03M0ge8kEsI2UCU_RhtzeC7NeJ. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 22 Мая 2021 Поделиться Опубликовано 22 Мая 2021 Ребят, нужна еще помощь по логике. Пытаюсь в логике вызвать функцию по сигналу [walker1@truba1] on_signal = test | %=test% path_walk = test_walk path_look = test_look no_move = false В итоге функция ставится на апдейт. А как вызвать её только один раз? Ссылка на комментарий
WinCap 316 Опубликовано 23 Мая 2021 Поделиться Опубликовано 23 Мая 2021 @_Sk8_AsTeR_, например так: [walker1@truba1] on_signal = test | {-inf_vizov_test_odin_raz} %+inf_vizov_test_odin_raz =test% on_info = {+povod_pereiti_v_druguyu_sekciyu} walker@next %-inf_vizov_test_odin_raz% 2 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
STALKER_Dragon 3 Опубликовано 24 Мая 2021 Поделиться Опубликовано 24 Мая 2021 Доброго времени суток. Задался тут вопросом: а что в сталкере происходит после смерти актора? Чисто теоретически, ничего не изменяется, можно даже сделать сделать проверку на смерть и какие-то действия NPC, если проверка вернула true. Из этого вытекает вопрос: а можно ли сделать респавн актора без загрузки сохранений? Покопавшись в скриптах, я выяснил, что за создание актора отвечают функции add_actor в файле db.script, a также скрипт actor_proxy.script. Кроме того, в мультиплеере респавн актора возможен. Как он там реализован? Применим ли этот механизм к синглу? Команды alife():release по отношению к актору, даже метвому, не работает. Что произойдет ,если скриптово удалить актора, а затем заспавнит по координатам? Ссылка на комментарий
naxac 2 445 Опубликовано 25 Мая 2021 Поделиться Опубликовано 25 Мая 2021 22 часа назад, STALKER_Dragon сказал(а): Что произойдет ,если скриптово удалить актора, а затем заспавнит по координатам? А что мешает проверить? Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Капрал Хикс 532 Опубликовано 25 Мая 2021 Поделиться Опубликовано 25 Мая 2021 Помогите разобраться, а то я забуксовал на ровном месте. Дано: скрипт использования предметов со звуками. Мне нужно следующее: при использовании определённого предмета и наличии двух инфопоршней проигрывать звук и выполнять функцию из другого скрипта, если поршней нет - не играть звук и спавнить предмет обратно в инвентарь (он съедобный, на классе антирада). Вот скрипт в упрощённом виде: Скрытый текст local tSound ={ cocacola = "scripts\\inv_drinking",item = "scripts\\inv_item" - предмет и звук для него } function using_items(obj) local sect = obj:section() local actor = db.actor if obj and tSound[obj:section()] then local snd = xr_sound.get_safe_sound_object(tSound[obj:section()]) if snd then snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0) end end if obj then if sect == "item" then if has_alife_info("info_1") and - поршень 1 has_alife_info("info_2") then - поршень 2 script.final_action() - выполнить функцию из другого скрипта end else amk.spawn_item_in_inv("item") - спавн обратно в инвентарь end end end Сейчас без наличия инфопоршней предмет просто "съедается" и звук всё равно проигрывается.... Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти