Lieutenant Novikov 15 Опубликовано 27 Августа 2022 Поделиться Опубликовано 27 Августа 2022 Здравствуйте. Хочу написать метод возвращения в ЧН губной гармошки. В интернете есть статьи для ТЧ, но в ЧН требуются дополнительные действия, которые пришлось поискать. Сначала открываем файл xr_kamp.script по адресу gamedata/scripts xr_kamp.script (Показать) Здесь в строчке self.trans_kamp = { idle = { idle = 0, pre_harmonica = 0, pre_guitar = 50, story = 50}, выставляем вероятность pre_harmonica выше нуля, я например сделал так: self.trans_kamp = { idle = { idle = 0, pre_harmonica = 20, pre_guitar = 30, story = 50} но в сумме должно получиться не больше 100. Параметр pre_harmonica — это вероятность с которой НПС начнет играть на гармошке, pre_guitar — соответственно вероятность игры на гитаре, и story — предположительно вероятность рассказа анекдотов. Далее ищем в файле этот отрывок и убираем черточки впереди: -- if npc:object("harmonica_a") then -- self.npc[npc_id].states["play_harmonica"] = true -- self.npc[npc_id].states["wait_harmonica"] = true -- self.kamp_states["pre_harmonica"] = true -- self.kamp_states["harmonica"] = true -- self.kamp_states["post_harmonica"] = true -- else self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false -- end Дальше находим файл character_items.xml по адресу gamedata/configs/gameplay Где в список добавляем: harmonica_a = 1, prob=0.6 \n, это позволит гармошке появляться в инверторе НПС, где первая цифра кол-во предметов, а вторая (0.6) вероятность появления, можете написать свою, но она должна быть не больше 1 Далее файл script_sound_music_and_stories.ltx по адресу gamedata/configs/misc: script_sound_music_and_stories.ltx (Показать) В нем пишем в самом начале под: intro_music play_guitar reac_musicplay_harmonica ;- добавляем это Далее под: [reac_music] type = npc avail_communities = csky, stalker, bandit, dolg, freedom, army, renegade, killer, ecolog npc_prefix = true path = reactions\music\reaction_music_ shuffle = rnd idle = 1,1,100 group_snd = true [play_harmonica] type = npc avail_communities = csky, stalker, bandit, dolg, freedom, army, renegade, killer, ecolog ;- здесь группировки которые будут играть на гармошке.npc_prefix = true path = music\harmonica_ ;- адрес звуковых файловshuffle = rnd idle = 1,1,100 Ну и последнее, в ЧН вместо звуковых файлов стоят "заглушка" — файл без звука, поэтому вам придется искать звуковые файлы на стороне. Я брал из Call of Chernobyl. Когда найдете их переименуйте в harmonica_номер по порядку, и скиньте в папку music, по адресу gamedata/sounds/characters_voice/human_номер(придется добавлять во все)/(группировка, к примеру bandit)/music. И ещё, необходимо будет начать новую игру, иначе вылет. 2 Ссылка на комментарий
Hind 29 Опубликовано 8 Октября 2022 Поделиться Опубликовано 8 Октября 2022 Некролог (оповещение о смерти сталкера) Сложность: легкоАвтор скрипта: Weanchester, взято из stalkerin.gameruДоработал: Hind Некролог (Показать) Создаём скрипт в папке gamedata/scripts и называем его как хотим (в данном случае dmb.script) Туда пишем: local level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_underground"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" } local community = { ["stalker"] = "Одиночка", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local t = time_global() local dead_news = "%c[0,255,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 3000, 4000) elseif t > time_global() + 3000 then dmb2.news_sound() end endlocal level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_underground"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" } local community = { ["stalker"] = "Одиночка", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local t = time_global() local dead_news = "%c[0,255,0,0]ПОГИБ СТАЛКЕР \\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Кличка: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 3000, 4000) elseif t > time_global() + 3000 then dmb2.news_sound() end end Вот и всё! Теперь после смерти сталкеров, спустя 3 секунды у нас будет оповещение о смерти со звуком!З.Ы. Статья создана новичком, поэтому и оформлена по васяновски. Прошу меня простить если не понятно Рабочая гитара Сложность: среднеАвтор скрипта: Hind*некоторые функции брал из открытых источников. к сожалению авторов не помнюЛежала как то без дела гитара, поделюсь с народом. Гитара (Показать) В этом уроке рассмотрим создание рабочей гитары, которая будет играть ту музыку, которую мы захотим. Нам надо всего 3 файла: bind_stalker.script, ваш_скрипт1.script, ваш_скрипт2.script (в моём случае это dmb и dmb2 соответственно) bind_stalker.script (Показать) Итак, в bind_stalker.script пишем: В function actor_binder:net_destroy() пишем: self.object:set_callback(callback.use_object, nil)self.object:set_callback(callback.use_object, nil) В function actor_binder:reinit() пишем: self.object:set_callback(callback.use_object, self.use_object, self)self.object:set_callback(callback.use_object, self.use_object, self) И где хотим добавляем следующую функцию: function actor_binder:use_object(obj) dmb.use_item(obj) dmb.use_snd(obj) endfunction actor_binder:use_object(obj) dmb.use_item(obj) dmb.use_snd(obj) end Далее идём в наш созданный скрипт (в данном случае у меня это dmb.script), и там пишем следующее: dmb.script (Показать) local tSound ={ gitara = "interface\\inv_gitara", -- путь до нашего звука при юзании предмета. Вместо него ставим какой хотим, разумеется } function use_item(obj) local obj = obj:section() if obj then if obj == "gitara" then -- наш предмет (в данном случае я уже создал юзабельный предмет, и подогнал его как Гитару) dmb2.start_timer() -- включаем таймер end end end function use_snd(obj) if obj and tSound[obj:section()] then local snd = xr_sound.get_safe_sound_object(tSound[obj:section()]) if snd then snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0) end end endlocal tSound ={ gitara = "interface\\inv_gitara", -- путь до нашего звука при юзании предмета. Вместо него ставим какой хотим, разумеется } function use_item(obj) local obj = obj:section() if obj then if obj == "gitara" then -- наш предмет (в данном случае я уже создал юзабельный предмет, и подогнал его как Гитару) dmb2.start_timer() -- включаем таймер end end end function use_snd(obj) if obj and tSound[obj:section()] then local snd = xr_sound.get_safe_sound_object(tSound[obj:section()]) if snd then snd:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.0) end end end и идём во второй наш скрипт, где пишем: dmb2.script (Показать) function action_timer() alife():create("gitara", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end function start_timer() -- функция на которую мы ссылались при юзании в первом скрипте local iTimer = time_global() + 17000 -- наше время песни, т.е. 17 секунд. Спустя 17 секунд, гитара нам вернется в инвентарь. local function check_timer() return time_global() > iTimer end level.add_call(check_timer, action_timer) endfunction action_timer() alife():create("gitara", db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id()) end function start_timer() -- функция на которую мы ссылались при юзании в первом скрипте local iTimer = time_global() + 17000 -- наше время песни, т.е. 17 секунд. Спустя 17 секунд, гитара нам вернется в инвентарь. local function check_timer() return time_global() > iTimer end level.add_call(check_timer, action_timer) end Ну, и вроде всё! Не забудьте проверить правильность копирования, убрать стрелочки, с помощью которых я указывал на что-либо, и вуаля. Если где-то ошибся, или не работает, маякните 2 Hind Upgrade Mod Ссылка на комментарий
Balavnik 150 Опубликовано 28 Апреля 2024 Поделиться Опубликовано 28 Апреля 2024 Мой первый, но, надеюсь, полезный урок Как сделать сообщение на пда Меченому со своей иконкой (Показать) Что нам понадобится: Paint.NET gamedata\textures\ui\ui_iconstotal.dds gamedata\scripts\news_manager.script Ваше изображение. Сжимаем: Для сжатия используем бесплатную утилиту. Сжимаем до 83x47 пикселей. После сжатия открываем ui_iconstotal.dds и вставляем в пустое поле ваше изображение. Наводим курсор на верхний левый пиксель нашего изображения и смотрим координаты внизу (иллюстрация) Затем, заходим в файл news_manager.script и ищем массив tips_icons, добавляем в конец запись в формате имя_иконки {x-координата, y-координата}. Пример. Готово! Теперь при отправке сообщения можно указать свою иконку! Пример (sender - имя иконки, например "barman"). 1 А где зима? Ссылка на комментарий
Это популярное сообщение. Painter 3 549 Опубликовано 20 Сентября 2024 Это популярное сообщение. Поделиться Опубликовано 20 Сентября 2024 Исправление «мясных» бочек (Показать) В оригинальном ЗП есть один малоизвестный баг, при котором металлические бочки (и ряд других предметов) разрывает на кровавые ошмётки, если бросить их в «Воронку» или «Карусель»: Для исправления ошибки нам понадобится файл: gamedata\configs\models\dynamic_objects.ltx Находим секции бочек: [bochka_close_1]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_1" visual = dynamics\balon\bochka_close_1.ogf [bochka_close_2]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_2" visual = dynamics\balon\bochka_close_2.ogf [bochka_close_3]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_3" visual = dynamics\balon\bochka_close_3.ogf [bochka_close_4]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_4" visual = dynamics\balon\bochka_close_4.ogf[bochka_close_1]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_1" visual = dynamics\balon\bochka_close_1.ogf [bochka_close_2]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_2" visual = dynamics\balon\bochka_close_2.ogf [bochka_close_3]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_3" visual = dynamics\balon\bochka_close_3.ogf [bochka_close_4]:physic_destroyable_object $spawn = "dynamic_objects\balon\bochka_close_4" visual = dynamics\balon\bochka_close_4.ogf И заменяем «physic_destroyable_object» на «physic_object»: [bochka_close_1]:physic_object $spawn = "dynamic_objects\balon\bochka_close_1" visual = dynamics\balon\bochka_close_1.ogf [bochka_close_2]:physic_object $spawn = "dynamic_objects\balon\bochka_close_2" visual = dynamics\balon\bochka_close_2.ogf [bochka_close_3]:physic_object $spawn = "dynamic_objects\balon\bochka_close_3" visual = dynamics\balon\bochka_close_3.ogf [bochka_close_4]:physic_object $spawn = "dynamic_objects\balon\bochka_close_4" visual = dynamics\balon\bochka_close_4.ogf[bochka_close_1]:physic_object $spawn = "dynamic_objects\balon\bochka_close_1" visual = dynamics\balon\bochka_close_1.ogf [bochka_close_2]:physic_object $spawn = "dynamic_objects\balon\bochka_close_2" visual = dynamics\balon\bochka_close_2.ogf [bochka_close_3]:physic_object $spawn = "dynamic_objects\balon\bochka_close_3" visual = dynamics\balon\bochka_close_3.ogf [bochka_close_4]:physic_object $spawn = "dynamic_objects\balon\bochka_close_4" visual = dynamics\balon\bochka_close_4.ogf Теперь металлические бочки используют класс «O_PHYS_S» вместо «O_DSTR_S» и при попадании в указанные аномалии будут просто отлетать в стороны. На всякий случай, рекомендую пробежаться и по all.spawn. Если динамические предметы с визуалами бочек используют секцию «physic_destroyable_object», также замените её на «physic_object». 2 5 Портфолио Ссылка на комментарий
Graff46 599 Опубликовано 6 Марта Поделиться Опубликовано 6 Марта @Painter Тут можно посмотреть где прописаны партиклы. Можно заменить партиклы на подходящие. То что объекты разрывает в аномалях добавляет некой живности миру ИМХО. 1 Ссылка на комментарий
Фокусник 10 Опубликовано 14 Марта Поделиться Опубликовано 14 Марта Существует ли урок по редактированию gamemtl.xr, с целью добавления дополнительных звуков шагов ГГ? Или у кого-то уже есть правленный? Я слышал для работы нужен gamemtl_xr_editor. Ссылка на комментарий
shahvkit 3 641 Опубликовано 15 Марта Поделиться Опубликовано 15 Марта (изменено) 14.03.2025 в 23:36, Фокусник сказал: Существует ли урок по редактированию gamemtl.xr Может тебе это нужно? 1 - https://www.amk-team.ru/forum/topic/11124-gamemtlxr-shadersxr-lanimsxr-i-format-ppe/ 2- https://xray-engine.org/index.php?title=gamemtl.xr_compiler/decompiler_(gamemtl.xr_cdc) Изменено 15 Марта пользователем shahvkit 1 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти