1. hmtoggle_plus1Сделал новую группировку, поставил ее Волку, а Волк уходит...

Нужно прописать новую группировку для привязки к гулагам на уровнях.

Для этого в файле scripts\gulag_escape.script после строки:

if gulag_type == "esc_lager" then

отредактировать следующую строку таким образом:

return npc_community == "stalker" or npc_community == "<новая группировка>"

 

2. hmtoggle_plus1Как указать для брони новую иконку ГГ в полный рост

Иконки ГГ в полный рост хранятся в файле ui_icons_npc.dds

Описатели иконок находятся в файле ui_icons_npc.xml

И сама ссылка на иконку брони будет в параметре full_icon_name брони

 

3. hmtoggle_plus1Как убрать сюжет

Вариант 1:

Убрать выдачу задания на убийство Стрелка

 

Файл gamedata\config\gameplay\info_portions.xml убрать строку <task>storyline_eliminate_gunslinger</task>

 

Вариант 2:

Убрать выдачу инфопорции на старт сюжета

 

Файл config\scripts\bind_stalker.script закоментировать код:

 

if not has_alife_info("storyline_actor_start") and

      (level.name() == "l01_escape")

   then

    self.object:give_info_portion("storyline_actor_start")

    _G.g_start_avi = true

    printf("*AVI* RUN START AVI")    

end

 

4. hmtoggle_plus1Добавить фриплей

В файле script/xr_effects.script ищем строку:

function after_credits(actor, npc)

и ниже находим:

execute("disconnect")

Меняем "disconnect" например на hud_crosshair 1 и все

Теперь добавляйте точки перехода (например на Припять) и все freeplay работает.

 

5. hmtoggle_plus1Как в ТТ2 увеличить радиус действия гравипушки

Скрипт scripts\bind_ggun.script в строках:

 

if not dist then dist = 13 end

 

и

 

self:capture(0.999,13)

 

Заменить 13 на желаемую дистанцию.

 

6. hmtoggle_plus1Как в ТТ2 ограничить подбор предметов гравипушки только на арты

Скрипт scripts\bind_ggun.script строку №244:

 

ggunable[id] = true

 

заменить на такую конструкцию:

 

if string.find(cobj:section(), "af_") then

      ggunable[id] = true

      end

 

Теперь по русски: Если спавн-секция объекта содержит в своем названии подстроку "af_" (характерно для артефактов), то только тогда id объекта помещается в таблицу предметов которые гравипушка способна поднять. Однако в ТТ2 не все артефакты в названии секции имеют такую строку, поэтому условие придется расширять:

 

if (<Первое условие: содержит "af_">) or (<Второе условие>) or (<Третье условие>)... then

 

7. hmtoggle_plus1Скрипт показа всех артов на локации (ТТ2)

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

 

local colichestvo = 0

     for id=1,65534 do

      local cobj = level.object_by_id(id)

      if cobj then  -- есть онлайновый объект

      local ps = cobj:get_physics_shell()

       if ps then -- есть оболочка

        if string.find(cobj:section(), "af_") then

         colichestvo = colichestvo + 1

        end

       end

      end

     end

    amk.send_tip(tostring(colichestvo),"Артефактов на локации",0,10,"gen_info")

 

Теперь только вставить готовый скрипт, ну например в scripts\ui_main_menu.script в такой конструкции:

 

if    dik == DIK_keys.DIK_S then

    --    self:OnButton_load_spawn()

     

    elseif  dik == DIK_keys.DIK_F6 then  

     <Описанный выше скрипт>

 

Получиться, что при нажатии Esc-F6-Esc Будет выдаваться ссобщение с количеством артов на локации.

 

8. hmtoggle_plus1Стрелок всегда мог лечь спать (ТТ2)

Для этого в файле scripts\amk_mod.script функция test_for_need_sleep_matras должна принять такой вид:

 

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

 

При этом ГГ сможет спать в спальном мешке в любое время, за исключением случаев когда рядом противник.

 

9. hmtoggle_plus1Как изменить силу выбросов (АМК)

Файл amk_hideouts.script

Таблица blowout_damages - коэффициенты силы хитов от выброса по локациям.

Таблица blowouts_phantoms - настройки фантомов при выбросе на локации

Таблица blowout_types - тип выброса на локации 0 - обычный, 1 - подземный, 2 - выключен до фриплея.

 

10. hmtoggle_plus1Метка на предмет (ТТ2)

В скрипте scripts\ui_main_menu.script после строк:

 

-- раскоментируем и заоодно включим убранное спавн меню    

      if    dik == DIK_keys.DIK_S then

      --    self:OnButton_load_spawn()

 

Нужно добавить код:

 

--Метка на предмет в пределах локации      

      elseif  dik == DIK_keys.DIK_F8 then

         for id=1,65534 do

          local cobj = level.object_by_id(id)

          if cobj then  -- есть онлайновый объект

           if string.find(cobj:section(), "labx10_computer") then

           amk.send_tip("Есть!!!","Есть ли предмет на локации",0,20,"gen_info")

           level.map_add_object_spot_ser(id, "red_location", "Цель поисков")    

           end

          end    

         end

 

Нажать в игре Esc-F8-Esc и появиться метка на предмет и сообщение что на локации найден предмет. После подбора предмета метка исчезнет.

- Где labx10_computer - имя секции искомого предмета.

 

11. hmtoggle_plus1Динамические аномалии (ТТ2\АМК)

Для начала неплохо бы сделать, чтобы аномалии меняли свою конфигурацию после выброса, а не по таймеру collect_anomalies_info. Для этого в файле amk.script нужно сделать так:

 

if select_string=="blowout" then

    mod_call("Blowout_pp",params_string)

    amk_anoms.collect_info()

  end

 ..........

  if select_string=="collect_anomalies_info" then

    --amk_anoms.collect_info()

  end

 

Теперь функция вызывающая удаление старых аномалий и спавн новых будет вызываться после вызова функции выброса. Затем нужно вместо удаляемых аномалий заспавнить артефакты. Это нужно сделать в файле amk_anoms.script функция collect_info:

 

if status=="" or status=="del" then

       -- удаляем помеченные аномалии, и несюжетные стандартные

      alife():release(sobj,true)

     elseif status=="on" then

      if on_anoms_per_level[map]==nil then

       on_anoms_per_level[map]={}

      end

      table.insert(on_anoms_per_level[map],i)

     end

 

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

 

12. hmtoggle_plus1Где отредактировать стартовый набор ГГ

В all.spawn секция actor