ted.80 222 Опубликовано 4 Июня 2022 Поделиться Опубликовано 4 Июня 2022 1 час назад, mole venomous сказал: Возможно ли одно из четырёх значений, определяющих пар-тр hit_power в конфиге оружия, вернуть как число? Скрытый текст if system_ini():line_exist(item:section(), "hit_power") then local Hitpower = system_ini():r_string(item:section(), "hit_power") if Hitpower then Hitpower = string.gsub(Hitpower,"[,]"," ") for k, v in string.gmatch(Hitpower,"[%p0-z]+") do -- k перебирает все значения hit_power end end end 1 1 Ссылка на комментарий
AndreySol 215 Опубликовано 4 Июня 2022 Поделиться Опубликовано 4 Июня 2022 @ted.80 Может я не прав, но там видимо значения прописаны для разных уровней сложности? 1 Ссылка на комментарий
mole venomous 2 959 Опубликовано 4 Июня 2022 Поделиться Опубликовано 4 Июня 2022 (изменено) Именно это мне и нужно - вернуть значение параметра на текущем уровне сложности для визуального отображения ТТХ оружия. Однако пока получилось увидеть только строку (с заменой "нежелательных" символов), а конкретное число либо, скажем, среднее арифметическое от этих четырёх, пока не выходит. Изменено 4 Июня 2022 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
Manool 143 Опубликовано 4 Июня 2022 Поделиться Опубликовано 4 Июня 2022 (изменено) 3 часа назад, mole venomous сказал: вернуть значение параметра на текущем уровне Скрытый текст if system_ini():line_exist(item:section(), "hit_power") then local hp = system_ini():r_string(item:section(), "hit_power") if hp then local t = {} for a in string.gfind(hp, "[%w_%-%.]+") do table.insert(t, a) end local dhp = t[level.get_game_difficulty() + 1] or t[1] -- параметр hit_power в зависимости от уровня сложности игры end end Изменено 4 Июня 2022 пользователем Manool 1 1 Объединённый Пак OGSR Engine Ссылка на комментарий
Ghilli 0 Опубликовано 5 Июня 2022 Поделиться Опубликовано 5 Июня 2022 Привет. Вопрос, может, нубасский, но: Есть ли на стоковом движке функция отслеживания состояния ГГ в плане присест/стоя/прыжок? Ссылка на комментарий
Graff46 596 Опубликовано 5 Июня 2022 Поделиться Опубликовано 5 Июня 2022 (изменено) @Ghilli вроде нет. Наверное получится проверить на присест по позиции камеры относительно модели гг по оси y. --- Кто нибудь пробовал на один объект повесить два биндера? Они вдвоем будут работать или последний только? Изменено 5 Июня 2022 пользователем Graff46 Ссылка на комментарий
Ghilli 0 Опубликовано 6 Июня 2022 Поделиться Опубликовано 6 Июня 2022 @Graff46 мысль, кстати, неплохая. Чет об этом я сразу даже не подумал. Можно попробовать. На стоковом движке Зова Припяти dik_to_bind используется только для скриптов связанных с UI? (я сделал предположение на основе того, что нигде более , кроме как в UI скриптах оригинала, это не встречается) Ссылка на комментарий
Graff46 596 Опубликовано 7 Июня 2022 Поделиться Опубликовано 7 Июня 2022 06.06.2022 в 10:52, Ghilli сказал: На стоковом движке Зова Припяти dik_to_bind используется только для скриптов связанных с UI? Да Ссылка на комментарий
ARTLantist 12 Опубликовано 16 Июня 2022 Поделиться Опубликовано 16 Июня 2022 Обнаружил такую недоработку в оригинале ЗП. Если скриптом воспроизводить звуки, то второй (и последующие) не воспроизведутся, пока не пройдёт предыдущий, и какая-то задержка в пару секунд... Это можно как-то пофиксить? Ссылка на комментарий
Domestoz 0 Опубликовано 23 Июня 2022 Поделиться Опубликовано 23 Июня 2022 (изменено) Вопрос к знатокам скриптов, сделал систему апгрейда, только вот нижняя ветка не апгрейдится, хоть как нажимай на второй ветке иконки, будет поставлен апгрейд первой ветки, скрипт на 3 скрине [3 фотографии DEL Изменено 23 Июня 2022 пользователем Domestoz ссылки ВК Добавлено Опричник, 23 Июня 2022 Правила форума п.2.7.1 (ссылки на ВК запрещены). Ссылка на комментарий
Colder 12 Опубликовано 29 Июня 2022 Поделиться Опубликовано 29 Июня 2022 (изменено) https://disk.yandex.ru/i/buSDOiP3EU-O9g Как правильно прочитать параметр fire_modes из секции оружия что бы он показывал -1 или 1 а не как на скриншоте. Скрытый текст local slot = {1,2,4} for n = 1,table.getn(slot) do local item = db.actor:item_in_slot(slot[n]) local wpn = db.actor:active_item() if item ~= nil and wpn then local fm = sys_ini:r_string(wpn:section(), "fire_modes") local StatCS = hud:GetCustomStatic("fire_modes_static") if (StatCS == nil) and (fm ~= nil) then hud:AddCustomStatic("fire_modes_static", true) StatCS = hud:GetCustomStatic("fire_modes_static") StatCS:wnd():SetText(fm) end else if item then hud:RemoveCustomStatic("fire_modes_static") end end end end Изменено 29 Июня 2022 пользователем Colder Ссылка на комментарий
WinCap 292 Опубликовано 29 Июня 2022 Поделиться Опубликовано 29 Июня 2022 @Colder, прочитанную из конфигов строку можно разбить на отдельные части функцией parse_nums, например так: local fm = sys_ini:r_string(wpn:section(), "fire_modes") local fm_t = parse_nums(fm) После этого в fm_t будет находиться таблица с отдельными режимами стрельбы. P.S. Только это будут просто считанные из конфигов доступные режимы, а не текущий режим стрельбы. 1 S.T.A.L.K.E.R. CoP Objects (upd 11.03.24) Ссылка на комментарий
Colder 12 Опубликовано 2 Июля 2022 Поделиться Опубликовано 2 Июля 2022 (изменено) Вопрос по ОГСР движку. Пытаюсь прибавить вес ГГ. Вставляю предмет в слот "вес ГГ прибавляеться" убираю из слота "вес ГГ не возвращаеться а остаеться прежнем" как вернуть вес ГГ обратно? Пробывал так: Скрытый текст function on_item_to_slot(obj) local st_item = db.actor:item_in_slot(9) if st_item and (string.find(st_item:section(), "test_use")) then local at = sys_ini:r_float_ex("test_use", "tool_max_weight") local curr_max = db.actor:get_actor_max_weight() local cur_max_walk = db.actor:get_actor_max_walk_weight() db.actor:set_actor_max_weight(curr_max + at) db.actor:set_actor_max_walk_weight(cur_max_walk + at) else --/ - db.actor:set_actor_max_weight(curr_max) db.actor:set_actor_max_walk_weight(cur_max_walk) end end Изменено 2 Июля 2022 пользователем Colder Ссылка на комментарий
WinCap 292 Опубликовано 2 Июля 2022 Поделиться Опубликовано 2 Июля 2022 @Colder, а в блоке else переменные curr_max и cur_max_walk откуда берутся? 1 S.T.A.L.K.E.R. CoP Objects (upd 11.03.24) Ссылка на комментарий
Colder 12 Опубликовано 2 Июля 2022 Поделиться Опубликовано 2 Июля 2022 @WinCap Тоже не работает. Скрытый текст function on_item_to_slot(obj) local actor_item = db.actor:item_in_slot(9) if actor_item and (string.find(actor_item:section(), "test_use")) then local at = sys_ini:r_float_ex("test_use", "tool_max_weight") local curr_max = db.actor:get_actor_max_weight() local cur_max_walk = db.actor:get_actor_max_walk_weight() db.actor:set_actor_max_weight(curr_max + at) db.actor:set_actor_max_walk_weight(cur_max_walk + at) else local curr_max1 = db.actor:get_actor_max_weight() local cur_max_walk1 = db.actor:get_actor_max_walk_weight() db.actor:set_actor_max_weight(curr_max1) db.actor:set_actor_max_walk_weight(cur_max_walk1) end end Ссылка на комментарий
Zander_driver 10 166 Опубликовано 2 Июля 2022 Поделиться Опубликовано 2 Июля 2022 3 часа назад, Colder сказал: db.actor:get_actor_max_weight() Возвращает текущее значение макс.веса. И get_actor_max_walk_weight аналогично. Т.е. в блоке else ты читаешь, значения которые у ГГ сейчас. И устанавливаешь их же. Естественно что ничего не меняется. Базовое значение куда возвращаться, в данном случае лучше из конфига прочитать, из секции actor. 1 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
phalcor 56 Опубликовано 3 Июля 2022 Поделиться Опубликовано 3 Июля 2022 Доброго дня! Бьюсь уже долго со схемой добивания раненых в попытке её отключить полностью, но безуспешно. (Платформа ОП, rx_kill_wounded.script). Может есть какой-то способ сделать так, чтобы раненые враги полностью игнорировались? Ссылка на комментарий
Labadal 20 Опубликовано 4 Июля 2022 Поделиться Опубликовано 4 Июля 2022 Вопрос по ТЧ! Доброго времени суток, товарищи. Я тут понемногу самостоятельно обучаюсь, решил вот сделать смарт-террейн (гулаг). Делал по аналогии уже имеющихся. 1. В СДК поставил смарт, прицепил к нему шейп, прописал в логике имя, всё как положено: [smart_terrain] type = pseudo_monolit capacity = 3 groups = 0, 3 2. Поставил трех нпсов, в их кастом дату прописал принадлежность к этому гулагу: [smart_terrains] pseudo_monolit = true 3. Создал для них три точки walk и три точки look. (их назвал правильно - имя_смарта_имя_точки в файле gulag_escape.script прописал для них логику и все, что нужно: Скрытый текст if type == "pseudo_monolit" then t = { section = "logic@pseudo_monolit_guard1", idle = 0, prior = 8, state = {0,2}, position_threshold = 100, online = true, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.name == "esc_pseudo_monolit1" end } table.insert(sj, t) t = { section = "logic@pseudo_monolit_guard2", idle = 0, prior = 8, state = {0,2}, position_threshold = 100, online = true, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.name == "esc_pseudo_monolit2" end } table.insert(sj, t) t = { section = "logic@pseudo_monolit_loner", idle = 0, prior = 8, state = {0,2}, position_threshold = 100, online = true, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.name == "esc_pseudo_loner" end } table.insert(sj, t) end ========= if type == "pseudo_monolit" then return function(gulag) return 0 end end ======= if gulag_type == "pseudo_monolit" then return npc_community == "stalker" end В файле gulag_escape.ltx прописал им их логику. Скрытый текст [logic@pseudo_monolit_guard1] active = walker@pseudo_monolit_guard1 [walker@pseudo_monolit_guard1] path_walk = guard1_walk path_look = guard1_look def_state_standing = guard [logic@pseudo_monolit_guard2] active = walker@pseudo_monolit_guard2 [walker@pseudo_monolit_guard2] path_walk = guard2_walk path_look = guard2_look def_state_standing = guard [logic@pseudo_monolit_loner] active = walker@pseudo_monolit_loner [walker@pseudo_monolit_loner] path_walk = loner_walk path_look = loner_look def_state_standing = guard Так вот, сама проблема в том, что эти нпс - стоят на тех местах, где были заспавнены. Их логика почему-то к ним не "цепляется". Если на них нападут (мутант, или сталкер какой) то как всё успокоится, они встанут на том месте, где остановились. Как "заставить" их "увидеть" их логику и действовать, согласно ней? Спасибо! God save Hatsune Miku! Ссылка на комментарий
Colder 12 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 Можно ли скриптово установить параметр artefact_count для брони? ОГСР движок. Ссылка на комментарий
Zander_driver 10 166 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 @Colder смотрим сюда, и видим, что для этого параметра есть только метод get_artefact_count. set_artefact_count - отсутствует. Стало быть, одними скриптами это никак не возможно. Это легко поправить. Скрытый текст CustomOutfit.h void set_artefact_count (u32 x) { m_artefact_count = x; } script_game_object.h void SetArtefactCount(u32 val); script_game_object.cpp void CScriptGameObject::SetArtefactCount(u32 val) { CCustomOutfit *outfit = smart_cast<CCustomOutfit*>(&object()); if (!outfit) return; outfit->set_artefact_count(val); } script_game_object_scriptXXX.cpp .def("set_artefact_count", &CScriptGameObject::SetArtefactCount) Добавить эти строчки, скомпилировать движок, и всё. 1 3 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти