Модостроение. Общие вопросы и ответы
|
|
denis2000 | Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Помощь тем кто хочет знать больше о игре и модах Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut] [cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Код function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Код Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Код Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста. Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими
[cut noguest=Первый юбилей нашей темы] Здравствуйте господа модостроители, и все так или иначе причастные к этому. Нашей теме исполнился 1 год. От души поздравляю Всех Вас дорогие друзья, творческих успехов. Хочу так же выразить отдельную благодарность denis2000 и ХОВАН. tracker 23.06.11
[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Чт, 03.06.2021, 21:14 | Сообщение # 3031 |
Ветеран
Пользователи
Сообщений: 400
| Здравствуйте Всем! Люди добрые, поможите чем можите! Играю в SGM 1.7. С некоторых пор, при попытке быстрого сохранения ловлю вылет:
Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : Smart_terrain [zat_sim_15] population can't be less than zero!!!
Сразу было редко, а сейчас почти всё время. Начал ловить этот вылет даже при попытке сохранить игру через меню. Что означает сия беда и как её прекратить?
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
sergej5500 | Дата: Пт, 04.06.2021, 20:49 | Сообщение # 3032 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Наблюдатель, Покажи содержимое файла zat_sim_15.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Пт, 04.06.2021, 21:07 | Сообщение # 3033 |
Ветеран
Пользователи
Сообщений: 400
| Цитата sergej5500 ( ) Покажи содержимое файла zat_sim_15. [cut][smart_terrain];zat_sim_15 squad_id = 21 spawn_point = zat_sim_15_spawn_point max_population = 2 respawn_params = respawn@zat_alfa_sim_15
[respawn@zat_alfa_sim_15] zat_alfa_force_novice zat_alfa_force_regular zat_alfa_force_experienced zat_alfa_force_veteran zat_alfa_force_master
[zat_alfa_force_novice] spawn_squads = zat_alfa_squad_4_novice spawn_num = {+opt_activate_alfa_force =check_actor_rank(0:100)} 0, 0
[zat_alfa_force_regular] spawn_squads = zat_alfa_squad_4_regular spawn_num = {+opt_activate_alfa_force =check_actor_rank(100:200)} 1, 0
[zat_alfa_force_experienced] spawn_squads = zat_alfa_squad_4_experienced spawn_num = {+opt_activate_alfa_force =check_actor_rank(200:350)} 1, 0
[zat_alfa_force_veteran] spawn_squads = zat_alfa_squad_4_veteran spawn_num = {+opt_activate_alfa_force =check_actor_rank(350:600)} 1, 0
[zat_alfa_force_master] spawn_squads = zat_alfa_squad_4_master spawn_num = {+opt_activate_alfa_force =check_actor_rank(600)} 1, 0[/cut]Добавлено (04.06.2021, 21:22) ---------------------------------------------
Цитата sergej5500 ( ) файла zat_sim_15. Может альфовцев много спавнится? Я ничего не делал со спавном альфы, просто вспомнил, что раз на Затоне, их заспавнилось просто несколько групп за мостом Преображенского. Т.е. они заспавнились не по всему Затону, а в кучу?! Может в этом причина? Я уже встречал когда-то подобный вопрос где-то, но к сожалению тогда он меня не касался и я не сохранил на него ответ! Добавлено (05.06.2021, 16:28) --------------------------------------------- sergej5500, Нашёл такой же вылет в группе ВК: "Фиксы для SGM 2.2 SeregA-Lus (И не только)". Решения никто не предложил. Но Вы натолкнули меня на идею. С последней сохранки, всё бросил, отправился на Затон и вынес все отряды "Альфы", как и все массовые скопления мутантов. Вроде помогло. Опять начал сохраняться. Не знаю правда, как долго.
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 07.06.2021, 09:07 | Сообщение # 3034 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Наблюдатель, Да, очевидная причина, судя по всему, это излишний спавн отрядов Альфы. Их нужно периодически уничтожать или отключить альфу в принципе в файле mod_params.ltx если не собираетесь перманентно с ними воевать, но это желательно делать сразу с начала игры.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Вт, 15.06.2021, 20:06 | Сообщение # 3035 |
Ветеран
Пользователи
Сообщений: 400
| Цитата denis2000 ( ) Да, очевидная причина, судя по всему, это излишний спавн отрядов Альфы. Здравствуйте Всем! Уважаемый denis2000, хочу спросить, у меня в этом вылете: Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : Smart_terrain [zat_sim_14] population can't be less than zero!!! Перманентно меняется номер файла zat_sim_... Сначала был 15, потом 10, теперь 14? Эти файлы что, отвечают за спавн разных сквадов Альфы? Ну типа по статусу?
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 16.06.2021, 09:30 | Сообщение # 3036 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Наблюдатель, Нет это просто имена смартов.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Чт, 24.06.2021, 00:41 | Сообщение # 3037 |
Ветеран
Пользователи
Сообщений: 400
| Здравствуйте Всем! Продолжаю играть в старый добрый SGM 1.7. С монолитавцами случилось такое чудо - вижу раненого, подхожу, даю аптечку, получаю деньги за спасение. Раненый продолжает лежать и просить аптечку. Снова даю аптечку, снова получаю деньги за спасение, но на 100 рублей больше и опять раненый продолжает лежать и просить аптечку. Снова даю ему аптечку... и так до бесконечности. Ничего не правил монолиту, сейчас просто состою в нём. "Ничего нэ дэлал, просто вошёл, да э-э-э! Мамой килянусь...!" Можно как то сделать, что бы монолитовцы вставали, как все, после получения аптечки?
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 24.06.2021, 23:03 | Сообщение # 3038 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Наблюдатель, Монолитовцам лечиться нельзя. Так решили разрабы Сталкера. Чтобы разрешить им лечение, нужно в файле xr_wounded.script поправить функцию init_wounded.
В секции if npc_community == "monolith" then
def.help_dialog = nil заменить на def.help_dialog = "dm_help_wounded_medkit_dialog" def.use_medkit = false заменить на def.use_medkit = true
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Пн, 01.11.2021, 01:56 | Сообщение # 3039 |
Ветеран
Пользователи
Сообщений: 400
| Прветствую, честной Народ! Други, подскажите плиз, а что надо подправить в игре, что бы можно было давать аптечки врагам, после чего они бы становились нейтралами, как в некоторых модах? Иногда те же наёмники ну прелесть, как себя ведут, даже добивать не хочется. И нейтральными их делать не хочу, что бы скучно не было. Если конечно для этого надо не глубоко лезть в скрипты.
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
asd123 | Дата: Сб, 13.11.2021, 18:53 | Сообщение # 3040 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Здравствуйте! Очень интересует вопрос по динамической музыке. Хочу добавить несколько боевых тем, за основу беру скрипты от ЧН чтобы была вариативность как там. Однако, столкнулся с проблемой: не могу понять за что отвечают lo, hi и знаки ">" и "<" в структуре перехода треков. Отрывок из файла с темами(оригинал ЧН): [cut=xrs_dynamic_music_themes.script] --[[ xStream 02.2008 ]]
themes={ { maps = "stancia_2", files={ intro = "music\\combat\\aes_intro", intro_2 = "music\\combat\\aes_intro", main = "music\\combat\\aes_main" }, graph={ null={ main = {"hi",">"} }, main={ main = {"lo","<"}, main = {"lo",">"}, main = {"hi",">"} } } }, { maps = "garbage, darkvalley, agroprom, agroprom_u, yantar, red_forest, military, limansk, hospital", files={ intro = "music\\combat\\theme1_intro", intro_2 = "music\\combat\\theme1_intro_2", wait_1 = "music\\combat\\theme1_wait_1", wait_2 = "music\\combat\\theme1_wait_2", wait_3 = "music\\combat\\theme1_wait_3", idle_1 = "music\\combat\\theme1_idle_1", idle_2 = "music\\combat\\theme1_idle_2", combat_1 = "music\\combat\\theme1_combat_1", combat_2 = "music\\combat\\theme1_combat_2", combat_3 = "music\\combat\\theme1_combat_3", final = "music\\combat\\theme1_final", relax = "music\\combat\\theme1_relax" }, graph={ null={ intro = {"lo",">"}, combat_1 = {"hi",">"} }, intro={ relax = {"lo","<"}, wait_1 = {"lo",">"}, combat_1 = {"hi",">"} }, intro_2={ final = {"lo","<"}, wait_1 = {"lo",">"}, combat_1 = {"hi",">"} }, wait_1={ final = {"lo","<"}, wait_2 = {"lo",">"}, intro_2 = {"hi",">"} }, wait_2={ final = {"lo","<"}, wait_3 = {"lo",">"}, intro_2 = {"hi",">"} }, wait_3={ final = {"lo","<"}, idle_1 = {"hi","<"}, intro_2 = {"hi",">"} }, idle_1={ final = {"lo","<"}, wait_1 = {"lo",">"}, combat_1 = {"hi",">"} }, idle_2={ final = {"lo","<"}, idle_1 = {"lo",">"}, combat_1 = {"hi",">"} }, combat_1={ final = {"lo","<"}, idle_2 = {"hi","<"}, combat_2 = {"hi",">"} }, combat_2={ final = {"lo","<"}, idle_2 = {"hi","<"}, combat_3 = {"hi",">"} }, combat_3={ final = {"lo","<"}, idle_2 = {"hi","<"}, combat_1 = {"hi",">"} }, final={ null = {"lo","<"}, idle_1 = {"lo",">"}, combat_1 = {"hi",">"} }, relax={ null = {"lo","<"}, idle_1 = {"lo",">"}, combat_1 = {"hi",">"} } } },[/cut] Ну и собственно другой файл с функциями, в котором вроде как и обработка этих самых переменных: [cut=xrs_dyn_music.script] --[[ xStream 02.2008 ]]
function init() --колбеки для заглушения амбента xr_s.register_callback("update",fades,nil) xr_s.register_callback("actor_destroy",restore_ambient_on_end,nil) xr_s.register_callback("main_menu_on",main_menu_on,nil) xr_s.register_callback("main_menu_off",main_menu_off,nil) end
------------- motivator_obj = nil combat_table={} suspence_table = {} npc_table = {} play_combat=0 max_suspence_time=2000 min_suspence_time=1000 max_suspence_limit=7000 min_suspence_limit=2500 local suspence_enemy_update=0 local last_update=0 local inert = 1000 local clicks_prev = 3000 local music_section="" local music_previous_section="" local music_next_section_start_time=0 local music=false local music_init=0 local music_obj=nil local music_lo_lvl=7 local music_hi_lvl=17 local music_graph={} local ambient_vol = get_console():get_float('snd_volume_music') local last_max_update = 0 local last_min_update = 0
function set_max_suspence_time(number) max_suspence_time = number*750 end
function set_min_suspence_time(number) min_suspence_time = number*750 end
function set_max_suspence_limit(number) max_suspence_limit = number end
function set_min_suspence_limit(number) min_suspence_limit = number end
function play_suspence() if play_combat ~= 2 then if suspence_enemy_update == 0 then suspence_enemy_update = 1 elseif suspence_enemy_update == 1 then suspence_enemy_update = 2 elseif suspence_enemy_update == 2 then play_combat = 2 end end end
function stop_suspence() local n = 0 for k,v in pairs(suspence_table) do n = 1 break end if n == 0 then suspence_enemy_update = 0 if play_combat ~= 0 then play_combat = 0 end end end
function play_combat_sound() if play_combat ~= 1 then play_combat = 1 end end
function stop_combat_sound() local n = 0 for k,v in pairs(combat_table) do --printf("combat NPC NAME = "..k) n = 1 break end if n == 0 and play_combat ~= 0 then -- for k,v in pairs(suspence_table) do -- suspence_table[k] = nil -- end play_combat = 0 end end
function music_start(sound) if not music then if music_obj==nil then music_obj=xrs_stereo.stereo_sound() end music_obj:initialize(music_graph.files[sound],ambient_vol) music_next_section_start_time=music_obj:play()-clicks_prev music_previous_section=music_section end music = true end
function music_change(sound) if music then music_next_section_start_time=music_obj:play_at_time(music_next_section_start_time+clicks_prev, music_graph.files[sound], ambient_vol)-clicks_prev music_previous_section=music_section end end
--проверяем, какие можно играть треки на этой карте -- если нет в теме переменной maps, то можно везде -- если есть, то только если наша карта есть в списке - карты перечисляются через запятую по именам function prepare_tracks() if not xrs_dynamic_music_themes or not xrs_dynamic_music_themes.themes then return end local new_table={} local lname = level.name() for k,v in pairs(xrs_dynamic_music_themes.themes) do if not v.maps or v.maps=="" or string.find(v.maps,lname) then table.insert(new_table,v) end end xrs_dynamic_music_themes.themes = new_table end
function interactive_music(number) if IsDynamicMusic() then if music_init==-1 then return end if music_init==0 then prepare_tracks() if xrs_dynamic_music_themes and xrs_dynamic_music_themes.themes and #xrs_dynamic_music_themes.themes>0 then ambient_vol = get_console():get_float('snd_volume_music') music_init=1 else music_init=-1 return end end if not music then if time_global() - last_update > inert then music_select_section(number) last_update = time_global() end end if not music and music_previous_section=="" and music_section~="" then music_start(music_section) end if music and music_previous_section~="" and music_section=="" then music_previous_section="" end if music then music_obj:update(ambient_vol) if time_global() > music_next_section_start_time then music_select_section(number) if music_section~="" then music_change(music_section) else music=false end end end else if music_obj and music_obj:playing() then music_obj:stop() combat_table={} suspence_table = {} play_combat=0 suspence_enemy_update=0 last_update=0 music_section="" music_previous_section="" music_next_section_start_time=0 music=false music_init=0 music_obj=nil music_graph={} last_max_update = 0 last_min_update = 0 end end end
function music_select_section(number) local lvl = number if music_section=="" then music_section="null" music_graph = xrs_dynamic_music_themes.themes[math.random(#xrs_dynamic_music_themes.themes)] end local last_sel_max=0 local last_sel_min=1000 for k,v in pairs(music_graph.graph[music_section]) do local glevel=0 if v[1]=='lo' then glevel=music_lo_lvl end if v[1]=='hi' then glevel=music_hi_lvl end if v[2]=="<" and glevel<last_sel_min then if glevel>lvl then music_section=k last_sel_min=glevel end end if v[2]==">" and glevel>=last_sel_max then if glevel<=lvl then music_section=k last_sel_max=glevel end end end if music_section=="null" then music_section="" end if music and music_previous_section~="" and music_section=="" then music_previous_section="" end end
function stop_combat(object_id) if play_combat == 1 then --printf("object_id = "..object_id) combat_table[object_id] = nil stop_combat_sound() elseif play_combat == 2 then suspence_table[object_id] = nil stop_suspence() end end
local function play_music(mode, object_id) if mode == 1 then combat_table[object_id] = true play_combat_sound() else suspence_table[object_id] = true play_suspence() end end
local function play_consider_silence_zone(actor_pos, object_id, mode) if db.storage.silence_zone_table then local flag = 0 for k,v in pairs(db.storage.silence_zone_table) do local zone = db.zone_by_name[v] if zone:inside(actor_pos) then flag = 1 stop_combat(object_id) break end end if flag == 0 then play_music(mode, object_id) end else play_music(mode, object_id) end end
local function play_local_combat(actor, object, actor_pos, object_id) local best_enemy = object:best_enemy() if best_enemy and best_enemy:id() == actor:id() then -- local distance_to_enemy = actor_pos:distance_to_sqr(object:position()) -- if distance_to_enemy < max_suspence_limit then if object:see(actor) then play_consider_silence_zone(actor_pos, object_id, 1) return true else if play_combat ~= 2 then combat_table[object_id] = nil stop_combat_sound() end return false end end end
local function play_local_suspence(actor, object, actor_pos, object_id) local visibility = actor:see(object) if object:relation(actor)==game_object.enemy and play_combat ~= 1 then if i_am_is_enemy(object, actor, db.storage[object_id].combat_ignore) then local distance_to_enemy = actor_pos:distance_to_sqr(object:position()) if distance_to_enemy < min_suspence_limit then if time_global() - last_min_update > min_suspence_time then if visibility then play_consider_silence_zone(actor_pos, object_id, 2) end last_min_update = time_global() end elseif distance_to_enemy < max_suspence_limit then if time_global() - last_max_update > max_suspence_time then if visibility then play_consider_silence_zone(actor_pos, object_id, 2) end last_max_update = time_global() end end if not visibility or distance_to_enemy >= max_suspence_limit then suspence_table[object_id] = nil stop_suspence() end end end end
local function fade_in(cur_amb_vol, timer, counter) if fade_in_check_time ~= nil and time_global() - fade_in_check_time <= timer then return end fade_in_check_time = time_global() if cur_amb_vol<ambient_vol then cur_amb_vol=cur_amb_vol+counter if cur_amb_vol>ambient_vol then cur_amb_vol=ambient_vol end --printf("fade_in:SET = "..ambient_vol) get_console():execute('snd_volume_music '..cur_amb_vol) end end
local function fade_out(cur_amb_vol, timer, counter) if fade_out_check_time ~= nil and time_global() - fade_out_check_time <= timer then return end fade_out_check_time = time_global() if cur_amb_vol>0 then cur_amb_vol=cur_amb_vol-counter if cur_amb_vol<0 then cur_amb_vol=0 end --printf("fade_out:SET = "..ambient_vol) get_console():execute('snd_volume_music '..cur_amb_vol) end end
--интерпретируем колбеки по-своему function fades() --' Distemper 05.2008 -- local actor = db.actor if actor:alive() then local playing_back = IsDynamicMusic() local actor_pos = actor:position() for k, object in pairs(npc_table) do local object_id = object:id() if not playing_back and play_combat ~= 0 then stop_combat(object_id) elseif playing_back then if object:alive() then if play_local_combat(actor, object, actor_pos, object_id) then break end play_local_suspence(actor, object, actor_pos, object_id) end end end end --' end -- local cur_amb_vol = get_console():get_float('snd_volume_music') if music then fade_out(cur_amb_vol, 100, 0.1) else if db.storage.silence_zone_table and actor:alive() then local actor_pos = actor:position() local flag = 0 for k,v in pairs(db.storage.silence_zone_table) do local zone = db.zone_by_name[v] if zone:inside(actor_pos) then flag = 1 break end end if flag == 1 then fade_out(cur_amb_vol, 1000, 0.1) else fade_in(cur_amb_vol, 1000, 0.05) end else fade_in(cur_amb_vol, 100, 0.05) end end end function restore_ambient_on_end() if music_obj and music_obj:playing() then music_obj:stop() end --printf("restore_ambient_on_end:SET = "..ambient_vol) get_console():execute('snd_volume_music '..ambient_vol) end function main_menu_on() --printf("main_menu_on:SET = "..ambient_vol) get_console():execute('snd_volume_music '..ambient_vol) end function main_menu_off() local cur_amb = get_console():get_float('snd_volume_music') if cur_amb~=ambient_vol then ambient_vol = cur_amb end --printf("main_menu_off:SET = "..ambient_vol) get_console():execute('snd_volume_music '..ambient_vol) end
-- Дубликат из xr_combat_ignore, только без кучи проверок function i_am_is_enemy(obj, enemy, st) local overrides = st.overrides --' Если есть оверрайды, то работаем по ним. if overrides and overrides.combat_ignore then if xr_logic.pick_section_from_condlist( enemy, obj, overrides.combat_ignore.condlist ) ~= nil then --printf("pl:Disabling_memory_object[10] obj [%s]", obj:name()) --obj:enable_memory_object( enemy, false ) return false end return true else return true end end
function stop_sound() if music_obj and music_obj:playing() then music_obj:stop() end end [/cut]
У мутантов тоже есть группировки. © Движок X-Ray
|
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
asd123 | Дата: Вс, 14.11.2021, 03:46 | Сообщение # 3041 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| В общем, перенёс таки ЧНовскую боевую тему заменив ею ЗПшную, в итоге всё вроде как работает, тема играет если я рядом с врагом, а если меня не заметили и я сбежал то она затухает. Однако, если я вступаю в бой и побеждаю/сбегаю, то после победы/побега музыка почему-то никогда не затихает. Это можно как-то исправить?
У мутантов тоже есть группировки. © Движок X-Ray
|
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
robpol | Дата: Чт, 25.11.2021, 20:10 | Сообщение # 3042 |
Гражданский
Пользователи
Сообщений: 4
| Здравствуйте. Подскажите пожалуйста как добавить книги навыков для нового оружия в SGM 2.2?
|
|
|
Эти 0 пользователя(ей) поблагодарили robpol за это полезное сообщение: |
|
|
Наблюдатель | Дата: Чт, 09.12.2021, 13:06 | Сообщение # 3043 |
Ветеран
Пользователи
Сообщений: 400
| Приветствую Всех! Уважаемые Профи, подскажите плиз, можно ли в ЗП прописать лечение врагов аптечкой, что бы они после этого становились нейтралами, как в Мизери? Или это слишком трудоёмкий процесс?
Сообщение отредактировал Наблюдатель - Вт, 17.05.2022, 11:03 |
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
bsbanner | Дата: Вт, 04.10.2022, 22:40 | Сообщение # 3044 |
Гражданский
Пользователи
Сообщений: 2
| Играю в Gunslinger+ Sigerous Хотел бы, чтобы больше долговцев и свобовцев ходило по юпитеру (к примеру, спавнились на Янове и гугяли по локации). Понимаю, что надо что-то править в Gunslinger Sigerous Addon\gamedata\configs\scripts\jupiter\smart Но что, не понимаю(
|
|
|
Эти 0 пользователя(ей) поблагодарили bsbanner за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 06.10.2022, 00:25 | Сообщение # 3045 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата bsbanner ( ) что надо что-то править в Gunslinger Sigerous Addon\gamedata\configs\scripts\jupiter\smart
Правильно понимаете. Нужно добавить в файлы в этих папках код типа.
[cut=Для долга]respawn_params = respawn@jup_sim_21
[respawn@jup_sim_21] spawn_duty@advanced spawn_duty@veteran
[spawn_duty@advanced] spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice spawn_num = {-jup_b218_pripyat_group_gathering} 1, 0
[spawn_duty@veteran] spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_veteran spawn_num = {+jup_b218_pripyat_group_gathering} 1, 0[/cut]
[cut=Для свободы]respawn_params = respawn@jup_sim_5
[respawn@jup_sim_5] spawn_freedom@advanced spawn_freedom@veteran
[spawn_freedom@advanced] spawn_squads = freedom_sim_squad_advanced, freedom_sim_squad_advanced, freedom_sim_squad_novice spawn_num = {-jup_b218_pripyat_group_gathering} 2, 0
[spawn_freedom@veteran] spawn_squads = freedom_sim_squad_advanced, freedom_sim_squad_advanced, freedom_sim_squad_veteran spawn_num = {+jup_b218_pripyat_group_gathering} 2, 0[/cut]
Названия секций типа respawn@jup_sim_5 в каждом файле должны быть уникальны. Свои.
Возможно, потребуется новая игра.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|