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

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

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

Этот раздел можно пропустить, т.к. для переспавна не важно состояние НПС, жив, мертв или сгинул-потерялся - по 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 - функция везде одна и та же..

---===---

Категории
×
×
  • Создать...