Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
I am dead 1 192 Опубликовано 1 января, 2022 Sikorskyi Не обращай внимание, это дебаг анимаций. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sikorskyi 279 Опубликовано 1 января, 2022 I am dead убрать нельзя какой нибудь командой? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
I am dead 1 192 Опубликовано 1 января, 2022 Sikorskyi Нет, скорее всего Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alolenr 0 Опубликовано 3 января, 2022 Всем добра! С Новым Годом! Знатоки! Нужна помощь, а то я задолбался уже в край. т_т Такой вопросец: как сделать в ТЧ так, чтобы с каждого НПС падала бронька сходная с его визуалом? Спойлер Чего добился я на сегодня (колупаюсь с прошлого года ^_^): Хорошо знаю файлы "death_items_by_communities.ltx", "death_items_by_levels.ltx", "death_items_count.ltx", "death_manager.script", "character_desc_escape.xml". Сначала пытался заспавнить при создании НПС им в инвентарь outfit, однако, спавнится таким образом только wpn да ammo . Пошел другим путём, через death_items. Сначала вроде всё неплохо, outfit падает с соответствующей фракции, однако, нет дифференцировки между спецназером и рядовым или сталкером-новичком и тёртым сталкером. Продолжил колупаться в коде, пытался привязаться к понятию class у НПС которое можно посмотреть в "npc_profile.xml", всё лучше, чем каждому по id выписывать outfit'ы, но здесь вляпался с разгону в жука и косяк наблюдался вот здесь "death_manager.script". Под это дело у меня STALKER_Shadow_of_Chernobyl_1.0006_(2.0.0.5) без модов, окромя моего колупания кривыми лапками в файлах. В алл.спавн не посылайте, я там уже блуждал, заблудился, хватило. Честно говоря, уже просто устал ковыряться сам, хочется всё же хоть чу-чуть, а побегать по Зоне покуда выходные)) И да, код пока не кидаю, ибо кодил много, долго, со вкусом, и, скорее всего - дичь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 3 января, 2022 Alolenr есть мод smart marauder, там вроде по рангу выпадает, но для примера пойдет, можно будет поменять на другое условие 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alolenr 0 Опубликовано 3 января, 2022 4 минуты назад, vader_33 сказал: Alolenr есть мод smart marauder, там вроде по рангу выпадает, но для примера пойдет, можно будет поменять на другое условие а ссылку можно? Так-то я его видел, но не уверен, что у меня получится с ранга перевести на класс... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 3 января, 2022 2 минуты назад, Alolenr сказал: а ссылку можно? первая же ссылка в гугле https://ogsmod.ru/smart-marauder-mod-v1-5/ 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alolenr 0 Опубликовано 3 января, 2022 5 минут назад, vader_33 сказал: первая же ссылка в гугле https://ogsmod.ru/smart-marauder-mod-v1-5/ благодарю! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
makdm 676 Опубликовано 3 января, 2022 32 минуты назад, Alolenr сказал: И да, код пока не кидаю, ибо кодил много, долго, со вкусом, и, скорее всего - дичь. Тут перво- наперво нужно создать таблицу соответствия визуала бронекостюму. Вот так я это делал в ЗП. Спойлер local visual_of_outfit = { ["novice_outfit"] = "actors\\stalker_neutral\\stalker_neutral_1", ["stalker_outfit"] = "actors\\stalker_neutral\\stalker_neutral_2", ["svoboda_light_outfit"] = "actors\\stalker_freedom\\stalker_freedom_2", ["dolg_outfit"] = "actors\\stalker_dolg\\stalker_dolg_2", ["scientific_outfit"] = "actors\\stalker_neutral\\stalker_neutral_nauchniy", ["military_outfit"] = "actors\\stalker_soldier\\stalker_soldier_2", ["cs_heavy_outfit"] = "actors\\stalker_neutral\\stalker_neutral_3", ["svoboda_heavy_outfit"] = "actors\\stalker_freedom\\stalker_freedom_3", ["specops_outfit"] = "actors\\stalker_soldier\\stalker_soldier_3", ["dolg_heavy_outfit"] = "actors\\stalker_dolg\\stalker_dolg_3", ["exo_outfit"] = "actors\\stalker_neutral\\stalker_neutral_4" } Затем ( в ЗП есть готовый движковый метод get_visual_name(), а в ТЧ его нет ) раз у вас ТЧ, то нужно прочитать нет пакет НПС и получить оттуда его visual_name Дальше в соответствие с таблицей проспавнить в рюкзак НПС бронекостюм. Все это делается в файле death_manager.script Но если вы не скриптер, то это вам будет очень сложно реализовать. 1 Терпение... И все получится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alolenr 0 Опубликовано 3 января, 2022 4 минуты назад, makdm сказал: Тут перво- наперво нужно создать таблицу соответствия визуала бронекостюму. Вот так я это делал в ЗП. Таблица (Скрыть контент) local visual_of_outfit = { ["novice_outfit"] = "actors\\stalker_neutral\\stalker_neutral_1", ["stalker_outfit"] = "actors\\stalker_neutral\\stalker_neutral_2", ["svoboda_light_outfit"] = "actors\\stalker_freedom\\stalker_freedom_2", ["dolg_outfit"] = "actors\\stalker_dolg\\stalker_dolg_2", ["scientific_outfit"] = "actors\\stalker_neutral\\stalker_neutral_nauchniy", ["military_outfit"] = "actors\\stalker_soldier\\stalker_soldier_2", ["cs_heavy_outfit"] = "actors\\stalker_neutral\\stalker_neutral_3", ["svoboda_heavy_outfit"] = "actors\\stalker_freedom\\stalker_freedom_3", ["specops_outfit"] = "actors\\stalker_soldier\\stalker_soldier_3", ["dolg_heavy_outfit"] = "actors\\stalker_dolg\\stalker_dolg_3", ["exo_outfit"] = "actors\\stalker_neutral\\stalker_neutral_4" } Круто! Не, я до такого ещё не дошел)) У меня всё чуток сложнее/проще: Спойлер В "death_items_by_communities.ltx" понадобавлял (кусочек, а то там много): "[esc_wolf]:stalker ;Броники stalker_outfit = 1 [esc_fanat]:stalker ;Броники stalker_outfit = 1 [esc_fox]:stalker ;Броники stalker_outfit = 1 [esc_tutorial_wounded]:stalker ;Броники novice_outfit = 1 [esc_shustryi]:stalker ;Броники novice_outfit = 1 " Потом в "death_manager.script" изменил "local community_list = {}" он крашился, поэтому создал "local class_list = {}" куда вписал все классы с "esc_..", это помогло, невылетало, но теперь спавна брони не было, пришлось колупаться в "function drop_manager:__init(npc)", однако, я подзавис на моменте того, как сделать из "local spawn_items = item_by_community[self.npc:character_community()] " то, что мне надо, ибо если менять на local spawn_items = item_by_class[self.npc:id()] то лист почему-то пуст, и проявляется жук... 4 минуты назад, makdm сказал: Затем ( в ЗП есть готовый движковый метод get_visual_name(), а в ТЧ его нет ) раз у вас ТЧ, то нужно прочитать нет пакет НПС и получить оттуда его visual_name Дальше в соответствие с таблицей проспавнить в рюкзак НПС бронекостюм. Все это делается в файле death_manager.script Но если вы не скриптер, то это вам будет очень сложно реализовать. "Нет пакет НПС" это "npc_profile"? Не то что б я не скриптер, но лапки - очумелые))) Дополнено 7 минуты спустя makdm А подскажите, пожалуйста, скрипт на определение ранга у нпс вот такой да - "npc_rank=ranks.get_obj_rank_name(npc)" ? А для определения класса будет вот так тогда - "npc_class=class.get_obj_class_name(npc)" ? Дополнено 24 минуты спустя makdm А подскажите, пожалуйста, скрипт на определение ранга у нпс вот такой да - "npc_rank=ranks.get_obj_rank_name(npc)" ? А для определения класса будет вот так тогда - "npc_class=class.get_obj_class_name(npc)" ? Я НАШЕЛ!!! УРА!!! Суть в чём, есть такой документик, "death_generic.ltx", а в нём есть раздел [keep_items] и короче прописать туда всю бронь и она не будет удаляться по дефолту! Спойлер Вот так теперь выглядит этот раздел! [keep_items] af_blood_tutorial = true esc_wounded_flash = true quest_case_02 = true dar_document4 = true kruglov_flash = true lab_x16_documents = true good_psy_helmet = true bad_psy_helmet = true decoder = true dynamite = true quest_case_01 = true hunters_toz = true bar_ecolog_flash = true bar_tiran_pda = true bar_lucky_pda = true outfit_stalker_m1 = true wpn_fort_m1 = true outfit_specnaz_m1 = true wpn_lr300_m1 = true crazy_flash = true novice_outfit = true bandit_outfit = true killer_outfit = true monolit_outfit = true specops_outfit = true military_outfit = true stalker_outfit = true scientific_outfit = true exo_outfit = true svoboda_light_outfit = true svoboda_heavy_outfit = true dolg_outfit = true dolg_scientific_outfit ecolog_outfit = true protection_outfit = true Правда я ещё не разобрался, какой из документов теперь работает и спавнит на НПС бронь, то ли созданный мной "death_items_by_class.ltx", то ли отредаченный "death_by_community"... НО главное - РАБОТАЕТ!!! УРААА!! Пойду, просплюсь, а то с прошлого года на пару часиков только вырубался... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
solix 26 Опубликовано 4 января, 2022 Где в gamedata находиться файлы отвечающие за аномалии и как их редактировать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 4 января, 2022 solix gamedata\config\misc редактировать молча... ну правда, редактировать что? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
solix 26 Опубликовано 4 января, 2022 ian98 спасибо что ответил. gamedata\config\misc - вроде отвечает за торговлю. Я пытался удалить аномалии через скрипт амк но оставался крутящийся дым вместо той аномалии что была. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 4 января, 2022 solix gamedata\config\misc конфиги начинающиеся с zone Если тебе нужно удалить их, то лучше через спавн это сделать, наверное... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
solix 26 Опубликовано 4 января, 2022 Я понял использовать SDK. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 4 января, 2022 (изменено) Есть вопрос к людям, умеющим в сфере скриптов больше, чем остальные. Появилась идея связать скрипт главного меню и скрипта загрузки сохранения таким образом, что бекграунд видео менялось бы в зависимости от того, на какой локации был сделан quicksave. Алгоритм работы таков: Из скрипта меню делаем проверку, на какой локации было сохранение. Если сохранения нет или нельзя получить оттуда локацию, то кастуем стандартное бекграунд видео. Если локация и сохранение есть, то действуем по условию if <<локация>> local vid_file ="ui\\ui_vid_back_<<локация>>_0" .. math.random(1,4) Основывалось бы это на рандоме видео в меню из 2571, которое я уже адаптировал в игру - https://disk.yandex.ru/d/23SwQPUG0l6aSA Я вообще никак не умею в программирование, из-за чего пришел сюда за помощью. Дополнено 8 минуты спустя 11 часов назад, solix сказал: Где в gamedata находиться файлы отвечающие за аномалии и как их редактировать? config\misc\zone_<<аномалия>> Изменено 4 января, 2022 пользователем Deathman Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 января, 2022 (изменено) Deathman насчет видео без понятия, не добавлял никогда, насчет картинок, например, добавить в main_menu:InitControls() что-то типа этого (может сойдет и для видео) если будет разное количество картинок и разные названия Спойлер всякие "bkg_escape_1" (без разницы какое название, главное, чтобы локации были прописаны правильно) прописать в ui_mm_main.xml. Родной xml:InitStatic("background", self) оставить, дефолтом будет local bkg_tbl = { ["l01_escape"] = { "bkg_escape_1", "bkg_escape_2", "bkg_escape_3", "bkg_escape_4", }, ["l02_garbage"] = { "bkg_garbage_1", "bkg_garbage_2", } } local fs = getFS() local flist = fs:file_list_open_ex("$game_saves$",bit_or(bit_or(FS.FS_ListFiles,FS.FS_RootOnly), FS.FS_ClampExt),"*.sav") local f_cnt = flist:Size() flist:Sort(FS.FS_sort_by_modif_down) if f_cnt > 0 then for it=0, f_cnt-1 do local file = flist:GetAt(it) local file_name = file:NameFull() if string.find(file_name,"quicksave") then local sg = CSavedGameWrapper(file_name) local lvl = sg:level_name() if bkg_tbl[lvl] then local rnd = math.random(#bkg_tbl[lvl]) local new_bkg = bkg_tbl[lvl][rnd] xml:InitStatic(new_bkg, self) break end end end end если у всех уровней будет по равному количеству картинок, можно обойтись без таблички (но однотипные названия должны быть) Спойлер в ui_mm_main.xml картинки прописывать в таком формате: bkg_уровень_номер. например, "bkg_l01_escape_1", "bkg_l01_escape_2"... "bkg_l02_garbage_1"... Изменить количество можно в строчке local rnd = math.random(1,4) local fs = getFS() local flist = fs:file_list_open_ex("$game_saves$",bit_or(bit_or(FS.FS_ListFiles,FS.FS_RootOnly), FS.FS_ClampExt),"*.sav") local f_cnt = flist:Size() flist:Sort(FS.FS_sort_by_modif_down) if f_cnt > 0 then for it=0, f_cnt-1 do local file = flist:GetAt(it) local file_name = file:NameFull() if string.find(file_name,"quicksave") then local sg = CSavedGameWrapper(file_name) local lvl = sg:level_name() local rnd = math.random(1,4) local new_bkg = "bkg_"..lvl.."_"..rnd xml:InitStatic(new_bkg, self) break end end end Дополнено 4 минуты спустя 22 часа назад, solix сказал: но оставался крутящийся дым вместо той аномалии что была может еще партикл скриптом к ней добавлялся. Если нет и если эта аномалия в онлайне - пробовать перед удалением сначала отключить ее obj:disable_anomaly() , а потом удалять (отключать клиентский объект, удалять серверный) Изменено 5 января, 2022 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yarkov Desorec 27 Опубликовано 5 января, 2022 Есть кто-то, кто адекватно реализовал детекторы артефактов из ЧН/ЗП/ЛАДС в ТЧ на движке ОГСР? А то на АМК-форуме один из кадров Кродина задвинул, что надо конфиги вписать из ЗП. Возможно троллинга ради, чем они и занимались впринципе, пока я их не начал поносить ранее за их грешки в мою сторону. Но путём эксперемента было выявлено, что предложенный вариантов не работает, либо работает с вылетом по понятным причинам. У кого есть нормально рабочие конфиги по работе детекторов с пояснением по тому как заставить работать тот же Сварог юзая шейдер ОГСРки? А то кучка зумеров на меня держит не то что зло, а у них нет желания относится нормально к моему существованию. Ведут себя как коммунисты и леваки, которые для Оскара выбирают фильмы и ноют в твиттере... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 5 января, 2022 3 часа назад, vader_33 сказал: Deathman насчет видео без понятия, не добавлял никогда, насчет картинок, например, добавить в main_menu:InitControls() что-то типа этого (может сойдет и для видео) если будет разное количество картинок и разные названия Скрыть контент всякие "bkg_escape_1" (без разницы какое название, главное, чтобы локации были прописаны правильно) прописать в ui_mm_main.xml. Родной xml:InitStatic("background", self) оставить, дефолтом будет local bkg_tbl = { ["l01_escape"] = { "bkg_escape_1", "bkg_escape_2", "bkg_escape_3", "bkg_escape_4", }, ["l02_garbage"] = { "bkg_garbage_1", "bkg_garbage_2", } } local fs = getFS() local flist = fs:file_list_open_ex("$game_saves$",bit_or(bit_or(FS.FS_ListFiles,FS.FS_RootOnly), FS.FS_ClampExt),"*.sav") local f_cnt = flist:Size() flist:Sort(FS.FS_sort_by_modif_down) if f_cnt > 0 then for it=0, f_cnt-1 do local file = flist:GetAt(it) local file_name = file:NameFull() if string.find(file_name,"quicksave") then local sg = CSavedGameWrapper(file_name) local lvl = sg:level_name() if bkg_tbl[lvl] then local rnd = math.random(#bkg_tbl[lvl]) local new_bkg = bkg_tbl[lvl][rnd] xml:InitStatic(new_bkg, self) break end end end end если у всех уровней будет по равному количеству картинок, можно обойтись без таблички (но однотипные названия должны быть) Скрыть контент в ui_mm_main.xml картинки прописывать в таком формате: bkg_уровень_номер. например, "bkg_l01_escape_1", "bkg_l01_escape_2"... "bkg_l02_garbage_1"... Изменить количество можно в строчке local rnd = math.random(1,4) local fs = getFS() local flist = fs:file_list_open_ex("$game_saves$",bit_or(bit_or(FS.FS_ListFiles,FS.FS_RootOnly), FS.FS_ClampExt),"*.sav") local f_cnt = flist:Size() flist:Sort(FS.FS_sort_by_modif_down) if f_cnt > 0 then for it=0, f_cnt-1 do local file = flist:GetAt(it) local file_name = file:NameFull() if string.find(file_name,"quicksave") then local sg = CSavedGameWrapper(file_name) local lvl = sg:level_name() local rnd = math.random(1,4) local new_bkg = "bkg_"..lvl.."_"..rnd xml:InitStatic(new_bkg, self) break end end end Дополнено 4 минуты спустя может еще партикл скриптом к ней добавлялся. Если нет и если эта аномалия в онлайне - пробовать перед удалением сначала отключить ее obj:disable_anomaly() , а потом удалять (отключать клиентский объект, удалять серверный) Спасибо за то что потратил время и придумал как все это сделать, я очень благодарен за это, жаль только я мало что понял. Думаю кому-то это будет неимоверно полезно и он сможет реализовать это. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 5 января, 2022 (изменено) Deathman так делать там больше нечего, просто вставить готовый код в функцию и прописать в ui_mm_main.xml текстуры Дополнено 4 минуты спустя Yarkov Desorec видел на стримах беты radiophobia 3, она на движке огср, но не знаю, огср-овские детекторы или своя реализация. Сама бета и актуальные патчи в дискорде разработчик выкладывает (на moddb есть ссылка на дискорд) Дополнено 25 минуты спустя Deathman вот пример для оригинала, для кордона и свалки https://disk.yandex.ru/d/hDDaaMLn19J7SA Изменено 5 января, 2022 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Yarkov Desorec 27 Опубликовано 5 января, 2022 (изменено) vader_33 спасибо. Буду с ними на инглише этот вопрос решать тогда уж.Бета найдена! Изменено 5 января, 2022 пользователем Yarkov Desorec Нашёл ссылку на бету на вашем форуме Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Deathman 664 Опубликовано 5 января, 2022 4 часа назад, vader_33 сказал: Deathman так делать там больше нечего, просто вставить готовый код в функцию и прописать в ui_mm_main.xml текстуры Дополнено 4 минуты спустя Yarkov Desorec видел на стримах беты radiophobia 3, она на движке огср, но не знаю, огср-овские детекторы или своя реализация. Сама бета и актуальные патчи в дискорде разработчик выкладывает (на moddb есть ссылка на дискорд) Дополнено 25 минуты спустя Deathman вот пример для оригинала, для кордона и свалки https://disk.yandex.ru/d/hDDaaMLn19J7SA Спасибо! Я очень сильно благодарен. Попробую подключить поддержку .ogm Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZonaChe 405 Опубликовано 5 января, 2022 Всем здрас-си и с НГ. Подскажите, есть ли какая нибудь формула для пересчёта координат для худа и инвентаря с 16:9 на 4:3? 1 Прямой дороги тебе, сталкер. Мимо аномалий, через артефакты... Я всегда хотел отвечать людям добром, но жизнь научала отвечать взаимностью... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Paracetamol 921 Опубликовано 5 января, 2022 Всем привет, экспериментирую с нетпаками и хочу хочу сделать спавн спейс рестриктора и чтобы при заходи гг в него появлялась надпись на экране до тех пор пока он стоит в нём. Вызываю так: Спойлер ---------- -- чтение формы из нет-пакета ---------- function r_shape(packet) local s local st = {} st.count = packet:r_u8() st.shapes = {} for i=1, st.count do s = {} s.type = packet:r_u8() if s.type == 0 then s.center = packet:r_vec3() s.radius = packet:r_float() else s.axis_x = packet:r_vec3() s.axis_y = packet:r_vec3() s.axis_z = packet:r_vec3() s.offset = packet:r_vec3() end st.shapes = s end return st end ---------- -- запись формы в нет-пакет ---------- function w_shape(packet, st) local s packet:w_u8(st.count) for i=1, st.count do s = st.shapes packet:w_u8(s.type) if s.type == 0 then packet:w_vec3(s.center) packet:w_float(s.radius) else packet:w_vec3(s.axis_x) packet:w_vec3(s.axis_y) packet:w_vec3(s.axis_z) packet:w_vec3(s.offset) end end end ---------- -- перепаковка нет-пакета созданного скриптом рестрикта ---------- function rewrite_restrictor(se_obj, custom, radius) local packet = net_packet() se_obj:STATE_Write(packet) local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local spawn_story_id = packet:r_s32() local shape = r_shape(packet) local restrictor_type = packet:r_u8() custom_data = custom shape = {} shape.count = 1 shape.shapes = {} shape.shapes[1] = {} shape.shapes[1].type = 0 shape.shapes[1].center = vector():set(0,0,0) shape.shapes[1].radius = radius packet:w_u16(game_vertex_id) packet:w_float(distance) packet:w_s32(direct_control) packet:w_s32(level_vertex_id) packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(story_id) packet:w_s32(spawn_story_id) w_shape(packet, shape) packet:w_u8(restrictor_type) se_obj:STATE_Read(packet, packet:w_tell() - packet:r_tell()) end function spawn_zones() --Кордон esc_spawn1_zone() end --Escape function esc_spawn1_zone() local se_obj = alife():create("space_restrictor",vector():set(-206.853,-19.663,-140.029),45944,61) local custom = "[logic]\n".. "active = sr_idle\n".. "[sr_idle]\n".. "on_actor_inside = %+space_greem_zone%" rewrite_restrictor(se_obj, custom, 2.0) level.map_add_object_spot_ser(se_obj.id, "crlc_small", "Костёр") end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 6 января, 2022 Paracetamol так какая проблема-то В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты