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/
Graff46 623 Опубликовано 5 Июня 2022 Поделиться Опубликовано 5 Июня 2022 (изменено) @Ghilli вроде нет. Наверное получится проверить на присест по позиции камеры относительно модели гг по оси y. --- Кто нибудь пробовал на один объект повесить два биндера? Они вдвоем будут работать или последний только? Изменено 5 Июня 2022 пользователем Graff46 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1430654
Ghilli 0 Опубликовано 6 Июня 2022 Поделиться Опубликовано 6 Июня 2022 @Graff46 мысль, кстати, неплохая. Чет об этом я сразу даже не подумал. Можно попробовать. На стоковом движке Зова Припяти dik_to_bind используется только для скриптов связанных с UI? (я сделал предположение на основе того, что нигде более , кроме как в UI скриптах оригинала, это не встречается) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1430668
Graff46 623 Опубликовано 7 Июня 2022 Поделиться Опубликовано 7 Июня 2022 06.06.2022 в 10:52, Ghilli сказал: На стоковом движке Зова Припяти dik_to_bind используется только для скриптов связанных с UI? Да Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1430818
ARTLantist 14 Опубликовано 16 Июня 2022 Поделиться Опубликовано 16 Июня 2022 Обнаружил такую недоработку в оригинале ЗП. Если скриптом воспроизводить звуки, то второй (и последующие) не воспроизведутся, пока не пройдёт предыдущий, и какая-то задержка в пару секунд... Это можно как-то пофиксить? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1431770
Domestoz 0 Опубликовано 23 Июня 2022 Поделиться Опубликовано 23 Июня 2022 (изменено) Вопрос к знатокам скриптов, сделал систему апгрейда, только вот нижняя ветка не апгрейдится, хоть как нажимай на второй ветке иконки, будет поставлен апгрейд первой ветки, скрипт на 3 скрине [3 фотографии DEL Изменено 23 Июня 2022 пользователем Domestoz ссылки ВК Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432199
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432628
WinCap 323 Опубликовано 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 15.11.24) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432639
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432811
WinCap 323 Опубликовано 2 Июля 2022 Поделиться Опубликовано 2 Июля 2022 @Colder, а в блоке else переменные curr_max и cur_max_walk откуда берутся? 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432812
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432867
Zander_driver 10 348 Опубликовано 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 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432903
phalcor 60 Опубликовано 3 Июля 2022 Поделиться Опубликовано 3 Июля 2022 Доброго дня! Бьюсь уже долго со схемой добивания раненых в попытке её отключить полностью, но безуспешно. (Платформа ОП, rx_kill_wounded.script). Может есть какой-то способ сделать так, чтобы раненые враги полностью игнорировались? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1432994
Labadal 68 Опубликовано 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! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433075
Colder 12 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 Можно ли скриптово установить параметр artefact_count для брони? ОГСР движок. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433117
Zander_driver 10 348 Опубликовано 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 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433120
h0N0r 387 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 23 часа назад, Labadal сказал: 3. Создал для них три точки walk и три точки look. Флаги в путях проставил? https://xray-engine.org/index.php?title=Точки_пути_(way_point) https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433123
Labadal 68 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 @h0N0r да, флаги везде стоят God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433130
EGER.OVERKILL WF 3 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 Господа, вопрос такой: Хочу сделать рестриктор, что бы выдался квест при заходе в него. (Можно инфопоршень, неважно). А то по трем гайдам, у меня проблемы, везде вылеты с логом по "g_.script'у" с ошибкой "#2". Направьте пожалуйста, и прошу прощения если оффтоп. ТЧ. 1.0004 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433183
_g.script 3 669 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 @EGER.OVERKILL WF , рестриктор на вход, там при входе актёру выдать инфо, который запустит квест. Прошу прощения, но с телефона не могу привести примеры кодов. Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433184
EGER.OVERKILL WF 3 Опубликовано 5 Июля 2022 Поделиться Опубликовано 5 Июля 2022 (изменено) 23 минуты назад, mole venomous сказал: выдать инфо, который запустит квест. Это понял, делаю по урокам разным, но результат один, при НИ вылет. Как правильнее сделать выдачу поршня в логике? Я делаю так: Скрытый текст custom_data = <<END [logic] active = sr_idle [sr_idle] on_inside = %+kura% END Изменено 5 Июля 2022 пользователем EGER.OVERKILL WF Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/590/#findComment-1433185
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти