Colder 12 Опубликовано 21 Марта 2021 Поделиться Опубликовано 21 Марта 2021 Можно ли из этого скрипта: https://yadi.sk/d/ycNSi-2kR9qcPw сделать по 1 пачки патронов? Ссылка на комментарий
DibokDibokin 1 Опубликовано 22 Марта 2021 Поделиться Опубликовано 22 Марта 2021 Здравствуйте. Можно ли менять направление полёта ворон скриптово? Надо чтобы до выброса (около 1 минуты) вороны начинали летать строго на юг. Ссылка на комментарий
Stalkersof 161 Опубликовано 23 Марта 2021 Поделиться Опубликовано 23 Марта 2021 В продолжения скрипта проверки нпс на локации. В общем не получается не могу понять как получить гейм-вертекс. Скрипт валиться на локальной переменной obj нил валуе. function get_level_nps() --if level.name() ~= "l12u_control_monolith" then return end for i=1,65535 do local sobj = alife():object(i) if sobj then local obj = level.object_by_id(sobj.id) if IsStalker(sobj) and sobj:alive() and obj:game_vertex_id() == 2482 then --news_manager.send_tip(db.actor,obj) return true end end end return false end Может подскажите что не так то. Freeplay Graphic Mod(FGM) Ссылка на комментарий
ted.80 251 Опубликовано 23 Марта 2021 Поделиться Опубликовано 23 Марта 2021 Только что, Stalkersof сказал(а): local obj = level.object_by_id(sobj.id) Что-то ме подсказывает что id тут лишнее попробуй так local obj = level.object_by_id(sobj) 1 1 Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Kirgudu 1 207 Опубликовано 23 Марта 2021 Поделиться Опубликовано 23 Марта 2021 (изменено) 54 минуты назад, ted.80 сказал(а): Что-то ме подсказывает что id тут лишнее попробуй так Не надо так делать, в том варианте должно быть именно sobj.id. А так гейм вертекс можно (и нужно в данном случае) получать уже из серверного объекта: local sobj = alife():object(i) if sobj and sobj.m_game_vertex_id == 2482 and IsStalker(sobj) and sobj:alive() then return true end И ещё: почему только 2482? Других вертексов на нужной локации нет? Имхо, лучше из гейм вертекса получать id локации и проверять уже его совпадение с нужным: function get_level_nps() local al, gg = alife(), game_graph() -- многократно используемые функции кешируем для производительности for i=1,65535 do local sobj = al:object(i) if sobj and gg:vertex(sobj.m_game_vertex_id):level_id() == XXX and IsStalker(sobj) and sobj:alive() then -- вместо XXX подставить Id локации (не путать с наименованием) return true end end return false end Или, чтобы не вызывать лишние функции, сравнивать sobj.m_game_vertex_id с диапазоном значений - больше одного и меньше другого: if sobj and sobj.m_game_vertex_id >= XXX and sobj.m_game_vertex_id <= YYY and IsStalker(sobj) and sobj:alive() then -- вместо XXX и YYY подставить граничные гейм вертексы локации return true end Изменено 23 Марта 2021 пользователем Kirgudu 1 1 2 Инструмент Ссылка на комментарий
Stalkersof 161 Опубликовано 23 Марта 2021 Поделиться Опубликовано 23 Марта 2021 (изменено) 2 часа назад, Kirgudu сказал(а): Имхо, лучше из гейм вертекса получать id локации и проверять уже его совпадение с нужным: function get_level_nps() local al, gg = alife(), game_graph() -- многократно используемые функции кешируем для производительности for i=1,65535 do local sobj = al:object(i) if sobj and gg:vertex(sobj.m_game_vertex_id):level_id() == XXX and IsStalker(sobj) and sobj:alive() then -- вместо XXX подставить Id локации (не путать с наименованием) return true end end return false end Вроде такой вариант работает. Во всяком случае все условия выполняются. Проверил нпс находит. Вылета тоже нет. Ид локации взял из game_levels.ltx Правильно? Да еще такой вопрос мне надо осознанца отсеять. С Серверного объекта секцию можно нпс получить? Изменено 23 Марта 2021 пользователем Stalkersof 1 Freeplay Graphic Mod(FGM) Ссылка на комментарий
Zander_driver 10 333 Опубликовано 23 Марта 2021 Поделиться Опубликовано 23 Марта 2021 Только что, Stalkersof сказал(а): С Серверного объекта секцию можно нпс получить? sobj:section_name() же. Как и всегда) 2 часа назад, ted.80 сказал(а): Что-то ме подсказывает А название метода 2 часа назад, ted.80 сказал(а): object_by_id не подсказало, что .id там быть - ДОЛЖНО ? Плохо, что не подсказало 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Colder 12 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 Скрытый текст function PdaWindow:InitControls() self.stat = CUIStatic() self.stat:Init(0,0,1024,768) self.owner:AttachChild(self.stat) local xml = CScriptXmlInit() xml:ParseFile("inventory_new.xml") local actor = db.actor self.player_dialog = xml:InitStatic("player", self) self.player_community = xml:InitStatic("player:community", self.player_dialog) self.player_community:SetText(game.translate_string(actor:character_community())) end Как узная имя группировки гг? Ссылка на комментарий
ARTLantist 14 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 как можно отследить, что гг использовал предмет рядом с костром (campfire)? Ссылка на комментарий
AndreySol 215 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 @ARTLantist Костер - это объект, имеющий в родителях спейс-рестриктор. В зависимости от конкретных условий(?) можно отслеживать нахождение ГГ в радиусе шейпа, или же проверять расстояние от ГГ до объектов, которые являются кострами. Ссылка на комментарий
ARTLantist 14 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 @AndreySol for i=1,65535 do local s = sim:object(i) if s then local obj = level.object_by_id(s.id) if obj then local camp = o:get_campfire() if camp and obj:position():distance_to(db.actor:position()) < 5 then ...нужные действия и куча end... такой вариант кода пойдёт? Просто меня смущает огромный цикл с перебором всех симуляционных объектов... Мб его можно было бы чем-то заменить? Ссылка на комментарий
AndreySol 215 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 @ARTLantist Что такое "o:get_campfire()"? Цитата Мб его можно было бы чем-то заменить? Я ж написал - от ситуации зависит. Если действие проверки привязано к конкретному костру - лучше плясать от костра. Если нужно проверять на наличие любого костра рядом, тогда перебором, код в принципе пойдет, только разобраться что есть такое "o:get_campfire()"? Ссылка на комментарий
ARTLantist 14 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 Только что, AndreySol сказал(а): что есть такое "o:get_campfire()"? это я косякнул, там obj:get_campfire() Да, мне нужно наличие любого костра Ссылка на комментарий
Zander_driver 10 333 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 Только что, ARTLantist сказал(а): Мб его можно было бы чем-то заменить? Заменить можно, но муторно. Можно прикрепить к кострам скриптовый биндер, при входе в онлайн объекта, из биндера регистрировать его в некой таблице. И тогда ваш цикл будет перебирать не 65к объектов, а только объекты в этой таблице, т.е. костры. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
AndreySol 215 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 get_campfire() - это из ЗП? Ссылка на комментарий
ARTLantist 14 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 @AndreySol из него родимого) 1 Ссылка на комментарий
Это популярное сообщение. dsh 3 824 Опубликовано 24 Марта 2021 Это популярное сообщение. Поделиться Опубликовано 24 Марта 2021 (изменено) @ARTLantist вот скрипт менеджера костров и функция, которая лечит актору пси, когда он смотрит в костёр https://github.com/dsh2dsh/op2ogse/blob/f2ccb6652e1ea702d09682c8024036ec88cba4df/gamedata/scripts/ogse/ogse_campfire.script#L52 Теперь тебе есть от чего плясать. Изменено 24 Марта 2021 пользователем dsh 3 2 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
ted.80 251 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 23.03.2021 в 14:54, Kirgudu сказал(а): Не надо так делать, в том варианте должно быть именно sobj.id 23.03.2021 в 17:19, Zander_driver сказал(а): не подсказало, что .id там быть - ДОЛЖНО ? Закон Каннингема в действии Сорри за оффтоп но не могу удержаться Скрытый текст 1 Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Jekyll 92 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 Считать какой-либо параметр в секции монстра можно через system_ini():r_string(секция,"параметр"), но как установить новое значение нужного параметра скриптом? На некоторые параметры есть свои функции (например, eye_range - set_range()). А как быть с остальными? Только править движок? New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
AndreySol 215 Опубликовано 24 Марта 2021 Поделиться Опубликовано 24 Марта 2021 8 минут назад, Jekyll сказал(а): Только править движок? Конечно. 1 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти