Перейти к контенту

FAQ


    Правки для ОП-2.2

    Небольшие правки в виде инструкций

    ---===---

     

     

    Скрытый текст

    Правленый движок в ОП-2.2, для игры с правками не нужен. Редактировать fsgame.ltx на чтение из каталога игры, папки gamedata, тоже не нужно, т.к. это уже прописано в оригинальном файле:

    $game_data$ = true| true| $fs_root$| gamedata\

    Все остальное - суеверия))

    Скрытый текст
    $app_data_root$      = true|        true|    $fs_root$|          userdata\
    $game_data$          = true|        true|    $fs_root$|          gamedata\
    $game_ai$            = true|        true|    $game_data$|        ai\
    $game_spawn$         = true|        true|    $game_data$|        spawns\
    $game_anims$         = true|        true|    $game_data$|        anims\
    $game_levels$        = true|        true|    $game_data$|        levels\
    $game_meshes$        = true|        true|    $game_data$|        meshes\
    $game_dm$            = true|        true|    $game_data$|        meshes\
    $game_shaders$       = true|        true|    $game_data$|        shaders\
    $game_sounds$        = true|        true|    $game_data$|        sounds\
    $game_textures$      = true|        true|    $game_data$|        textures\
    $game_scripts$       = true|        true|    $game_data$|        scripts\
    $game_config$        = true|        true|    $game_data$|        config\
    $game_huds$          = true|        true|    $game_data$|        skins_ui\huds\
    $game_ui_inventory$  = true|        true|    $game_data$|        skins_ui\inventory
    $level$              = true|        true|    $game_levels$
    $game_saves$         = true|        true|    $app_data_root$|    savedgames\
    $logs$               = true|        true|    $app_data_root$|    logs\
    $crash$              = true|        true|    $app_data_root$|    crashes\
    $screenshots$        = true|        true|    $app_data_root$|    screenshots\
    $game_settings$      = true|        true|    $app_data_root$|    settings\
    $mod_dir$            = true|        true|    $fs_root$|          mods\

     

     

    Скрытый текст

    Если вы решили играть с правками, в первую очередь нужно поставить "Античит". Взять его можно в базе правок. Так же желательно поставить "Отключение счетчиков облегченного прохождения" и смело ими пользоваться - тут вам, без дополнительных правок, и метки на тайники Коллекционера и документы Воронина, и бессмертие - для трудных моментов игры.

     

    Прежде чем ставить правки на ослабление не убиваемых НПС и жутких монстров, а так же при тотальной нехватке всего и вся, возможно стоит попробовать снизить сложность)). Если есть вариант правки с отрубанием какой-то из спорных идей-реализаций, авторов ОП-2.2 и правка с "гуманизацией" этих "фишек" - лучше выбрать 2-й вариант. В остальном - ставьте только то, что вам нужно. Не пытайтесь "накатить" все и сразу. Вы или по неопытности сломаете игру или сделаете ее для себя не интересной. 

     

    Скрытый текст

    В gamedata\scripts\ui\ui_load_dialog.script закомментировать двумя тире, эту строчку:

    --db.dev_mode=sg:dev_mode()

    Правка только скрывает красную надпись! Скрыть факт вмешательства в файлы мода, таким образом не удастся. У каждого сохранения в логе все равно будет приписка: "save created on DEVELOPER mode!". На офф-сайте с таким логом в сохранениях, делать нечего)).

    image.jpg

     

    Скрытый текст

    Находим счетчики в скриптах: gamedata\scripts\

    В каждом файле по одному, кроме 4-го, в valerich_treasures.script - там их 2.

     

    ui\ui_mm_opt_creator.script       - db.god.c[1] = db.god.c[1]+1    --"Бессмертие на некоторое время"
    ui\ui_mm_opt_add.script            - db.god.c[2] = db.god.c[2]+1    --"Покупка квестового  предмета за 200000"
    callbacks\key_handlers.script    - db.god.c[3] = db.god.c[3]+1    --"Суперпрыжок" 
    valerich_treasures.script            - db.god.c[4] = db.god.c[4]+1    --"Метка на тайник Коллекционера"
    kostya_dialog.script                    - db.god.c[5] = db.god.c[5]+1    --"Метки на документы Воронина"
    spawn_level_changer.script       - db.god.c[6] = db.god.c[6]+1    --"Телепортация с неограниченным весом"

     

    И приводим их к вот такому виду:

    db.god.c[1] = 0
    db.god.c[2] = 0
    db.god.c[3] = 0
    db.god.c[4] = 0 
      --(2 раза)
    db.god.c[5] = 0
    db.god.c[6] = 0

     

    При установке правки "Античит" счетчики отрубаются в правке и можно с этим не заморачиваться.

     

    Скрытый текст

    gamedata\config\misc\safe_stealmanager_config.ltx

    в самом начале файла:

    [StealManager]
    enable= true                                     ;ставим false и ничего не платим
    protectionCostFirstPay=10000       ;первый взнос в рублях
    protectionCostDayPay=5000          ;ежедневный взнос в рублях
    bethDistance= 60                            ;расстояние для "умного" обкрадывания
    traderDistance=6                             ;расстояние до торговца с платным хранилищем глобальное

    =============

    Эта правка не отключит все воровство! Об этом в следующем спойлере.

     

    Скрытый текст

    В script\nsafe\safe_stealmanager.script

    найти два места 

    self.enable=true 

    self.enable=reader:readBool(self.classname,"enable",true) 

    и заменить их на 

    self.enable=false

    self.enable=false

    Кто-то по уму сделал скрипт, так что если enable=false, то обработка воровства не вызывается. 

    -----------------

    от @voluntas88

    ============

    upd: эта правка "конфликтует" с платными нычками, т.к. полностью отрубает воровство из новых рюкзаков, а с ним, и возможность оплаты нычек у торговцев - не воруют же. Пользуйтесь чем то одним.

     

    Скрытый текст

    gamedata\config\alife.ltx

    time_factor      = 5

    Меняем на сколько нужно; единица вроде будет 1:1 как в реале, 50 - минуты будут меняться на глазах. Для применения эффекта, необходимо поспать.

    ==========

    п.с. следует помнить, что на время завязаны погодные циклы и выброс. Лишний раз "баловаться" изменением этого параметра, не стоит.

     

    Скрытый текст

    gamedata\config\weapons

    Добавляем нолик или два, перед единицей для  интересующего вас ствола.

    fire_dispersion_condition_factor   = 5.0    ;1.5        ;увеличение дисперсии в процентах при максимальном износе 
    misfire_probability                         = 0.001 ;0.0004    ;вероятность осечки при максимальном износе -меняем тут.
    misfire_condition_k                        = 0.05
    condition_shot_dec                        = 0.00005    ;увеличение износа при каждом выстреле -тут правим износ, так же.

    Если такого параметра в конфигах ствола нет, значит он наследуется от базового, для этого типа оружия. Что прописывается в  классах. Пример:

    [wpn_kriss_m1]:wpn_kriss_super_v - наследует параметры от wpn_kriss_super_v

    Дописываем этот misfire_probability и(или) этот, condition_shot_dec параметры ему в конфиг, или меняем у базового, если первое вызывает затруднения.

     

    Скрытый текст

    gamedata\config\creatures\actor.ltx
    тщем:
    max_item_mass   = 80 ;ставь хоть тонну
    max_walk_weight = 90 ;столько же как в max_item_mass  + 10-50 кг.

    gamedata\config\system.ltx
    ищем;
    max_weight    = 80 ; ставим как в max_item_mass

     

    Скрытый текст

    gamedata\scripts\arhara_dialog.script

    Добавляем что нужно. Тут пример добавления простого штык-ножа, мед-аптечки, мухомора, пива, консервы и немного)) денег

    --' получим аптечку и пм от Звездочёта
    function noz_dat()
        got("wpn_pm")
        got("wpn_6x4_knife")
        got("medkit")
        got("medkit_scientic",2)
        got("mushroom")
        got("beer_a")
        got("conserva")
        got_money(3000)

    end

    --======================================--

    Что-бы выдавал несколько предметов, пишем так:

     got("medkit_scientic",3)

    будет 3 мед. аптечки

    --======================================--

    Если хочется все "сделать красиво", правим еще и диалог, в:  config\text\dialogs_arhara.xml

    Ищем в нем текст: "Ты вот что... Держи аптечку и пистолет. Патронов нет, извини." - и меняем на что угодно, насколько фантазии хватит :grin2:

     

    Скрытый текст

    gamedata\scripts\treasure.script

    Находим этот код:

    --' Юзание инициатора (возможность выдать тайник)
    function CTreasure:use(npc)
        local se_npc = server_object(npc:id())
        if se_npc and se_npc.treasure_processed then return end
        se_npc.treasure_processed = true

        lootmoney.lootmoney(npc)
        local rarets=992
        -- если выбран редкий тип тайников, то снизим вероятность его выпадения
        if math.random(1000) < rarets then
            --log("return from use")
            return
        end

    ===========================

    992 - это процентное соотношение к 1000, т.е. вероятность выпадения тайника: 0,8%. Больше 3% - 970, ставить не стоит. Да и то, только в начале игры, а как прибарахлились, лучше эту правку убрать.

     

    Скрытый текст

    gamedata\config\creatures\actor.ltx

    Сделай как тут и будет тебе щастя:
    ; Физические размеры героя. Позволяет залезать в тесные пространства, например, в трубы.
    ph_box0_center             = 0.0,  0.9,   0.0
    ph_box0_size                 = 0.35, 0.9,   0.35
    ph_box1_center                 = 0.0,  0.65,  0.0    ; 2-е значение - высота ГГ в присяде
    ph_box1_size                 = 0.3, 0.65,  0.3   ; 2-е значение - высота ГГ в присяде
    ph_box2_center                 = 0.0,  0.4,   0.0    ; 2-е значение - высота ГГ в полном присяде
    ph_box2_size                 = 0.25, 0.4,   0.25   ; 2-е значение - высота ГГ в полном присяде
    stalker_restrictor_radius   = .05;0.55;0.75;0.9 ; ограничение расстояния между сталкерами. Низкое значение полезно, когда кто-то загородил дорогу в тесных помещениях.
    stalker_small_restrictor_radius   = .05;
    medium_monster_restrictor_radius    = 0.1
    ===========================
    Решение в сети гуляет очень давно)))
    ===========================
    По "длинным рукам":
    В system.ltx есть параметр take_dist = 2 ;ставь хоть 50 - это и есть расстояние в метрах. Но это может сломать игру. Т.к. тайники, особенно сюжетные, которые трудно взять, завязаны на рестрикторы и нужно именно подходить. Некоторые и не появятся, пока не наступишь на рестриктор, так что особого смысла в увеличении take_dist - нет. Если приперло, видишь но не можешь "дотянуться", поставить только на время проблемы и потом вернуть обратно. На постоянное использование, больше 2.8, лучше не ставить!

     

    Скрытый текст
    --Быстрое лечение, по квесту Доктора + на достижения.(стоит вылечить шесть NPC)
    --Путь: gamedata\scripts\kostya_dialog.script
    --Привести функцию к такому виду:
    function doktor_lekar1_have()
    	if not has_info("doktor_lekar1_start") or has_info("acv_lekar2") then return end
    
    	local cnt = get_value("lekar",0)
    	cnt = cnt+1
    
    	if cnt == 1 then
    		sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_1_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_1]])
    	elseif cnt == 2 then
    		sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_2_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_2]])
    	elseif cnt == 3 then
    		sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_3_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_3]])
    	elseif cnt == 4 then
    		sms("%c[sender]"..translate("name_doktor")..":\\n%c[sms_red]"..translate("sms_doctor_doktor_lekar1_have_4_0"), nil, "doctor", 30000, nil, [[sms\doctor\doktor_lekar1_have_4]])
    		give_info("doktor_lekar1_have")
    	elseif cnt == 5 then
    		give_info("acv_lekar")
    	elseif cnt == 6 then
    		give_info("acv_lekar2")
    		del_value("lekar")
    		return
    	end
    
    	set_value("lekar",cnt)
    end 
    ---------------
    от @AMK-forum

     

    Скрытый текст
    -- Путь: gamedata\scripts\flamethrower.script
    -- Найти и сделать как ниже.
    function mbald_removed_have()
    	local value = get_value("mbald_removed", 0)
    	return value >= 1                           ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
    end
    function galant_removed_have()
    	local value = get_value("galant_removed", 0)
    	return value >= 1                           ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
    end
    function mincer_removed_have()
    	local value = get_value("mincer_removed", 0)
    	return value >= 1                           ----- БЫЛО 3---------------- ЭКСПЕРИМЕНТЫ ВАСИЛЬЕВА---------------------------------------
    end
    --Проверяй. Должно быть достаточно по одной аннигиляции.
    -----------------
    от @lexa.3012

     

    Скрытый текст

    Для тех кого не устраивает фото со спутника могу предложить другой вариант:

    В gamedata\scripts\binders смотрим файл bind_fot.script

    В строке 468 if iAmMonster[clsid] and obj:alive() убираем and obj:alive()

    Это позволит фотографировать убитых зверюшек.

    в строках 474, 480, 485 смотрим self:obj_in_shot(obj:center()

    Меняем первые две цифры на 0 и 30. Это позволит фотографировать от нуля до 30 метров.

    Было:

    self:obj_in_shot(obj:center(), 1, 3, 3.0, false, nil, nil, nil, nil, true)

    Стало:

    self:obj_in_shot(obj:center(), 0, 30, 3.0, false, nil, nil, nil, nil, true)

    Для аномалий тоже самое.

    Строка 504 if string.find(anom.name, anom_sect) and self:obj_in_shot(anom.pos, 5, 10, 3.5, false, nil, nil, nil, nil, false) then

    меняем на if string.find(anom.name, anom_sect) and self:obj_in_shot(anom.pos, 0, 30, 3.5, false, nil, nil, nil, nil, false) then

    Всё.

    Делать снимки становится гораздо удобнее, и эта правка не вызовет проблем при сдаче задания.

    -----------------

    Рекомендуемая правка для фотографирования!

    от @shahvkit

     

    Скрытый текст

     В xr_kamp.script сделать так:

            -- играть на гармошке
            local f = false -- item_state_relation["play_harmonica"].allowing(npc,self) 
            npc_states["play_harmonica"] = f
            npc_states["wait_harmonica"] = f
            self.kamp_states["pre_harmonica"] = f
            self.kamp_states["harmonica"] = f
            self.kamp_states["post_harmonica"] = f

            -- играть на гитаре
            f = false -- item_state_relation["play_guitar"].allowing(npc,self) 
            npc_states["play_guitar"] = f
            npc_states["wait_guitar"] = f
            self.kamp_states["pre_guitar"] = f
            self.kamp_states["guitar"] = f
            self.kamp_states["post_guitar"] = f

            -- играть на балалайке
            f = false -- item_state_relation["play_balalaika"].allowing(npc,self) 
            npc_states["play_balalaika"] = f
            npc_states["wait_balalaika"] = f
            self.kamp_states["pre_balalaika"] = f
            self.kamp_states["balalaika"] = f
            self.kamp_states["post_balalaika"] = f

            -- анекдоты
            f =  item_state_relation["joke"].allowing(npc,self) 
            self.kamp_states["pre_joke"] = f
            self.kamp_states["joke"] = f
            self.kamp_states["post_joke"] = f

            -- Если непись знает истории, надо добавить их к лагерю
            f = (f and db.story_by_id[npc:id()] ~= nil)
            self.kamp_states["story"] = f
            self.kamp_states["post_story"] = f
        end
    end

     

    По аналогии можно анекдоты и истории отключить, но так совсем не весело будет :grin2:

    -----------------

    от @tihik

     

    Скрытый текст

    scripts\binders\bind_actor

    --loc_radiation.update()

    -----------------

    от @AMK-forum

     

    Скрытый текст

    scripts\biodetector.script

         if item and bioradars[item:section()] and not bind_actor.scopeUsed then 

    меняем на:

         if item and bioradars[item:section()] --and not bind_actor.scopeUsed

         then

    -----------------

    от @shram_437

     

    Скрытый текст
    scripts\ui\ui_mm_opt_add.script
        ["x16_physic_object_0004"]=true,
        ["x16_physic_object_0010"]=true
    Меняем на:
        ["x16_physic_object_0004"]=false,
        ["x16_physic_object_0010"]=false
    Далее, находясь в x16, заходим в настройки/игра, прописываем x16_physic_object_0004 и x16_physic_object_0010 в панель удаления проблемных объектов и удаляем.
    -----------------
    от @Prophet13

     

    Скрытый текст

    scripts\binders\bind_stalker.script

    --sak.zombie_checkup()

    -----------------

    от @AMK-forum

    ============

    Если стоит эта правка, то нельзя получить ачивку Друг зомби.

    Скрытый текст

    Убери, правку: В bind_stalker.script, расскомментируй --sak.zombie_checkup().  В \config\text\archievements.xml. найди "Друг зомби" = "acv_fzom". По "acv_fzom", поиском по содержимому, в ТС, найди нужную функцию, в данном случае в sak.script и делай с ней все что угодно(ослабьте эффекты и спокойно играйте!):

     

    function zombie_checkup()
        if db.actor ~= nil then
            if math_random() > 0.7     and not _G.Inventory:on_belt("af_serpantin") then
                local a=math_random()
                local h = hit()
                h.draftsman = db.actor
                h.direction = vector():set(0,0,0)
                h:bone("bip01_spine") -- чтобv учитvвалась броня
                h.type = hit.telepatic
                h.power = 0.3+a/2
                h.impulse = 1.0

                db.actor:hit(h)
                h.type = hit.strike
                db.actor:hit(h)
                h.type = hit.radiation
                db.actor:hit(h)
                level.add_pp_effector("alcohol.ppe", 100, false)
                local rnd=math_random(1,6)
                local snd_obj=voice(hit_sound[rnd])
                snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                archievements.acv_count_event("acv_fzom", 100, "acv_fzom") -- 1 ставь, бери ачивку и верни --sak.zombie_checkup()
            end

    ==============

    Или так, советы от пользователей: Удали правку, заспавни Серпантин и шмонай зомби. Рано или поздно выпадет; Так же, Экза ЧД, Стальной крыс, Нанокостюм Волозара, Дон Кихот - все это защищает от удара при шмоне зомби.

    Скрытый текст

    Можно сделать относительно честную правку, раз ачивка "Друг зомби". Вставить проверку поршня в функции

     

    function zombie_checkup()
        if db.actor ~= nil then
            if math_random() > 0.7     and not _G.Inventory:on_belt("af_serpantin") and not has_info("acv_fzom") then...

     

    и тогда, после обыска с уроном более 100 зомбированных, больше урона по ГГ не будет.

    п.с. Если вас парят ачивки, не ставьте правки, отрубающие какие-бы то ни было хиты и прочие условности. Лучше тогда ослабить хиты, до приемлемых и(или) подредактировать условия получения ачивок, а потом, если раздражает, уже можно и отключить. Описание всех ачивок находится в \config\text\archievements.xml - и дальше там не сложно.

     

    Скрытый текст

    scripts\ui\ui_hud_mask.script

    Закомментировать(--) строчки:

    --level.add_pp_effector ("alcohol.ppe", 2013, true)     

    --level.remove_pp_effector (2013)

    -----------------

    от @AMK-forum

     

    Скрытый текст

    scripts\ai\rx_gl.script

    stor.can_fire = true ;false
    stor.can_fire = true ;false

    -----------------
    от @Prophet13

     

    Скрытый текст

    gamedata\scripts\zvuki.script 
    Закомментировать как тут показано, эти строки:

            if difficulty > 0 then
            --    hide_wpn.on_info("rm_mp_start")
            --    local delay_time=db.eat_snd:length()/1000
            --    if delay_time<difficulty*3 then
            --        delay_time=difficulty*3
            --    end
            --    timer("zvuki", delay_time, "zvuki.restore_weapon()")
            end
            --if has_info("ui_inventory") then
            --    level.start_stop_menu(level.main_input_receiver(), true)
            --end
    -----------------
    от @Prophet13
    ============
    Вариант от lexa.3012.  Выделил нужное синим.
    
    		-- треть¤ рука, пр¤тание оружи¤ при съедании. на новичке не убираетс¤, далее по нарастающей
    		local difficulty = level.get_game_difficulty()
    		if difficulty > 0 then
    			hide_wpn.on_info("rm_mp_start")
    			local delay_time=db.eat_snd:length()/5000
    			if delay_time<difficulty*0 then
    				delay_time=difficulty*0
    			end
    			timer("zvuki", delay_time, "zvuki.restore_weapon()")
    		end
    		--[[if has_info("ui_inventory") then
    			level.start_stop_menu(level.main_input_receiver(), true)
    		end]]		
    	end
    end

    -----------------

    Дополнение: отключение раздражающих звуков приема пищи и др. подобных звуков в этом же файле:

    строки 35-74 содержат информацию о звуках. Для "проблемных" звуков удали/закомментируй целую строку, например:

    bread = {"zwuk\\inv_sandwich","zwuk\\inv_kolbasa"},

    -----------------

    от @voluntas88

     

    Скрытый текст

    scripts\monnoroch_options.script

    blood_enable = 0 -- эффект ранения (1 - вкл , 0 - выкл)
    scripts\ui\ui_hud_mask.script

    local blood_enable = 0 -- эффект ранения
    scripts\amk\amk.script

        -- Эффекты при падении здоровья
        if db.actor:alive() then
            if prev_health > db.actor.health+0.2 then
                level.add_pp_effector("amk_shoot.ppe", 2011, false)
                level.set_pp_effector_factor(2011, (prev_health-db.actor.health)*100)
                if prev_health > db.actor.health+0.9999 then
                    local cameffs, sounds
                    if prev_health > db.actor.health+0.9999 then 
    -----------------

    от @tihik

     

    Скрытый текст

    gamedata\scripts\binders\bind_monster.script

    -- Выбивание из рук оружия
    local ac_slots={
        [inventory_slots.NO_ACT_SLOT]=false,
        [inventory_slots.KNIFE]=false,
        [inventory_slots.PISTOL]=false,
        [inventory_slots.RIFLE]=false,
        [inventory_slots.SHOTGUN]=false
    }
    -----------------

    от @AMK-forum

     

    Скрытый текст

    Чтобы убрать этот поносный цвет в Саркофаге. С фонариком невозможно, а без фонарика не видно.
    gamedata\config\scripts\sar
    Файл - sar_monolith_noise
    Сделать так:
    active = nil

    [sr_psy_antenna]
    eff_intensity = 0
    hit_intensity = 0
    play_visual = false
    ;mute_sound_threshold = 1

    -----------------

    от @karavan150 

     

    Скрытый текст

    В скрипте bind_actor.script

    Найти эту строчку:
                   any_bot_dis_change=any_bot_dis_change or (is_actor_enemy or is_actor_danger or any_enemy_see_actor)

    И заменить на это:
                    any_bot_dis_change=false

    -----------------

    от @bastor

     

    Скрытый текст

    Вырезаем алкоголизм ГГ
    gamedata\scripts\amk\amk_alcohol.script

    -- Алкоголь ГГ. Не более 5 бутылок в сутки.
    local alc_cont=keyvals("amk_data"):get("alc_count", {})

    function drink_vodka(obj)    
        table.insert(alc_cont, game.minutes())
        local limit = iif(has_info("acv_alk"),6,5)
        local sz=table.size(alc_cont)
    -- тут вырезаем кусок кода (у кого подсмотрел, не помню)) --
        archievements.acv_count_event("acv_alk", 70, "acv_alk")
    end

    function update()
        local gm = game.minutes()

        for i=table.size(alc_cont),1,-1 do
            if gm > alc_cont+60*24 then
                table.remove(alc_cont, i)
            end
        end
    end

    -----------------

    от @AMK-forum

     

    Скрытый текст

    gamedata\config\weapons\ammo.ltx  

    у нужных патронов включаем параметр:

    tracer                   = on  ; вместо off

    Цвет трассера задается этим параметром:

    tracer_color_ID    = 0
    А tracer_color_ID(ID - цвета от 0-4) это цвет трассера.

    color_0  ;yellow
    color_1  ;white
    color_2  ;red
    color_3  ;green
    color_4  ;blue

    Что бы включить трассеры у Винтореза, нужно в файле:

    gamedata\config\weapons\w_vintorez.ltx

    Их включить:

    tracers              = on  ; вместо off

    У именного  Винтореза включены по умолчанию.

    -----------------

    от @RaFaJIb

    ============

    Что-бы работало на статике, нужно выключить сглаживание.

    ============

    Можно разнообразить и немного подкрасить цвета трассеров. Для этого в:

    gamedata\config\weapons\weapons.ltx

    находим таблицу цветов:

    [tracers_color_table]    ;color_table

    и приводим ее вот к такому виду:

    color_1 = 1, 0.5, 0; orange
    color_2 = 1, 0, 0; red
    color_3 = 0.2, 0, 0; dark red
    color_4 = 1, 1, 0; yellow
    color_5 = 0.5, 0.1, 1 ; purple
    color_6 = 0, 1, 0 ;green
    color_7 = 1, 0, 1; magenta
    color_8 = 0, 1, 1; cian
    color_9 = 0, 0, 0.5; dark blue
    color_10 = 0.2, 0.4, 1;blue
    color_11 = 0, 0.2, 0 ;dark green
    color_12 = 0.5, 0.5, 1; electra
    color_13 = 1, 1, 1; white
    color_0 = 0.2, 0.2, 0.2; grey
    color_14 = 1, 0.5, 0.8 ;pink

    В ammo.ltx задаем нужным патронам любой из этих цветов.

    -----------------

    по наработкам для ОП-2.1 от @Mezocop

     

    Скрытый текст

    Для гравикостюма комментируем строки в gamedata\scripts\hide_wpn.script

    Тут:
    		func=function() --запрет на использование слотов вообще
    			--db.actor:hide_weapon()
    			--set_value("hide_wpn_global",true)			
    			set_value("gravisak_on",true)			
    		end
    	},
    	["gravisak_off"]={
    		func=function()
    			--db.actor:restore_weapon()
    			--set_value("hide_wpn_global",false)
    			del_value("gravisak_on")			
    		end
    
    И тут:
    		func=function()
    			--if has_value("gravisak_on") then
    				--return
    			--end
    			set_value("hide_wpn_global",false)
    			db.actor:clear_blocked_slots() --после множественных hide_weapon сфорсим очистку m_blockCounter
    			local stored_slot=keyvals():get("active_weapon_slot",inventory_slots.NO_ACT_SLOT) --ключ в контейнере по умолчанию
    			if stored_slot~=inventory_slots.NO_ACT_SLOT then
    				db.actor:activate_slot(stored_slot,true)
    			end
    		end
    	}
    }

    Для маскировочной экзы в режиме невидимости комментируем 2 строки в gamedata\scripts\binders\binder_mon.script

    function binder_meceniy_outfit_new:invisibility_on() 
    --  hide_wpn.on_info("gravisak_on")
    
    function binder_meceniy_outfit_new:invisibility_off()
    --  hide_wpn.on_info("gravisak_off")

    Подсказал @Купер

    Скрытый текст

    По идее должно быть здесь:
    binder_mon.script. Просто откомментировать соответствующий обработчик

     

    function binder_meceniy_outfit_new:invisibility_on() --* включили невидимость
    ...
        hide_wpn.on_info("gravisak_on") --* выдали поршень для убирания оружия
    ...
    end
    
    
    function binder_meceniy_outfit_new:invisibility_off() --* выключили невидимость
    ...
        hide_wpn.on_info("gravisak_off") --* выдали поршень для доставания оружия
    ...
    end

    обработчик вызывается в биндере автора bind_actor.script на инфоколлбэке на инфоколлбэке

    function actor_binder:info_callback(npc, info_id)
      ....
      		hide_wpn.on_info(info_id)

    сам обработчик для данного случая hide_wpn.script:

     

        ["gravisak_on"]={
            func=function() --запрет на использование слотов вообще
                db.actor:hide_weapon() --* спрятали оружие
                set_value("hide_wpn_global",true)  --* установили триггер   
                set_value("gravisak_on",true)  --* и значение переменной
            end
        },
        ["gravisak_off"]={
            func=function()
                db.actor:restore_weapon() --* достали оружие
                set_value("hide_wpn_global",false)   --* установили триггер
                del_value("gravisak_on")  --* и значение переменной
            end
        },

     

    Скрытый текст

    gamedata\scripts\inventory.script

    -- Проверка на иммунитеты и удаление с пояса лишних артов
    self.imm_limits = {100, 86, 73, 60}

    Меняем на

    self.imm_limits = {999999, 999999, 999999, 999999}

    ===

    от @Prophet13

     

    Скрытый текст

     gamedata\scripts\amk\amk_alcohol.script

    -- Алкоголь ГГ. Не более 5 бутылок в сутки.
    local alc_cont=keyvals("amk_data"):get("alc_count", {})
    
    function drink_vodka(obj)    
        table.insert(alc_cont, game.minutes())
        local limit = iif(has_info("acv_alk"),6,5)
        local sz=table.size(alc_cont)
    -- тут вырезаем кусок кода (у кого подсмотрел, не помню)) --
        archievements.acv_count_event("acv_alk", 70, "acv_alk")
    end
    
    function update()
        local gm = game.minutes()
    
        for i=table.size(alc_cont),1,-1 do
            if gm > alc_cont[i]+60*24 then
                table.remove(alc_cont, i)
            end
        end
    end


    ===================================
    upd: теперь запасаемся аптечками, хавчиком и получаем "Алкаша" - "acv_alk" - за одну пьянку)))
    А что-бы не утомиться 70 пузырей хлебать, убираем лишний нолик)) Ведь настоящим тёртым Сталкерам, алкоголизм и прочие житейские невзгоды - не помеха!

    В archievements.script отрубаем(true), если еще это не сделали, на выбор, наличие "негативных" достижений для получения ачивки "Сталкер".

    function acv_stalker()
            ["acv_has_cheated"]=true,
            ["acv_halavshic"]=true,
            ["acv_bridge"]=true,
            ["acv_docs_fail"]=true,
            ["acv_money3"]=true,
            ["acv_alk"]=true,
            ["acv_xam"]=true,
            ["acv_task_fail"]=true,
            ["acv_treplo"]=true

     Или наоборот - добавляем нолики и бухаем до талого)))

     

    Скрытый текст
    --Путь:gamedata\scripts\binders\bind_monster.script
    -- Атака собаки
    function monster_binder:dog_attack()
    	--self:effector(1800, 15, function()
    		--level.add_pp_effector("radiation.ppe", 2012, false) 
    		--self:hit(hit.telepatic, 0.05, 0)
    		--self:drop(0.05)
    	--end,"dog_attack")
    end 
    
    -- Атака пси-пса из билда 1935
    function monster_binder:psy_dog_attack()
    	--self:effector(4000, 20, function()
    		--level.add_cam_effector("build_1935_pseudodog_effect_1.anm", 9901, false, "")
    		--level.add_cam_effector("build_1935_pseudodog_effect_2.anm", 9902, false, "")
    		--level.add_pp_effector("psy_antenna.ppe", 9903, false)
    		--say("monsters\\pseudodog\\psy_affect_0")
    		--self:hit(hit.telepatic, 0.05, 0)
    		--self:drop(0.5)
    	--end,"psy_dog_attack")
    end

    от lexa.3012@

     

    Скрытый текст

    scripts\binders\bind_restrictor.script

    function restrictor_binder:net_spawn(data)
    ...
    в самом конце перед return true вставить эту строку:
        self.particle = amk_particle.amk_particle({["particle"] = "anomaly2\\gravity_damage_02_smoke", [ "pos" ] =  self.object:position()})   
        return true
    end

    Делалось для ОП-2, но работает и для других модов. Автор @Eugen81

    от @igor.doc

     

    Скрытый текст

    В scripts\binders\bind_actor.script находим секции броников, одев которые, мы не закашливаемся - и вставляем свою броню

    -- секции броников, одев которые, мы не закашливаемся при приближении к гниющему трупу
    local no_cough= {
    	["merc_scientific_outfit"]=true,	-- Научный костюм наёмников
    	["scientific_outfit"]=true,	        -- Научный костюм сталкера "Сева"
    	["dolg_scientific_outfit"]=true,	-- Научный костюм Долга
    	["freedom_scientific_outfit"]=true,	-- Научный костюм Свободы
    	["monolit_scientific_outfit"]=true,	-- Научный костюм Монолита
    	["scientist_suit_white"]=true,	-- Белый Научный костюм Монолита
    	["nebo_scientific_outfit"]=true,	-- Научный костюм Чистого Неба
    	["scientific_lastday_outfit"]=true,	-- Научный костюм Последнего Дня
    	["protection_outfit"]=true,	        -- Комбинезон ССП-99М "Вега"
    	["ecolog_outfit"]=true,	        -- Костюм "Эколог"
    	["nano_outfit"]=true,                -- Стальной Крыс
    	["nano_suit"]=true,                  -- Костюм Волазара
    	["seva_scient_outfit"]=true,         -- Модернизированная "Сева"
    	["exo_scientist_outfit"]=true        -- Научный экзоскелет
    }

    от @igor.doc

     

    Скрытый текст

    Экзоскелеты выпадают только после прохождения лаборатории Х-16, как сделать так, что бы экзоскелеты выпадали до прохождения Х-16?
    В gamedata\scripts\death_manager.script ищем 441 и 442 строчки, в 442 строчке меняем значение create_allowed=false на true

                if config:r_string(sect, "class")=="EQU_EXO" and not has_info("yan_kill_brain_done") then
                    create_allowed=true

     

    Теперь экзоскелеты будут выпадать с начала игры.

    от @Daredevil

     

    Скрытый текст

    Загляни в meceniy_in_hell.script там комментарии на русском, должно быть понятно.

    от @igor.doc

     

    Скрытый текст

    Кому мешают засветы от изоморфов, нужно в \config\weapons\ammo.ltx

    в секциях изоморфных патронов(их там 4 варианта) выставить:

    explosive        = off ;on

     

    Скрытый текст

    Добавить строчку в секции гравика \config\misc\outfit.ltx

    ;         ГРАВИКОСТЮМ /в Новой редакции/
    [soldier_outfit]:outfit
    class             = EQU_EXO
    visual                  = dynamics\outfit\gravik_suit ;soldier_suit
    actor_visual    = actors\hero\stalker_gravik_new.ogf
    npc_visual        = actors\hero\stalker_gravik_new.ogf
    inv_name            = outfit_gravisak_name
    description            = outfit_gravisak_description
    inv_weight            = 13
    inv_grid_width        = 2
    inv_grid_height        = 3
    inv_grid_x            = 38
    inv_grid_y            = 26
    cost                = 150000
    cheat_item = true
    full_icon_name        = npc_icon_soldier_outfit

    batteries = acumm, akkumulytor
    discharge_moving = 0.000001
    discharge_sprint = 0.00000115
    discharge_jump   = 0.00035
    snd_cant_sprint  = zwuk\ekza_out
    snd_cant_jump    = zwuk\ekza_out

    additional_inventory_weight        = 220
    additional_inventory_weight2    = 220
    sprint_allowed        = true

    ======

    Так же и любому, в котором не бегается.

     

    Скрытый текст

    Подскажите где подправить цену перехода из Бара в Ц.П. и на Кордон и обратно?

    Комментируем экшены отъёма денег в config\gameplay\dialogs_buusty.xml

    <!-- Диалог с БД по поводу доступа к бонусному переходу Ц.Припять-Бар -->
    ...
           <text>doktor_perehod_dostup_4</text>
           <!-- <action>wawka_dialog.give_money_5000</action> -->
              <next>5</next>
    
    <!-- Диалог с Барменом по поводу доступа в его кладовку и подсобку -->
    ...  
           <phrase id="5">
           <text>barmen_podsobka_dostup_5</text>
           <!-- <action>sak_dialog.give_9000_money</action> -->              
             <next>7</next>
           </phrase>
           <phrase id="55">
           <precondition>sak_dialog.actor_9000_have</precondition>       
           <text>barmen_podsobka_dostup_5</text>
           <!-- <action>sak_dialog.give_9000_money</action> -->               
             <next>8</next>
             
    <!-- Диалог с Сидором по поводу доступа в его каморку -->
    ...
           <phrase id="4">
           <precondition>sak_dialog.actor_9000_have</precondition>       
           <text>sidor_podsobka_dostup_4</text> 
           <!-- <action>sak_dialog.give_9000_money</action> -->            
             <next>6</next>

    Проверять деньги будут, забирать нет.

    от @igor.doc

     

    Скрытый текст

    Небольшой спавнер-помощник в одном файле ui_main_menu.script . Работает из главного меню

     

    Выходим в главное меню и жмем нужные клавиши от 1 до 9

    1 - гранаты вог

    2- патроны к абакану

    3- 5.56

    4- граната вороненок

    5- туррель стрелка

    6- резервная кнопка. тут прописываю что то по необходимости

    7-8-9  рем наборы - оружие, броня, хол оружие 

    N - сделать NPC другом

    G - сделать группировку друзьями

    F4 - бессмертие

    F5 - Смертие(убирает бессмертие)

    В принципе Вы можете вставить свои переменные на кнопки

    сразу после 
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
    	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --	local bind = dik_to_bind(dik)
    	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
    		if dik == DIK_keys.DIK_ESCAPE then
    			if game_is_running() then
    				ui_mm_opt_add.check_options()
    				console:execute("main_menu off")
    				archievements.mm_opt()
    			end
    
    --====================мои кнопки
    --ammo_vog-25p_ammo_5.45x39_ap_ammo_5.56x45_ap
    elseif db.actor~=nil and dik==DIK_keys.DIK_1 then
    alife():create("ammo_vog-25p",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_2 then
    alife():create("ammo_5.45x39_ap",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_3 then
    alife():create("ammo_5.56x45_ap",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_4 then
    alife():create("grenade_sg",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_5 then
    alife():create("strelok_turret",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_6 then
    alife():create("detonator",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock21",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock22",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock23",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock25",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock31",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock40",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock35",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    --alife():create("wpn_glock41",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_7 then
    alife():create("repair_item_weapon",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_8 then
    alife():create("repair_item_outfit",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())
    elseif db.actor~=nil and dik==DIK_keys.DIK_9 then
    alife():create("repair_item_xo",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())		
    
    elseif dik == DIK_keys.DIK_N then
    npc_drug(506)   -- story_id НПС из файла config/game_story_ids.ltx  506 - это Петренко
    --npc_drug(507) 
    --npc_drug(519)
    --npc_drug(30135)
    --npc_drug(30136)
    --npc_drug(30134)
    --npc_drug(9501)        
    elseif dik == DIK_keys.DIK_G then 
    relations("dolg")  --группировка
    --relations("freedom")
    --relations("stalker")
    --relations("green")
    --elseif dik == DIK_keys.DIK_O then
    --akill.souls_house_have()            
    --shv()
    
    elseif dik == DIK_keys.DIK_F4 then
                snp.invul_on()    
                
            elseif dik == DIK_keys.DIK_F5 then
                snp.invul_off()
    --==============конец мои кнопки
    далее кусок официального ui_main_menu
    		else
    			key_handlers.handler_press(dik,dik_to_bind(dik))
    		end
    	end
    	if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
    		key_handlers.handler_release(dik,dik_to_bind(dik))
    	end
       
    	return true
    end
    
    if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then 
    	autopause.main()
    end
    --в конец файла добавляем описание функций
    --=====================================мои функции
    --506 petrenko
    --507 voronin
    --519 barin
    --9501 сяк
    --9608  = "bar_rostok_james"
    function npc_drug(ob) -- Делаем непися другом
    local npc = level_object_by_sid(ob) --( ... ) сюда писать story_id НПС из файла config/game_story_ids.ltx
    if npc and npc:alive() then
    npc:set_relation(game_object.friend, db.actor)
    end
    end
    
    function level_object_by_sid( sid )
    local sim = alife()  if sim then
    local se_obj = sim:story_object( sid )
    if se_obj then
    return level.object_by_id( se_obj.id )
     end
    end  return nil
    end 
    
    function relations(alians)
    relation_registry.set_community_goodwill (alians, "actor", 3000)
    end
    
    --============================конец мои функции

    от @Blum

     

    Скрытый текст

    \scripts\archievements.script

    --Приводим функцию function all_ecologs_alive()
    --к вот такому виду:
    function all_ecologs_alive()
    	local ecologs = {
    		"bar_ecolog_professor",
    	}

    =======

    С первой попытки, не извращаясь с переигрываниями и методами прохождения, ГГ вывел 4-х - и этого более чем достаточно, для морального удовлетворения и для игровой "реалистичности".

     

     

    ---===---

    Разное из того, что не понятно куда пристроить

    Скрытый текст
    21.04.2022 в 18:17, vader_33 сказал:

    @Tabigon если просто эффект убрать - в файле config\misc\cycle_task.ltx в строчках "condlist =" везде, где есть  "-acv_treplo", убираете этот инфопоршень из скобок. Например, было: condlist = {+esc_fanat_spawn -acv_treplo} - оставляете так: condlist = {+esc_fanat_spawn}. Если нужно достижение сталкера - в файле archievements.script в табличке "infos" убираете ["acv_treplo"]=false. Или если знаете как выполнять код через скрипты - просто удалите этот инфопоршень db.actor:disable_info_portion("acv_treplo")

     

    Например, при достижении лимита выдавать какой-нибудь инфопоршень и запускать таймер на его удаление и с обнулением счетчика. В диалоге проверять наличие этого инфопоршня

    от @vader_33

     

    Скрытый текст

    Цвет прицела должен меняться только у некоторых из них. В меню игры наведи на описание прицелов при их выборе и почитай.

    Что касается непосредственно точки, то если она реализована на базовых линиях - штрихах, то её цвет меняется в system.ltx Если же это отдельная текстура, то надо просто найти её и откорректировать.

    Например:

    В gamedata\config файл hud_crosshairs.ltx строка 71 - texture=cursors\c_cursor13.dds

    То есть в папке \textures\cursors находится файл текстуры c_cursor13.dds где и нарисована белая точка. Достаточно найти файл и перекрасить текстуру.

    от @shahvkit

     

    Скрытый текст

    Добрый день, в котике есть функция на кнопку "А" , показ аномалий на миникарте. Есть возможность перенести всё это на большую карту? Делаю квест "Очищение", осталось 5шт, забодался искать уже.

     

    прымерно так:

     

    function show_anomalies()

     local anomaly_classes = {
      [clsid.zone_acid_fog] = true,
      [clsid.zone_electra_s] = true,
      [clsid.zone_bfuzz] = true,
      [clsid.zone_bfuzz_s] = true,
      [clsid.zone_dead] = true,
      [clsid.zone_galant_s] = true,
      [clsid.zone_galantine] = true,
      [clsid.zone_mbald_s] = true,
      [clsid.zone_mincer] = true,
      [clsid.zone_mincer_s] = true,
      [clsid.zone_mosquito_bald] = true,
      [clsid.ameba_zone] = true,
      [clsid.zone_rusty_hair] = true,
      [clsid.torrid_zone] = true,
      [clsid.zone_ice_s] = true, 
      [clsid.zone_zharka_s] = true,
      [clsid.zone_radioactive] = true,
      [clsid.zone] = true,
      [clsid.zone_buzz_s] = true,
      [clsid.zone_ice] = true
     }

        if anoms==nil then
            anoms = {}
          for i= 1, 65534 do
            local obj = level.object_by_id(i)
            if obj ~= nil and anomaly_classes[obj:clsid()] then
                level.map_add_object_spot(obj:id(), 'red_location', obj:name())
                table.insert(anoms, obj:id())        
            end    
          end
            amk.send_tip("Метки на аномалии установлены.", nil, nil, 5)    
            
        end  
    end

     

    от @nasar75

     

    Скрытый текст

    Вот так пропиши НПС логику по пути: config\scripts\НПС.ltx

     

    [logic] 

    active = remark1 
    danger = danger_ignore

     

    [danger_ignore] 
    ignore_distance = 0    --Или нужную тебе

     

    [remark1] 
    no_move = true

     

    Будет стоять как вкопанный:))) Дальше думаю и сам знаешь что делать... С all.spawn действительно проблема с запаковкой... Ты в гости-то заходи, а то совсем пропал куда-то...

    от @SLAVN

    ---===---

    Мануалы

     

    Скрытый текст

    Что-бы по 25 раз не лазить в файл: \config\misc\cycle_task.ltx, для редактирования хомяков. Все подзадания, для "cube_chip", имеют у себя в условии "+sidor_chip". Соответственно, что-бы отредактировать значения необходимого барахла, ищем по "+sidor_chip". И выставляем необходимое значение по количеству в "target_count = 3", если нужно больше 1-го предмета. Для одного предмета - удаляем эту строчку. В исключениях из этого правила, 4 квестодателя, по ним смотреть и править, где нужно, в заданиях:

    Винзор: [025007] - [025017]

    Василий: [027000] - [027030]

    Загорский: [032000] - [032031]

    Халява: [061000] - [061033]

    =======

    Тут же, во всех заданиях(не только в хомяках), можно редактировать награду. Если что упустил, пишите, дополню. Финальный, 20-й чип у Драгунова за Артефакты, которые завязаны на квесты - спавнить их или редактировать условия получения, не рекомендуется..

    =======

    По "материалам" спора @achavanin и @igor.doc 

     

    Скрытый текст

    Если не примиряет всю группировку, значит функция примирения уже настроила очки до конца(сколько там у тебя в ui_main_menu.script стоит 3000 или 5000 а может и 50000)

    Тогда остается мириться с каждым НПС отдельно . В ui_main_menu 

     

    elseif dik == DIK_keys.DIK_N then
    npc_drug(506) --сюда писать story_id НПС из файла config/game_story_ids.ltx

    И в самом низу 2  функции
    --506 petrenko
    --507 voronin
    --519 barin
    --9501 сяк
    --9608  = "bar_rostok_james"
    function npc_drug(ob) -- Делаем непися другом
    local npc = level_object_by_sid(ob) --( ... ) 
    if npc and npc:alive() then
    npc:set_relation(game_object.friend, db.actor)
    end
    end

    function level_object_by_sid( sid )
    local sim = alife()  if sim then
    local se_obj = sim:story_object( sid )
    if se_obj then
    return level.object_by_id( se_obj.id )
     end
    end  return nil
    end

     

    Скрытый текст

    В \scripts\ui\ui_main_menu.script добавляем внизу файла:

    function main_menu:OnButton_load_clicked()
    	local load_dlg = ui_load_dialog.load_dialog()
    	load_dlg.owner = self
    	
    	self:GetHolder():start_stop_menu(load_dlg, true)
    	self:GetHolder():start_stop_menu(self, true) --new
    	self:Show(false)
    end
    --===мирилка с группировкой, функция===--
    function relations(alians)
        relation_registry.set_community_goodwill (alians, "actor", 3000)
    end
    --===вместо 3000 ставим сколько надо===--
    --===*******************************===--
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
    	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --	local bind = dik_to_bind(dik)
    	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
    		if dik == DIK_keys.DIK_ESCAPE then
    			if game_is_running() then
    				ui_mm_opt_add.check_options()
    				console:execute("main_menu off")
    				archievements.mm_opt()
    			end
    --===мирилка с группировкой, вызов из меню на "G"===--	    
    	    elseif dik == DIK_keys.DIK_G then
                relations("military")
                relations("bandit")
    --===можно по одной, можно со всеми сразу замириться))===--
    --===все группы в \config\creatures\game_relations.ltx===--
    --===********************************************===--
    		else
    			key_handlers.handler_press(dik,dik_to_bind(dik))
    		end
    	end
    	if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
    		key_handlers.handler_release(dik,dik_to_bind(dik))
    	end
       
    	return true
    end
    
    if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then 
    	autopause.main()
    end

    --===Комментарии копировать не нужно)))===--

    по наводке от @Blum

    Mirilka-s-gruppirovkami.jpg Mirilka-s-gruppirovkami-2.jpg

     

    Скрытый текст

    Всем привет. имел неосторожность через спавнер от Котовода помирить ГГ с военными, теперь они друзья до гроба даже если их мочишь пачками. Как откатить назад?

     

     

    gamedata /scripts/ui/ui_main_menu

    после 
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --    local bind = dik_to_bind(dik)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            if dik == DIK_keys.DIK_ESCAPE then
                if game_is_running() then
                    ui_mm_opt_add.check_options()
                    console:execute("main_menu off")
                    archievements.mm_opt()
                end
    прописывем

    elseif dik == DIK_keys.DIK_N then relations()


    после 
    return true
    end
    прописывем
    function relations(community1, community2) 
    relation_registry.set_community_goodwill ("military", "actor", -10000) 
    end
    Запуск игры, выход в меню, нажимаем N и военные враги.

     

    от @Kashafoch

     

    Скрытый текст

    Пример на жетоне монолитовца. В gamedata\config\misc\quest_items.ltx находим по army_counter

    [army_counter]:II_DOC
    visual                     = dynamics\equipments\geton.ogf
    description            = army_counter
    inv_name               = army_counter_name
    quest_item             = false  ;вместо true ставим false
    inv_weight             = 0.01
    inv_grid_width       = 2
    inv_grid_height     = 1
    inv_grid_x              = 69
    inv_grid_y              = 16
    cost                       = 100

    То же самое можно проделать с любым предметом, даже если этой строчки в его конфиге нет. В таком случае ее нужно добавить. Некоторые предметы могут быть не в quest_items.ltx а в item.ltx

    -----------------

    от @tihik

     

    Скрытый текст

    Как это реализовано:

    В биндер монстров на коллбэк обыска (использования) добавлен обработчик события:

    gamedata\scripts\binders\bind_monster.script:

    function monster_binder:use_callback(obj, who)
    ...
    	else
    ...
        --* вот это оно и есть: обыскиваем мутанта - запускаем, что будем делать.
    		monster_parts.on_monster_use(obj, who) -- обыск трупа
    	end
    end

     

    А в самом обработчике события уже всё остальное:

    gamedatа\monster_parts.script:

    --* список доступного оружия, которое может использоваться для срезания "запчастей" (из оружейных конфигов - по секции предмета).
    local knives = {
    	["wpn_oc4"]=true,--* <-- ага, наш ножичек :). gamedata\config\weapons\knife.ltx -> [wpn_oc4]:knife
    ...
        ["wpn_hand_axe"]=true
    }

     

    Далее проверяется его наличие у ГГ:

    function actor_has_knife()
      --* У ГГ в "ножевом слоте" что-то есть?
        local item_in_slot=db.actor:item_in_slot(inventory_slots.KNIFE)
      --* Что-то есть и его состояние соответствует нужному для использования
        if item_in_slot and item_in_slot:condition()>0.1 then
      --* и оно из нужного нам списка (табл. knives для возможного использования при срезании)
            return knives[item_in_slot:section()] or false
        end
        return false
    end

     

    А при наступлении события (т.е., когда из биндера монстрюков вызываем обработчик), всё и делаем:

    function on_part_take(obj)
    --* проверяем, что у ГГ именно то оружие, которое должно быть, и запускаем половецкие пляски :)    
        if actor_has_knife() then
        --* закрываем инвентарь
            level.start_stop_menu(level.main_input_receiver(), true)
        --* отыгрываем звуковое сопровождение события
            if snd and snd:playing() then
                snd:stop()
            end
            snd = voice("zwuk\\inv_mutant_loot_"..math.random(1,16))
            snd:play_at_pos(db.actor, vector(), 0, sound_object.s2d)
        --* в случае, если надо - даём достижение
            archievements.acv_count_event("acv_gvdr", 500, "acv_gvdr")
        --* получаем оружие в ножевом слоте
            local knife=db.actor:item_in_slot(inventory_slots.KNIFE)
        --* вычитываем из его конфигов коэфф-т повреждения
            local cond_dec=ini_reader.iniReader():readString(knife:section(),"condition_shot_dec",0)
            if cond_dec~=0 then
        --* и "ломаем" до нужного
                knife:set_condition(knife:condition()-cond_dec)
            end
            return
        end
        --* тут дальше смк-ки, трансфер в ГГ и т.д.
        sms("on_part_take_0", nil, "nano", 5000)
        db.actor:transfer_item(obj, monster)
    end

    от @Купер

     

    Скрытый текст

    Для поиска нужно полностью распаковать все файлы мода или игры в отдельную папку включая все патчи и фиксы.


    Поиск будет производиться с помощью программы Total Commander.
    Разбираться и знать эту программу совсем не обязательно. Достаточно запомнить расположение всего одной кнопки.

    Примеры:

    1. Поиск конкретного оружия по его описанию:

    Допустим вы прочитали вот такое описание нужного вам ствола

    "FN SCAR-Н - боевая штурмовая винтовка калибра 7,62 НАТО, разработанная американским подразделением бельгийской компании FN Herstal в 2004 году. SCAR-H Mk.17 Mod.0 штатно комплектуется съёмными открытыми прицельными приспособлениями, состоящими из складного регулируемого по дальности диоптрического целика и складной же мушки. Кроме того, на винтовку могут устанавливаться любые дневные или ночные прицелы с соответствующими кронштейнами. Приклад у всех вариантов винтовки FN SCAR складной вбок. Ресурс ствола винтовки составляет 16 000 выстрелов и более."

    и хотите найти его параметры и прочее.

    Для этого открываете Total Commander, а в нём папку с распакованными файлами игры или мода.
    Так как параметры предметов находятся в подпапке config, то для ускорения поиска вам нужно открыть уже эту папку config.
    Далее нажимаете на иконку с рисунком бинокля в шапке программы, ставите галочку в квадратике "С текстом", и пишите справа от галочки нужный для поиска текст.
    В нашем случае мы возьмём вот этот кусочек - подразделением бельгийской компании FN Herstal
    ВНИМАНИЕ !!! Текст должен быть абсолютно точным включая пробелы и знаки препинания.
    Далее нажимаете кнопку "Начать поиск" и ждёте его окончания.
    В результате поиска был найден один файл. Это arsenal_mod.xml
    Кликаете 2 раза левой кнопкой мышки на строке с найденным файлом в окне "Результаты поиска", и программа автоматически найдёт вам этот файл.
    Далее открываете этот найденный файл в текстовом редакторе (хоть в блокноте) и ищете заданное вами словосочетание - подразделением бельгийской компании FN Herstal
    Нужный вам текст идёт под заголовком - <string id="enc_arsenal_scar_cry">
    Возвращаетесь в подпапку config, и снова запускаете поиск уже по словосочетанию - enc_arsenal_scar_cry
    В результате поиска было найдено два файла, но нам нужен только один расположенный в подпапке config\weapons\arsenal_mod\ar
    Это файл w_scar_cry.ltx.
    Всё... Мы нашли нужный нам ствол.

    Поиск предмета по его названию осуществляется точно также.

    2. Поиск неизвестного предмета по фразам в диалогах:

    Допустим в разговоре с Кузькиной матерью вы прочитали вот такой диалог

    " У меня на Большой Земле племянница сильно заболела. Сестра моя очень упрямая и консервативная в этом вопросе, не признает никакие современные лекарства, и лечит дочку только травами. Я и в Зону-то подалась только из-за этого лекарства. Всё, что нужно, заготовила и спрятала в двух разных местах."

    Берём кусочек диалога - У меня на Большой Земле племянница сильно заболела
    и ищем по этим словам в папке config.
    Находим в config\text\rus файл stable_dialogs_buusty.xml
    Открываем его в текстовом редакторе и ищем эту фразу.
    Эта фраза идёт под заголовком - <string id="kuzmat_dialog1_5">
    Обращаем внимание на характерное слово - kuzmat
    Опять запускаем поиск в папке config уже по этому слову.
    В результате будет найдено очень много файлов, но нас интересует предмет, а конфиги предметов обычно прописаны в подпапке config\misc
    В этой подпапке найдено два файла.
    Просматриваем оба на наличие слова kuzmat, и в файле arhara_items.ltx находим нужный предмет.
    Это lekarstvo_kuzmat.

    Также как и в примере с оружием можно найти тоже самое по названию предмета.

    Например вы случайно продали одну банку настойки "Цитомегалия" для Кузькиной матери, и хотите её заспавнить, прописать в продажу и так далее...

    Ищем по точному названию предмета. Это слово - Цитомегалия
    Поиск вывел название файла содержащего это слово - string_table_enc_equipment.xml
    Открываем этот файл, ищем нужное слово и смотрим как оно прописано в файлах игры
    <string id="lekarstvo_kuzmat">
       <text>Настойка "Цитомегалия"</text>

        </string>
       <string id="enc_equipment_lekarstvo_kuzmat">

      <text>Лекарственный сбор "Цитомегалия". Способствует подавлению вирусной и бактериальной инфекции. Предупреждает и тормозит воспалительные процессы в организме. Повышает иммунитет, оказывает общеукрепляющее, защитное действие. Настоен на чистом спирту. Не употреблять в чистом виде и без особых рекомендаций врача!</text>

     </string>
    Далее:
    Берём например enc_equipment_lekarstvo_kuzmat и снова запускаем поиск уже по этому новому слову.
    Получаем наводку на другой файл содержащий конфиги предметов - arhara_items.ltx
    Открываем этот новый файл и ищем enc_equipment_lekarstvo_kuzmat

    Получаем название предмета:
    [lekarstvo_kuzmat]:lekarstvo
    description = enc_equipment_lekarstvo_kuzmat
    inv_name = lekarstvo_kuzmat
    inv_name_short = lekarstvo_kuzmat


    Всё...

    3. Замена награды в квестах:

    Допустим вы хотите заменить автомат выдаваемый Волком на что то другое.
    Сохраняемся перед сдачей квеста, сдаём его и смотрим какой автомат получили.
    Находим (как описано выше) точное название этого автомата.
    Пусть это будет wpn_ak74u.
    В папке scripts запускаем поиск по wpn_ak74u
    Будет найдено очень много файлов которые придётся просмотреть на предмет нахождения wpn_ak74u.
    Ищем наиболее подходящее по смыслу.
    Находим требуемое в файле sak_dialog.script.
    Это
    function take_sescape_lager_volk_ak(first_speaker, second_speaker)
    dialogs.relocate_item_section(first_speaker, "wpn_ak74u", "in")
    end

    Заменяем название оружия в скобочках на нужное.
    function take_sescape_lager_volk_ak(first_speaker, second_speaker)
    dialogs.relocate_item_section(first_speaker, "wpn_vintorez", "in")
    end

    Снова загружаем сделанное ранее сохранение, и получаем у Волка Винторез.

    Если нужно много предметов, то просто дублируем строку и вставляем нужное.
    function take_sescape_lager_volk_ak(first_speaker, second_speaker)
    dialogs.relocate_item_section(first_speaker, "wpn_vintorez", "in")
    dialogs.relocate_item_section(first_speaker, "wpn_spas12", "in")
    end


    Если нужны деньги, то добавляем следующее:
    dialogs.relocate_money(second_speaker, 10000, "in")
    где 10000 - это сумма.

    Если нужно много патронов, то добавляем следующее:
    sak.create_items_actor("ammo_12x70_kart",9)
    где 9 - это количество пачек

    Аптечки, гранаты и прочее добавляются точно также.

    ИТОГО:

    Такими способами можно найти что угодно и где угодно, вплоть до поршней и что вам еще взбредет в голову.

    p.s.
    В Total Commander есть ещё одна полезная функция - это сравнение файлов по содержимому.
    Открываем в левой и правой половинах программы файлы которые вы хотите сравнить. Они должны иметь одинаковое название.
    Выделяете нужный вам файл. и в шапке программы под заголовком "файлы" нажимаете на - Сравнить по содержимому...
    Изменения в файлах будут выделены другим цветом.
    С помощью этого сравнения можно корректировать что угодно. Например подогнать скрипты под новый патч.

    p.p.s.
    Надеюсь после описанного выше в темах по моду будет поменьше одинаковых и просто осточертевших просьб типа - как называется и где находится...

     

    Ссылка на оригинал инструкции от @shahvkit

     

    Скрытый текст

    Поскольку все давно написано, копипастить не вижу смысла. Но сразу предупреждаю; оно вам не надо. Но если все же возьметесь и осилите - то вы готовый модер)). В теме ковыряния, с такими вопросами, делать нечего. Это скорее в разработку. Но там вас с вероятностью в 99.9%, пошлют. В общем, вот, для желающих самостоятельно разобраться, собранный в один пост мануал от комрада @shahvkitссылка

     

    Скрытый текст
    Настройка Total Commander для работы с ОП-2.2 (Скрыть)

    Дабы не спрашивали в дальнейшем, по распаковке архивов игры, все очень просто. Нужен Total Commander и плагины:
     

    wcx_stalker_db_003_x32_x64 - архиваторный плагин. Работает именно с архивами, по одному. Можно ассоциировать каждый тип .db с плагином, и тогда все .db будут открываться по ЛКМ, но проще работать через ctrl+Page Down (выделяя нужный архив и нажимая эти кнопки).


    wfx_stalker_db_004_x32_x64 - плагин файловой системы. Позволяет просмотреть сталкерские архивы в виде виртуального каталога с сохранением структуры папок. По идее, гораздо удобнее, но не всегда нужно смотреть и распаковывать все.

     

    Устанавливаются оба плагина, двойным кликом ЛКМ в ТС.


    wcx_stalker_db_003_x32_x64 - по ctrl+Page Down работает сразу, но можно заморочиться и прописать ассоциации, для каждого архива ОП-2.2

    wfx_stalker_db_004_x32_x64 - по идее тоже должен работать сразу "из коробки". Но если вдруг что-то пошло не так, или у вас ОП-2.2 установлен "в ручную" без записи в реестре, нужно настроить в папке плагина, по TotalCMD\Plugins\wfx\stalker\stalker.ini  
    Пример настройки stalker.ini для нескольких версий ОП-2.2:

    [main] use_registry = 1 [installations] SHOC1 = 3312ru|D:\Games\OP2.2p2origin\ SHOC2 = 3312ru|D:\Games\OP2.2p2mod\ SHOC3 = 3312ru|D:\Games\OP2.2p1orig\

    [main]
    use_registry = 1
    
    [installations]
    SHOC1 = 3312ru|D:\Games\OP2.2p2origin\
    SHOC2 = 3312ru|D:\Games\OP2.2p2mod\
    SHOC3 = 3312ru|D:\Games\OP2.2p1orig\

    Не пытайтесь с помощью этих плагинов изменить или перепаковать игровые архивы! Плагинами можно только просматривать и извлекать файлы игры. Для упаковки можно использовать Конвертер от Bardaka.
    ---------------

    Ссылка - на плагины, инструкцию в .docx, наглядные скрины и рабочий конвертер для упаковки правок для ОП-2.2.

    Total Commander - найти в сети актуальную версию, не сложно.

     

     

    Скрытый текст

    Спрашивали тут про правку на слоты артефактов в инвентаре. По сути ничего не изменилось, как и прежде, если не стоит задачи сделать глобально, под все разрешения и варианты инвентаря, нужно править файл своего разрешения. Только теперь, вариантов инвентаря стало намного больше и лежат они не в config\ui\, а в skins_ui\inventory\ - тут нужно выбрать свой вариант и разрешение инвентаря, в моем случае получается 16х9: gamedata\skins_ui\inventory\default\config\ui\inventory_new_16.xml. Может так же быть и inventory_new.xml и inventory_new_21.xml. Если не планируете менять инвентарь во время игры, то и заморачиваться с вариантами, не нужно. Сам инвентарь нужно выбрать свой, у вас может быть любой из этих:

    1421-cr.png

    Дальше все стандартно, нужны вот эти две строки в inventory_new_16.xml:

    <!-- *************** Инвентарь ячейки артов ***************** -->
        <dragdrop_belt x="697" y="285" width="306" height="100"
                cell_width = "21" cell_height="26" rows_num="3" cols_num="10">
    <!-- ******************************************************** -->

    В первой строчке, позиция сетки по Х-Y. Их можно немного подкорректировать, но только после выбора и подгонки размера ячеек, обычно на пару пикселей достаточно, что-бы выровнять относительно текстуры.

    Вторая строка. Первые 2 цифры "cell_width" - ширина и "cell_height" высота, для других инвентарей и разрешений цифры будут другие и их придется настраивать самому, меняя и загружаясь в игру(из слотов на это время все лучше убрать, хотя это же не ружжо, вылета не будет), что-бы квадратики более-менее ровные получились.

    "rows_num" - строки таблицы артефактов, cols_num - столбцы. У меня оптимально, не сдвигая сетку вверх, на описание брони и не опуская вниз, получилось 3х10=30 ячеек. На других разрешениях возможно лучше будет смотреться 2х10 или 3х8, к примеру, или 5х15))), в общем, сколько хотите - столько и пихайте. Но 30 - уже слишком много. Только из эстетических соображений так сделал - смотрится и вписывается, как там и было:

    ss-admin-01-14-22-08-49-07-l01-escape.jp

    Пока подогнал, раз 10 перезагружался в игру. На этом с сеткой закончили.

    Теперь дополнительные ячейки нужно "активировать". Что-бы все 30 ячеек работали, их количество надо прописать в gamedata\config\system.ltx

    Строка:

    max_belt    = 14 
    вместо 14 ставим свое количество ячеек:
    max_belt    = 30

    На этом настройка панели артефактов завершена.

    На худе их отображение лучше отключить - будут "уезжать" с худа. Хотя и это можно настроить, но я всегда панель артефактов и все лишнее с худа убираю и отключение панели считаю оптимальным решением.

    Для полного щастя осталось снять ограничения в scripts\inventory.script
    Что-бы не мелочиться, делаем так:

    self.imm_limits = {100, 86, 73, 60}
    меняем на:
    self.imm_limits = {999999, 999999, 999999, 999999}

    И обвешавшись гирляндой из артефактов, можно смело топать на ЧАЭС-2 кошмарить Когтя смерти и прочих неубивашек 

    Мануал по настройке панели артефактов в формате .docx

     

    Скрытый текст

    Все волшебство тут, погляди для саморазвития, показометр синий(только кнопки надо свои назначать) спавнер - зеленый.

    ==============================================

    function main_menu:StartGame()
        ui_mm_opt_add.check_options()

        if (alife() ~= nil) then
            console:execute    ("disconnect")    
        end
        
        console:execute("start server(all/single/alife/new) client(localhost)")
        console:execute("main_menu off")
        archievements.on_new_game()
    end

    --===спавнер===--
    function main_menu:OnButton_load_spawn()
        if self.spawn_dlg == nil then
            self.spawn_dlg = ui_cheat_naxac.cheat_menu()
        self.spawn_dlg.owner = self
    end

        self:GetHolder():start_stop_menu(self.spawn_dlg, true)
        self:GetHolder():start_stop_menu(self, true) --new
        self:Show(false)
    end
    --===спавнер===--

    function main_menu:OnButton_save_clicked()
        local save_dlg = ui_save_dialog.save_dialog()
        save_dlg.owner = self
        
        self:GetHolder():start_stop_menu(save_dlg, true)
        self:GetHolder():start_stop_menu(self, true) --new
        self:Show(false)
    end

    function main_menu:OnButton_options_clicked()
        local opt_dlg = ui_mm_opt_main.options_dialog()
        opt_dlg.owner = self
        
        opt_dlg:UpdateControls()
        self:GetHolder():start_stop_menu(opt_dlg, true)
        self:GetHolder():start_stop_menu(self, true) --new
        self:Show(false)
        amk_mod.hud_update = true
    end

    function main_menu:OnButton_load_clicked()
        local load_dlg = ui_load_dialog.load_dialog()
        load_dlg.owner = self
        
        self:GetHolder():start_stop_menu(load_dlg, true)
        self:GetHolder():start_stop_menu(self, true) --new
        self:Show(false)
    end
    ---Показометр адпатация PLK ---
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --    local bind = dik_to_bind(dik)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            if dik == DIK_keys.DIK_ESCAPE then
                if game_is_running() then
                    ui_mm_opt_add.check_options()
                    console:execute("main_menu off")
                    archievements.mm_opt()
                end
            elseif
                key_handlers.handler_press(dik,dik_to_bind(dik)) then
                
            elseif dik == DIK_keys.DIK_L then
                self:OnButton_last_save()
            -- лютый котик, ебашит все в онлайне --        
            elseif dik == DIK_keys.DIK_P then
                pokazometr.show_actor_position()
            -- показывает барбитуру и коды от дверей --                                     
            elseif dik == DIK_keys.DIK_O then
                pokazometr.obkolishi_i_barbiturshiki()
            -- котик выкашивающих все в радиусе 70м--                                    
            elseif dik == DIK_keys.DIK_V then
                pokazometr.final_victory()
            --- чистильщик трупов, выкашивание трулей, давление жабы, тушение аномалий партиклями --                                                                        
            elseif dik == DIK_keys.DIK_H then
                pokazometr.cleaner()
            --- лечение, вывод радиации, показ координтатов --                                
            elseif dik == DIK_keys.DIK_NUMPAD4 then
                pokazometr.zdoroviy()
            --- выдача 100к ---                    
            elseif dik == DIK_keys.DIK_K then
                pokazometr.bablo()
            --- показ меток на херобору --
            elseif dik == DIK_keys.DIK_NUMPAD1 then
                pokazometr.set_spots()
                --- удаление меток вручную ---    
            elseif dik == DIK_keys.DIK_NUMPAD2 then
                pokazometr.del_spots()    
                -- показ аномалий на  мини-карте --
            elseif dik == DIK_keys.DIK_NUMPAD3 then
                pokazometr.show_anomalies()
                -- набор багфиксов, необходимы тесты --                         
            elseif dik == DIK_keys.DIK_U then
                pokazometr.armistice()
                -- показ рестрикторов --                                                 
            elseif dik == DIK_keys.DIK_NUMPAD5 then
                pokazometr.show_restrictors()
                -- Полёт на болте  --                                                                
            elseif dik == DIK_keys.DIK_NUMPAD6 then
                pokazometr.pokaz_stalkerov()
                -- показ мобов и сталкеров --                                                                                                                                             
            elseif dik == DIK_keys.DIK_M then
                pokazometr.show_mobs()
            --- нюх на все, отлов обьектов в радиусе 5м с записью лога---                                                                    
            elseif dik == DIK_keys.DIK_NUMPAD8 then
                pokazometr.nuh_na_vse()
                            
     
           elseif     dik == DIK_keys.DIK_Q then
                self:OnMessageQuitWin()                        
    --===спавнер===--
            elseif dik == DIK_keys.DIK_S then
                self:OnButton_load_spawn()
    --===спавнер===--

            end
        end
        if keyboard_action == ui_events.WINDOW_KEY_RELEASED then
            key_handlers.handler_release(dik,dik_to_bind(dik))
        end
       
        return true
    end

    if ui_mm_opt_creator.get_bool_user_param("pause_on_load") then 
        autopause.main()
    end

    ==============================================

    ==============================================

    ==============================================

    Если хочется несколько спавнеров, делаем так:

    --===спавнеры===--
    function main_menu:OnButton_load_spawnnaxac()
        if self.spawnnaxac_dlg == nil then
            self.spawnnaxac_dlg = ui_cheat_naxac.cheat_menu()
        self.spawnnaxac_dlg.owner = self
    end
        self:GetHolder():start_stop_menu(self.spawnnaxac_dlg, true)
        self:GetHolder():start_stop_menu(self, true) --new
        self:Show(false)
    end
    -----------------
    function main_menu:OnButton_load_spawnkot()
        if self.spawnkot_dlg == nil then
            self.spawnkot_dlg = spawner.spawn_items_dialog()
            self.spawnkot_dlg.owner = self
    end
        self:GetHolder():start_stop_menu(self.spawnkot_dlg, true)
        self:GetHolder():start_stop_menu(self, true)
        self:Show(false)
    end
    --=============--

    --******************************--

    --===спавнеры===--
            elseif dik == DIK_keys.DIK_S then
                self:OnButton_load_spawnnaxac()
    --==============--
            elseif dik == DIK_keys.DIK_D then
                self:OnButton_load_spawnkot()
    --===спавнеры===--

     

    Скрытый текст

     ( Батник для запуска игры на двух и более ядрах, используется встроенный виндовый affinity.exe ):

    Если включен SMT (AMD) или Hyper-Threading (Intel) то ключи запуска подбираются исходя из:

     

    CPU0 - первое ядро

    CPU1 - это "поток" SMT или Hyper-Threading (Intel) - первого ядра

    CPU2 - второе ядро

    СPU3 - это "поток" SMT или Hyper-Threading (Intel) второго ядра

    и т.д. - т.ё. нечетные это будут виртуальные ядра гипертрейдинга.

     

    У себя использую ключ 0с 

    Пример - C:\Windows\System32\cmd.exe /C start /affinity 0c XR_3DA.exe -nointro

    Чтобы убрать вырвиглазный значек запуска ярлыка батника меняем его на значек ОП2.2.iso из папки /bin

    Будет оптимальным так же перенести выполнение процесса видеодрайвера тоже на другое ядро, т.к. винда очень любит вешать всё подряд на CPU0(1).

    Как это сделать и не только показано здесь - ссылка на видео по игровой оптимизации 10-ки: youtube (см. внимательно, старые скрипты прошу не юзать, использовать только то что вам нужно)

     

    OS - Windows Server 2022 Standard, HD-pack 2.2, микрофризов не вижу, R5 3600X, 2070s, 2K разрешение, качество максимальное, игра ест больше 6Gb оперативы, проблем нет.

     

    Скрытый текст

    а есть правка на принудительное включение переходов?

    --Любой переход можно заспавнить через ui_main_menu.script. Вот как выглядит функция спавна перехода ЗЛ-ТД: 

     

    function td_from_puzir_spawn() --в релизе его можно было просохатить.

    А вот что нужно вписать в ui_main_menu:

       elseif dik == DIK_keys.DIK_F11 then
                buusty_dialog.td_from_puzir_spawn()

     

    Т.е. имя скрипта и функции, через точку. Ищи по содержимому, по подобию. А вообще, с такими траблами, как и советуют, лучше переиграть.

     

    --===--

    Список ЦЗ и другая помощь в прохождении
    Скрытый текст

    Сделал таблицу с ЦЗ. Она более полная и точная, чем существующая. Добавил для задания типа "Уничтожить лагерь" кого и сколько нужно уничтожить. Пометил одноразовые задания, приоритеты и тд.

    Циклические задания и цепочки онлайн-таблица от@warlordnazar

     

    Скрытый текст

    В данной таблице находится информация обо всех циклических заданиях(ЦЗ) в игре.

    Список циклических заданий в онлайн таблице, с возможностью комментирования

    Переспавн убитых квестовиков

    Скрытый текст

    Этот раздел можно пропустить, т.к. для переспавна не важно состояние НПС, жив, мертв или сгинул-потерялся - по spawn_id переспавнится в точку входа в игру.

    Скрытый текст

    Привет всем, перед тем, как сделать переспавн квестовиков, нужно убедится, действительно ли пропал нпс. Для этого ставьте ему маячок и посмотрите, где он. Для этого:  

     

    gamedata /scripts/ui/ui_main_menu

    -----после ---------
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --    local bind = dik_to_bind(dik)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            if dik == DIK_keys.DIK_ESCAPE then
                if game_is_running() then
                    ui_mm_opt_add.check_options()
                    console:execute("main_menu off")
                    archievements.mm_opt()
                end
    ------прописывем---------

    elseif dik == DIK_keys.DIK_1 then --1 условное число, можете любую свободную букву прописать.
                add_spot()

    ---------затем, после ------------
    return true
    end
    ------прописывем -------

    function add_spot()
      local sid = 6
      local obj = alife():story_object(19004) 
    --в кавычках пишем story_id с конфигов--game_story_ids--
      if obj then
        level.map_add_object_spot_ser(obj.id, "blue_location", obj:name())
      else
        get_console():execute("load ~~~ object with story_id "..tostring(sid).."not found")
      end
    end

    Запуск игры, выход в меню и нажимаем 1, метка установится к нпс. В данном случае Архаре.

     

     

    Скрытый текст

    gamedata /scripts/ui/ui_main_menu

    после 
    function main_menu:OnKeyboard(dik, keyboard_action)  --virtual function
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    --    local bind = dik_to_bind(dik)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            if dik == DIK_keys.DIK_ESCAPE then
                if game_is_running() then
                    ui_mm_opt_add.check_options()
                    console:execute("main_menu off")
                    archievements.mm_opt()
                end
    прописывем

    elseif dik == DIK_keys.DIK_N then
                perespawn()

    после 
    return true
    end
    прописывем

    function perespawn() 
     local obj 
            for i=1,65534 do 
              obj = alife():object(i) 
                if obj and obj:name() == "mil_stalker0012" then 
                  alife():release(obj) 
              break 
                end 
            end 
     alife():create(7098)
     
     end

    Запуск игры, выход в меню и нажимаем N Псих будет на месте. Это на последний патч от 15.03.2023.

     

    от @Kashafoch

     

    Скрытый текст

    Архара №1 patch 15.03.2023(это видимо "первый" Архара на Агропроме, Якута смотрим в конце списка):

    if obj and obj:name() == "yakut_agro" then 

     alife():create(4262)

     

    Архара №2 patch 15.03.2023(это Архара на Затоне):

    if obj and obj:name() == "arhara_zaton" then 

     alife():create(24565)

     

    Архара №3 patch 15.03.2023(есть еще какой-то третий Архара, видимо со сходки авторитетов):

    if obj and obj:name() == "arh2_dell2_restrictor" then 

     alife():create(4206)

     

    Боров patch 15.03.2023:

    if obj and obj:name() == "val_lager_bandits_borov" then 

     alife():create(5188)

     

    Кузнецов patch 15.03.2023:

    if obj and obj:name() == "esc_bridge_soldier5" then 

     alife():create(3005)

     

    Петруха patch 15.03.2023:

    if obj and obj:name() == "esc_novice_attacker1" then 

     alife():create(2965)

     

    Псих patch 15.03.2023:

    if obj and obj:name() == "mil_stalker0012" then 

     alife():create(7098)

     

    Сепатор patch 15.03.2023:

    if obj and obj:name() == "esc_hunter_zaschita_2" then 

     alife():create(3678)

     

    Шерстюк patch 15.03.2023:

    if obj and obj:name() == "sak_military_stalker" then 

     alife():create(4651)

     

     

    Якут patch 15.03.2023:

    if obj and obj:name() == "yakut_agro2" then 

     alife():create(7017)

    p.s. дальше добавляем только name и ID - функция везде одна и та же..

    ---===---


    Вопросы по правкам / настройке ОП-2.1

    Как работать с файлами ОП-2.1?

    Тема по ковырянию файлов - здесь.

    Как убрать ограничение на сон?

    Скрипт: dream.script

    Строка: 

    self.sleep_proportion    = 0.5 -- Соотношение бодрствование/сон 

     Поставить = 0.0

    Как оставить одну мину на ЧАЭС-1 по квесту капитана Филатова?

    Путь: gamedata\scripts\binders\bind_mine.script

     

    Строка:

    if value >= 20 then

    Заменить: = 20 на 1


    ЧаВо по форуму

    Как писать грамотно?

    Мысли, написанные с грамматическими ошибками,
    невозможно воспринимать как умные.
    Как вы знаете, в Правилах существует пункт 2.5, который гласит:

     

    Запрещено оставлять сообщения, содержащие чрезмерное количество грамматических и пунктуационных ошибок.
    Фактом нарушения этого пункта Правил может быть сочтен случай, когда модераторы регулярно вынуждены редактировать сообщения пользователя с целью исправления ошибок правописания.
    Наказание - предупреждение без занесения, при рецидиве - режим "только чтение" на срок до 24 часов. При многократном рецидиве в сочетании с явным нежеланием пользоваться средствами проверки орфографии - режим "только чтение" на 24 часа и предупреждение с занесением.


    Чтобы избежать неприятностей, а также для того, чтобы ваши мысли (какими бы они ни были :) ) воспринимались как умные, просим вас не игнорировать функцию проверки орфографии.
    По умолчанию во всех браузерах она включена, проверить это можно следующим образом.

    Internet Explorer:
    Сервис - Настроить надстройки - Проверка орфографии - Включить проверку орфографии.
    Firefox:
    Настройки - Дополнительные - Общие - Проверять орфографию при наборе текста.
    Opera:
    Настройки - Браузер - Языки - Словари - Включить проверку орфографии.

    Функция автоматически проверяет набираемый вами текст и, если находит ошибки, подчеркивает слова красной волнистой линией:

    893ab3ba9d01d23f17dad124f10000062ebc0d18

    Чтобы исправить слово, нужно щелкнуть на нем правой кнопкой мыши и выбрать предлагаемый вариант.
    Не забывайте также о существовании знаков препинания и о том, что после каждого из них должен стоять пробел.
    Предложения в русском языке начинаются с заглавной буквы, а заканчиваются точкой, вопросительным/восклицательным знаком или многоточием.
    Если пишете большой текст, старайтесь разделять его на абзацы. Это значительно улучшает читаемость и восприятие вашего текста.

    Как закрыть ЭТО окно ?

    Ткнуть куда-нибудь за его краем.

    Как сделать, чтобы этот пользователь не писал мне в л/с ?

    Зайти у СЕБЯ в "настройки", выбрать пункт "игнорируемые пользователи". Дальше все очевидно.
    Не пытайтесь сделать это в профиле другого пользователя, или находясь в режиме чтения л/c. Вам надо изменить именно СВОИ настройки, а не этого пользователя.

    А как скачать этот ролик с Ютуба к себе на компьютер ?

    Internet Download Manager, например.

    Другой вариант:
    В адресной строке в ссылке на ютюб добавить две буквы SS перед словом youtube вот так:
    http://www.ssyoutube.com/watch?что-попало

    Как разместить отрывок видео с Youtube?

    Берем ссылку на исходное видео:

    http://www.youtube.com/watch?v=49XBmLTwWsQ
    Добавляем к ссылке &start=ХХХ&end=YYY&version=3, где ХХХ - начало отрезка, YYY - конец отрезка (в секундах). Получаем:
    http://www.youtube.com/watch?v=49XBmLTwWsQ&start=183&end=204&version=3
    Чтобы все работало как надо, осталось убрать (если есть) из ссылки "watch?", а "v=" заменить на "v/". Получится:
    http://www.youtube.com/v/49XBmLTwWsQ&start=183&end=204&version=3
    Собственно, всё.

    Титульные посты и шапки тем (стандарт)

    Титульный пост - первый пост темы, в котором собрана вся информация по моду/проекту.
    Шапка темы - любой пост (как правило, титульный, но не всегда), закрепленный таким образом, что он показывается первым на каждой странице темы. Для шапок существуют ограничения по размеру. Сделано это для того, чтобы, переходя на следующую страницу темы, не приходилось долго и мучительно прокручивать шапку.

    Общие рекомендации.
    При оформлении первого поста в теме (в том числе, если он является "шапкой") старайтесь быть максимально лаконичными и понятными. Прежде всего, цель такого поста - дать пользователю всю необходимую информацию по моду (либо другому проекту). Красный цвет настоятельно рекомендуется использовать только при острой необходимости.

    Некоторые пояснения по пунктам (даются там, где необходимо).
    Название мода
    Максимум "жирные" + заглавные буквы (нестандартный шрифт - по желанию). Поверьте, 50-й красный шрифт не сделает ваш мод лучше. Верно и обратное, капсовая "жирнота" не уменьшит значимость вашего творения. :)

    Постер (опционально)
    Любая картинка на ваш выбор, но старайтесь не перебарщивать с размером. Неплохой вариант - превью.


    Дата выпуска
    Если мод находится в разработке, то указываем ориентировочную дату выхода.

    Разработчики.
    Если мододелы зарегистрированны у нас на форуме, можно дать ссылку на профиль. На такой случай уже вставлен соответствующий ВВ-код.

    Платформа (версия патча)
    Если мод может работать на разных патчах (S.T.A.L.K.E.R.-а), стоит это указать.

    Версия мода (аддона)
    Указывайте актуальную версию мода/патча. Не забывайте корректировать с выходом обновлений/исправлений.

    Язык интерфейса/озвучки (опционально)
    Указывается только в том случае, если мод на иностранном языке. Если помимо русского поддерживается какой-то другой язык, не забудьте об этом написать.

    Системные требования (опционально)

    Если вы не уверены, что сможете верно указать сис. требования для мода, то рекомендуем отсылать игроков к таковым для оригинального S.T.A.L.K.E.R.-а.
    Обычно пишется так:
    Процессор -
    Оперативная память -
    Видеокарта -
    Свободное место на жестком диске -
    Версия DirectX -
    Операционная система -
    При желании можете расписать "Минимальные" и "Рекомендуемые" сис. требования.
    Не стоит в этом пункте пускаться в размышления по поводу производительности S.T.A.L.K.E.R.-а, и способов её повышения (для этого есть отдельная тема). Считайте, что вашему моду необходим твердотельный накопитель в системе пользователя, так и напишите "Рекомендуем устанавливать игру с модом на SSD".

    Описание
    Здесь можете воплощать все свои писательские способности. Только не забывайте, что "краткость - ...". :)
    При наличии большого количества информации в этом пункте настоятельно рекомендуется использовать спойлеры.

    Дополнительная информация
    Все, что не попало/не подошло в "Описание", оставляем здесь.

    Порядок установки
    Пример:
    1) S.T.A.L.K.E.R.
    2) номер патча для игры
    3) мод
    4) патч для мода 1
    5) патч для мода 2
    6) фикс № 3
    С выходом новых патчей/фиксов для мода, не забывайте обновлять этот пункт!

    Скриншоты
    Не забываем о максимально возможном размере картинок в посте. Рекомендуется использовать превью.

    Видео (опционально)
    Разрешается только один раз использовать ВВ-код [media]. Остальные видео только в виде ссылок.

    F.A.Q. (опционально)
    Оно же "Часто Задаваемые Вопросы" или "ЧАВО". Если в процессе прохождения мода у игроков будут возникать эти самые вопросы, обновляйте это пункт (очень советую :)).

    Прохождение (гид) (опционально)
    Пункт заполняется при его (гида)
    наличии. Если он слишком объемный, разместите здесь ссылку, а сам гид выведите в отдельный пост. Либо сверстайте его в документ, а здесь поместите ссылку для скачивания.

    Куратор(ы) темы
    Если они есть, то указывайте ники с ссылкой на профиль форумчанина.

    После всех этих пунктов возможно разместить еще какую-то (как правило очень важную) информацию. Опять же, не стоит выжигать юзерам глаза с помощью гигантских букв ядовитого цвета. ;)

    Для облегчения заполнения первого поста/шапки ниже расположена вся необходимая основа.
    Копируем.
    Вставляем.
    Заполняем.
     

     

    [center][b]Название мода.[/b][/center]
    [center]Постер.[/center]
    [b]Дата выпуска - [/b]
    [spoiler=Разработчик(и)][b][member=ник][/b][/spoiler]
    [b]Официальный сайт:[/b]
    [b]Платформа (версия патча):[/b]
    [b]Версия мода (аддона):[/b]
    [b]Язык интерфейса/озвучки:[/b]
    [spoiler=Системные требования][/spoiler]
    [spoiler=Описание][/spoiler]
    [spoiler=Доп. информация[/spoiler]
    [spoiler=Ссылки для скачивания][/spoiler]
    [spoiler=Порядок установки][/spoiler]
    [spoiler=Скриншоты][/spoiler]
    [spoiler=Видео][/spoiler]
    [spoiler=F.A.Q.][/spoiler]
    [spoiler=Прохождение (гид)][/spoiler]
    
    Куратор(ы) темы: [b][member=ник][/b] (опционально)

     


    1. Шапка темы - пост, закрепленный в теме таким образом, что он будет показываться первым вне зависимости от того, какая страница темы просматривается. Как правило, это первый пост темы, в котором собрана основная справочная информация, описание предмета обсуждения, скриншоты, ссылки, гиды, примеры использования и прочее (далее - "титульный пост").


    2. Высота видимой части шапки темы должна составлять не более чем 15 строк текста дефолтного размера (без учета сообщения о редактировании, сводки оценок и подписи автора поста), включая заголовок, арты, разделительные линии, спойлеры и т.п. Если автор или куратор темы не желает сокращать с помощью использования спойлеров пост, который предполагается использовать как шапку, до этого размера, он может создать отдельный пост в теме с указанием в нем ссылки на титульный пост и/или другую информацию и закрепить его в теме, сделав шапкой.
    3. Размещать видеоролики в шапке темы можно только в виде ссылок. Разрешено использование bb-кода [media], но только для одного ролика.

    Все, что свыше 15 строк, в шапке пихаем под спойлер. Так что помните: кр. - сестра таланта. ;)

    Что делать, если хочется разместить картинку большего размера, чем разрешено правилами, или анимированную, и вообще, почему они запрещены ?

    Большие картинки, во-первых, ломают отображение страницы в браузерах, во-вторых, особенно, когда их больше одной, приводят к тому, что темы открываются по 5 минут, или не открываются вообще.

    Может быть вместо картинки лучше дать ссылку ?
    сделать это можно следующим образом:

    &#91;url=http:ссылка]описание того, что по ссылке&#91;/url&#93;

    Аналогично - с музыкой и видео.

    Как разместить скриншот на форуме АМК.

    1. Открыть сайт https://hostingkartinok.com/
    2. Нажать кнопку "Обзор...", выбрать путь к скрину и сам скрин. Нажать "Enter"
    3. Ниже кнопки "Обзор", жмём кнопочку "Загрузить".
    3. Скопировать четвёртую !!! ссылку, которая называется "Превью BB Code (рекомендуется для форумов)"
    4. Скопированный код вставить в пост.
    5. Всё.
     
    Вот так - http://f22.ifotki.info/thumb/6bc352b8514748be56b30a632113d303b2cda9277583191.png


    Шпаргалка AMK: Основы

    Введение

    ШПАРГАЛКА (ver. 6)
    по "ковырянию" сталкера с модом АМК


    Сей документ составлен из вопросов и ответов пользователей форума.


    Составил: @n6260
    Оформил: @Виталий Зверь

    Как найти лог вылета?

    Сразу после вылета открыть любой текстовый редактор и выбрать в меню "правка" (или в контекстном меню по правой кнопке мышки) пункт "Вставить".
    Полученный текст и будет логом вылета. Или же смотрим последние строки в текстовом документе по пути:
    C:\Documents and Settings\All Users\Документы\STALKER-SHOC\logs (т.е. общие документы\папка Сталкер)
    ВНИМАНИЕ! Перед всеми издевательствами и добавлении новых модов\аддонов в игру советую делать бэкап папки "геймдата".

    Софт для ковыряния

    Софт для "ковыряния"
     
    Программы для работы с файлами игры (чем пользуюсь я). Все эти программы\утилиты можно найти на сайтах посвященных игре Сталкер, сайтах комп. софта и в интернет-поисковиках :
    1.Total Commander – файловый менеджер (+прекрасно ищет файлы с указанным куском (словом) текста)
    2.Любой текстовый редактор (блокнот) (я пользуюсь Notepad++ и EmEditor)
    3. Araxis.Merge.Professional.2007 – Программа для сравнивания двух текстовых файлов (поддержка кучи форматов  + всякие навороты)
    4.Фотошоп с плагином DDS (для просмотра\редактирования текстур)
    5.Архиваторы Win RAR и 7-Zip (эти распакуют и запакуют что угодно)
    6.Нех-редактор xvi32 (или любой другой, для более глубокого «ковыряния»)
    7.Ltx Editor (правим патроны, предметы, броню и прочее)
    8.STALKER_Data_Unpacker – утилита для распаковки файлов игры
    9.iconviewer – определяет координаты иконки.
    10. xrSpawner - Программа для редактирования all.spawn игры S.T.A.L.K.E.R. (честно скажу – не пользовал – но на всякий случай упоминаю).
    11. X-Ray SDK – многофункциональная прога от разработчиков для серьезного «ковыряния»  игры S.T.A.L.K.E.R.
    12.S.T.A.L.K.E.R. utilities pack - Пакет утилит для разработчика модификаций игры S.T.A.L.K.E.R. (сам не использовал, но перечень «комплекта» впечатляет)
    13. Beepa.Fraps.v2.9.4 – для учета FPS и видеозаписи игрового процесса (работает не только со Сталкером).
    14.Ну и для работы со звуком – хороший звуковой редактор...
    Вроде все перечислил... Есть еще всякие другие утилиты, но мне хватает этого набора...

    Структура основных папок и файлов

    Структура основных папок и файлов

    Структура папок и файлов в корневом каталоге игры:

    ...\S.T.A.L.K.E.R\gamedata\anims – папка содержит исполнительные файлы эффектов (например от ПНВ).

    ...\S.T.A.L.K.E.R\gamedata\config – папка содержит основные конфигурационные файлы (т. е. большинство настроек игры)

    ...\S.T.A.L.K.E.R\gamedata\meshes – содержит модели игровых предметов и персонажей...

    ...\S.T.A.L.K.E.R\gamedata\scripts – папка со скриптами (рабочими файлами содержащими в себе наборы функций) – основная папка, отвечающая за ответные действия игры и действия производимых игроком в игре.

    ...\S.T.A.L.K.E.R\gamedata\shaders – папка содержит в себе конфигурационные файлы шейдеров.

    ...\S.T.A.L.K.E.R\gamedata\sounds – здесь находятся все звуки игры (разложены по своим каталогам и папкам)

    ...\S.T.A.L.K.E.R\gamedata\spawns – содержит файл спавна – очень важный файл – не трогать без нужды!!!

    ...\S.T.A.L.K.E.R\gamedata\textures – содержит разложенные по каталогам и папкам текстуры используемые в игре.

                  Теперь разберем папки в каталоге «config»

              ...\S.T.A.L.K.E.R\gamedata\config\creatures  - содержит массу конфигурационных файлов, в основном отвечающих за взаимодействие Главного героя игры (в дальнейшем ГГ) и прочего окружения в игре и ТТХ самого ГГ.

              ...\S.T.A.L.K.E.R\gamedata\config\gameplay – содержит конфиг. файлы персонажей игры (НПС) отвечающие за внешний вид, статус, снаряжение.
    Файлы: character_desc_ххх (где ххх – название локации) и character_desc_general (отвечает за зомбированного персонажа).
    Также содержит файлы диалогов и профилей НПС.

               …\S.T.A.L.K.E.R\gamedata\config\misc – конфиг.файлы торговцев (папки с именами торговцев), артефактов, брони, квестовых предметов, уникальных предметов, файл отвечающий за награды за автозадания, файл эффектов (алкоголизма, ранения, ПНВ и прочих)...

               …\S.T.A.L.K.E.R\gamedata\config\mp – среди прочих содержит важный файл mp_ranks – отвечающий за выпадение оружия и патронов из рук ГГ и НПС – без прописывания добавляемого в игру оружия в этот файл при выпадении нового оружия из рук ГГ\НПС будут следовать вылеты.

               …\S.T.A.L.K.E.R\gamedata\config\text\rus – содержит файлы описаний всего и вся находящегося в игре (брони, артефактов, оружия, предметов и прочего).

               …\S.T.A.L.K.E.R\gamedata\config\weapons – содержит конфиг.файлы оружия и боеприпасов используемых в игре.

                …\S.T.A.L.K.E.R\gamedata\config\weathers – содержит конфиг.файлы настройки погоды на локациях.

                    Теперь немного подробнее о файлах.

    ...\S.T.A.L.K.E.R\gamedata\config\misc:

    Папка amk_artefacts – содержит конфиг. файлы модификатов (модифицированых артефактов).

    Папка shop_ххх (ххх – имя торговца) – содержит конфиг.файлы ассортимента торговца.

    amk_mod_outfits – содержит секции конфигов костюмов от АМК-тайм.

    artefacts -  содержит секции конфигов артефактов.

    items -  содержит секции конфигов предметов.

    monster_items - содержит секции конфигов частей монстров

    outfit -  содержит секции конфигов костюмов.

    postprocess -  содержит секции конфигов пост. процессов (например: ПНВ).

    quest_items  -  содержит секции конфигов квестовых предметов.

    task_manager -  содержит секции наград за автоквесты.
    0
    unique_items -  содержит секции конфигов уникального оружия и костюмов.

    Вылеты и баги

    Игра сильно тормозит в одной части локации.

    Скорее всего где-то поблизости есть растяннутая текстура животного\НПС -надо ее найти и полоснуть
    ножом или выстрелить по ней...

    Не открываается дверь в ....., как открыть?

    Можно так открыть:
    1.Подойди к двери вплотную со стороны петель под углом где-то 45 градусов.
    2.Берёшь в руки ствол подлиннее,желательно СВД и пихаешь между петлями.
    3.Нажимаешь в инвентаре "выбросить оружие".
    Попыток этак с 10 дверь открывается настолько,что можно протиснуться вовнутрь,а винтовочку
    забираем уже с той стороны.Таким методом я открывал без кода эту дверь и закрытый сейф на базе
    монолита в Припяти (в оригинальной игре и в моде 1.3.1, но думаю,ничего не изменилось). Но хочу
    предупредить -может и зашибить дверью, иногда наглухо (поэтому больше не пользуюсь, в случае смерти ГГя
    теперь всегда начинаю игру заново).

    Expression : assertion failed
    Function : CSafeFixedRotationState::create
    File : e:\stalker\patch_1_0004\xr_3da\xrgame\phvalidevalues.h
    Line : 81
    Description : dBodyStateValide(b)

    Лечится это или нет?
    это из-за контролера -рецепт лечения:

    gamedata\config\creatures\m_controller.ltx

    строка:
    Max_Controlled_Count = 10;4
    сделай:
    Max_Controlled_Count = 0

    И вот -переход на АС и вылет. Неизлечимый. (object 'khutor_zone2': section 'sr_idle1': field
    'on_npc_in_zone': there is no object with story_id '719'). Эта же ошибка была, когда после отключения выжигателя
    хотел вернуться на АС, поэтому тогда сразу на Припять пошёл. Так накрылся фриплей. Чего же
    делать?

    [/i
    Я боролся с этой напастью так:

    В логовском файле (та папка, где сейвы к игре) в самом низу прописывается fatal error. В последней строке
    ссылка на файл g_script. И указывается строка с командой, которая вызывает вылет. Заходишь через
    блокнот в этот файл в корневой папке script (сохранив данную версию куда-нибудь) и вырезаешь все
    несколько строк с командой про крэш. Сохранился. Запустил игру с автосейва. Вылет. Опять открываешь
    лог. Там будет ссылка (скорее всего ) на файл xr_logic. Повторяешь аналогичную операцию, как и с предыдущим.
    Запускаешь игру с автосейва. У меня загрузились склады. Я все сделал на них. Потом перешел
    на бар. Сохранился. вышел. Сохранил измененные скриптовые файлы и вернул сохраненные начальные
    версии. Опять загрузился и пошел дальше. Ну а каждый раз заходя на склады менял скриповые файлы.
    Это так по-слесарски. Хотя наверное есть и другие способы бороться с этой ошибкой.

     

    Надоели вылеты из-за указанной выше строки (проблемы с вылетом 1121), а так как уже не раз говорилось,
    что она сделана для диагностики, то я плюнул и отключил эту функцию -пусть что-то там не работает,
    а игра не вылетает -всё равно оно не работает, а грузить игру опять надо.
    В результате всю субботу пробегал в игру, не раз заходил на Припять, вот в воскресенья с обеда и до вечера
    бегаю опять же по Припяти (выполняю задания Болотного Доктора и Сяка) и... ни одного вылета, ни
    одной испорченной записи. Все записи сделанные на Припяти, после Припяти, переходы с Припяти работают.
    Есть только вылеты без лога после непрерывной игры 1-2 часа, но после загрузки с последнего
    сделанного сохранения -ручного или быстрого -неважно, игра спокойно продолжается. Скорее это косячит
    мой NoDVD.

    По-этому рассказываю, что я сделал -пробуйте, может и вам поможет:

    1. находим файл _g.script
    2. делаем его копию, на всякий случай, копируем его с именем _g.script.BAK
    3. открываем его на редактирование и находим строку "function abort(fmt, ...)"
    4. Видим пере собой строки:
    function abort(fmt, ...)
    local reason = (...==nil and fmt) or string.format(fmt, ...)
    --assert("ERROR: " .. reason)
    get_console():execute("load ~~~ " .. reason) get_console():execute("flush")
    string.format("%s")
    end
    5. изменяем их следующим образом:
    function abort(fmt, ...)
    --local reason = (...==nil and fmt) or string.format(fmt, ...)
    --assert("ERROR: " .. reason)
    --get_console():execute("load ~~~ " .. reason)
    --get_console():execute("flush")
    --string.format("%s")
    end
    6. сохраняем и пробуем играть.
    Если кому интересно, нашел решение проблемы с вылетом 1121 на милитари, где парой строчек выше
    стояло

    ! Cannot find saved game ~~~ object 'khutor_zone': section 'sr_idle1': field 'on_npc_in_zone': there is no object
    with story_id '710'

    Вылет происходит, если на милитари уничтожено тело (например, в аномалии) Павлика (предателя свободы).

    Чтоб не вылетало, надо подредактировать файл сохранения (обычно *_autosave.sav) в любом hex-редакторе.

    Ищем там текст 710, затем из всех найденных смотрим тот, рядом с которым стоит sr_idle1 , on_npc_d или
    нечто подобное, и это 710 заменяем на 500.
    Пробуем играть. Если снова вылет, но уже с 709, то делаем то же самое, но уже для 709.
    У меня пошло, вроде без глюков.

    Постоянно без причины растет радиация.

    Если при этом постоянно растет уровень радиации (особенно когда снят костюм) и остаются кровоподтеки
    на стенах, когда стоишь возле них, после смерти ГГ камера периодически подёргивается --то это остаточная
    радиация.

    Проявляется при нахождении в "блокирующих" зонах повышенной радиации (на границах уровней и т.п.) и
    переходе после этого на другой уровень (и, возможно, еще какого-то "удачного" стечения обстоятельств).
    Такое было у меня с АМК 1.3.1.

    По утверждениям знающих людей -баг оригинала. Очень часто проявлялся на "чистой" игре при переходе
    со Свалки на Агропром и со Свалки на Кордон.
    На оф. форуме много по этому поводу написано, большинство предложений -начать игру заново.

    По памяти могу описать где-то почерпнутое решение, которое мне помогло:
    1) извлечь из архивов gamedata.*** файл xr_detector.script (он не использовался в АМК 1.3.1, поэтому в
    папке gamedata с модом его нет) -в данном файле в том числе описаны процедуры сохранения и загрузки
    уровня радиации, полученной при нахождении в этих "блокирующих" зонах;

    2) изменить процедуру загрузки ранее сохраненного уровня радиации так, чтобы этот уровень заражения
    не загружался (закомментить несколько строк);

    3) измененный файл поместить в нужное место папки gamedata;
    4) загрузить сохраненную игру -при этом уровень радиации не загружается, далее всё должно быть нормально.

    При этом уровень обычной радиации нормально сохраняется-загружается. Если теперь сохранить игру и
    вернуть оригинальное содержимое файла xr_detector.script, то остаточной радиации уже не будет. По
    крайней мере, до следующего "удачного" стечения обстоятельств.

    Лечение вылетов с неправильным именем текстуры (пример):

    Can't find texture -игра не может найти текстуру с указанным именем.
    В данном случае у тебя нет текстуры сетки прицела с именем "l-85-amk-t"
    Идешь по пути: ...S.T.A.L.K.E.R\gamedata\textures\wpn
    Ищешь файлик с похожим именем, там обычно последняя буква отличается, и копируешь с в ту же папку с требуемым именем "l-85-amk-t".


    Шпаргалка AMK: Ковыряние

    Определение позиции актора

    Помогите, пожалуйста, с вычислением позиции актёра. Как узнать координаты я знаю (rs_stats 1), а вот как узнать вектор? Заранее большое спасибо.
    Где-то был PositionInformerPro от V.I.R.U.S'а, но не помню,на каком форуме я его видел. Удобная штука.
    На крайняк допиши вот это в ui_main_menu.script в самый конец, по кнопке "титры" теперь будет вместо них выскакивать сообщение с координатами (Автор - не я):

    function main_menu:OnButton_credits_clicked()
    -- Выдадим сообщение о нашем местоположении
    local text
    local vid
    local gvid
    local a = vector() -- Тип переменной
    local text
    
    a = db.actor:position() -- Наше положение в координатах
    vid = db.actor:level_vertex_id()
    gvid = db.actor:game_vertex_id()
    text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
    news_manager.send_tip(db.actor, text, nil, nil, 30000)
    end
    

    Правка свойств ГГ: Чтобы БТР не стрелял в ГГ

    Кому нужно убрать ГГ в качестве цели для техники на блокпосту, открывайте gamedata\config\scripts\esc\, там:
    Для БТРа, в файле esc_blockpost_btr.ltx - строки target=actor заменить на target=nil
    Для вертолёта, в файле esc_blockpost_heli.ltx - строки combat_enemy = actor заменить на combat_enemy = nil - либо удалить

    Правка свойств ГГ: Некоторые переменные на примере actor.ltx

    visual – модель персонажа.
    max_walk_weight -максимальный вес, при достижении которого игрок перестает двигаться.
    pickup_info_radius – радиус от ГГ, в котром над предметами выводятся их названия.
    camera_height_factor – высота ГГ. По умолчанию стоит 0.85, но можно увеличить рост ГГ до


    0.95 например.
    disp_base – разброс. Если уменьшать, то и разлёт уменьшается соответственно.
    wound_incarnation_v -скорость заживления раны.
    cant_sprint_power_begin -порог силы меньше которого актер не может бежать в спринте.
    hit_probability_gd_novice
    hit_probability_gd_stalker
    hit_probability_gd_veteran
    hit_probability_gd_master
    Эти строчки отвечают за вероятность попадания по вам, при разных уровнях сложности. Хотите
    чтобы враги стреляли не очень метко, уменьшайте значения.
    Также в файле присутсвуют комментарии на русском языке, так что разобраться в остальных
    переменных не составит труда.


    Config/System.ltx:

    start_blood_size -размер раны чтоб начала капать кровь.
    stop_blood_size -размер раны чтоб кровь остановилась.
    max_weight – вес, с которым ГГ может бежать.

    вращение камеры при попаданиях -рандомный баг на статике
    вроде правится выставлением cam_inert > 0 в user.tlx


    стартовые рублики ГГ зашиты в allspawn-e. Проще всего в первом квесте Волка
    (gamedata/config/misck/task_manager.ltx строку найдешь сам) прописать нужную тебе сумму в
    вознаграждения


    Открываем ...\S.T.A.L.K.E.R\gamedata\scripts\escape_dialog.script, и ищем такую функцию
    (строку):
    function give_weapon_from_trader(trader, actor)
    dialogs.relocate_item_section(trader, "wpn_pm", "in")
    dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
    dialogs.relocate_item_section(trader, "wpn_knife", "in")
    --dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
    end
    После выделенной строки вставляем такую конструкцию:
    dialogs.relocate_money(trader, здесь указываем необходиму сумму денег, "in")
    dialogs.relocate_item_section(trader, "wpn_spas12", "in")
    Должно получиться примерно так:
    function give_weapon_from_trader(trader, actor)
    dialogs.relocate_item_section(trader, "wpn_pm", "in")
    dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
    dialogs.relocate_item_section(trader, "wpn_knife", "in")
    --dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
    dialogs.relocate_money(trader, 10000, "in")
    dialogs.relocate_item_section(trader, "wpn_spas12", "in")


    end
    В итоге, после взятия у Сидоровича квеста на "Ночную звезду", в самом начале, ГГ будет выдано
    10000 рублей и СПАС-12.

    Правка свойств ГГ: Переносимый вес

    Максимальный переносимый вес прописан в gamedata/config/creatures/actor.ltx строчка max_walk_weight
    Отображение веса в инвентаре (выше этого значения нельзя бегать): gamedata/config/inventory_sect.ltx строчка max_weight.

    Правка свойств ГГ: Отключение дрожания оптики

    gamedata\config\misc\effectors.ltx


    [zoom_inertion_effector]
    camera_move_epsilon = 0.03
    disp_min = 0.0
    speed_min = 0.001
    zoom_aim_disp_k = 0.18
    zoom_aim_speed_k = 0.00
    delta_time = 1350
    заменить на:
    [zoom_inertion_effector]
    camera_move_epsilon = 0.03
    disp_min = 0.00
    speed_min = 0.000
    zoom_aim_disp_k = 0.0
    zoom_aim_speed_k = 0.00
    delta_time = 2000

    Правка свойств ГГ: Стартовый набор ГГ (от Сидоровича)

    \gamedata\scripts\escape_dialog.script надеюсь ты найдёшь где там что кому отдаёт.
    функция transfer_deneg выдаёт после квеста ночная звезда... Когда отдал, ему.
    функция give_weapon_from_trader это когда перед выдачой квеста дает.

    Правка свойств ГГ: Бессмертие

    В папке gamedata\config\creatures есть файл actor.ltx. В нем находишь вот это (xxxxx - это уровень сложности на каком ты играешь, например master)
     

    [actor_immunities_gd_xxxxx]
    burn_immunity                 = 1.0;коэффициенты иммунитета
    strike_immunity             = 1.0
    shock_immunity                 = 1.0
    wound_immunity                = 1.0
    radiation_immunity             = 1.0
    telepatic_immunity             = 1.0
    chemical_burn_immunity         = 1.0
    explosion_immunity             = 1.0
    fire_wound_immunity          = 1.0

    и меняешь цифры на 0 - ГГ будет бессмертным. Можно не все менять, тогда можно сделать, например, что ГГ будет пуленепробиваемым, но будет дохнуть в аномалиях и т. п.

    Правка свойств ГГ: Голод

    В actor.ltx поменял:
    satiety_v = 0.000005 на 0.000025
    теперь есть нужно почаще, раз в 4-6 часов, соответственно батоны не лишний вес в рюкзаке,


    порой и за кусок хлеба дратся прийдется :)
    satiety_health_v = 0.0001 на 0.00001

    Правка свойств ГГ: Советы хардкорщика

    В actor.ltx поменял
    satiety_v = 0.000005 на 0.000025
    теперь есть нужно почаще, раз в 4-6 часов, соответственно батоны не лишний вес в рюкзаке, порой и за кусок хлеба дратся прийдется :)

    satiety_health_v = 0.0001 на 0.00001
    Ну от чего так быстро восстанавливается здоровье? Теперь "кровь камня" будет приносить побольше пользы, а здоровье само по себе будет восстанавливатся довольно медленно.

    bleeding_v = 0.0005 на 0.0025
    wound_incarnation_v = 0.003 на 0.001
    min_wound_size = 0.0256 на 0.005

    Теперь без бинтов - никуды!

    Правка свойств ГГ: Зависимость ТТХ оружия от ранга
    Урон (ttx) у оружия в той схеме при разных уровнях сложности разительно отличаеться а по
    идее должен быть одинаков.
    Можно например оставить в конфигах верхний потолок ttx чтоб в дальнейшем избежать неприятностей типа (двух обойм на человека).
    При зависимости ttx настроек и ранга игрока создаеться совершенно иная концепция "сложности" которая может быть очень полезна для геймплея. В общем правка баланса в игре одна из самых сложных тем на сегодняшний момент.
    В моем видение все таки интереснее ограничить сложность в игре в файле m.stalker а в частности на меткости врагов.
    Вот мой вариант секции в файле астоr.ltx
    hit_probability_gd_novice = 0.20
    hit_probability_gd_stalker = 0.40
    hit_probability_gd_veteran = 0.60
    hit_probability_gd_master = 0.80
    При новичке шанс попадания около 20% что являеться довольно оптимальным вариантом для первого прохождения игры.

    Далее сложность по рангам начинает расти в арифметической прогрессии и достигает 80% на
    мастере.
    При мастере я намеренно не делаю упор на хардкор 1.0 т.к такая меткость абсолютно не соответствует действительности при том что уже при этих характеристиках ГГ уже начинает ощущать всю "прелесть" данного ранга.

    Правка свойств ГГ: Объем рюкзака

    Если у тебя АМК+два патча открываешь тот же amk_utils.script, в начале находишь вот это:


    RestrictionStock = 1
    и меняешь на это:
    RestrictionStock = nil

    1. Взять файл restriction_stock.script из первого патча для АМК и заменить им существующий.


    2. В файле amk_utils.script заменить
    это:
    --Callback на взятия предмета в инвентарь гг из ящика
    function actor_item_from_box(box, item)
    end

    --Callback на взятие предмета в инвентарь гг
    function actor_item_take(obj)
    if obj ~= nil and RestrictionStock ~= nil then
    restriction_stock.restriction_of_stock(obj,0)
    end
    end

    --Callback на потерю предмета из инвенаря гг
    function actor_item_drop(obj)
    if obj ~= nil and RestrictionStock ~= nil then
    restriction_stock.restriction_of_stock(obj,1)
    end
    end

    на это:

    --Callback на взятия предмета в инвентарь гг из ящика
    function actor_item_from_box(box, item)
    if item ~= nil then
    restriction_stock.restriction_of_stock(item)
    end
    end

    --Callback на взятие предмета в инвентарь гг
    function actor_item_take(obj)
    if obj ~= nil then
    restriction_stock.restriction_of_stock(obj)
    end
    end

    --Callback на потерю предмета из инвенаря гг
    function actor_item_drop(obj)

    end
    З.Ы. Только новые вещи не забудь в restriction_stock.script по аналогии с существующими добавить,
    иначе ограничения на них не будут распространяться.

    На данный момент мы имеем такие варианты:


    4 объема оружия
    2 объема брони
    Плюс объем аптечек

    1. Добавляешь через запятую ещё одну вложенную таблицу, например:


    _weapons_C6 = {"оружие_раз","оружие_два","оружие_три"}
    2. Добавляешь ещё одно условие в парсинге ниже:
    elseif kk == "_weapons_C6" and count>2 then
    amk.send_tip("Не многовато ли стволов, рембо?",nil,nil,5)
    amk.drop_item(actor,_obj)
    status = 1
    break
    здесь count>2 определяет, больше какого числа предметов будет срабатывать ограничение
    для этой группы.
    Вот, собственно, и всё. По аналогии сделай и для остальных групп предметов.

    1. Добавляешь через запятую вложенные таблицы по числу новых групп, например:


    _outfits_1 = {"костюм_раз"},
    _outfits_2 = {"костюм_два"},
    _outfits_3 = {"костюм_три"}
    2. Добавляешь столько же условий в парсинге ниже:
    elseif kk == "_outfits_1" and count>2 then
    amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
    amk.drop_item(actor,_obj)
    status = 1
    break
    elseif kk == "_outfits_2" and count>2 then
    amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
    amk.drop_item(actor,_obj)
    status = 1
    break
    elseif kk == "_outfits_3" and count>2 then
    amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
    amk.drop_item(actor,_obj)
    status = 1
    break

    Правка свойств ГГ: Промежуток времени между сном

    в amk_mod.script в разделе SLEEP_AMK
    
    function test_for_need_sleep_matras(oid)
    if alife():object(oid)==nil then
    local enemy=false
    for a=0,65534 do
    local obj=level.object_by_id(a)
    if obj then
    if (( IsStalker(obj) and amk.get_npc_relation(obj,db.actor)=="enemy" ) or
    IsMonster(obj)) and obj:position():distance_to(db.actor:position())<40
    and obj:see(db.actor) then
    enemy=true
    break
    end
    end
    end
    if enemy==true then
    amk.send_tip(game.translate_string("not_need_sleep_enemy"),nil,nil,5)
    else
    if amk.load_variable("blowout",-1)>-1 and amk.load_variable("blowout",-1)<5 then
    amk.send_tip(game.translate_string("blowout_not_sleep"),nil,nil,5)
    else
    if amk.load_variable("block_sleep_menu",0)==0 then
    -- if amk.load_variable("gg_need_sleep",0)>10 then
    local spwn=ui_cheat.cheat(get_hud())
    level.start_stop_menu(spwn,true)
    -- else
    -- amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5)
    -- end
    else
    amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5)
    end
    end
    end
    amk.spawn_item_in_inv("matras")
    end
    end
    

    Правка свойств ГГ: Привязка еды к сну

    В AMK_MOD найди такую строчку:

    --'elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then
    --' stype="med"
    а под ней допиши:
    elseif (section=="conserva" or section=="kolbasa" or section=="bread") then
    stype="food"
    

    теперь сьешь 4 консервы или 4 хлеба(можно например 2 хлеба и 2 колбасы) можно будет поспать(как раньше с аптечками).

    Правка свойств ГГ: Высота прыжка

    В файле actor.ltx в папке gamedata\config\creatures, найди параметр
    jump_speed
    и задай ему нужную тебе величину, чем больше тем выше ГГ будет прыгать.

    Правка свойств ГГ: Очистка слота бинокля

    В файл bind_stalker.script вместо 
    
    function actor_binder:update(delta)
    
    вставляешь:
    
    local my_first = true
    function actor_binder:update(delta)
        if my_first then
            dbglog("check bino start")
            local slot4 = db.actor:item_in_slot(4)
            if slot4 then
                dbglog("actor has %s in slot4", slot4:name())
                if slot4:section() ~= "wpn_binoc" then
                    alife():release(alife():object(slot4:id()), true)
                    amk.spawn_item_in_inv("wpn_binoc", db.actor)        
                end
            end
            my_first = false
        end
    
    
    Наличие бинокля в инвентаре обязательно.

    Правка свойств ГГ: Разное

    [spoiler='Как восстановить отметки врагов и пр. в бинокле?']gamedata\config\weapons\w_binoc.ltx, находим строку vision_present = false, меняем на vision_present = true. Все[/spoiler][spoiler='Как включить функцию "лечение едой":']В папке gamedata/config/misc находиш файл items.ltx в нем находиш секции [bread], [kolbasa], [conserva] и для каждой из них там есть параметр eat_health который нужно увеличить до нужных дебе значений. По дефолту для bread, eat_health = 0.05, для kolbasa 0.1 и для conserva 0.15[/spoiler][spoiler='Как убрать фонарик? ']Что-бы убрать фонарик, открываем файл gamedata\config\misc\items.ltx
    Находим секцию [device_torch]:identity_immunities

    Меняем строчку
    slot = 9
    на
    slot = 1

    Тепер фонарик располагается в слоте пистолета, убираем его в рюкзак и все.

     

    health_restore_speed - прирост к скорости восстановления здоровья
    radiation_restore_speed - прирост скорость вывода радиации
    satiety_restore_speed - прирост к голоду
    power_restore_speed - прирост к выносливости
    bleeding_restore_speed - прирост к скорости остановки кровотечений[/spoiler][spoiler='Как увеличить радиус загрузки локации?']stalker\gamedata\config\alife.ltx
    switch_distance = 650;
    Можно и больше поставить...[/spoiler][spoiler='Правка кол-ва денег в лут-монеу']По поводу денег, кому не нравится меняем gamedata\scripts\lootmoney.script строки типа if npc_rank == "novice" and deadmoney >=70 then deadmoney=math.random(25,70) для всех рангов на if npc_rank == "novice" and deadmoney >=0 then deadmoney=math.random(0,money) - получаем рандом от 0 до полной суммы, if npc_rank == "novice" and deadmoney >=0 then deadmoney=money - получаем полную сумму, ну эт уже явный чит ))[/spoiler]

    Тайники и награды: Награда за квест

    Правильно ли я понимаю, что награда за квесты прописана в
    E:\gamedata\config\misc\task_manager.ltx?
    Если да, то где посмотреть награду за квесты Скряги, Макса и Кэпа? В указаннном файле я этих данных не нашёл...


    В файле task_manager.ltx прописаны награды за однотипные квесты в ветке диалогов с квестовыми
    персонажами и торговцами: "Мне нужна работа, есть что на примете?" Это такие
    квесты как: принести предмет, найти артефакт, зачистить территорию от монстров, убить
    сталкера, защитить лагерь (например, в ангаре на Свалке).

    Награды за квесты Скряги, Макса и Кэпа пожно посмотреть, и соответственно, поправить в
    файле dialogs_military.script.
    Так, например, строка с наградой Макса выглядит так:
    function send_desert_eagle (actor, npc)
    dialogs.relocate_item_section(npc, "wpn_desert_eagle", "in")
    end

    Тайники и награды: Редактирование содержимого

    treasure_manager.ltx в «миске» и во 4 строчке прописываешь, что ты хочешь, получится
    должно получится примерно так :
    [esc_secret_bridge_vagon]
    target = 5000
    name = esc_secret_0000_name

    description = esc_secret_0000_descr
    items = ammo_5.45x39_ap,190,medkit_army,6,
    wpn_addon_scope,wpn_ak74u_m1,stalker_m1,outfit_specnaz_m1,
    wpn_groza_m1,wpn_spas12_m1,wpn_lr300_m1,wpn_svd_m1,wpn_sig_m1,wpn_colt_m1,wpn_val
    _m1,wpn_rg6_m1,outf it_dolg_m1

    Тайники и награды: Наполнение редких тайников

    Подскажите, какие файлы отвечают за наполнение редких тайников в АМК?

     


    gamedata\scripts\treasure_manager.script

    массив rare_list

    Вероятность выпадения тайников -в treasure_manager.script
    rarets = 90 (чем меньше значение, тем чаще вападают тайники)

     

    Тайники и награды: Частота выпадения тайников

    Частота выпадения:
    treasure_manager.script -редактируешь его получаешь частоту выпадание тайников -65 меняй
    на что-нить допустим на 10...

    Если подразумевается вероятность выпадения тайников, то в treasure_manager.script
    rarets = 90 (чем меньше значение, тем чаще вападают тайники)


    Шпаргалка AMK: Оптимизация

    Способы управления игрой через ярлык

    Способы управления игрой через ярлык:
    Открываем свойства ярлыка и в строке "объект" через "пробел" добавляем:
    "-nointro" - отключает все вступительные ролики при запуске игры - т.е. после запуска сразу попадаем в меню.
    "-r4xx" - отключает динамику (?)
    "-noshadows" - отключает тени в игре
    "-noprefetch" - принудительно заставляет игру очищать ОЗУ.
    Пример:
    "G:\Games\S.T.A.L.K.E.R\bin\XR_3DA.exe -noprefetch -nointro"

    9 советов

    1.Максимально увеличить файл подкачки оперативной памяти (панель
    управления\система\дополнительно\быстродействие\дополнительно).
    2.Занизить качество видео в настройках игры.
    3. Каждый час-два перезапускать игру (очищается файл подкачки).
    4.Отключать все посторонние запущенные процессы\программы перед началом игры.
    5.Периодически чистить реестр и дефрагментировать жесткий(кие) диск(и).
    6.Оптимизация файла user.ltx весьма помогает.
    7.Отключение дождя очень помогает.
    /config/weathers
    В каждом файле этой папки, название которого начинается с “weather” изменить значение параметра “rain_density” на 0.0.
    8.Вопрос: Как мне посмотреть FPS в игре?
    Ответ: Через консоль,командой rs_stats on (верхняя строка).
    9.Что-бы Windows был устойчив, рекомендуется чекиндиск делать.
    Мой компьютер => локальный диск С: => свойства => сервис => выполнить проверку =>
    (флажки "Автоматически исправлять системные ошибки" и "Проверять и восстанавливать повреждённые
    сектора".) => запуск.
    Процедура именно для С: требует перезагрузки и часовой работы.
    Препятствует перезагрузке и вылету в "мёртвый экран".

    Описание user.ltx

    Дайте плиз файл user.ltx с дефолтовыми настройками графики (всмысле без ковыряние
    в этом разделе файла) или подскажите какие параметры меняются вообще для
    улучшения визуальной составляющей.

    Это самое подробное описание которое я пока видел:
    bind [action, key] -Назначение клавиш управления. ( В игре -через настройки управления ).

    Чтобы увидеть полный список, необходимо выполнить команду bind_list. Назначая клавиши,
    нужно иметь ввиду, что любая назначаемая клавиша должна иметь префикс k.
    cam_inert [0.0 -1.0] -Управление инерцией камеры. Проще говоря, насколько камера при движении будет раскачиваться. Для нормальной игры необходимо ставить 0.0, иначе будете
    чувствовать дискомфорт.
    g_always_run [on,off] -Включение/Выключение опции "Бег" по умолчанию.
    Параметры настройки с r1_ или r2_ приставками воспринимаются движком игры при определённых
    настройках игры.
    Начинающиеся с r1_ работают только при 'Статическом Освещении' (DX8 ).
    Начинающиеся с r2_ работают только при 'Динамическом Освещении Объектов'или' Полном
    Динамическом Освещении' (DX9).
    r1_dlights [on,off] -Включение/Выключение поддержки динамического освещения в режиме
    'Статическое Освещение' (DX8 ). Так как в этом режиме единственный источник динамического
    освещения -ваш фонарик, то отключение этой функции его отключит. Соответственно и наоборот.
    r1_dlights_clip [10.000 -150.000] -Проще говоря, это выбор дальности свечения фонарика.
    r1_glows_per_frame [2 -32] -Количество источников света для эффекта отражения от поверхностей. Визуальное изменение качества невелико.
    r1_lmodel_lerp [0.000 -0.333] -Управление линейной интерполяцией модели освещения.
    Увеличение немного украшает текстуры, например, вид оружия.
    r1_ssa_lod_a [16.000 -96.000] -Управляет общим уровнем детализации (LOD) для мира игры.
    Чем выше значение, тем больше видимость деталей объектов на расстоянии, но за счёт
    снижения FPS.
    r1_ssa_lod_b [16.000 -64.000] -То же, что и предыдущий параметр, но для определённых типов
    объектов.
    r1_tf_mipbias [-3.000 -3.000] -Управляет чёткостью удалённых текстур. При уменьшении параметра
    -выше чёткость и ниже производительность. При увеличении -выше размытость
    текстур и выше производительность. Учитывая, что ползунок АФ в настройках игры атрофирован,
    получается, это главный способ управления фильтрацией текстур, и, следовательно,
    чёткостью и ясностью удалённых текстур.
    r2_gi [on,off] -Включение/Выключение режима Глобальное Освещение. Это режим более реалистичного
    освещения, где отражение от поверхностей объектов освещает другие объекты.
    Включение -сильно просаживает FPS, но для сильных машин это небольшая проблема.
    r2_gi_clip [0.000,0.100] -Расстояние эффекта Глобального Освещения.
    r2_gi_depth [1,5] -Управляет глубиной тени Глобального Освещения.
    r2_gi_photons [8 256] -Количество источников света Глобального Освещения.
    r2_gi_refl [0.001,0.990] -Рефлекция Глобального Освещения.
    r2_gloss_factor [0.000,10.000] -определяет "глянцевитость" поверхностей (пример: при увеличении до 10 -ярко выраженный эффект "мокрого асфальта" под ногами ).
    r2_aa [on,off] -Единственная форма AA, возможная для игры. Это не то же самое, что ползунок
    Сглаживания в игре, и не реальная форма Сглаживания. Это не уменьшает фактическую
    зубчатость контуров; это маскирует их, замыливая экран за счет некоторого FPS -вы можете
    получить почти такой же эффект (без снижения FPS), управляя монитором ЖИДКОКРИСТАЛЛИЧЕСКОГО
    МОНИТОРА в неродном разрешении, например.
    r2_aa_kernel [0.300 -0.700] -Качество сглаживания. (Выше значение -качественнее сглаживание).
    Хотя, значение 0.300 -наиболее разумное сочетание эффекта АА с ненапрягающим
    блуром.
    r2_aa_break [0.000000 -1.000000,0.000000 -1.000000,0.000000 -1.000000] -Расстояние, на
    котором работает эффект АА. Чем больше -тем дальше. Но, так как изменения на векторной
    основе, то установка их всех на иаксимум -не обязательно гарантирует лучший результат.
    (Например r2_aa_break 0.000000,1.000000,0.000000 дает острые близкие образы и стертые образы на расстоянии).
    r2_aa_weight [0.000000 -1.000000,0.000000 -1.000000,0.000000 -1.000000] -Обеспечивает
    более точный контроль над силой эффекта размывания изображения. Чем выше значение,
    тем большее размывание изображения будет осуществлено, но, опять же, изменения -на
    основе вектора.
    r2_allow_r1_lights [on,off] -Включение/Выключение дублирующих динамических источников
    света, т.е. увеличивает существующее освещение с освещением DX8. (Включение приводит
    к значительному понижению fps вблизи костров, фонарей, но значительно увеличивает bloom
    эфеект и освещенность в целом).
    r2_ls_bloom_fast [on,off] -Включение/Выключение эффекта легкой размытости и дополнительного
    отраженного свечения объектов (bloom).
    r2_ls_bloom_kernel_b [0.010 -1.000] -Качество эффекта bloom. Чем выше, тем больше.
    r2_ls_bloom_kernel_g [1.000 -7.000]
    r2_ls_bloom_kernel_scale [0.500 -2.000]
    r2_ls_bloom_speed [0.000 -100.000]
    Три вышеуказанные настройки относятся к качеству эффекта bloom. Но визуально -никак.
    Может быть, на топовом видео что-нибудь и будет видно.
    r2_ls_bloom_threshold [0.000 -1.000] -Управляет уровнем эффекта освещения при включен
    ном bloom. Чем выше значение, тем меньше яркость эффекта. И наоборот.
    r2_mblur [0.000 -1.000] -Эффект смазанности при быстром движении. Чем выше значение,
    тем больше размытость изображения, например, при повороте.
    r2_parallax_h [0.000 -0.500] -Является настройкой parallax mapping, отвечающего за псевдорельефность
    некоторых поверхностей в игре (таких, как каменистая земля, кирпичная стена
    и т.п.). Чем выше, тем эффект глубины рельефа больше.
    r2_slight_fade [0.020 -2.000] -корректировка освещенности от динамических источников света (увеличение повышает освещенность).
    r2_ssa_lod_a [16.000 -96.000] -Управляет общим уровнем детализации (LOD) для мира игры,
    чем выше значение, тем больше видимость деталей объектов на расстоянии, но за счёт
    снижения FPS.
    r2_ssa_lod_b [32.000 -64.000] -То же, что и предыдущий параметр, но для определённых типов
    объектов.
    r2_sun [on,off] -Включение/Выключение солнца как источника света.
    r2_sun_details [on/off] -Включение/Выключение теней от травы (как, возможно, и от др. мелких
    объектов).
    r2_sun_lumscale [-1.000 -3.000] -Коэффициент освещенности от солнечного света. (Яркость света солнца).
    r2_sun_lumscale_amb [0.000 -3.000] -Коэффициент солнечной ambient-освещенности (фоновой
    освещенности). Увеличение улучшает качество картинки, не увеличивая прямой свет от
    солнца.
    r2_sun_depth_far_bias [-0.500 -0.500]
    r2_sun_depth_far_scale [0.500 -1.500]
    r2_sun_depth_near_bias [-0.500 -0.500]
    r2_sun_depth_near_scale [0.500 -1.500]
    Эти параметры настройки, по существу, управляют уровнем деталей теней, брошенных от солнца, и границами световых и теневых областей.
    r2_tf_mipbias [-3.000 -3.000] -Управляет чёткостью удалённых текстур. При уменьшении параметра
    -выше чёткость и ниже производительность. При увеличении -выше размытость
    текстур и выше производительность. Учитывая, что ползунок АФ в настройках игры атрофирован,
    получается, что это главный способ управления фильтрацией текстур, и, следовательно,
    чёткостью и ясностью удалённых текстур.
    r2_tonemap [on,off] -Включение/Выключение Tone Mapping. Это поможет улучшать HDR, используемого
    в игре, уменьшая контрасты и выдвигая на первый план детали по мере необходимости,
    чтобы держать изображение более реалистичным.
    r2_tonemap_lowlum [0.000 -1.000] -Управляет эффектом Tone Mapping на более темных областях. Чем выше это значение, тем темнее эффект HDR.
    r2_tonemap_middlegray [0.000 -2.000] -Имеет самое значимое воздействие на эффект HDR.
    Например, при значении 1.200 -HDR в СТАЛКЕРЕ больше походит на HDR Обливиона.
    r2_sun_near_border "1" можно "0.9" -Убирает теневые артефакты (треугольники по краям
    экрана)
    r2_sun_focus "on" или "1" -тени будут нормально отображаться в дали.
    rs_stats [on,off] -Включение/Выключение диапазона статистики игры, включая FPS.
    snd_cache_size [4 -32] -Управление размером звукового кэша. Лучше выставить максимум поможет избежать возможных "заиканий".
    vid_mode [WxH] -Управляет разрешением монитора.

    user.ltx под слабые машины

    Оптимизация сталкера под слабые машины.

    Сначала найдите у себя файл user.ltx, расположенный по адресу C:\Documents and Settings\
    All Users\Документы\STALKER-SHOC\user.ltx и замените все содержимое в нем на нижеследующее:

    _preset Default
    ai_use_torch_dynamic_lights on
    unbindall
    bind left kLEFT
    bind right kRIGHT
    bind up kUP
    bind down kDOWN
    bind jump kSPACE
    bind crouch kLCONTROL
    bind crouch_toggle kSLASH
    bind accel kLSHIFT
    bind sprint_toggle kX
    bind forward kW
    bind back kS
    bind lstrafe kD
    bind rstrafe kA
    bind llookout kQ
    bind rlookout kE
    bind cam_zoom_in kADD
    bind cam_zoom_out kSUBTRACT
    bind torch kL
    bind night_vision kN
    bind wpn_1 k1
    bind wpn_2 k2
    bind wpn_3 k3
    bind wpn_4 k4
    bind wpn_5 k5
    bind wpn_6 k6
    bind artefact k7
    bind wpn_next kY
    bind wpn_fire mouse1
    bind wpn_zoom mouse2
    bind wpn_reload kR
    bind wpn_func kV
    bind wpn_firemode_prev k9
    bind wpn_firemode_next k0
    bind pause kPAUSE
    bind drop kG
    bind use kF
    bind scores kTAB
    bind chat kCOMMA
    bind chat_team kPERIOD
    bind screenshot kF12
    bind quit kESCAPE
    bind console kGRAVE
    bind inventory kI
    bind buy_menu kB
    bind skin_menu kO
    bind team_menu kU
    bind active_jobs kP
    bind map kM
    bind contacts kH
    bind vote_begin kF5
    bind vote kF6
    bind vote_yes kF7
    bind vote_no kF8
    bind speech_menu_0 kC
    bind speech_menu_1 kZ
    bind use_bandage kRBRACKET
    bind use_medkit kLBRACKET
    cam_inert 0.
    cam_slide_inert 0.25
    cl_cod_pickup_mode 1
    cl_dynamiccrosshair on
    g_always_run on
    g_autopickup on
    g_backrun on
    g_corpsenum 10
    g_eventdelay 0
    g_game_difficulty gd_stalker
    hud_crosshair on
    hud_crosshair_dist off
    mm_mm_net_srv_dedicated off
    mm_net_con_publicserver off
    mm_net_con_spectator 20
    mm_net_con_spectator_on off
    mm_net_srv_gamemode st_deathmatch
    mm_net_srv_maxplayers 32
    mm_net_srv_name BLACKBOX
    mm_net_srv_reinforcement_type 1
    mm_net_weather_rateofchange 1.
    mouse_invert off
    mouse_sens 0.32
    net_cl_icurvesize 0
    net_cl_icurvetype 0
    net_cl_interpolation 0.
    net_cl_log_data off
    net_cl_pending_lim 3
    net_cl_update_rate 30
    net_dedicated_sleep 5
    net_sv_log_data off
    net_sv_pending_lim 3
    net_sv_update_rate 30
    ph_frequency 75.00000
    ph_iterations 24
    r1_dlights on
    r1_dlights_clip 10.
    r1_glows_per_frame 16
    r1_lmodel_lerp 0.1
    r1_pps_u -1.
    r1_pps_v 0.
    r1_ssa_lod_a 64.
    r1_ssa_lod_b 48.
    r1_tf_mipbias 0.
    r2_aa off
    r2_aa_break 0.800000,0.500000,0.000000
    r2_aa_kernel 0.5
    r2_aa_weight 0.250000,0.250000,0.000000
    r2_allow_r1_lights off
    r2_gi off
    r2_gi_clip 0.001
    r2_gi_depth 1
    r2_gi_photons 16
    r2_gi_refl 0.9
    r2_gloss_factor 1.4
    r2_ls_bloom_fast off
    r2_ls_bloom_kernel_b 0.7
    r2_ls_bloom_kernel_g 3.
    r2_ls_bloom_kernel_scale 0.7
    r2_ls_bloom_speed 100.
    r2_ls_bloom_threshold 0.001
    r2_ls_depth_bias -0.0003
    r2_ls_depth_scale 1.00001
    r2_ls_dsm_kernel 0.7
    r2_ls_psm_kernel 0.7
    r2_ls_squality 0.5
    r2_ls_ssm_kernel 0.7
    r2_mblur 0.
    r2_parallax_h 0.04
    r2_slight_fade 0.05
    r2_ssa_lod_a 96.
    r2_ssa_lod_b 64.
    r2_sun on
    r2_sun_depth_far_bias -0.00001
    r2_sun_depth_far_scale 1.
    r2_sun_depth_near_bias 0.00001
    r2_sun_depth_near_scale 1.
    r2_sun_details off
    r2_sun_focus on
    r2_sun_lumscale 1.
    r2_sun_lumscale_amb 0.5
    r2_sun_lumscale_hemi 1.
    r2_sun_near 12.
    r2_sun_near_border 0.75
    r2_sun_tsm on
    r2_sun_tsm_bias -0.01
    r2_sun_tsm_proj 0.3
    r2_tf_mipbias -3.
    r2_tonemap on
    r2_tonemap_adaptation 1.
    r2_tonemap_amount 0.7
    r2_tonemap_lowlum 0.0001
    r2_tonemap_middlegray 0.6
    r2_wait_sleep 0
    r2_zfill off
    r2_zfill_depth 0.5
    r2em 2.
    r__detail_density 0.44
    r__geometry_lod 1.2
    r__supersample 4
    r__tf_aniso 12
    renderer renderer_r2
    rs_c_brightness 1.
    rs_c_contrast 1.
    rs_c_gamma 1.2
    rs_fullscreen on
    rs_refresh_60hz off
    rs_stats off
    rs_v_sync off
    rs_vis_distance 1.
    snd_acceleration on
    snd_cache_size 32
    snd_efx on
    snd_targets 24
    snd_volume_eff 0.8
    snd_volume_music 1.
    sv_anomalies_enabled 1
    sv_anomalies_length 3
    sv_artefact_respawn_delta 30
    sv_artefact_stay_time 3
    sv_artefacts_count 10
    sv_auto_team_balance 0
    sv_auto_team_swap 1
    sv_bearercantsprint 1
    sv_client_reconnect_time 60
    sv_console_update_rate 1
    sv_dedicated_server_update_rate 100
    sv_dmgblockindicator 1
    sv_dmgblocktime 0
    sv_forcerespawn 0
    sv_fraglimit 10
    sv_friendly_indicators 0
    sv_friendly_names 0
    sv_friendlyfire 1.
    sv_hail_to_winner_time 7000
    sv_pda_hunt 1
    sv_pending_wait_time 10000
    sv_reinforcement_time 0
    sv_remove_corpse 1
    sv_remove_weapon 1
    sv_returnplayers 1
    sv_rpoint_freeze_time 0
    sv_shieldedbases 1
    sv_spectr_firsteye 1
    sv_spectr_freefly 0
    sv_spectr_freelook 1
    sv_spectr_lookat 1
    sv_spectr_teamcamera 1
    sv_statistic_collect 1
    sv_statistic_save_auto 0
    sv_timelimit 0
    sv_vote_enabled 1
    sv_vote_participants 0
    sv_vote_quota 0.51
    sv_vote_time 1.
    sv_warm_up 0
    texture_lod 2
    vid_mode 1280x1024 

    Эта оптимизации позволит даже на низких и минимальных настройках улучшить графику.
    Она идеально подходит для слабых, на "сталкеровский" взгляд, машин с расширением
    монитора 1280x1024.

    user.ltx от @steelrat

    Шаманство с видеокартой от СтальКрыса:

    Берем правленый user.ltx (его смотрим ниже), копируем его вместо своего.

    Запускаем игру. Заходим в консоль (нажать '~') и набираем:
    renderer renderer_r1 ENTER
    vid_restart ENTER
    quit ENTER

    Опять запустить игру и теперь в консоли сделать:
    renderer renderer_r2 ENTER
    vid_restart ENTER
    quit ENTER

    Запускаем игру и больше не лезем в настройки графики. Играем. Можно только клавиши поменять,
    а то у меня немного по другому назначены.

    правленый user.ltx

    _preset Default
    ai_use_torch_dynamic_lights on
    cam_inert 0.
    cam_slide_inert 0.25
    cl_cod_pickup_mode 1
    cl_dynamiccrosshair on
    g_always_run on
    g_autopickup on
    g_backrun on
    g_corpsenum 10
    g_eventdelay 0
    g_game_difficulty gd_veteran
    hud_crosshair on
    hud_crosshair_dist off
    hud_info on
    hud_weapon on
    load_last_save bar
    mm_mm_net_srv_dedicated off
    mm_net_con_publicserver off
    mm_net_con_spectator 20
    mm_net_con_spectator_on off
    mm_net_filter_empty on
    mm_net_filter_full on
    mm_net_filter_listen on
    mm_net_filter_pass on
    mm_net_filter_wo_ff on
    mm_net_filter_wo_pass on
    mm_net_srv_gamemode st_deathmatch
    mm_net_srv_maxplayers 32
    mm_net_srv_name BLACKBOX
    mm_net_srv_reinforcement_type 1
    mm_net_weather_rateofchange 1.
    mouse_invert off
    mouse_sens 0.32
    net_cl_icurvesize 0
    net_cl_icurvetype 0
    net_cl_interpolation 0.
    net_cl_log_data off
    net_dbg_dump_export_obj 0
    net_dbg_dump_import_obj 0
    net_dbg_dump_update_read 0
    net_dbg_dump_update_write 0
    net_dedicated_sleep 5
    net_sv_gpmode 0
    net_sv_log_data off
    net_sv_pending_lim 3
    net_sv_update_rate 30
    ph_frequency 75.00000
    ph_iterations 24
    r1_dlights on
    r1_dlights_clip 10.
    r1_glows_per_frame 16
    r1_lmodel_lerp 0.1
    r1_pps_u -1.
    r1_pps_v 0.
    r1_ssa_lod_a 64.
    r1_ssa_lod_b 48.
    r1_tf_mipbias 0.
    r2_aa off
    r2_aa_break 0.800000,0.500000,0.000000
    r2_aa_kernel 0.5
    r2_aa_weight 0.250000,0.250000,0.000000
    r2_allow_r1_lights off
    r2_gi off
    r2_gi_clip 0.001
    r2_gi_depth 1
    r2_gi_photons 16
    r2_gi_refl 0.9
    r2_gloss_factor 1.4
    r2_ls_bloom_fast off
    r2_ls_bloom_kernel_b 0.7
    r2_ls_bloom_kernel_g 3.
    r2_ls_bloom_kernel_scale 0.7
    r2_ls_bloom_speed 100.
    r2_ls_bloom_threshold 0.001
    r2_ls_depth_bias -0.0003
    r2_ls_depth_scale 1.00001
    r2_ls_dsm_kernel 0.7
    r2_ls_psm_kernel 0.7
    r2_ls_squality 0.5
    r2_ls_ssm_kernel 0.7
    r2_mblur 0.
    r2_parallax_h 0.04
    r2_slight_fade 0.05
    r2_ssa_lod_a 96.
    r2_ssa_lod_b 64.
    r2_sun on
    r2_sun_depth_far_bias -0.00001
    r2_sun_depth_far_scale 1.
    r2_sun_depth_near_bias 0.00001
    r2_sun_depth_near_scale 1.
    r2_sun_details off
    r2_sun_focus on
    r2_sun_lumscale 1.
    r2_sun_lumscale_amb 0.5
    r2_sun_lumscale_hemi 1.
    r2_sun_near 12.
    r2_sun_near_border 1.
    r2_sun_tsm on
    r2_sun_tsm_bias -0.01
    r2_sun_tsm_proj 0.3
    r2_tf_mipbias 0.
    r2_tonemap on
    r2_tonemap_adaptation 1.
    r2_tonemap_amount 0.7
    r2_tonemap_lowlum 0.0001
    r2_tonemap_middlegray 0.6
    r2_wait_sleep 0
    r2_zfill off
    r2_zfill_depth 0.5
    r2em 2.
    r__detail_density 0.44
    r__geometry_lod 1.2
    r__supersample 4
    r__tf_aniso 12
    renderer renderer_r2
    rs_c_brightness 1.
    rs_c_contrast 1.
    rs_c_gamma 1.
    rs_fullscreen on
    rs_refresh_60hz off
    rs_stats off
    rs_v_sync off
    rs_vis_distance 1.
    snd_acceleration on
    snd_cache_size 32
    snd_efx off
    snd_targets 24
    snd_volume_eff 1.
    snd_volume_music 0.8
    sv_anomalies_enabled 1
    sv_anomalies_length 3
    sv_artefact_respawn_delta 30
    sv_artefact_spawn_force 0
    sv_artefact_stay_time 3
    sv_artefacts_count 10
    sv_auto_team_balance 0
    sv_auto_team_swap 1
    sv_bearercantsprint 1
    sv_client_reconnect_time 60
    sv_console_update_rate 1
    sv_dedicated_server_update_rate 100
    sv_dmgblockindicator 1
    sv_dmgblocktime 0
    sv_forcerespawn 0
    sv_fraglimit 10
    sv_friendly_indicators 0
    sv_friendly_names 0
    sv_friendlyfire 1.
    sv_hail_to_winner_time 7
    sv_max_ping_limit 2000
    sv_pda_hunt 1
    sv_reinforcement_time 20
    sv_remove_corpse 1
    sv_remove_weapon 1
    sv_returnplayers 1
    sv_rpoint_freeze_time 0
    sv_shieldedbases 1
    sv_spectr_firsteye 1
    sv_spectr_freefly 0
    sv_spectr_freelook 1
    sv_spectr_lookat 1
    sv_spectr_teamcamera 1
    sv_statistic_collect 1
    sv_statistic_save_auto 0
    sv_teamkill_limit 3
    sv_teamkill_punish 1
    sv_timelimit 0
    sv_vote_enabled 255
    sv_vote_participants 0
    sv_vote_quota 0.51
    sv_vote_time 1.
    sv_warm_up 0
    texture_lod 2
    vid_mode 1024x768

    Шпаргалка AMK: Работа с консолью

    Графика

    Команда Параметры Описание
    r1_dlights on,off Включить\выключить динамические источники света, влияет только на
    фонарики.
    r1_dlights_clip 10.000,150.000 Устанавливает радиус отображения(дальность видимости)
    динамических источников света.
    r1_glows_per_frame2,32Контролирует максимальное число источников света.
    r1_lmodel_lerp0.000,0.333Управляет Линейной Интерполяцией освещения.
    r1_pps_u-1.000,1.000Контролирует Per Pixel Shader значение.
    r1_pps_v-1.000,1.000Контролирует Per Pixel Shader значение.
    r1_ssa_lod_a16.000,96.000Контролирует уровень детализации(LOD) в игровом мире.
    r1_ssa_lod_b16.000,64.000Контролирует уровень детализации(LOD) в игровом мире.
    r1_tf_mipbias-3.000,3.000 Контролирует mipmap LOD bias (детализация (LOD) для мип-уровней),
    которая влияет на чистоту текстур. (четкость и чистота текстур на расстоянии)
    r2_aaon,offВключает фейковый эффект Сглаживания.
    r2_aa_breakКонтролирует степень фейкового АА.
    r2_aa_kernel0.300,0.700Контролирует общую заблюренность фейкового АА.
    r2_aa_weightБолее точно контролирует заблюренность фейкового АА.
    r2_allow_r1_light on,off Позволяет DX8 освещению работать под моделью освещения DX9
    (Вкл/выкл дублирующих динамических источников света).
    r2_gi on,off Включает Глобальное Освещение (на свой страх и риск, опция экспериментальная).
    r2_gi_clip 0.000,0.100 Контролирует дальность видимости(clip distance) Глобального освещения.
    r2_gi_depth1,5Контролирует глубину теней Глобального Освещения.
    r2_gi_photons8,256Контролирует эффект Глобального Освещения.
    r2_gi_refl 0.001,0.990 – Контролирует reflectivity(коэффициент отражения) Глобального Освещения.
    r2_gloss_factor0.000,10.000Устанавливает уровень Отражений/глянца на объектах.
    r2_ls_bloom_faston,offВключает расширенный эффект Блума.
    r2_ls_bloom_kernel_b 0.010,1.000 – Определяет уровень затененности(дымки) от эффектов
    HDR и Блума.
    r2_ls_bloom_kernel_g1.000,7.000Четкость бликов
    r2_ls_bloom_kernel_scale0.500,2.000Общая сила HDR
    r2_ls_bloom_speed0.000,100.000
    r2_ls_bloom_threshold0.000,1.000 Контролирует общий уровень используемых световых эффектов (Блум).
    r2_ls_depth_bias-0.500,0.500Контролирует дальность освещения источников света.
    r2_ls_depth_scale0.500,1.500Контролирует влияние освещения на тени.
    r2_ls_dsm_kernel0.100,3.000
    r2_ls_psm_kernel0.100,3.000
    r2_ls_squality0.500,1.000Тоже, что и опция в меню Качество Теней.
    r2_ls_ssm_kernel0.500,1.000
    r2_mblur0.000,1.000Работает только если при запуске к .exe приписан параметр –mblur.
    r2_parallax_h0.000,0.500 Контролирует Параллакс Маппинг, который влияет на глубину поверхности текстур.
    r2_slight_fade0.020,2.000Дальность освещения(есть в меню)
    r2_ssa_lod_a16.000,96.000Контролирует уровень детализации(LOD) в игровом мире.
    r2_ssa_lod_b32.000,64.000Контролирует уровень детализации(LOD) в игровом мире.
    r2_sunon,off– Опция из меню -Тень от Солнца.
    r2_sun_depth_far_bias-0.500,0.500
    r2_sun_depth_far_scale0.500,1.500
    r2_sun_depth_near_bias-0.500,0.500
    r2_sun_depth_near_scale0.500,1.500
    r2_sun_detailson,offТоже, что опция в меню Тени от Травы.
    r2_sun_focuson,offФокус солнечных теней
    r2_sun_lumscale-1.000,3.000Яркость света от Солнца.
    r2_sun_lumscale_amb0.000,3.000 Яркость ambient освещения (равномерное освещение) от Солнца.
    r2_sun_lumscale_hemi0.000,3.000
    r2_sun_near1.000,50.000Местоположение солнца от земли
    r2_sun_near_border0.500,1.000
    r2_sun_tsmon,offЧеткость солнечных теней
    r2_sun_tsm_bias-0.500,0.500
    r2_sun_tsm_proj0.001,0.800
    r2_tf_mipbias-3.000,3.000 Контролирует mipmap LOD bias (детализация (LOD) для мип-уровней), которая влияет на чистоту текстур. (четкость и чистота текстур на расстоянии)
    r2_tonemap on,off – Включает эффект Tone Mapping(разметка уровня цвета) для HDR
    освещения.
    r2_tonemap_adaptation0.010,10.000
    r2_tonemap_amount0.000,1.000
    r2_tonemap_lowlum0.000,1.000– Контролирует эффект tone mapping на темных локациях.
    r2_tonemap_middlegray0.000,2.000Контролирует общий вид эффекта HDR.
    r2_wait_sleep0,1
    r2_zfillon,off
    r2_zfill_depth0.001,0.500
    r2em0.000,4.000
    r__detail_density0.200,0.600– Опция, по типу в меню -Плотность Травы.
    r__geometry_lod0.100,1.200– Тоже, что и опция из меню Детализация объектов(геометрии).
    r__supersample1,4Тоже, что и опция в меню – Сглаживание.
    r__tf_aniso1,16–Опция из меню, анизотропная фильтрация(Фильтрация текстур).
    rendererrenderer_r1, renderer_r2a, renderer_r2Тоже, что и опция в меню Тип рендера.
    rs_c_brightness0.500,1.500– Опция из меню – Яркость.
    rs_c_contrast0.500,1.500Опция по типу в меню, Контраст.
    rs_c_gamma0.500,1.500Тоже, что и менюшная опция Гамма.
    rs_fullscreenon,offТоже, что и опция в главном меню Полноэкранный режим.
    rs_refresh_60hzon,off– Тоже, что и опция в меню Частота 60Гц.
    rs_statson,offВключает статистику движка на экране, включая FPS.
    rs_v_syncon,offТоже, что и менюшная опция Вертикальная Синхронизация.
    rs_vis_distance0.400,1.500Тоже, что и опция в меню Дальность Видимости.
    texture_lod 0,4 Тоже, что и менюшная опция Качество текстур. Значения инвертны(0 -высокое качество)
    vid_modeWxHТоже, что и опция в меню Разрешение.
    vid_restart Перезапускает графический движок; может быть использовано после изменения каких-либо графических настроек таких как texture_lod и vid_mode.

    Звук

    Команда Параметры Описание
    snd_accelerationon,offВключает аппаратную акселерацию звука.
    snd_cache_size4,32Установить размер кэша для звука.
    snd_efxon,offВключает\выключает Звуковые Эффекты.
    snd_restart Перезапускает звуковой движок; может быть использовано после изменений каких-либо переменных snd_.
    snd_targets4,32Устанавливает количество используемых каналов для аудио.
    snd_volume_eff0.000,1.000Тоже, что и опция в меню Громкость(звука).
    snd_volume_music0.000,1.000Тоже, что и опция в меню Громкость Музыки.

     

    Основное

    Команда Параметры Описание
    preset Minimum, Low, Default, High, Extreme Тоже, что и общая опция Настроек Качества графики в игре.
    ai_use_torch_dynamic_lightson, offТоже, что и менюшная опция Фонарики от НПС.
    bind action,key Назначить действие на первичную конкретную выбранную клавишу.
    bind_console
    bind_list Список всех текущих назначенных клавиш.
    bind_sec action,key Назначить действие на вторичную клавишу.
    cam_inert 0.000,1.000 Управление инертностью камеры.
    cam_slide_inert0.000,1.000
    cdkey
    cfg_load filename.ltx Загружает конфигурационный фаил определенного названия из той же папки, что и User.ltx
    cfg_savefilename.ltx Сохраняет текущий конфигурационные настройки в новый .ltx фаил с
    указанным вами именем в ту же папку что и User.ltx.
    check_for_updates
    cl_cod_pickup_mode0,1
    cl_dynamiccrosshair on,off Тоже, что и менюшная опция Динамический Прицел.
    cl_voteno
    cl_votestart
    cl_voteyes
    demo_play demoname Проиграть записанную вами демку сохраненной игры.
    disconnect Отсоединяет вас от текущей игры и выбрасывает в главное меню.
    flush Создать лог в папке \Documents and Settings\All Users\Documents\STALKERSHOC\
    logs
    g_always_run on,off Включить постоянный бег/ходьбу.
    g_autopickup on,off Автоподбор предметов, вкл/выкл
    g_backrun on,off Возможность передвижения спиной бегом, вкл/выкл
    g_corpsenum0,100
    g_eventdelay0,1000
    g_game_difficulty gd_novice, gd_stalker, gd_veteran, gd_master Тоже, что и опция Уровень
    сложности в игровом меню.
    help Список всех консольных команд.
    hud_crosshair on,off – Тоже, что и менюшная опция Показывать Прицел.
    hud_crosshair_diston,off– Тоже, что и опция в меню Дистанция до цели.
    list_actionsСписок всех действий, которые можно прибиндить на кнопки.
    loadsavenameЗагружает сохраненную игру с указанным вами названием.
    main_menuГлавное меню, каждый вызов вкл/выкл
    mouse_inverton,offТоже, что и опция в меню Инвертировать Мышь.
    mouse_sens0.050,0.6000Тоже, что и менюшная опция Чувствительность Мыши.
    ph_frequency
    ph_iterations5,50
    quitВыйти из игры в Винду.
    save savename Сохранить текущую игру под конкретным именем(дефолт – быстрое
    сохранение).
    screenshot Сохранить скриншот в папку \Documents and Settings\All
    Users\Documents\STALKER-SHOC\screenshots
    start
    stat_memoryПоказывает статистику использования оперативной памяти игровым движком.
    stat_modelsПоказывает список всех загруженных на данный момент моделей.
    unbindactionРазбиндить любую первичную клавишу с назначенного действия.
    unbind_console
    unbind_secactionРазбиндить любую вторичную клавишу с назначенного действия.
    unbindallРазбиндить все назначенные на действия клавиши.

    Разное

    Вопрос: Как включить в игре Bloom?

    Ответ: Через консоль -r2_ls_bloom_fast on

    В игре вызываешь консоль, пишешь r2_gloss_factor n, где вместо n -любое число в диапазоне
    от 1 до 10 (кажется). Больше значение -больше блеск поверхностей.

    Но это не совсем то, что тебе (и многим) хотелось бы. К сожалению, кафель останется матовым,
    просто на ряде поверхностей можно усилить эффект "маслянистого" блеска. С высокими
    значениями r2_gloss_factor асфальт, например, выглядит мокрым, как при дожде. Выглядит
    броско. Однако переусердствовать не стоит, значения выше 5 -перебор, как по-моему...
    В общем, хоть какое-то, половинчатое решение...

     

    Как сохранятся через консоль?

    Вызвать консоль и набрать:
    для сохранения: save хх
    для загрузки: load хх
    Где "хх" имя сейва. Лично я их просто нумерую.


    Справочник вылетов (Line 1 - Line 100)

    Авторы / Ссылка на тему форума / Как найти файл с логом и что с ним делать?

    Авторы: @ColR_iT и другие пользователи форума AMK-Team.ru

     

    В некоторых случаях дополнительную информацию

    можно почерпнуть из темы Справочника вылетов на форуме (здесь).

     

    Как найти файл с логом?

    Файл лога находится в папке путь к которой прописан в качестве параметра app_data_root в файле fsgame.ltx, который находится в корневой директории игры.
    В конце файла .log, в случае вылета, после строк FATAL ERROR сохраняется описание ошибки (к сожалению в большинстве случаев не совсем очевидное), по которой можно попытаться определить причину вылета и исправить её.
    Если же после вылета .log файл пуст, то определить причину вылета становиться практически невозможным.

     

    Line 11

    Expression    : e_parent
    Function    : xrServer::Process_event_reject
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp
    Line        : 11
    Description    : parent not found. id_parent=110 id_entity=117 frame=1791
    

    Причина:

    Возникает иногда произвольно при смерти неписей. Движок отрабатывая лут изредка теряет серверный объект уничтожаемой вещи, в итоге происходит вылет.

    Лечение:

    Попробуйте загрузить последнее сохранение.

     

     

     

    Line 12

    Expression : e_entity Function : xrServer::Process_event_reject File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : entity not found. id_parent=7540 id_entity=44047 frame=2075050

    Причина:

     

    Возникает иногда произвольно при смерти неписей. Движок отрабатывая лут изредка теряет серверный объект уничтожаемой вещи, в итоге происходит вылет.

    Лечение:

     

     

    Попробуйте загрузить последнее сохранение.



     

     

     

    Expression : e_entity Function : xrServer::Process_event_reject File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : entity not found.

    Причина:

     

     

    Ошибка 1.0004 патча.

    Лечение:

     

     

    Исправляется установкой более Новой версии патча для ТЧ.



     

     

     

    Expression : assertion failed Function : xrServer::Process_event_reject File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp Line : 12 Description : e_parent && e_entity

    Причина:

     

     

    Непись умер во время торговли или гранатометания, а движок не успел до удаления серверного объекта непися отрегистрировать его лут. Также происходит во время попытки удаления или смены владельца уже удаленного объекта.

    Лечение:

     

     

    В death_manager.script нужно заменить строки:

     

     

    alife():release(alife():object(item:id()), true)

    на
     

     

     

    local obj = item and item:id()and alife():object(item:id()) if obj then alife():release( obj, true ) end



     

     

     

    [error]Expression    : assertion failed [error]Function      : xrServer::Perform_destroy [error]File          : D:\prog_repository\sources\trunk\xrGame\xrServer_sls_clear.cpp [error]Line          : 12 [error]Description   : object->ID_Parent == 0xffff stack trace:

    Аналогично, подобное может происходить и в ДРУГИХ скриптах. Лечить - добавив такую же проверку.
     
    Причина: открытый инвентарный ящик пытается уйти в офлайн (например, при "телепортации" актора).
    Лечение: Необходимо переводить в оффлайн-онлайн сам инвентарный ящик 

     

     

     

     

    alife ():set_switch_online  ( sobj.parent_id, false) alife ():set_switch_offline ( sobj.parent_id, true )

     
    И так далее: выяснять по id конкретный объект, разбираться, что с ним происходит, искать, где делается СТРАННОЕ, и исправлять.

     

    Line 22

    Expression    : ini->section_exist(imm_sect)
    Function    : CHitImmunity::LoadImmunities
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\hit_immunity.cpp
    Line        : 22
    Description    : hunter_novice_resistance
    

    Причина:

    Ошибка в секции иммунитета, скорее всего костюма.

    Лечение:

    Поиском по файлам игры найти указанную секцию и проверить правильность её написания, а также её наличие в принципе.

    Line 23

    Expression : assertion failed Function : xrServer::Process_event_ownership File : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_ownership.cpp Line : 23 Description : e_parent

    Причина:

    При обработке события связанного с 'обладаемым' предметом - сам объект (parent) не был обнаружен.
    Такое порой случается, когда или объект удаляется из игры без требуемой отрегистрации. Например, порой НПС, стреляя из ствола (отыгрываются партиклы), попав в аномалию, разрывается - сервер должен продолжить иль прекратить огонь из оружия -> ищет по владельцу стреляющий ствол и ... не находит.

    Лечение:

    Вылет вряд ли может быть стабильным, поэтому иногда достаточно просто загрузить последнее сохранение.
    А бороться можно только выверяя все коды, в которых удаляются предметы/объекты на предмет необходимых отрегистраций и снижать заселяемость локаций. Чем меньше неписей/монстров - тем меньше вероятность такой коллизии.

    Line 24

    Expression    : e_entity->ID_Parent == id_parent
    Function    : xrServer::Process_event_reject
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cpp
    Line        : 24
    Description    : device_pda23827
    Arguments    : gar_stalker_respawn_123826
    

    Причина:

    Description и Arguments как правило разные. Вылет движковый и достаточно редкий. Случается тогда, когда движок пытается присвоить parent предмету, в данном случае device_pda23827, непесю (gar_stalker_respawn_123826), а предмет УЖЕ принадлежит ему, т.е. device_pda23827:parent() == gar_stalker_respawn_123826:id()

    Лечение:

    ?

    Line 27

    Expression    : !hud_snd.sounds.empty()
    Function    : HUD_SOUND::LoadSound
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\HudSound.cpp
    Line        : 27
    Description    : there is no sounds for:
    Arguments    : wpn_rpg7
    

    Причина:

    Количество прописанных звуков в секции указанного оружия не соответствует количеству звуков класса прописанного там же.

    Лечение:

    Проверьте соответствие класса оружия и количества звуков на примере оригинальных файлов.

    Line 30

    Expression    : no_assert
    Function    : CALifeStoryRegistry::add
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_story_registry.cpp
    Line        : 30
    Description    : Specified story object is already in the Story registry!
    

    Причина:

    Игра определила одинаковые story_id для двух и более объектов. Возникнуть это может в нескольких случаях:
    1. Более явная причина: в all.spawn либо скриптом разным объектам присвоен один и тот же story_id;
    2. При изменениях в спавне, т.е. добавлении или удалении секций, происходит переиндексация и секции, которые после добавленой/убавленной - получают иные индексы. В модах, в которых происходит спавн объектов по индексам из all.spawn'a (alife():create(индекс_из_all_spawn)), а это АМК, моды на его основе и не только, происходит ошибочное удаление (не того объекта) и соответственно дублированный спавн не удаленного объекта - вот вам и дублированный сид.

    Лечение:

    1. Найти поиском дублированные сиды и сделать их разными;
    2. Добавлять секции в all.spawn исключительно с индексами превышающими максимальный в принципе в all.spawn, а не в файле. В случае удаления ситуация сложнее. Если всё же нужно избавиться от объекта в all.spawn, удаляйте его скриптом, тем самым не нарушая последовательность индексации.

    Line 34

    Expression    : res!=-1
    Function    : get_rank
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\Restrictions.cpp
    Line        : 34
    Description    : cannot find rank for
    Arguments    : wpn_rem870short
    

    Причина:

    Указанное оружие, в данном случае wpn_rem870short, не прописано в mp_ranks.ltx.

    Лечение:

    Добавить оружие в секции по аналогии с имеющимися. Либо избавиться от вылета на совсем посредством правки dll.

    [hr]

    Expression    : fatal error
    Function    : weapon_hud_value::load
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\WeaponHUD.cpp
    Line        : 34
    Description    : <no expression>
    Arguments    : There is no 'muzzle' bone for weapon 'wpn_usp_hud'.
    

    Причина:

    В указанной секции оружия (обычно это худ-модель), в данном случае wpn_usp_hud, для параметра fire_bone указана неверная кость (muzzle).

    Лечение:

    Найти и исправить ошибку.

    Line 35

    Expression    : assertion failed
    Function    : CLevelGraph::CLevelGraph
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\level_graph.cpp
    Line        : 35
    Description    : header().version() == XRAI_CURRENT_VERSION
    

    Причина:

    Файл level.gct не соответствует game.graph, скорее всего файлы из разных частей частей игры, т.к. возникает зачастую во время переноса локаций из одной части игры (билды в том числе) в другую.

    Лечение:

    Проверьте соответствие файлов.

    Line 37

    Expression    : fatal error
    Function    : xrServer::Process_update
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_update.cpp
    Line        : 37
    Description    : <no expression>
    Arguments    : Beer from the creator of 'WP_SHOTG'

    Причина:

    Вылет движковый и рандомный. Название класса может быть другим: O_ACTOR, S_ACTOR, AI_CROW, WP_ASHTG. Побился нет-пакет объекта при апдейте. Также, возможной причиной является использование трейнеров, ArtMoney и прочих подобных программ.

    Лечение:

    Загрузка последнего сохранения.

    Line 39

    Expression : fatal error
    Function : xrServer::Process_update
    File : D:\prog_repository\sources\trunk\xrGame\xrServer_process_update.cpp
    Line : 39
    Description :
    Arguments : Beer from the creator of 'S_ACTOR '; initiator: 0x00000001, r_tell() = 66, pos = 5, objectID = 0

    Возникает при загрузке игры

    Возможная причина:
    Неверно прописан параметр class в конфиге какого-либо объекта (необязательно указанного в строке arguments)

    Лечение:
    Проштудировать конфиги на предмет неверно указанного класса у какого-либо из предметов

    [hr]

    Expression : assertion failed
    Function : CItemMgr::Load
    File : E:\priquel\sources\engine\xrGame\ui\UIBuyWndShared.cpp
    Line : 39
    Description : it!=m_items.end()

    B одном из файлов *_game.ltx (вместо * - название типа игры), находящихся по адресу configs\mp, в секции вида [*_base_cost] не прописан какой-то из доступных для покупки в мультиплеере предметов.

    Line 42

    Expression    : assertion failed
    Function    : CResourceManager::_GetBlender
    File        : E:\stalker\patch_1_0004\xr_3da\ResourceManager.cpp
    Line        : 42
    Description    : Name && Name[0]

    Причина:

    Возможно ошибка в одной из .ogf моделей.

    Лечение:

    ?

    Line 44

    Expression    : assertion failed
    Function    : _VertexStream::Lock
    File        : E:\stalker\patch_1_0004\xr_3da\R_DStreams.cpp
    Line        : 44
    Description    : (bytes_need<=mSize) && vl_Count

    Причина:

    Переполнение видеобуфера на отрисовку.

    Лечение:

    Снизить настройки графики, либо ограничить дальность видимости на локации. Временным решением может послужить исправление всех silencer_light_range на значения заметино большие, чем silencer_light_var_range, в конфигах оружия. Также воспользуйтесь фиксом .exe файла избавляющий от данной проблемы.

    Line 46

    Expression    : fatal error
    Function    : CObjectAnimator::LoadMotions
    File        : E:\stalker\patch_1_0004\xr_3da\ObjectAnimator.cpp
    Line        : 46
    Description    : 
    Arguments    : Can't find motion file 'water_blow.anm'.

    Причина:

    Игра не может найти указанный файл анимации камеры.

    Лечение:

    Проверить наличие данного файла и проверить правильность написания пути до такового.

     [hr]

    Expression    : assertion failed
    Function    : CStepManager::reload
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\step_manager.cpp
    Line        : 46
    Description    : param.cycles >= 1

    Причина:

    Ошибка при чтении параметров настройки анимации ходьбы. Ссылка на эту секцию указана в параметре секции непися step_params. А далее там таблица в которой, вероятнее всего и находится ошибка.

    Лечение:

    Найти и исправить ошибку в таблице.

    Line 49

    Expression    : fatal error
    Function    : CResourceManager::_GetBlender
    File        : E:\stalker\patch_1_0004\xr_3da\ResourceManager.cpp
    Line        : 49
    Description    : 
    Arguments    : Shader 'models\antigas_glass' not found in library.

    Причина:

    Не найден шейдер models\antigas_glass в библиотеке шейдеров shaders.xr.

    Лечение:

    Добавить недостающий шейдер, либо избавиться от модели, который данный шейдер использует.

    [hr]

    FATAL ERROR 
    
    [error]Expression : 0 
    [error]Function : ErrorLog 
    [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp 
    [error]Line : 49 
    [error]Description : You are trying to spawn two or more objects with the same story_id:[pri_b35_jup_b43_stalker_assistant_squad] --> [pri_b35_jup_b43_stalker_assistant_squad10024] try to add:[pri_b35_jup_b43_stalker_assistant_squad10413] 
    
    stack trace:

    Причина:

    Дважды или больше раз вызывается спавн объектов с одинаковыми SID


    Лечение:


    Удалить лишние вызовы спавна

    [hr]

    FATAL ERROR
    
    [error]Expression    : 0
    [error]Function      : ErrorLog
    [error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
    [error]Line          : 49
    [error]Description   : object 'pri_b36_sr_ahi_place_pda': activate_by_section: section 'sr_idle@game_started' does not exist
    
    stack trace:

    Причина:

    В рестрикторе (в данном случае 'pri_b36_sr_ahi_place_pda') есть переключение, отсылка к несуществующей секции логики ('sr_idle@game_started').

    Лечение:

    Проверить наличие секции в логике рестриктора, проверить соответствие названий, или же удалить отсылку к логике.

    Line 53

    Expression    : fatal error
    Function    : CStringTable::Load
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\string_table.cpp
    Line        : 53
    Description    : <no expression>
    Arguments    : string table xml file not found ui_st_pda.xml, for language rus

    Причина:

    Вместо rus может быть eng, но суть проблемы остаётся неизменной - в файле localization.ltx в строке language указано название папки (rus в данном случае) в config\text из которой будет браться текст, так вот в этой папке не найден указанный файл (ui_st_pda.xml).

    Лечение:

    Если добавляли свой файл локализации - проверьте правильно написания имени и наличие файла в нужной папке. Если устанавливали мод - переустановите его.

    Line 54

    Expression    : fatal error
    Function    : CObjectItemSingle<class CUIGameAHunt,1>::server_object
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\object_item_single_inline.h
    Line        : 54
    Description    : <no expression>
    Arguments    : Cannot instantiate server object, because server class is not declared!

    Причина:

    Переводчик даёт вполне адекватное определение. Но на самом деле вылет происходит по причине неопределённого состояния объекта, когда ему установлены оба флага для разрешения перехода в онлайн и оффлайн одновременно.

    Лечение:

    Найти и исправить ошибку.

    Line 58

    Expression    : fatal error
    Function    : IRender_Visual::Load
    File        : E:\stalker\patch_1_0004\xr_3da\FBasicVisual.cpp
    Line        : 58
    Description    : <no expression>
    Arguments    : Invalid visual

    Причина:

    Ошибка модели какого-то объекта.

    Лечение:

    Найти объект и либо исправить модель, либо заменить, или же удалить сам объект.

    Line 63

    Expression    : W==1
    Function    : CFileWriter::w
    File        : e:\stalker\patch_1_0004\xrcore\FS_internal.h
    Line        : 63
    Description    : Can't write mem block to file. Disk maybe full.
    Arguments    : Invalid argument

    Причина:

    Переполнение дисковой памяти. Коварность данного вылета заключается в том, что часто вылет происходит в момент сохранения игры, и в результате сэйв будет битым.

    Лечение:

    Освободите место на диске, если не помагает обычная загрузка последнего рабочего сохранения.

    [hr]

    Expression : fatal error
    Function : CBlender_default::Compile
    File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\BlenderDefault.cpp
    Line : 63
    Description : 
    Arguments : Not enought textures for shader, base tex: путь/до_текстуры

    Причина:
    Запуск модели/локации, на которой есть такая модель, не важно стат./динам. модель, на dx8, т.е статическом освещении. Возможно, из-за шейдера, его текстуры в настройке.
    Лечение:
    Разберусь, скажу точнее, а пока - запускать на освещении выше статики, любом динамическом, dx9, dx10, dx11.

    [hr]

    [error]Expression : fatal error
    [error]Function : CBlender_default::Compile
    [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\BlenderDefault.cpp
    [error]Line : 63
    [error]Description : 
    [error]Arguments : Not enought textures for shader, base tex: veh\veh_mi2

    Причина: проблемы с шейдерами - у меня был такой влет только на статическом освещении из за объекта локации с шейдером default.

    Лечение: заменить шейдер default на другой, например, на def_shaders\def_vertex.

     

    Line 64

    Expression    : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID)
    Function    : CALifeSwitchManager::add_online
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_switch_manager.cpp
    Line        : 64
    Description    : Invalid vertex for object
    Arguments    : af_gravi22016

    Причина:

    Объект, в данном случае артефакт, заспавнился (перешёл в online) за пределами АИ сетки.

    Лечение:

    Если Вам нужно просто пройти какой-то момент в игре, то можете попробовать уменьшить радиус A-Life, посредством параметра switch_distance, пройти проблемный участок, а затем вернуть первоначальное значение параметра. Если же вы хотите избавиться от вылета, перебирайте объекты перед выходом в online и ищите нужный объект.

    Line 65

    Expression    : wave&&wave->length()
    Function    : CSoundRender_Source::LoadWave
    File        : E:\stalker\patch_1_0004\xrSound\SoundRender_Source_loader.cpp
    Line        : 65
    Description    : Can't open wave file:
    Arguments    : ...\gamedata\sounds\music\sound.ogg

    Причина:

    Игра не может открыть звуковой OGG-файл под названием sound в папке gamedata\sounds\music\.

    Лечение:

    Проверяйте наличие файла, правильность написания пути и имени файла.

     [hr]

    Expression    : hGame
    Function    : CEngineAPI::Initialize
    File        : E:\stalker\patch_1_0004\xr_3da\EngineAPI.cpp
    Line        : 65
    Description    : Game DLL raised exception during loading or there is no game DLL at all

    Причина:

    Случается когда одна из dll некорректна. Например такой вылет бывает если подсунуть в ТЧ 1.0006 xrGame.dll от другого патча.

    Лечение:

    Если нет резервных копий, то вероятнее всего потребуется переустановка игры.

    Line 72

    Expression    : ovi->rate==44100
    Function    : CSoundRender_Source::LoadWave
    File        : E:\stalker\sources\trunk\xrSound\SoundRender_Source_loader.cpp
    Line        : 72
    Description    : Invalid source rate:
    Arguments    : ...\gamedata\sounds\characters_voice\new_voice\novikov\talk\neutral_greeting\greeting_1.ogg

    Причина:

    Указанный звуковой файл имеет неправильные свойства или настройки.

    Лечение:

    Убедитесь в правильности настройки звукового файла.

    Line 73

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...\gamedata\scripts\xr_danger.script:116: attempt to index field 'ignore_types' (a nil value)

    [spoiler]

    Причина:

    Игра не понимает значения 0 в danger_ignore. Проще говоря в логике какого-то персонажа параметр danger_ignore равен нулю, либо он отрицателен, либо его вообще нету. Также может быть причина в том, что у какого-то в логике что-то неправильно указано в секции danger.

    Лечение:

    Для исправления рекомендую перед 116 строкой (номер строки может отличаться) дописать следующий код:

    get_console():execute(self.object:name())

    То имя в логе, которое будет последним после вылета, указывает на персонажа с кривой логикой.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...\gamedata\scripts\.script:34: attempt to call method 'section' (a nil value)

    [spoiler]

    Причина:

    Метод обращения в игре не предусмотрен. Возможно, стоит пересмотреть подход к тому или иному скрипту. Часто такое возможно, когда к серверному объекту применяют клиентские методы и наоборот.

    Лечение:

    Найти и исправить ошибку.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...w of chernobyl\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to perform arithmetic on a nil value

    [spoiler]

    Причина:

    Попытка выполнения арифметической операции над nil.

    Лечение:

    Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка выполнения арифметической оперции над nil происходит именно в ней.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to compare number with nil

    [spoiler]

    Причина:

    Попытка сравнения числа с nil.

    Лечение:

    Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка сравнения числа с nil происходит именно в ней.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: attempt to perform arithmetic on field '?' (a nil value)

    [spoiler]

    Причина:

    Попытка получить значение таблицы по ключу nil.

    Лечение:

    Найти и исправить ошибку. Обратите внимание на строку с указанным номером, попытка получения значения по ключу nil происходит именно в ней.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: error in error handling

    [spoiler]

    Причина:

    Причину вылета назвать достаточно трудно, вероятно это что-то глубоко движковое. Такой вылет может вызывать передача клиенсткого объекта в функцию switch_offline.

    Лечение:

    В случае передачи клиентского объекта - устранить ошибку. Но определить причину в большинстве случаев крайне проблематично - попробуйте загрузить последнее сохранение.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: attempt to call a nil value

    [spoiler]

    Причина:

    Происходит при попытке вызвать конструктор класса, которого не существует.

    Лечение:

    Найти и исправить ошибку.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : D:\xray-svn\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: C stack overflow

    [spoiler]

    Причина:

    Ошибка также может появиться со строкой 74. Переполнение стека. Смотрим внимательно: lua_error. Ошибка возможно в скриптах.

    Лечение:

    Загрузка последнего сохранения.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: No such operator defined

    [spoiler]

    Причина:

    Попытка использовать для какого-то объекта, несуществующий метод. Зачастую путаница с серверными и клиентскими метода.

    Лечение:

    Найти и исправить ошибку.

    [/spoiler]

    [hr]

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
    Line        : 73
    Description    : 
    Arguments    : LUA error: ...\gamedata\scripts\<имя файла>.script:<номер строки>: unfinished capture

    [spoiler]

    Причина:

    Единственной причиной данного вылета которую я нашёл, это попытка использовать для функции string.find в качестве шаблона "волшебный символ" открывающуюся круглую скобку, т.е. попытка найти скобку таким образом:

    local p = string.find(str, "(")

    Лечение:

    Для поиска открывающейся круглой скобки используйте параметр plain для данной функции со значением true, он выключает возможность поиска по шаблону и в таком случае производится поиск подстроки как есть:

    local p = string.find(str, "(", 1, true)

    [/spoiler]

    [hr]

    [error]Expression    : fatal error
    [error]Function      : CScriptEngine::lua_error
    [error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    [error]Line          : 73
    [error]Description   : 
    [error]Arguments     : LUA error: ...ing\s.t.a.l.k.e.r\gamedata\scripts\inv_system.script:1674: attempt to call function 'GetCommand_TakeSlot' (a nil value)
     
    
    stack trace:

    [spoiler]

    Казалось бы, причина ясна - вызов функции, которой не существует. Однако функция есть, и называется именно так, и с ней все в порядке. как и с самим файлом скрипта тоже - в нем нет синтаксических ошибок, игра не ругается на него самого, заявляя что он 'a nil value'

    Причина оказалась вот в чем. В начале скрипта, есть таблица, такого вида:

    tbl = {
        string_key1 = number,
        string_key2 = number,
    ...

    а далее есть еще одна таблица. вот такого вида:

    tb_funcs = {
            [tbl.string_key1] = function(args...)
                ...
            end,
    ...

    то есть, значения ее - функции. а ключами являются значения из первой таблицы.

    Ну так вот. в первой таблице поменял имя одного из ключей. А во второй - забыл это сделать. Получилось что во второй таблице, одна из функций находится по ключу, который вообще то равен nil.
    А причем же тут та функция, которую мы вызывали, и вылетели с нею в лог? да вообще ни при чем, она просто находилась в том же файле ниже по тексту.

    Вывод - когда делаете в таблицах ключи вида массив/модуль.значение - убедитесь что это значение не равно nil ) а то сталкер об этом нормально не скажет.

    [/spoiler]

    Line 74

    Expression    : fatal error
    Function    : CScriptEngine::lua_error
    File        : D:\xray-svn\xr_3da\xrGame\script_engine.cpp
    Line        : 74
    Description    : <no expression>
    Arguments    : LUA error: ...\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

    Причина:

    Обычная причина этих вылетов – передача некорректных значений родным функциям игры. Эти ошибки обычно возникают когда произошёл какой-то серьёзный сбой, и о таких вылетах желательно сообщать разработчикам. Если такой вылет случился желательно так же сбросить текст выше строки FATAL ERROR из лога. Если же этот вылет у вас происходит при загрузке сейва – сбросьте его разработчикам мода с логом вылета.

    Лечение:

    Необходимо перейти в _g.script в функцию printf и перед

    log1(string.format(fmr,..))

    дописать:

    get_console():execute(string.gsub(fmt, " ", "_"))

    После этого запустить еще раз игру и посмотреть при передачи какой строки игра вылетает. Потом найти эту строку в скриптах игры и прикинуть почему аргумент (у нас это аргумент №2 (bad argument #2)) равен nil.

    Line 75

    [error]Expression    : F
    [error]Function      : CXml::Load
    [error]File          : E:\priquel\sources\engine\xrXMLParser\xrXMLParser.cpp
    [error]Line          : 75
    [error]Description   : text\rus\new_dialog.xml

    Причина:
    Движок не может прочитать файл new_dialog.xml, т.к. он находится в сторонней папке, которая находится в директории text\rus\

    Лечение:
    Переместить файлы в папках, в корень директории text\rus\

    Line 76

    Expression    : fatal error
    Function    : CPostprocessAnimator::Load
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\PostprocessAnimator.cpp
    Line        : 76
    Description    : <no expression>
    Arguments    : Can't find motion file 'amk_shoot.ppe'.

    Причина:

    Игра не может найти указанный файл постпроцесса.

    Лечение:

    Проверяйте наличие файла, правильность написания пути и имени файла.

    Line 78

    Expression    : g_uiSpotXml->NavigateToNode(path_base,0)
    Function    : CMapLocation::LoadSpot
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\map_location.cpp
    Line        : 78
    Description    : XML node not found in file map_spots.xml
    Arguments    : sleep_pointer

    Причина:

    Игра не может найти в указаном файле (map_spots.xml) указанный элемент (sleep_pointer).

    Лечение:

    Найти и исправить ошибку.

    Line 80

    [error]Expression : source
    [error]Function : CPHSkeleton::Spawn
    [error]File : E:\priquel\sources\engine\xrGame\PHSkeleton.cpp
    [error]Line : 80
    [error]Description : no source

    Причина: свойства cse_ph_skeleton properties у НПС в all.spawn

    Лечение: нпс взят из all.spawn gsc, после редактирования локации (изменение геометрии и АИ-сетки) в собранном спавне, нпс заспавненные GSC оказались проблемными, т.к. вызывали вылет. У всех у них было: (значения могут отличаться)

    ; cse_ph_skeleton properties
    skeleton_name = 5
    skeleton_flags = 2
    source_id = 0x2
    

    А у новых, заспавненых мной нпс, этого не было. Поэтому просто удалите эти строчки.

    Line 81

    Expression    : assertion failed
    Function    : CSafeFixedRotationState::create
    File        : e:\stalker\sources\trunk\xr_3da\xrgame\phvalidevalues.h
    Line        : 81
    Description    : dBodyStateValide(b)

    Причина:

    Как правило - при попытке зомбировании неписей контролером, но не только. Также может появиться при неправильной настройки костей модели. Ещё может быть битый/криво разобранный нетпакет, даже если собственно визуал нормально прочитался и разобрался.

    Лечение:

    В случае кривой модели - определить модель и исправить, для этого достаточно обратно перегнать в СДК, настроить все шейпы, и обратно в огф. В случае скриптом - найти и избавиться от ошибки.

    Line 87

    Expression    : false 
    Function    : CXml::Init 
    File        : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp 
    Line        : 87 
    Description    : XML file:gameplay\game_tasks.xml value: errDescr:Error reading end tag.
    Причина:

    В указанном файлe, в данном случае gameplay\game_tasks.xml, не соответствуют открывающийся и закрывающийся теги.

    Лечение:

    Найти и исправить ошибку. Для этого в помощь придёт любой браузер. Откройте указанный файл через него, он поможет локализовать место ошибки.

     [hr]
    Expression    : false 
    Function    : CXml::Init 
    File        : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp 
    Line        : 87 
    Description    : XML file:gameplay\dialogs_escape.xml value: errDescr:Error reading Attributes.
    Причина:

    В указанном файле неправильно заданы атрибуты какого-то тега. Зачастую это написанное значение атрибута на русском языке.

    Лечение:

    Найти и исправить ошибку. Для этого в помощь придёт любой браузер. Откройте указанный файл через него, он поможет локализовать место ошибки.

     [hr]
    Expression    : xml_doc.NavigateToNode(path,index) 
    Function    : CUIXmlInit::InitWindow 
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIXmlInit.cpp 
    Line        : 87 
    Description    : XML node not found Arguments    : global_wnd
    Причина:

    В одном из .xml файлов отсутствует один общий тег для всех элементов. Например, если в файле encyclopedia.xml удалить теги window и /window, то появится именно такая ошибка.

    Лечение:

    Найти и исправить ошибку.

    Line 91

    Expression    : ai().game_graph().header().levels().end() != I
    Function    : CALifeGraphRegistry::setup_current_level
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_graph_registry.cpp
    Line        : 91
    Description    : Graph point level ID not found!

    Причина:

    В версии за 10.09.08 аивраппера бардака, если соединять новые левелы, level_changer'ы(переходы между уровнями) нормально не работали, в последующей версии это исправлено.
    Вы забыли добавить в геймдату файл game.graph.
    В спавне указан несуществующий game_vertex_id.

    Лечение:

    Найти и исправить ошибку.

    Line 92

    Expression    : m_available_count
    Function    : CID_Generator::tfGetID
    File        : e:\priquel\sources\engine\xrgame\id_generator.h
    Line        : 92
    Description    : Not enough IDs

    Причина:

    В игре закончились идентификаторы. В игре может быть НЕ БОЛЕЕ 65534 объектов. Видимо, у Вас на создавалось столько, как - это другой вопрос.

    Лечение:

    Почистить игру от лишних объектов.

    [hr]

    Expression : pm->m_animations.size()
    Function : player_hud_motion_container::load
    File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp
    Line : 92
    Description : motion not found [aks74u_shootr]
    

    Причина:
    Игра не может найти анимацию худовой модели оружия, указанную в худовой секции в одном из параметров вида anm_*.
    Лечение:
    1) Проверить название указанной анимации на наличие опечаток
    2) Убедиться, что путь к визуалу худа в параметре item_visual прописан правильно
    3) Убедиться, что анимация с указанным названием действительно существует в соответствующем OGF или OMF файле
    4) Убедиться, что в случае использования отдельного OMF-файла для хранения анимаций Вы не забыли его в АЕ СДК подключить к модели.

    Частный случай вылета:

    Expression : pm->m_animations.size()
    Function : player_hud_motion_container::load
    File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp
    Line : 92
    Description : motion not found [idle]

    При детальном рассмотрении конфига видим, что нигде данное название анимации не прописано.

    Причина:
    Дело в том, что в ЧН\ЗП для худа используется две модели: рук и оружия. Когда мы прописываем им общую анимацию, движок в анимациях оружия сначала пытается найти указанную. Если это не удается - то пытается воспроизвести анимацию с названием idle. Если и эта его попытка оказывается безуспешной - вылетает с вышеобозначенным логом.

    Лечение:
    Есть 2 варианта:
    а) Добавить для оружия анимацию с названием idle
    б) Явно задать в конфиге названия реально существующих для модели оружия анимаций

    Line 96

    Expression    : false
    Function    : CGameGraph::distance
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\game_graph_inline.h
    Line        : 96
    Description    : There is no proper graph point neighbour!

    Причина:

    Некий мутант или непись заспавнился в некорректном месте. Причина этого в том, что А-лайф спавнит их в некотором произвольном радиусе от точки спавна, что позволяет каждый раз спавн разнообразить. К сожалению, иногда он умудряется поместить живность в точку снаружи уровня – под землю или в стену, или заспавненый объект проваливается под уровень.

    Лечение:

    Обычно достаточно просто загрузить последний сейв и вылет пропадает. В особо тяжких случаях, когда вы умудрились сохранится рядом с уже застрявшим так неписем или монстром вам придётся убежать на другую локацию, чтобы эта животина в оффлайне ушла в нормальное место.

    Line 97

    Expression    : start_node && path
    Function    : CXml::NavigateToNode
    File        : E:\stalker\sources\trunk\xrXMLParser\xrXMLParser.cpp
    Line        : 97
    Description    : NavigateToNode failed in XML file
    Arguments    : gameplay\alex_mod_dialogs.xml

    Причина:

    В указанном файле в одном из диалогов игра не может найти первую фразу. Запомните, первые фразы во всех диалогах должны быть с id равными нулю!

    Лечение:

    Найти и исправить ошибку.


    Справочник вылетов (Line 101 - Line 200)

    Line 106

    Expression    : hFile>0
    Function    : FileDownload
    File        : E:\stalker\patch_1_0004\xrCore\FS.cpp
    Line        : 106
    Description    : ...\gamedata\config\

    Причина:

    Возникает ТОЛЬКО при загрузке сохранений. А вылетает из-за несоответствие конфигов с версией игры. Такое точно случается, если подсунуть шестому патчу system.ltx от четвёртого, получается ли данный вылет с другими конфигами или нет я не знаю.
    Правда, на просторах встечал этот же вылет, только в описании были явно указаны или .ogg или .ltx файл - в данном случае ничего сказать не могу.

    Лечение:

    Переустановка игры/мода.

    Line 108

    Expression    : fatal error
    Function    : CObjectAnimator:  lay
    File        : E:\stalker\sources\trunk\xr_3da\ObjectAnimator.cpp
    Line        : 108
    Description    : <no expression>
    Arguments    : OBJ ANIM::Cycle '(null)' not found.

    Причина:

    Причиной вылета служит неправильный путь для проигрывания партикла (пример: аномалия в Х-18, она двигается по зацикленному пути из .anm файла).

    Лечение:

    Либо удалить глючную аномалию (в частном случае партикл), либо исправить проблему.

    Line 111

    Expression    : fatal error
    Function    : CModelPool::Instance_Load
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp
    Line        : 111
    Description    : <no expression>
    Arguments    : Can't find model file 'physics\mesh.ogf'.

    Причина:

    Не найдена трёхмерная OGF-модель, в данном случае mesh.ogf из папки meshes\physics.

    Лечение:

    Проверяйте наличие файла, правильность написания пути и имени файла.

     [hr]

    Expression    : ini_file.section_exist(section)
    Function    : CTradeParameters::process
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\trade_parameters_inline.h
    Line        : 111
    Description    : cannot find section h?

    Причина:

    ?

    Лечение:

    ?

    Line 112

    Expression    : no_assert
    Function    : CXML_IdToIndex<class CCharacterInfo>::GetById
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h
    Line        : 112
    Description    : item not found, id
    Arguments    : amk_artem_kulinar

    Причина:Игра не находит id какого-то профиля... или диалога... или квеста. В общем указанный id в .xml файле.

    Лечение:

    Проверяйте правильность написания идентификатора, либо добавьте его, если таковой отсутсвует.

    Line 121

    Expression    : cross_table().header().game_guid() == game_graph().header().guid()
    Function    : CAI_Space::load
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ai_space.cpp
    Line        : 121
    Description    : graph doesn't correspond to the cross table

    Причина:

    game.graph не соответствует кросс-таблице одной из локаций.

    Лечение:

    Скорее всего - забыли закинуть в геймдату level.gct после правки в СДК и компиляции AI. Помните, level.gct нужно обновить для всех локаций, а не только для тех, которые подвергались правке.

    Line 122

    Expression : assertion failed
    
    Function : CTextureDescrMngr::LoadTHM
    File : E:\stalker\patch_1_0004\xr_3da\TextureDescrManager.cpp
    Line : 122
    Description : F->find_chunk(THM_CHUNK_TYPE)
    Причина:Имеются thm в папке текстуры.Их необходимо удалить.

    Line 124

    Expression    : !save_guid || (*save_guid == header().guid())
    Function    : CALifeSpawnRegistry::load
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_spawn_registry.cpp
    Line        : 124
    Description    : Saved game doesn't correspond to the spawn : DELETE SAVED GAME!

    Причина:

    Происходит при попытке загрузки сохранения, которое было сделано не другом "наборе" gamedata.

    Лечение:

    Если делали какие-то изменения собственноручно, то верните папку gamedata в первоначальный вид. В противном случае следуйте совету - удалите сохранение.

    Line 127

    Expression    : assertion failed
    Function    : CInventory::Take
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\Inventory.cpp
    Line        : 127
    Description    : CanTakeItem(pIItem)

    Причина:

    Странно, но данный вылет происходит только в моде Lost World Trops Of Doom с патчами ниже 3.5.2. Причиной этому якобы большой вес ноги псевдогиганта (inv_weight = 20.0).

    Лечение:

    Уменьшить вес ноги до 12.

    [hr]

    Expression : 0
    Function : attachable_hud_item::set_bone_visible
    File : D:\prog_repository\sources\trunk\xrGame\player_hud.cpp
    Line : 127
    Description : model [dynamics\weapons\wpn_usp45\wpn_usp45_hud.ogf] has no bone [wpn_scope]

    Причина:
    Отображение и сокрытие съемных аддонов на оружии в сталкере осуществляется при помощи отображения и сокрытия меша, привязанного к определенной кости в моделе. Существует три таких кости: wpn_scope, wpn_silencer и wpn_launcher. В данном случае мы попытались прописать оружию съемный прицел, но указанный худовый визуал не содержит кости wpn_scope.

    Лечение:
    Сделать аддон несъемным (либо отключить его вообще) путем редактирования конфига либо добавить в худовую модель указанную кость.

    Line 129

    Expression    : current_level.guid() == level_graph().header().guid()
    Function    : CAI_Space::load
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ai_space.cpp
    Line        : 129
    Description    : graph doesn't correspond to the AI-map

    Причина:

    game.graph и файл level.ai одной из локаций не соответствуют друг другу.

    Лечение:

    Вероятно также, что и у предыдущего вылета.

    Line 131

    Expression    : BI_NONE!=f_bones.back()
    Function    : P_build_Shell
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\PhysicsShell.cpp
    Line        : 131
    Description    : wrong fixed bone

    Причина:Одна из моделей на локации зафиксирована (посредством параметра fixed_bones в all.spawn) за неизвестную кость.

    Лечение:

    Найти и исправить ошибку.

    Line 132

    Expression    : Ran out of memory
    Function    : TW_LoadTextureFromTexture
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender\Texture.cpp
    Line        : 132
    Description    : D3DXCreateTexture( HW.pDevice, top_width,top_height, levels_exist,0,t_dest_fmt, D3DPOOL_MANAGED,&t_dest )

    Причина:

    Вылет из-за железа, а точнее - оптимизации ОС. Скорее всего проблема с драйверами.

    Лечение:

    Обновите драйвера на видеокарту. Снизьте графические настройки.

    Line 133

    Expression    : it!=WeatherCycles.end()
    Function    : CEnvironment::SetWeather
    File        : E:\stalker\patch_1_0004\xr_3da\Environment.cpp
    Line        : 133
    Description    : Invalid weather name.
    Arguments    : boloto

    Причина:

    Игра не находит идентификатор указанной погоды, в данном случае boloto, в файле environment.ltx.

    Лечение:

    Варианта два:
    1. Поменять погоду прописанную одной из локаций в файле game_maps_single.ltx;
    2. Добавить идентификатор погоды в секцию weathers, файле environment.ltx.

    Line 134

    Expression    : assertion failed
    Function    : CUIMMShniaga::CreateList
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIMMShniaga.cpp
    Line        : 134
    Description    : height

    Причина:

    Данная ошибка, как правило указывает на "криворучие" при создании меню игры. Например: ползунок который увеличивает опции меню при прокрутке задран очень высоко. И в большей степени относится к изменениям худа.

    Лечение:

    Смотри, где, что наковыряли и исправляйте.

    Line 136

    Expression    : motion_ID.valid()
    Function    : CKinematicsAnimated::ID_Cycle
    File        : E:\stalker\patch_1_0004\xr_3da\SkeletonAnimated.cpp
    Line        : 136
    Description    : ! MODEL: can't find cycle:
    Arguments    : waunded_1_idle_0

    Причина:Игра не нашла в какой-то модели анимацию с именем waunded_1_idle_0.

    Лечение:

    В первую очередь проверьте правильность написания имени анимации. Если в названием всё впорядке, тогда либо заменить/удалить модель, либо добавить/переименовать анимацию.

    Line 140

    Expression    : !phrase_dialog->m_PhraseVector.empty()
    Function    : CPhraseDialog::SayPhrase
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\PhraseDialog.cpp
    Line        : 140
    Description    : No available phrase to say, dialog[esc_dialog]

    Причина:

    В диалоге, в данном случае это esc_dialog, нет доступной для отображения фразы (например все заткнуты инфопоршенами и не одно из условий не выполнилось).

    Лечение:

    Убедиться в том, чтобы хотябы одна из фраз диалога будет доступна.

    Line 147

    Expression    : fatal error
    Function    : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetByIndex
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loader.h
    Line        : 147
    Description : <no expression>
    Arguments    : item by index not found in section game_relations, line communities

    Причина:

    В файле game_relations.ltx допущена ошибка. Вероятнее всего для параметра communities заданы неправильные значения.

    Лечение:

    Проверить данный файл на ошибки.

    Line 152

    Expression    : fatal error
    Function    : ALife::g_tfString2HitType
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\alife_space.h
    Line        : 152
    Description    : <no expression>
    Arguments    : Unsupported hit type!

    Причина:

    Для какого-то оружия не верно прописан тип нанoсимого урона.

    Лечение:

    Найти и исправить ошибку.

    Line 155

    Expression    : vertex || show_restrictions(m_object)
    Function    : CPatrolPathManager::select_point
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\patrol_path_manager.cpp
    Line        : 155
    Description    : any vertex in patrol path [sniper_3_walk] in inaccessible for object [stalker_0002]

    Причина:Какая то вершина (вейпоинт) пути sniper_3_walk стоит в неположенном месте (например не на аи-сетке). Объект stalker_0002 (в данном случае сталкер), который якобы двигался по пути sniper_3_walk, попал на эту точку, а заодно ушёл за аи-сетку. Этого движок не терпит.
    Тоже самое произойдет если координаты(вейпоинт) пути sniper_3_walk совпадет с координатами места? где нпс запрещено находится будь то рестриктор или аномалия в схеме обхода аномалий. Также этот вылет наблюдается при попытке отправить нпс за пределы места работ параметр out_rest = "имя_рестриктора", в файле загрузки работ гулага. Попробуйте любого сталкера из лагеря новичков отправить допустим к остановке получите этот самый вылет.

    Лечение:

    Найти и исправить ошибку.

    Line 156

    Expression    : fatal error
    Function    : mem_usage_impl
    File        : E:\stalker\sources\trunk\xrCore\memory_usage.cpp
    Line        : 156
    Description    : 
    Arguments    : bad node in heap

    Причина:

    Движковый вылет.

    Лечение:

    Говорят от него помогает установка третьего сервис пака на ХР.

    [hr]

    [error]Expression    : m_textures.find(def_texture_name)!=m_textures.end()
    [error]Function      : CUITextureMaster::FindItem
    [error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UITextureMaster.cpp
    [error]Line          : 156
    [error]Description   : wpn_bm16f_410
     
    
    stack trace:

    ТЧ, 1,0004. + Луа-расширение RvP. Такая необычная реакция на неправильно указанное имя текстуры в xml-описателе.

    [hr]

    См. также справку по вылетy Line 764

     

     

    Line 159

    Expression    : Ran out of memory
    Function    : Fvisual::Load
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender\FVisual.cpp
    Line        : 159
    Description    : HW.pDevice->CreateIndexBuffer(iCount*2,dwUsage,D3DFMT_INDEX16,D3DPOOL_MANAGED,&p_rm_Indices,0)

    Причина:

    Судя по логу - проблемы с видео памятью. Причины не известны.
    - Неверная установка мода.
    - Проблемы с драйверами видеокарты или Direct X.
    - Проблемы с операционной системой и прочее.


    Лечение:

    ?

    Line 162

    Expression    : xml_result
    Function    : CXML_IdToIndex<class CSpecificCharacter>::InitInternal
    File        : e:\stalker\sources\trunk\xr_3da\xrgame\xml_str_id_loader.h
    Line        : 162
    Description    : error while parsing XML file
    Arguments    : kolivan_trader.xml

    Причина:

    Игра не находит указанного файла.

    Лечение:

    Либо добавить файл, либо убрать регистрацию этого файла в конфигах, зачастую это либо system.ltx, либо localization.ltx.

    Line 164

    Expression    : ai().level_graph().valid_vertex_id(vertex->data().level_vertex_id())
    Function    : CPatrolPathManager::select_point
    File        : E:/stalker/patch_1_0004/xr_3da/xrGame/patrol_path_manager.cpp
    Line        : 164
    Description    : patrol path[mil_mercs_walker_3_walk], point on path [name07],object [ros_killer_respawn_230016]

    Причина:

    В игре даже пропатченной до версии 1.0005 всё ещё есть проблемы с маршрутами.

    Лечение:

    Обычно достаточно просто загрузить последний сейв и не сохраняться рядом с местами, где происходят такие вылеты.

     

    Дополнительное обсуждение и информация - в этом и этом постах.

    Line 166

    Expression    : I
    Function    : CInifile::Load
    File        : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
    Line        : 166
    Description    : Can't find include file:
    Arguments    : prefetch\prefetch.ltx

    Причина:

    Игра не может найти указанный файл по указанному пути.

    Лечение:

    Либо находите в .ltx файлах строку #include "prefetch\prefetch.ltx" и удаляйте, либо добавляйте сам файл.

    Line 167

    Expression    : header().graph_guid() == ai().game_graph().header().guid()
    Function    : CALifeSpawnRegistry::load
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\alife_spawn_registry.cpp
    Line        : 167
    Description    : Spawn doesn't correspond to the graph : REBUILD SPAWN!

    Причина:

    all.spawn не соответствует game.graph. Когда компилировали AI, видно, забыли пересобрать спавн.

    Лечение:

    Привести all.spawn и game.graph в соответствие.

    Line 171

    Expression    : I != levels().end()
    Function    : GameGraph::CHeader::level
    File        : e:\stalker\patch_1_0004\xr_3da\xrgame\game_graph_inline.h
    Line        : 171
    Description    : there is no specified level in the game graph : 96

    Причина:

    Вылет говорит о том, что объект попал в вертекс (96), которого нет на данной карте.

    Лечение:

    Если загрузка последнего сохранения не помагает, то можете попробовать уменьшить радиус A-Life, посредством параметра switch_distance, пройти проблемный участок, а затем вернуть первоначальное значение параметра.

    [hr]

    [error]Expression : I != levels().end()
    [error]Function : GameGraph::CHeader::level
    [error]File : e:\stalker\sources\trunk\xr_3da\xrgame\game_graph_inline.h
    [error]Line : 171
    [error]Description : there is no specified level in the game graph : 153

    Возникает при попытке взять имя уровня по его ID c помощью вызова alife():level_name(level_id), если число level_id не соответствует ни одному из существующих уровней.

    Line 172

    Expression    : xml_doc.NavigateToNode(path,index)
    Function    : CUIXmlInit::InitStatic
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIXmlInit.cpp
    Line        : 172
    Description    : XML node not found
    Arguments    : cs_inviz

    Причина:

    Игра не находит в каком-то .xml файле указанный элемент.

    Лечение:

    Найти и исправить ошибку.

    Line 175

    Expression    : fatal error
    Function    : CInifile::Load
    File        : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
    Line        : 175
    Description    : <no expression>
    Arguments    : Duplicate section 'wpn_noou_sig220_hud' found

    Причина:

    Продублирована указанная секция в .ltx файлах.

    Лечение:

    Найти и исправить ошибку.

    Line 178

    Expression : _valid( c )
    Function : CPhysicsShellHolder::correct_spawn_pos
    File : D:\prog_repository\sources\trunk\xrGame\PhysicsShellHolder.cpp
    Line : 178
    Description : object: wpn_val17095 model: dynamics\weapons\wpn_val\wpn_val

    Причина:
    Вы присвоили какому-то объекту визуал, у которого забыли сгенерировать шейпы. Как вариант - случайно были перепутаны мировая и худовая модели оружия. Имя объекта и сбойный визуал указаны в строке description

    Лечение:
    Есть несколько вариантов:
    а) Сгенерировать у указанной модели шейпы, используя Actor Editor (AE) из состава СДКб)заменить указанную модель на "заведомо рабочую"
    B) Найти, где в конфиге прописан неверный визуал, и исправить параметр на другой

    [hr]

    Expression : _valid( c )
    Function : CPhysicsShellHolder::correct_spawn_pos
    File : D:\prog_repository\sources\trunk\xrGame\PhysicsShellHolder.cpp
    Line : 178
    Desсription : object: wpn_ak1030024 model: dynamics\weapons\wpn_ak103\wpn_ak103

    Добавил новую модель (ПДА заменил). Запускаю игру, ловлю вылет: Все было проставлено правильно, СДК не бунтовал при экспорте... Делал на основе кости старого ПДА АПД.

    Все, спасибо, разобрался. Нужно было в СДК во вкладке Object поставить make progressive

    Line 184

    Expression    : m_pItemDataVector->end() == t_it
    Function    : CXML_IdToIndex<class CInfoPortion>::InitInternal
    File        : e:\stalker\sources\trunk\xr_3da\xrgame\xml_str_id_loader.h
    Line        : 184
    Description    : duplicate item id
    Arguments    : my_info_porsh

    Причина:

    Игра определила повторяющиеся id в .xml файле, чего быть не должно.

    Лечение:

    Найти и исправить ошибку.

    Line 185

    Expression    : fs
    Function    : CResourceManager::_CreateVS
    File        : E:\stalker\patch_1_0004\xr_3da\ResourceManager_Resources.cpp
    Line        : 185
    Description    : shader file doesnt exist
    Arguments    : d:\stalker\gamedata\shaders\r2\deffer_impl_flat.vs

    Причина:

    Либо не найден файл шейдера deffer_impl_flat.vs, либо проблема вся в том, что неправильно закомпилился шейдер, при компиляции уровня на качестве, более высоком чем Draft. Для ЗП (ЧН) это может ещё быть из-за отсутствия thm'ок для текстур терраина уровня.

    Лечение:

    В первом случае - проверить наличие файла. Во втором - нужно скачивать исправление шейдеров от товарища Haron.


    Справочник вылетов (Line 201 - Line 400)

    Line 212

    [error]Expression : fs
    [error]Function : CRender::LoadBuffers
    [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R2\r2_loader.cpp
    [error]Line : 212
    [error]Description : Could not load geometry. File 'level.geom?' corrupted.

    Решение: проверить файл level.geom

    Line 232

    Expression    : An undetermined error occurred
    Function    : CResourceManager::_CreateVS
    File        : E:\stalker\sources\trunk\xr_3da\ResourceManager_Resources.cpp
    Line        : 232
    Description    : _hr

    Причина:

    Проблемы с шейдером water.vs.

    Лечение:

    Удалите/переустановите папку gamedata\shaders.

    Line 236

    Expression    : assertion failed
    Function    : CSE_Abstract::Spawn_Read
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_Object_Base.cpp
    Line        : 236
    Description    : M_SPAWN==dummy16

    Причина:

    Неизвестна, но есть вот такой комментарий:

    Странно, даже не знаю, как такую ошибку можно скриптом вызвать. Суть этой проверки в том, что первое значение нетпакета для CSE_Abstract всегда должно быть 1. Но до этой части нетпакета скриптами не добраться никак. Соответственно и испортить там не получиться. Разве что можно грешить на фатально битый сейв.

    Лечение:

    Загружайте другое сохранение.

    Line 253

    FATAL ERROR
    
    [error]Expression : m_foot_bones[leg_type] != BI_NONE
    [error]Function : CStepManager::get_foot_position
    [error]File : D:\prog_repository\sources\trunk\xrGame\step_manager.cpp
    [error]Line : 253
    [error]Description : foot bone had not been set

    Конфиг какого-то монстра неправильно настроен - указаны несуществующие кости для ног.

    Line 254

    Expression    : assertion failed
    Function    : CPHSkeleton::RestoreNetState
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\PHSkeleton.cpp
    Line        : 254
    Description    : bone<obj->PHGetSyncItemsNumber()

    Причина:Проблема с .ogf моделью. Часто данный вылет получали в Солянке из-за кривой модели одного из бандитов.
    Лечение:

    Найти и заменить/исправить модель.

    Line 295

    Expression    : fatal error
    Function    : CRender::texture_load
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender\Texture.cpp
    Line        : 295
    Description    : <no expression>
    Arguments    : Can't find texture 'act\act_corp_monolit'

    Причина:Игра не может найти текстуру act_corp_monolit в папке textures\act.
    Лечение:

    проверьте правильность написания пути и убедитесь, что таковая текстура присутствует по указанному адресу.

    [hr]

    Expression    : !lst.empty()
    Function    : CHudItem::animGet
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\HudItem.cpp
    Line        : 295
    Description    : sprint

    Причина:

    Игра не находит в худ-модели какого-то оружия анимации sprint.

    Лечение:

    Если добавляли какое-то оружие, то причина в нём. Проверяйте соответствие заданных анимаций в конфиге и в модели оружия.

    Line 307

    Expression    : assertion failed
    Function    : CSkeletonX::_Load
    File        : E:\stalker\patch_1_0004\xr_3da\SkeletonX.cpp
    Line        : 307
    Description    : data->find_chunk(OGF_VERTICES)

    Причина:

    Движок хочет прочитать чанк, который по его мнению должен быть в модели, но не может найти его заголовок. В дикой природе не встречается, может произойти только из-за криворуких ковыряний модели в hex-редакторе. Возможно получить данный вылет при попытки напрямую подсунуть игре билдовские модели.

    Лечение:

    Если изменяли название текстуры какой-то модели, то убедитесь, что число символов в названии осталось неизменным.

    Line 309

    Expression    : Invalid call
    Function    : CRender::texture_load
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender\Texture.cpp
    Line        : 309
    Description    : D3DXGetImageInfoFromFileInMemory (S->pointer(),S->length(),&IMG)
    Arguments    : ...\gamedata\textures\ui\ui_icon_equipment.dds

    Причина:

    Размеры длины или ширины указанной текстуры не являются значением числа два в какой-то степени, например 512х512 или 2048х1024.

    Лечение:

    Исправить размеры текстуры при помощи любого удобного графического редактора.

    Line 322

    Expression : *read_path.c_str()=='$'
    Function : CLocatorAPI::LoadArchive
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 322
    Description : %ошибочное_значение_entry_point%

    При запаковке в параметре entry_point секции хидера была допущена опечатка. Начинаться этот параметр всегда должен с одной из "игровых" директорий, определенных в файле fsgame.ltx, то есть первым символом в этом параметре всегда должен идти $

    Line 323

    Expression    : fatal error
    Function      : out_of_memory_handler
    File          : E:\priquel\sources\engine\xrCore\xrDebugNew.cpp
    Line          : 323
    Description   : <no expression>
    Arguments     : Out of memory. Memory request: 4118772 K

    Предполагаемая причина: модель оружия, запакованная с ошибкой в db-архив.

    Лечение: не запаковывать модели оружия, или определить, какие именно модели некорректно запаковываются.

    Line 325

    Expression : count==1
    Function : CLocatorAPI::LoadArchive
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 325
    Description : %ошибочное_значение_entry_point%

    "Корень" из параметра entry_point извлекается движком при помощи функции sscanf. При этом используется шаблон %[^\]s. Вылет произошел из-за того, что возвращённое данной функцией значение (равное числу найденных вхождений) отлично от 1.

    Line 330

    Expression    : SG
    Function    : CRender::model_CreateParticles
    File        : E:\stalker\patch_1_0004\xr_3da\xrRender_R2\r2.cpp
    Line        : 330
    Description    : Particle effect or group doesn't exist
    Arguments    : hit_fx\hit_water_00

    Причина:

    Не найдена система частиц (партикл), в данном случае этоhit_water_00 в директории hit_fx файла particles.xr.

    Лечение:

    Убедитесь, что Вы используете нужный particles.xr, а также проверьте правильность написания имени и пути до партикла.

    [hr]

    Expression    : Invalid call
    Function    : CHW::CreateDevice
    File        : E:\stalker\patch_1_0004\xr_3da\HW.cpp
    Line        : 330
    Description    : R

    Причина:

    Причины неизвестны. Большинство, кто получали данный вылет, играли на видеокартах от nVidia - грешили на них.

    Лечение:

    Попробуйте установить драйвера для видеокарты на более раннюю версию.

    Line 333

    Expression    : !m_DefaultCharacters.empty()
    Function    : CSE_ALifeTraderAbstract::specific_character
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_Objects_ALife_Monsters.cpp
    Line        : 333
    Description    : no default specific character set for class
    Arguments    : esc_dan

    Причина:

    Профилю НПС, в данном случае esc_dan, не соответствует указанный класс в npc_profile.xml.

    Лечение:

    проверьте правильность написании имён профиля и класса. Добавьте в файл npc_profile.xml соответствие классу, если такового нет.

    Line 336

    Expression    : fatal error
    Function    : out_of_memory_handler
    File        : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
    Line        : 336
    Description    : 
    Arguments    : Out of memory. Memory request: 55965 K

    Причина:

    Нехватка оперативной памяти.
    Вылет происходит в основном при переходе из одной локации в другую. Потому что STALKER игра крайне требовательная к ресурсам, она перегружена даже в чистом виде, и в особенности некоторые карты Кордон, Тёмная Долина, Армейские Склады, Рыжий Лес, Припять, Юпитер… Текстуры новых костюмов оружия не должны превышать 2 731 КБ желательно 1 366 КБ. При этом совершенно НЕ ИМЕЕТ ЗНАЧЕНИЯ сколько у вас оперативной памяти! Для процессов 32-битной версии Windows доступная память ограничена.

    Лечение:

    Снизьте графические настройки игры.

     

    См. также справку по вылетy Line 764

    Line 337

    Expression    : assertion failed
    Function    : CLocatorAPI::ProcessArchive
    File        : E:\stalker\patch_1_0004\xrCore\LocatorAPI.cpp
    Line        : 337
    Description    : hdr

    Причина:

    До конца не ясны.

    Лечение:

    В папке gamedata/texstures/ui, имеется скрытый системный файл Thumbs.db, его нужно удалить. Если ошибка повторяется, то зайдите в меню Пуск -> Панель управления -> Оформление и темы -> Свойства папки -> Вид (ХР) и поставьте галочку "Не кешировать эскизы". Этот файл и есть тем кешем эскизов и пересоздастся заново (возможно уже без проблем для игрока).

    Line 340

    Expression : 0
    Function : CLocatorAPI::LoadArchive
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 340
    Description : unsupported

    Архив не поддерживается игрой. Вероятно, версия не совпадает с требуемой

    Line 342

    Expression    : fatal error
    Function    : CInifile::r_section
    File        : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
    Line        : 342
    Description    : <no expression>
    Arguments    : Can't open section 'bandage_test_kick1'

    Причина:

    Игра не может найти секцию. Это может быть предмет, нпс и многое другое.

    Лечение:

    проверьте правильность написании имени секции. Либо добавьте соответствующую секцию в один из файлов .ltx читаемые игрой.

    Line 349

    Expression    : sz<(tgt_sz-1)
    Function    : IReader::r_string
    File        : E:\stalker\patch_1_0004\xrCore\FS.cpp
    Line        : 349
    Description    : Dest string less than needed.

    Причина:

    Достаточно редкий вылет. Одной из причин является повреждённый user.ltx.

    Лечение:

    Если вы видите данную ошибку, обратите внимание на то, какой файл был обработан последним, до строки FATAL ERROR, если это user.ltx - удаляйте его и запускайте игру, она сама создаст его по новой, правда уже со стандартными настройками.

    Line 352

    Expression    : fatal error
    Function    : CInifile::r_string
    File        : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
    Line        : 352
    Description    : 
    Arguments    : Can't find variable ammo_mag_size in [wpn_addon_grenade_launcher]

    Причина:

    Не найден параметр, в данном случае ammo_mag_size, в секции указанного предмета (wpn_addon_grenade_launcher).

    Лечение:

    Правильно добавить недостающий параметр.

    [hr]

    [error]File : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
    [error]Line : 352
    [error]Description : <no expression>
    [error]Arguments : Can't find variable строка in [секция]

    Попытка чтения несуществующей переменной вида ini:r_string( секция, строка ) (или r_float, r_bool и т.д.)

    1. Убедиться, что переменная действительно зачем-то нужна.
    2. Исправить код на
    local v -- или иное
    if ini:section_exist( секция ) and ini:line_exist( секция, строка ) then
    v = ini:r_string( секция, строка )
    else более вменяемая диагностика
    end

    3. Поправить конфиг при необходимости (см. п1)

    Line 356

    Expression    : Ran out of memory
    Function    : CRender::texture_load
    File        : E:\stalker\sources\trunk\xr_3da\xrRender\Texture.cpp
    Line        : 356
    Description    : D3DXCreateTextureFromFileInMemoryEx ( HW.pDevice,S->pointer(),S->length(), D3DX_DEFAULT,D3DX_DEFAULT, IMG.MipLevels,0, IMG.Format, D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, D3DX_DEFAULT, 0,&IMG,0, &T_sysmem )
    Arguments    : ...\gamedata\textures\wpn\wpn_crosshair_bino.dds

    Причина:

    Проблема в железе, скорее всего в видеокарте.

    Лечение:

    Попробуйте установить другую версию драйвера видеокарты. Снизьте графические настройки в игре.

    Line 359

    * Log file has been saved successfully!
    * Saving spawns...
    * Saving objects...
    * [x-ray]: crt heap[397281 K], process heap[1220448 K]
    * [x-ray]: economy: strings[60232 K], smem[29450 K]
    
    FATAL ERROR
    
    Expression    : fatal error
    Function    : _out_of_memory
    File        : E:\stalker\patch_1_0004\xrCore\xrDebugNew.cpp
    Line        : 359
    Description    : <no expression>
    Arguments    : Out of memory. Memory request: 8192 K

    Причина:

    Судя из того, что вылет происходит при сохранении, и фигурирует число 8192, то можно предположить, что вылет следствие переполнения net-packet'а, то беж ошибка в скриптах. А может и игра где-то проглючила...

    Лечение:

    Попробуйте загрузить последнее сохранение. Если вылет стабильный - ищите ошибку в скриптах.

    Line 360

    Expression : assertion failed
    Function : CLocatorAPI::LoadArchive
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 360
    Description : hdr

    Игровой архив поврежден


    Справочник вылетов (Line 401 -)

    Line 404

    Expression    : assertion failed
    Function    : CActorCondition::UpdateTutorialThresholds
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\ActorCondition.cpp
    Line        : 404
    Description    : ai().script_engine().functor<LPCSTR>(cb_name,fl)

    Причина:

    В _g.script есть набор колбеков, вызываемые движком. Это on_actor_psy, on_actor_radiation и т.д. Так вот вылет говорит о том, что один из таких колбеков не был найден.

    Лечение:

    Верните колбеки на место или верните дефолтный _g.script.

    Line 406

    Expression : assertion failed
    Function : CLocatorAPI::archive::open
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 406
    Description : hSrcFile!=INVALID_HANDLE_VALUE

    При инициализации архива игра использует функцию WinAPI CreateFileA, при этом вызов выглядит примерно так:

    hSrcFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0);

    Если при этом функция вернула значение, равное INVALID_HANDLE_VALUE (т.е. вызов завершился неудачей), то возникает данный вылет. Наиболее вероятная причина - у вас отсутствуют права на чтение файла.

    Line 408

    Expression : assertion failed
    Function : CLocatorAPI::archive::open
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 408
    Description : hSrcMap!=INVALID_HANDLE_VALUE

    После успешного открытия файла-архива, игра пытается спроецировать его в память. Для этого используется функция CreateFileMapping, вызов которой происходит следующим образом:

    hSrcMap = CreateFileMapping(hSrcFile, NULL, PAGE_READONLY, 0,0, NULL)

    Вылет происходит из-за того, что попытка проецирования файла закончилась неудачно, т.е. функция возвратила значение =INVALID_HANDLE_VALUE. Возможно, стоит увеличить размер файла подкачки.

    Line 410

    Expression    : assertion failed
    Function    : CUILine::GetLength_inclusiveWord_1
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UILine.cpp
    Line        : 410
    Description    : pos.word_1.exist()

    Причина:

    Это один из "старейших" вылетов в Сталкере ТЧ. В каком-то ui файле .xml динамично образуются "пустые" строки. Также не лишним будет проверить .xml файлы на наличие синтаксических ошибок или пустую строку текста или даже неправильный язык кодирования.
    Также данный вылет возможен, когда в сообщение делаешь цветной текст и переносишь строку. Пример:

    "Какой-нибудь текст.%c[255,0,200,0]\\nСталкер."

    Если это произошло, "передвиньте" символ переноса следующим образом:

    "Какой-нибудь текст.\\n%c[255,0,200,0]Сталкер."

    И ещё, такой вылет, как говорили давно разработчики, связан с использованием "трейнеров".

    [hr]

    Expression : assertion failed
    Function : CLocatorAPI::archive::open
    File : D:\prog_repository\sources\trunk\xrCore\LocatorAPI.cpp
    Line : 410
    Description : size>0

    Вот так сюрприз - архив оказался пустым! То есть совсем пустым - размер файла в байтах равен нулю. Будьте в следующий раз аккуратнее с клавишей Delete и не открывайте без необходимости файлы для записи ;).
    Переустановка игры должна исправить положение.

    Line 422

    Expression : sz<(tgt_sz-1)
    Function : IReader::r_string
    File : E:\priquel\sources\engine\xrCore\FS.cpp
    Line : 422
    Description : Dest string less than needed.

    Я бы не сказал, что вылет достаточно редкий. Причина его - движок пытается скопировать исходную строку в буфер, а размер этого буфера меньше длины копируемой строки. Рано или поздно возникает у тех, кто любит писать в одну строку конфига ОЧЕНЬ много (больше 4К) символов. Например, он прекрасно знаком любителям хитроумных скриптов на подмену секций оружия, которые запихивают все их названия в mp_ranks

    Line 424

    [error]Expression : assertion failed
    [error]Function : CResourceManager::_CreateTexture
    [error]File : D:\prog_repository\sources\trunk\Layers\xrRender\ResourceManager_Resources.cpp
    [error]Line : 424
    [error]Description : _Name && _Name[0]

    Причина: может быть связанно с геометрией уровня (частично это подтверждается тем, что Свалка и Агропром (которые базируются на ЧН версии) работают сполне нормально, а вот Тёмная Лощина и Кордон (которые "вытянуты" из ТЧ) не запускаются и игра вылетает с этим логом).

    Решение: Сменить рендер. Я такой вылет получил на DirectX 9.0c, на 9.0 и статическом освещении у меня его не было.

    Line 426

    Expression    : xml_doc.NavigateToNode(path,index)
    Function    : CUIXmlInit::InitDragDropListEx
    File        : E:\stalker\sources\trunk\xr_3da\xrGame\ui\UIXmlInit.cpp
    Line        : 426
    Description    : XML node not found
    Arguments    : dragdrop_knife

    Причина:

    Данный вылет, в отличии от аналогичного 172, говорит более конкретно - не хватает элемента слота, в данном случае для ножа, в файле inventory_new(16).xml. Раньше вылет был наверно следствие кривых рук, уж простите, сейчас же с появлением движковых правок добавляющих новые слоты вполне естественен.

    Лечение:

    Добавьте недостающий элемент по аналогии с имеющимися.

    Line 462

    Expression    : data
    Function    : CVirtualFileReader::CVirtualFileReader
    File        : E:\stalker\sources\trunk\xrCore\FS.cpp
    Line        : 462
    Description    : ...\gamedata\textures\wpn\wpn_gauss.dds
    Arguments    : Not enough storage is available to process this command

    Причина:

    Нехватка памяти для обработки указанной текстуры. Вместо текстуры может быть практически любой файл: звук, модель, all.spawn, файл геометрии локации и т.д.

    Лечение:

    Попробуйте загрузить последнее сохранение. Если не помогает - снизьте графические настройки игры.

    Line 493

    Expression    : Ran out of memory
    Function      : CRender::texture_load
    File          : D:\prog_repository\sources\trunk\Layers\xrRenderDX10\dx10Texture.cpp
    Line          : 493
    Description   : D3DX11CreateTextureFromMemory ( HW.pDevice,S->pointer(),S->length(), &LoadInfo, 0, &pTexture2D, 0 )
    Arguments     : d:\s.t.a.l.k.e.r. - Зов Припяти\gamedata\textures\veh\veh_gaz_22.dds

    Возникает рандомно и жалуется на любые текстуры, то бишь не на какую-нибудь конкретную свежедобавленную, а вообще на любые.

    Причина: ?

    Решение: ?

     

    Есть подозрение, что движок вылетает при построении мипмапов (mipmaps - масштабных копий) текстур. Чтобы уменьшить кол-во занимаемой видеопамяти (и нагрузку на движок в целом) крайне рекомендуется делать текстуры с мипмапами. Даже если текстура одной размерности (н-р 512*512) без них, все равно движок строит масштабные копии сам (256*256 ... и вплоть до 1*1). Попытки оптимизации текстур без учета этого, приводят к существенному росту нагрузки, вплоть до вылетов...

    Line 502

    Expression : fatal error
    Function : CInifile::r_section
    File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
    Line : 502
    Description :
    Arguments : Can't open section 'up_sect_fifthc_ak74u'. Please attach [*.ini_log] file to your bug report

    Достаточно хитрая разновидность вылета в ЧН\ЗП, возникающая при попытке добавления нового апгрейда. Можно очень долго сидеть и чесать голову, почему из двух секций, расположенных рядом в одном файле, одна читается, а вторая - нет.

    Лечение:
    По умолчанию в ЧН/ЗП все конфиги апгрейдов необходимо инклудить в две(!) ветки. Первая берет начало в system.ltx, вторая - в item_upgrades.ltx.
    Кроме того, можно заставить игру обходиться без инклудов файлов во вторую ветку. Для этого в файле inventory_upgrades.script необходимо найти строку

    local char_ini = ini_file("item_upgrades.ltx")

    и заменить её на

    local char_ini = system_ini()

    Line 508

    Expression    : 0
    Function    : CUICellContainer::FindFreeCell
    File        : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIDragDropListEx.cpp
    Line        : 508
    Description    : there are no free room to place item

    Причина:

    Попытка вставить в слот предмет который в этот слот не влезает, т.е. у предмета inv_grid_width и inv_grid_height больше чем слот.

    Лечение:

    Найти и исправить ошибку.

    Line 525-527

    Expression    : bone_id!=BI_NONE
    Function    : SArtefactDetectorsSupport::SetVisible
    File        : D:\prog_repository\sources\trunk\xrGame\Artefact.cpp
    Line        : 525
    Description    : link

    Причина:

    Неправильно указано имя кости для артефакта.

    Лечение:

    В artefacts.ltx, в секции af_base есть параметр particles_bone=link. Это имя косточки, которая принимается за центр при проигрывании партикла. Если кость в артефакте называется по иному, например joint2, и это не указанно в секции нового арта, которая наследуется от базовой и подразумевает естественно наличие link, получаем вылет. Решается конвертированием модели арта в .object, просмотром в SDK и выяснением имени косточки с занесением в конфиг. Если "не дружите" с SDK, то можете воспользоваться вот этим perl-скриптом: ссылка, распаковываете архив и кидаете .ogf файл на батник, появиться текстовый файл с весьма подробным описанием модели, где среди прочего будут имена костей.

    [hr]

    Expression : npos != comma1_pos
    Function : CUILines::GetColorFromText
    File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
    Line : 525
    Description : CUISubLine::GetColorFromText -- can't find first comma
    Expression : npos != comma2_pos
    Function : CUILines::GetColorFromText
    File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
    Line : 526
    Description : CUISubLine::GetColorFromText -- can't find second comma
    Expression : npos != comma3_pos
    Function : CUILines::GetColorFromText
    File : E:\priquel\sources\engine\xrGame\ui\UILines.cpp
    Line : 527
    Description : CUISubLine::GetColorFromText -- can't find third comma


    Фактически, это - 3 разновидности одного вылета. Начать надо с того, что в игре существует возможность назначения цвета тексту путем специальной служебной последовательности символов внутри этого текста. Эта последовательность имеет вид %с[color], где color может быть либо текстовым названием цвета, либо четырьмя разделенными запятыми числами, задающими цвет в формате RGBA. Если цвет задан некорректно - то мы имеем счастье наблюдать один из вышеуказанных вылетов.

    Лечение:
    Найти некорректно заданный цвет, и исправить

    P.S.Вообще, у этого вида вылетов долгая и захватывающая история. Как оказалось, почти ВСЕ строки в игре подвержены подобному "разукрашиванию". Не стали исключением и строки сообщений, отправляемые в чат игроками в мультиплеере. Из-за этого любой игрок получил возможность введением специальным образом заданного сообщения устроить на сервере вылет у всех игроков сразу.

    Line 589

    Expression    : assertion failed
    Function    : CKinematicsAnimated::Load
    File        : E:\stalker\sources\trunk\xr_3da\SkeletonAnimated.cpp
    Line        : 589
    Description    : set_cnt<MAX_ANIM_SLOT

    Причина:

    В SDK в меню Motion в поле Motion reference присоединили больше массивов анимации, чем поддерживает движок. Для ТЧ это 3 массива, для ЧН/ЗП - 4 или 5( не проверено).

    Лечение:

    Исправить количество прописанных файлов анимации у моде