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/
AgentYaroslav007 0 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 @I am Dead ну походу надо взять скрипт ui_main_menu из ванильного мода Апокалипсис. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385738
naxac 2 605 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 @AgentYaroslav007 , закомментируй проблемную строку, раз у тебя такой функции нет.. 2 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385751
_Sk8_AsTeR_ 122 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 Ребят, а как можно ресетнуть работу в гулаге конкретному неписю? Если он начал играть анимацию не в том месте, например. Пробовал в xr_gulag готовые фции типа resetjob, не работают, нпс продолжает играть анимацию не отрываясь. Пробовал через xr_logic.initialize_obj, в этом случае нпс действительно выходит из анимации и идёт в правильный вертекс, но там останавливается и замирает, игнорируя path_look с анимацией. Как можно его вновь взяться за работу? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385760
AndreySol 215 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 @_Sk8_AsTeR_ К чему весь этот огород, ради того, чтоб одного непися усадить на стульчик? Ты пробовал вариант, сначала схема рядом с местом расположения стульчика, а затем переход НПС в схему непосредственно с сидячей анимацией? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385763
_Sk8_AsTeR_ 122 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 @AndreySol именно с переключением схемы, например, по сигналу по достижению поинта - не пробовал. Пробовал делать 2 вейпоинта, где второй вейпоинт уже с флагом для патч_лука с анимацией. Всё равно садится тупо мимо периодически. Непонятно. Ну я делаю не ради одного нпс, а на каждой локе во многих лагерях новые работы с анимациями. Не хотелось бы городить для каждой работы по нескольло переключаемых логик. Мне просто не понятно, почему так происходит в игре у нас. Если найдется способ просто ресетнуть работу, то было бы здорово Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385771
WinCap 324 Опубликовано 8 Июня 2021 Поделиться Опубликовано 8 Июня 2021 07.06.2021 в 17:47, _Sk8_AsTeR_ сказал(а): Все НПС, проигрывая анимацию о барной стойки, стоят чуть дальше чем нужно и опираются о пустоту. Если их напугать, то они возвращаются на место и проигрывают анимацию уже как положено. Есть какие-нибудь мысли, как это пофиксить? Скорее всего, проблема в скриптах. Попробуй откатить к начальной версии все скрипты связанные с движением и положением НПС, те которые сам правил или адаптировал/переносил из других модов. S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385776
_Sk8_AsTeR_ 122 Опубликовано 9 Июня 2021 Поделиться Опубликовано 9 Июня 2021 @WinCap эх, если бы такие были Все оригинальные, соляночные. Такая проблема была и в 10 соли и в 16 на огср, например. Я лишь модифицирую state_lib и state_mngr_animations_list, регистрируя новые анимки, после чего в gulag_уровень добавляю новые работы Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385781
Colder 12 Опубликовано 9 Июня 2021 Поделиться Опубликовано 9 Июня 2021 Какой скритп отвечает за получение репутации ГГ при убийстве нпс/монстров? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385874
_Sk8_AsTeR_ 122 Опубликовано 10 Июня 2021 Поделиться Опубликовано 10 Июня 2021 @WinCap проблема оказалась весьма специфична. Когда мы грузим сейв, то xr_gulag сразу берёт на себя всех НПС, что были в работе гулага в момент сохранения. И сразу же выдаёт им работу при условии, что они не находятся дальше контрольной точки гулага больше чем на 50 игровых метров. В такмо случае все НПС в момент загрузки сейва моментально получают работу и начинают её выполнение, без возможности сдвинуться с места (за исключением патрульных, у которых зацикленный набор вейпоинтов). Пробовал отключать перехват xr_gulag'а, в таком случае нпс доходят до точных координат, но работу не начинают. Казалось бы - вот он, выход из ситуации, задать небольшой таймер, чтобы гулаг сразу не перехватывал неписей, а давал им возможность дойти до точной координаты, чтобы после красиво сесть на стульчик, например. Но в таком случае все те НПС, которые сидели у костра, вдруг начинают одновременно ломиться в одну единственную точку, толпой. Видимо именно поэтому в ЧН были введены смарткаверы, которые, судя по всему, имели приоритет над работами гулагов типа, не знаю. Эх Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385877
AndreySol 215 Опубликовано 10 Июня 2021 Поделиться Опубликовано 10 Июня 2021 @_Sk8_AsTeR_ Откуда вообще уверенность, что перезапуск работы даст нужный результат? Ты ведь понятия не имеешь, как в движке работает алгоритм размещения моба на точке пути - что в приоритете: координата точки или аи-ноды, близкие этой координате. Точку пути ты в СДК ставил? Может она попала на границу двух аи-нод и движок периодически выбирает разные ноды для размещения объекта. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385882
_Sk8_AsTeR_ 122 Опубликовано 10 Июня 2021 Поделиться Опубликовано 10 Июня 2021 @AndreySol ну я проверял опытным путём. Там оказалось всё хитрее даже, чем я предполагал. Те НПС, которые приходят из вне гулага, они регистрируются и спокойно проходят к тем вейпоинтам, которые заданы в path_walk, анимация отыгрывается верно. А вот если нпс уже занимался новой работой, мы сохранились и загрузились, то бывает такое что нпс по какой-то причине в момент загрузки сейва вдруг сместился на пару игровых метров в сторону. Но игра считает, то он стоит правильно и xr_gulag сразу же заставляет его работать ту работу, которой он занимался до сейвлоада. Я просто ковырял хр_гулаг и отключал обработку нпс во время загрузки сейва. В этом случае тот нпс, который при загрузке сместился, действительно отправился строго в ту точку, которую я прописал в path_walk, я отслеживал этот момент прям с точностью до ноль-десятых координат с помощью g_vertex_debug (OGSR). Когда нпс приходит на точку он замирает, ожидая когда его обработает заранее мною отключенный xr_gulag. Ну, так и продолжает стоять. Выходит что именно xr_gulag и заставляет всех нпс во время загрузки сейва моментально и без вариантов сразу приниматься за работу, не давая неписям даже шаг в сторону сделать (за исключением тех нпс. у кого в path_walk цепь вейпоинтов). Ну, по крайней мере я именно такое заключение для себя сделал, ковыряя всю эту систему. Если я где-то неправ, то поправь меня пожалуйста, буду очень признателен! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385883
AndreySol 215 Опубликовано 10 Июня 2021 Поделиться Опубликовано 10 Июня 2021 @_Sk8_AsTeR_ 4 часа назад, _Sk8_AsTeR_ сказал(а): в момент загрузки сейва вдруг сместился на пару игровых метров в сторону Ну так ты должен понимать, что спавн объектов делает движок, а не xr_gulag. Соответственно бесполезно дрючить xr_gulag, пытаясь в нем разрулить движковую проблему. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385905
_Sk8_AsTeR_ 122 Опубликовано 11 Июня 2021 Поделиться Опубликовано 11 Июня 2021 @AndreySol Не спорю, что спавн объекта идет через движок, всё правильно. Но по поводу xr_gulag: из net_spawn при загрузке сейва идет вызов ф-ций в xr_gulag, после чего в этом же самом xr_gulag идет работа с нетпакетами, где проверяется работал ли НПС во время сейва. И если работал, то xr_gulag моментально заставляет этого НПС возобновить работату, не давая возможности сначала вернутсья на вейпоинт, если он немного сместился при сейв\лоаде. Вот что я наблюдал) То есть проблема именно в том, что xr_gulag просто не дает возможности НПС подойти вернуться к вейпоинту, моментально выдавая ему работу (нпс начинает играть анимацию). Есть нпс, которые находятся вне логики гулага, а стоят на своих личных path_walk'ax и path_look'ах, прописанных в саму логику непися. Они всегда со 100% вероятностью будут правильно отыгрывать анимацию в строго заданных координатах, всегда. Если при загрузке сейва они сместятся, то они сначала вернутся на вейпоинт. Потому что их не обрабатывает xr_gulag Опять таки, это всё лично мое наблюдение и мои выводы, которые я построил в результате экспериментов и изучения когда скрипта xr_gulag. Скрытый текст -- сохранения общего состояния гулага function gulag:save_common( packet ) packet:w_u8( self.casualities ) packet:w_u8( self.state ) utils.w_CTime( packet, self.stateBegin or smart_terrain.CTime_0 ) packet:w_u8(self.population) packet:w_u8(self.population_comed) packet:w_u8(self.population_non_exclusive) packet:w_u8( #self.Job ) for i, job in ipairs( self.Job ) do packet:w_u32( job.begin or 0 ) packet:w_u32( job.fill_idle or 0 ) packet:w_u32( job.idle_after_death_end or 0 ) end end -- восстановление общего состояния гулага function gulag:load_common( packet ) self.casualities = packet:r_u8() self.state = packet:r_u8() self.stateBegin = utils.r_CTime( packet ) self.population = packet:r_u8() self.population_comed = packet:r_u8() self.population_non_exclusive = packet:r_u8() local n = packet:r_u8() local job for i = 1, n do job = {} table_insert( self.JobLoaded, job ) job.begin = packet:r_u32() job.fill_idle = packet:r_u32() job.idle_after_death_end = packet:r_u32() if job.fill_idle == 0 then job.fill_idle = nil end if job.idle_after_death_end == 0 then job.idle_after_death_end = nil end end end -- сохранение информации об объекте function gulag:save_obj( packet, obj_id ) packet:w_bool ( self.Object_begin_job[obj_id] ) packet:w_bool ( self.Object_didnt_begin_job[obj_id] ) packet:w_u8 ( self.ObjectJob[obj_id] or 0 ) end -- восстановление информации об объекте function gulag:load_obj( packet, obj_id ) self.Object[obj_id] = true self.Object_begin_job[obj_id] = packet:r_bool() --self.Object_didnt_begin_job[obj_id] = packet:r_bool() local jobN = packet:r_u8() if jobN ~= 0 then self.ObjectJob[obj_id] = jobN end end Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385970
WinCap 324 Опубликовано 11 Июня 2021 Поделиться Опубликовано 11 Июня 2021 (изменено) @_Sk8_AsTeR_, а функции save_obj/load_obj из xr_gulag используются где-нибудь? В них какой-то "непорядок" - сохраняются 3 переменные, а загружаются только 2. Изменено 11 Июня 2021 пользователем WinCap S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1385987
naxac 2 605 Опубликовано 11 Июня 2021 Поделиться Опубликовано 11 Июня 2021 (изменено) @_Sk8_AsTeR_ , не там копаешь. Сохранение и загрузка гулага тут ни при чём. Неписи в баре сделаны с индивидуальной логикой, и они так же глючат порой. Тут либо вейпоинт-каллбэк рано срабатывает в move_mgr при загрузке, не давая неписю дойти до нужной точки, либо непись смещается уже после спавна на загрузке и срабатывания этого каллбэка. Или ещё что-то. В общем, в move_mgr смотреть надо. Изменено 11 Июня 2021 пользователем naxac 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386022
_Sk8_AsTeR_ 122 Опубликовано 11 Июня 2021 Поделиться Опубликовано 11 Июня 2021 @naxac чёт я думал что в баре работы гулага. Хотя там же квестовики... Окей, мерси за подсказку, буду мув менеджер ковырять) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386053
Colder 12 Опубликовано 12 Июня 2021 Поделиться Опубликовано 12 Июня 2021 (изменено) Хотел добавить 2 кнопки при обыске трупов и ящиков! 1 кнопка выход(работает) в оригинале ее нету, 2 кнопка переместить всё из инвентаря ГГ в ящик\труп(не работает), нажимаю "переместить всё" результат 0 и вылетов нету. Может кто глянуть\посмотреть вот сам скрипт https://yadi.sk/d/dQ-plbh3CFkHSA Изменено 12 Июня 2021 пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386094
WinCap 324 Опубликовано 12 Июня 2021 Поделиться Опубликовано 12 Июня 2021 @Colder, в вашем скрипте: 1. Функция BodyAllclose - что это за переменная id? 2. Функция get_items_from_box - переменная box откуда? 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386095
Colder 12 Опубликовано 12 Июня 2021 Поделиться Опубликовано 12 Июня 2021 (изменено) Не получаеться( или мозгов не хватает! Делаю так: Скрытый текст function transfer_all_to_box() local level_obj_by_id = level.object_by_id local box = level_obj_by_id(id) db.actor:iterate_inventory(function(actor, item) db.actor:transfer_item(item, box) end, db.actor) end Звук есть что перекладывает, но не чего не происходит. Изменено 12 Июня 2021 пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386096
Space.Marine 466 Опубликовано 12 Июня 2021 Поделиться Опубликовано 12 Июня 2021 (изменено) 7 часов назад, Colder сказал(а): Хотел добавить 2 кнопки Так в ЗП "взять всё" на кнопке Х забиндена, а в ТЧ легко в xml указывается кнопка на которой можно взять всё. Не проще ли посмотреть уже имеющееся в оригинале решение? Или это движковая фишка? Изменено 12 Июня 2021 пользователем Space.Marine Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/562/#findComment-1386110
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти