AndrewMor 526 Опубликовано 9 Августа Поделиться Опубликовано 9 Августа 03.08.2024 в 02:19, ted.80 сказал: последняя строчка eat_portions_num = -1 обозначает что предмет можно есть бесконечно он не пропадает из инвентаря и спавнить заново не нужно - пользуйся Надо ж, не знал, впервые слышу 1 Сталкер - наше всё! Ссылка на комментарий
Капрал Хикс 500 Опубликовано 9 Августа Поделиться Опубликовано 9 Августа @Labadal , добавил строчку с выводом в лог, получил в консоли красным такое при заходе в спейс-рестриктор: ! Unknown command: -1 Вылета нет. Ссылка на комментарий
Labadal 59 Опубликовано 9 Августа Поделиться Опубликовано 9 Августа (изменено) @Капрал Хикс Так у тебя всё работает. -1 значит, что задание у тебя не взято. local task_status = db.actor:get_task_state("тут пишешь id квеста", 0) -- id квеста из <game_task id="id квеста"> if task_status == 0 then -- Действия, если задание провалено elseif task_status == 2 then -- Действия, если задание выполнено elseif task_status == 1 then -- Действия, если задание активно elseif task_status == -1 then -- Действия, если задания нет ни в проваленных, ни в выполненных, ни в активных (твой случай) end Изменено 9 Августа пользователем Labadal 1 God save Hatsune Miku! Ссылка на комментарий
Капрал Хикс 500 Опубликовано 9 Августа Поделиться Опубликовано 9 Августа (изменено) @Labadal , очень странно... Буду перепроверять все названия, может где-то опечатка. Изменено 9 Августа пользователем Капрал Хикс Ссылка на комментарий
Капрал Хикс 500 Опубликовано 11 Августа Поделиться Опубликовано 11 Августа Разобрался... Работает, но есть нюанс. Корректно проверяется название взятого квеста из файла game_tasks_by_vendor.xml, например eliminate_lager_trader. Т.е., как я понимаю, проверяется наличие взятого у квестодателя любого квеста данного типа. Если подставить название конкретного квеста из task_manager.ltx, например tm_eliminate_camp_1, то проверка не срабатывает. Ссылка на комментарий
naxac 2 414 Опубликовано 11 Августа Поделиться Опубликовано 11 Августа @Капрал Хикс , все верно, ведь это не id таска, а секция в конфиге. Если тебе нужно проверить состояние конкретного цикличного квеста, нужно это делать в task_manager.script 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Капрал Хикс 500 Опубликовано 11 Августа Поделиться Опубликовано 11 Августа 3 часа назад, naxac сказал: нужно это делать в task_manager.script Вот там я и завис. Ну, пока меня и такой вариант устроит. Ещё бы награду информацией (инфопоршнем) за выполнение квеста прикрутить из АМК, но опять натыкаюсь на вылеты. Когда-то бы прикрутил на раз. Наверное сюда ткнусь за помощью. Ссылка на комментарий
Это популярное сообщение. naxac 2 414 Опубликовано 12 Августа Это популярное сообщение. Поделиться Опубликовано 12 Августа (изменено) 20 часов назад, Капрал Хикс сказал: Вот там я и завис Выглядит это примерно так: local tm = task_manager.get_random_task() local status = tm.task_info["секция_квеста_из_task_manager.ltx"].status if status == "selected" then -- если это задание взято и активно в данный момент, то... end Изменено 12 Августа пользователем naxac 1 3 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Labadal 59 Опубликовано 13 Августа Поделиться Опубликовано 13 Августа Подскажите функцию, которая при вызове удалит все трупы с локации? (вообще все, и мутантов и сталкеров, и кто бы угодно там ещё не умер) God save Hatsune Miku! Ссылка на комментарий
Stalkersof 115 Опубликовано 13 Августа Поделиться Опубликовано 13 Августа Посмотри скрипт sak_off_corpses.script есть во многих модах. Ну или в браузере набери уборщик трупов. Есть разные модификации этого скрипта. 1 1 Ссылка на комментарий
Labadal 59 Опубликовано 13 Августа Поделиться Опубликовано 13 Августа [spawner] cond = {+info_portion} При выдаче поршня спавнится нпс. Можно сделать так, чтоб при заборе поршня он деспавнился, причем чтоб при выдаче поршня обратно - появлялся снова? God save Hatsune Miku! Ссылка на комментарий
Kirgudu 1 172 Опубликовано 14 Августа Поделиться Опубликовано 14 Августа (изменено) 16 часов назад, Labadal сказал: При выдаче поршня спавнится нпс. Про OGSR не скажу; в оригинальной игре прямого способа нет, однако можно придумать обходные. 1. Маленькая поправка: он не спавнится (происходит это уже в самом начале игры), а выходит в онлайн. Соответствующая проверка на, то что ему уже можно выйти в онлайн, делается здесь: se_stalker.se_stalker:can_switch_online(). Для обеспечения обратного перехода в оффлайн можно попробовать доработать зеркальную функцию se_stalker.se_stalker:can_switch_offline() так, чтобы при отсутствии инфопорции она выдавала всегда true, но там потребуется ещё, наверное, правильное завершение текущих работ. Сам не пробовал, поэтому не могу сказать, насколько такой вариант работоспособен. 2. Есть альтернативный способ: при старте игры объект сразу удалять (именно удалять, а не оставлять в оффлайне), в нужный момент спавнить, в другой снова удалять и далее по кругу. Способ описан здесь, пояснения по использованию пару лет назад давались здесь (см. пост по ссылке и несколько следующих постов на той же и следующей страницах). Запуск спавна объекта можно при этом организовать с помощью функции, вызываемой из элемента инфопорции action (см. здесь), а запуск его удаления, скажем, в его логике по проверке отсутствия нужной инфопорции. Способов много. Изменено 14 Августа пользователем Kirgudu 1 2 1 1 Инструмент Ссылка на комментарий
Labadal 59 Опубликовано 15 Августа Поделиться Опубликовано 15 Августа (изменено) @Kirgudu всё оказалось куда проще: [spawner] cond = {+info_portion} выдаешь info_portion - нпс появляется (выходит в онлайн) забираешь info_portion - нпс исчезает (уходит в оффлайн) Изменено 15 Августа пользователем Labadal 1 God save Hatsune Miku! Ссылка на комментарий
Kirgudu 1 172 Опубликовано 16 Августа Поделиться Опубликовано 16 Августа Значит, я ошибся, и первый пункт из упомянутых выше работает без всяких изменений в коде. Хорошо, если так. 1 Инструмент Ссылка на комментарий
Labadal 59 Опубликовано 19 Августа Поделиться Опубликовано 19 Августа Возможны ли инклуды в скриптах? у меня в _g скрипте есть несколько каллбеков из XRE: callback["on_item_belt"] = 130 callback["on_item_ruck"] = 131 callback["on_item_slot"] = 132 callback["entity_alive_before_hit"] = 152 вроде как они должны хранится в _g, но я хочу вынести их в отдельный файл, и заинклудить в _g. если так можно, конечно. Подскажите, пожалуйста. В настройках есть пункт, позволяющий кушать аптечки. Для этого есть какая-то функция в скриптах, или это полностью движковая штука? В каком порядке используются аптечки? Рандомно? или есть какой-то приоритет? God save Hatsune Miku! Ссылка на комментарий
Labadal 59 Опубликовано 20 Августа Поделиться Опубликовано 20 Августа Насчёт аптечек - если юзать их с забинденой кнопки, то они используются в порядке их попадания в инвентарь. Но видимо, если сначала юзнуть некоторые в рюкзаке, этот порядок может сломаться. God save Hatsune Miku! Ссылка на комментарий
Ghilli 0 Опубликовано 20 Августа Поделиться Опубликовано 20 Августа Всем здрасьте. Возможно ли как-то проверить, установлен ли конкретный апгрейд на броне/шлеме/оружии и, при наличии его или отсутствии, произвести какое-то действие(платформа: ЗП)? Листая тему, выше уже натыкался на подобный вопрос и ответ на него с примером кода от @Norman Eisenherz, но там было перечисление/считывание апгрейдов в общем, без выделения какого-то конкретного. Также решил поискать в rx_addons и rx_utils из состава AI Additions, но ввиду своей неопытности или невнимательности не смог найти ничего подобного. Ссылка на комментарий
Norman Eisenherz 283 Опубликовано 20 Августа Поделиться Опубликовано 20 Августа Получить всю таблицу из нетпакета, сравнить "есть/нет" по имени секции нужного апгрейда… В чем именно затык? 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Ghilli 0 Опубликовано 23 Августа Поделиться Опубликовано 23 Августа @Norman Eisenherz затык возник в том, что я немного не понимаю, как это правильно сделать Скрытый текст function check_upgrades() local helm = db.actor:item_in_slot(12) if not helm then return end -- выйти, если слот пуст local up_list = {} -- предустановленные апгрейды (конфиг) if not system_ini():line_exist(helm:section(), "installed_upgrades") then return end -- выйти, если апгрейд невозможен local up_mod = system_ini():r_string(helm:section(), "installed_upgrades") if up_mod then -- строка не пуста for up_sect in string.gfind(up_mod, "[%w_]+") do -- тексты вида "буквы, цифры, _" up_list[#up_list +1] = up_sect end end -- новые апгрейды (нетпакет) local sobj = alife():object( helm:id() ) local pk = net_packet() pk:w_begin(0) -- обязательный сброс позиции sobj:STATE_Write(pk) pk:r_seek(18) pk:r_stringZ() -- custom data pk:r_advance(8) pk:r_stringZ() -- visual name pk:r_advance(5) local n = pk:r_s32() -- размер списка апгрейдов if n > 0 then for i = 1, n do up_list[#up_list +1] = pk:r_stringZ() end end -- все, что было выше - еще Ваш код, найденный в этой теме -- ниже я попытался отследить не саму секцию, а параметр в ней, так как это универсальнее if #up_list > 0 then if system_ini():line_exist(up_list, "nightvision_sect") then local nv_check = system_ini():r_string(up_list, "nightvision_sect") if nv_check == effector_nightvision_1 then messenger.gwr_messenger("gwr_remove_your_outfit", 3000) end end end end На моменте с проверкой параметра как раз затык и возник. Сначала не происходило при проверке ничего. Сообщение не вылетало, хотя на Стальном шлеме был установлен апгрейд на ПНВ первого поколения. Затем я решил убрать проверку на само наличие nightvision_sect, в результате чего при установке грейда на Стальной шлем стал получать следующий вылет: [error]Arguments : Can't find variable nightvision_sect in [up_secona_helm_hardhat] Не понимаю, как сделать, чтобы оно ссылалось при проверке параметра на секции с названиями на "up_sect_", а не просто "up_" Ссылка на комментарий
Norman Eisenherz 283 Опубликовано 23 Августа Поделиться Опубликовано 23 Августа 1. В системном конфиге нет ссылок на апгрейды, хотя их копии вставлены в конфиги оружия – по аналогии с [inventory_upgrades.script], стоит читать общий файл [item_upgrades.ltx]. 2. Для поиска параметра nightvision_sect надо не подставлять весь список up_list, а перебирать отдельные секции из него. 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти