1. hmtoggle_plus1Убираем у механиков взаимоисключающиеся улучшения

Будем ломать СИГ550

 

Файл: \configs\weapons\upgrades\w_sig550_up.ltx

 

В конце есть описания апгрейдов из элементов:

 

[up_gr_ab_sig550]

elements = up_a_sig550, up_b_sig550

 

[up_gr_cd_sig550]

elements = up_c_sig550, up_d_sig550

 

[up_gr_ef_sig550]

elements = up_e_sig550, up_f_sig550

 

[up_gr_gh_sig550]

elements = up_g_sig550, up_h_sig550

 

Я понял, что либо первый, либо второй. Надо убрать либо-либо! ОК. Добавляем свои схемы:

 

[up_gr_ab_sig550]

elements = up_a_sig550

[up_gr_ba_sig550]

elements = up_b_sig550

 

[up_gr_cd_sig550]

elements = up_c_sig550

[up_gr_dc_sig550]

elements = up_d_sig550

 

[up_gr_ef_sig550]

elements = up_e_sig550

[up_gr_fe_sig550]

elements = up_f_sig550

 

[up_gr_gh_sig550]

elements = up_g_sig550

[up_gr_hg_sig550]

elements = up_h_sig550

 

Ну вот. либо-либо - нет!

А теперь надо наши, вновь введённые схемы, разрешить для СИГа.

 

Открываем: configs\weapons\w_sig550.ltx и добавляем:

 

upgrades = up_gr_ab_sig550, up_gr_ba_sig550, up_gr_cd_sig550, up_gr_dc_sig550, up_gr_ef_sig550, up_gr_fe_sig550, up_gr_gh_sig550, up_gr_hg_sig550, up_gr_i_sig550, up_gr_j_sig550, up_gr_k_sig550

 

Апгрейдим СИГ до посинения.

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

 

2. hmtoggle_plus1Как изменить время уборки трупов?

в папке: configs\creatures\

 

monsters.ltx:

 

[monsters_common]

corpse_remove_game_time_interval = 36 ; in hours

stay_after_death_time_interval = 36 ; in hours

 

stalkers.ltx:

 

[stalkers_common]

corpse_remove_game_time_interval = 280

stay_after_death_time_interval = 280

 

3. hmtoggle_plus1Как отключить убирание оружие на базах

файл: scripts\bind_stalker.script

 

и меняешь тут self.object:hide_weapon() на self.object:restore_weapon()

 

-- Апдейт прятание оружия игрока в зоне sr_no_weapon

if check_for_weapon_hide_by_zones() == true then

--printf("weapon_hide1 = [%s]", tostring(weapon_hide))

if self.weapon_hide == false then

