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

Скриптование


Svoboда

Рекомендуемые сообщения

Солянка-2016.У меня убили Киценко, главного кормильца и грозу собак.Также ушли 2 часовых и оставили блокпост назащищенным.Я хочу написать скрипт, чтобы они заспавнивались через некоторое время,если Киценко убит.Заспавнить непись несложно, но как узнать имя секции Киценко? Как узнать, жив ли данный НПС?

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение
Quote

 

  <specific_character id="bar_zastava_commander_1" team_default = "1">
    <name>bar_kicenko_name</name>
    <icon>ui_npc_u_stalker_do_balon_1</icon>
    <map_icon x="0" y="0"></map_icon>
    <bio>sim_dolg_veteran_bio</bio>

    <class>bar_zastava_commander</class>

 

 

 

Кого спавнить? alife():create(name,p,lv,gv).Пробовал: bar_zastava_commander_1, bar_kicenko_name, bar_zastava_commander - вылет с "Can't open section".

Изменено пользователем qwertyuiop

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение

Он у меня не распакован.Где взять распаковщик Солянки-2016?

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение


Он не проверен на этой версии, не распаковывает.

Quote

 

FATAL ERROR!
Function: stkutils::scan::get_class
Line: 1919
Description: cannot find clsid for class buddy_psevdopup


 

 

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение

problems occurred while scanning config.. try again.и зависает. Известен ли специальный распаковщик для Солянки-2016?

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение

Спасибо,распаковалось.
 

Quote

 

[1303]

; cse_abstract properties
section_name = stalker
name = bar_zastava_commander_1
position = 227.857559204102, -0.0100178448483348, -2.56606030464172
direction = 3.13111279126588e-008, -3.04658879233307e-014, 1.20878965503834e-007
version = 118
script_version = 6
spawn_id = 3174


 

 

Так как его спавнить, чтобы он стал Киценко, если у него секция - stalker?
alife():create принимает координаты, уровень и секцию.

 

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение
Quote

 

function perespawn(name,spawn_id)
    local obj
        for i=1,65534 do
          obj = alife():object(i)
          if obj then
        --dist_to_stalker(obj)
        if obj:name() == name then
             printf("nps deleted %s",name)
            alife():release(obj)
            break
           end
      end
       end
 alife():create(spawn_id)
end

perespawn("Киценко",3174)


 

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

Quote

 

function dist_to_stalker(obj)     
    if IAmAStalker[obj:clsid()] then
          local pos = obj:position()
        local dist = math.sqrt(pos.x*pos.x+pos.z*pos.z)            
        if dist < 10 and pos.y < -0.1 then
            printf("stalker horizontal distance  %s %f",obj:name(),dist)
        end
    end
end


 

Пробовал найти имя трупа Киценко перечислением сталкеров, которые близко ко мне - вылетает на obj:position().

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение
Quote

 

perespawn("bar_zastava_guard_3",3173)

 

 

А он, оказывается, не командир,замаскировался.Перечислил трупы, используя фильтры перебором подходящих,, и нашел его.В файл писать нельзя, потому длинный список нельзя весь посмотреть.Или у меня сломалась игра, потому что в config\gameplay\character_desc_bar.xml:

 

Quote

 

  <specific_character id="bar_zastava_commander_1" team_default = "1">
    <name>bar_kicenko_name</name>


 

Quote

function name_dead_stalker(obj)     

    if IAmAStalker[obj:clsid()] and not obj:alive() then
        local name = obj:name()
        if name
            and string.find(name,"zastava")
            --[[and string.find(name,"dolg")
            and not string.find(name,"ammo")
            and not string.find(name,"wpn")
            and not string.find(name,"respawn")
            and not string.find(name,"bunker")
            and not string.find(name,"regular")
            and not string.find(name,"blokpost") ]]--
            then
                printf("dead stalker  %s",name)
            end
    end
end

Теперь вопрос, как его переименовать и всучить диалог "Киценко убили, я вместо него", а то некрасиво получается.Скриптами без патчения all.spawn.

Изменено пользователем qwertyuiop

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение

Пытаюсь изменить отношение группировки к ГГ
 

Quote

 

function set_friend(community)
    local obj
        for i=1,65534 do
        obj = alife():object(i)
        if obj and IAmAStalker[obj:clsid()] and obj:alive() then
            if obj.community ~= nil and obj:community() == community then
                printf("stalker  %s",obj:name())
                rel = obj:relation(db.actor)
                s = "????"
                if rel == game_object.neutral then s =  "neutral"
                elseif rel == game_object.friend then s =  "friend"
                elseif rel == game_object.enemy then s = "enemy"
                end
                printf("relation %s",s)
                end
        end
       end
end

 

 

 

Вылетает по relation== nil. Это как сталкер есть, живой, в группировке, а relation() не существует? set_relation тоже у всех nil.

Изменено пользователем qwertyuiop

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение

 

Оживил непись:

alife():release(obj) ..
obj = alife():create(spawn_id)

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

		if obj and IAmAStalker[obj:clsid()] and obj:alive() and obj:name() == name then 
				printf("set friend %s",name)
				obj:set_relation(game_object.friend,db.actor)
		end

вылет attempt to call method 'set_relation' (a nil value)

Непись живая, на одном уровне с ГГ, воюет.

Почему может быть вылет?

Прошел Солянку, иду в NLC

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...