--printf("PL:HIDE_W1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))

self.object:hide_weapon()

self.weapon_hide = true

--printf("PL:HIDE_W2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))

end

else

--printf("weapon_hide3 = [%s]", tostring(weapon_hide))

if self.weapon_hide == true then

--printf("PL:RESTORE_W1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))

self.object:restore_weapon()

self.weapon_hide = false

--printf("PL:RESTORE_W2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))

end

end

 

4. hmtoggle_plus1Изменяем снаряжение выдаваемое Сусловым

Изменяем\Добавляем\Удаляем строчки по аналогии в функции tutorial_give_equipment файла dialogs_marsh.script

 

5. hmtoggle_plus1Где прописывается максимальное число сквадов на одной локации у одной группировки

В папке configs\misc файлы типа faction_<группировка>.ltx

 

6. hmtoggle_plus1Респавн сквадов

В файле sim_faction.script после строк:

 

cse_alife_smart_zone.update(self)

    --printf("Faction %s update, exp [%s]", self.player_name, tostring(self.current_expansion_level))

    self:calculate_absolute_power()

 

Вставляешь в зависимости от задачи:

 

1.Респавн случайного сквада в случайном месте (по всей зоне)

 

--Респавн случайного сквада в случайном месте (по всей зоне)

    if(db.actor) and self.board.simulation_started and (last_spawn_time_my == nil or game.get_game_time():diffSec(last_spawn_time_my) >= 5*60)

      then

        local board = sim_board.get_sim_board()

     local player_name = "csky"    

     local player = board.players[player_name]

     local spawn_smart = self.board:get_spawn_smart(self)

     if spawn_smart ~= nil then    

     local smart_name = spawn_smart:name()

       

      --' Спауним

      if xr_conditions.smart_squad_population(nil,nil,{player_name,smart_name,1}) then

       local squad = self.board:create_squad(player.player_name, sim_squad_generic.sim_squad_generic, spawn_smart)

       self.board:enter_smart(squad, spawn_smart.id)

       squad:update()

       news_manager.send_tip( db.actor, "Сквад заспавнен", nil, nil, 10000 )

 

       --' Пересчитываем Team, Squad, Group

       for k,v in pairs(squad.squad_npc) do

        local obj = alife():object(k)

        self.board:setup_squad_and_group(obj)

       end

       squad:refresh()

       last_spawn_time_my = game.get_game_time()

      end

     end    

    end

 

где:

5*60 - интервал времени между спавнами в игровых сек.,

player_name - имя группировки.

 

2.Респавн случайного сквада в случайном месте (на спавн смартах группировки)

 

--Респавн случайного сквада в случайном месте (на спавн смартах группировки)

    if(db.actor) and self.board.simulation_started and (last_spawn_time_my == nil or game.get_game_time():diffSec(last_spawn_time_my) >= 5*60)

      then

        local board = sim_board.get_sim_board()

     local player_name = "csky"    

     local player = board.players[player_name]

     local spawn_smart = player.board:get_spawn_smart(player)

     if spawn_smart ~= nil then    

     local smart_name = spawn_smart:name()

       

      --' Спауним

      if xr_conditions.smart_squad_population(nil,nil,{player_name,smart_name,1}) then

       local squad = self.board:create_squad(player.player_name, sim_squad_generic.sim_squad_generic, spawn_smart)

       self.board:enter_smart(squad, spawn_smart.id)

       squad:update()

       news_manager.send_tip( db.actor, "Сквад заспавнен", nil, nil, 10000 )

 

       --' Пересчитываем Team, Squad, Group

       for k,v in pairs(squad.squad_npc) do

        local obj = alife():object(k)

        self.board:setup_squad_and_group(obj)

       end

       squad:refresh()

       last_spawn_time_my = game.get_game_time()

      end

     end    

    end

 

3.Респавн случайного сквада в определенном месте (по имени смарта)

 

--Респавн случайного сквада в определенном месте (по имени смарта)

    if(db.actor) and self.board.simulation_started and (last_spawn_time_my == nil or game.get_game_time():diffSec(last_spawn_time_my) >= 5*60)

      then

        local board = sim_board.get_sim_board()

     local smart_name = "mar_smart_terrain_csky_respawn"

     local spawn_smart = board.smarts_by_names[smart_name]

     if spawn_smart ~= nil then    

     local player_name = "csky"    

     local player = board.players[player_name]

      --' Спауним

      if xr_conditions.smart_squad_population(nil,nil,{player_name,smart_name,1}) then

       local squad = self.board:create_squad(player.player_name, sim_squad_generic.sim_squad_generic, spawn_smart)

       self.board:enter_smart(squad, spawn_smart.id)

       squad:update()

       news_manager.send_tip( db.actor, "Сквад заспавнен", nil, nil, 10000 )

 

       --' Пересчитываем Team, Squad, Group

       for k,v in pairs(squad.squad_npc) do

        local obj = alife():object(k)

        self.board:setup_squad_and_group(obj)

       end

       squad:refresh()

       last_spawn_time_my = game.get_game_time()

      end

     end    

    end

 

где: smart_name - имя смарта для спавна отрядов.

 

4.Респавн скриптового сквада в определенном месте (по имени смарта)

 

--Респавн скриптового сквада в определенном месте (по имени смарта)

    if(db.actor) and self.board.simulation_started and (last_spawn_time_my == nil or game.get_game_time():diffSec(last_spawn_time_my) >= 5*60*60)

     then

     local smart_name = "mar_smart_terrain_csky_respawn"

     local squad_id = "mar_csky_attack"

     local player_name = "csky"

     if xr_conditions.smart_squad_population(nil,nil,{player_name,smart_name,1}) then

      xr_effects.create_squad(nil,nil,{squad_id,smart_name})

      news_manager.send_tip( db.actor, "Сквад заспавнен", nil, nil, 10000 )

      last_spawn_time_my = game.get_game_time()

     end

    end

 

где: squad_id - идентификатор сквада для спавна.

 

7. hmtoggle_plus1Прицелы в SGM CS

gamedata\configs\ui\scopes.xml и scopes_16.xml -- описания текстур прицелов, для стандартных и широкоформатных мониторов соответсвенно

gamedata\configs\ui\textures_descr\ui_ingame.xml --

gamedata\configs\weapons\w_addons.ltx -- аддоны

gamedata\configs\text\rus\st_items_weapons.xml - описания и названия прицелов