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

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

Помогите разобраться с логикой нпс. Какую схему логики лучше всего прописать охраннику? walker и camper конечно подходят, но дабы такие охранники стояли на месте, в path_walk для каждого из них придется создавать точки с их координатами, что нехило добавляет лишней работы и вынуждает писать для каждого отдельный скрипт с логикой. Также параллельно пытаюсь разобраться с такими страшными вещами как Смарттерейны и гулаги.

Изменено пользователем dimka.qwer
Ссылка на комментарий

Вопрос по кастом статикам в ЗП:

cust_static:wnd():SetWidth(num)

cust_static:wnd():SetHeight(cw)

cust_static:wnd():SetWndPos(pos)

custom_static:wnd():SetColor(col)

Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили?

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Склепал скрипт для проигрывания определенных партиклов в определенные погодные периоды.

Вообщем намекните что нетак я сделал. Вылет с логом, намекающим на неработоспособность bind_stalker.script

  if weather_types[level.name()]==0 then
    local  = level.get_weather()

      if weather ==  then
        if not self.particles then
            self.particles=particles_object("anomaly2\\snow_vuga")
            self.particles:play_at_pos( db.actor:position() )
        end
    end

    if self.particles then
        self.particles:move_to(db.actor:position(),vector():set(0,0,0))
    end

    for k,v in pairs(snow_times) do
        if weather =="weather_surge" then 
            need_play = true
        end
    end

    local need_play = false

    if need_play==true then
        if self.particles and not self.particles:playing() then
            self.particles:play()
        end
    else
        if self.particles and self.particles:playing() then
            self.particles:stop_deffered()
        end
    end
  end

  if weather_types[level.name()]==0 then
    local weather  = level.get_weather()
    if not self.particles then
        self.particles=particles_object("anomaly2\\snow")
        self.particles:play_at_pos( db.actor:position() )
    end

    if self.particles then
        self.particles:move_to(db.actor:position(),vector():set(0,0,0))
    end

    for k,v in pairs(snow_times) do
            if(weather == "weather_rainy" or weather == "weather_stormy") then 
            need_play = true
        end
    end

    local need_play = false

    if need_play==true then
        if self.particles and not self.particles:playing() then
            self.particles:play()
        end
    else
        if self.particles and self.particles:playing() then
            self.particles:stop_deffered()
        end
    end
  end

 

 

Дублирование вообще разрешено в скриптах?

 

Я вообще неочень ориентируюсь в скриптах :ny_ph34r:

Ссылка на комментарий

Galil

[spoiler=Делай работу над ошибками :D]

local ? = level.get_weather()

не задано имя локальной переменной

...

if weather == ? then

чему они должны равнятся?

...

if not self.particles then

self.particles=particles_object("anomaly2\\snow_vuga")

self.particles:play_at_pos( db.actor:position() )

||

\/

что такое self.? откуда его взял?

...

need_play = true

end

end

 

local need_play = false

...

сначала задаём переменную,а только потом юзаем.т.е.,так:

local need_play = false

...

проверка/действия

...

need_play = true

end

end

 

 

 

Вопрос по кастом статикам в ЗП:

cust_static:wnd():SetWidth(num)

cust_static:wnd():SetHeight(cw)

cust_static:wnd():SetWndPos(pos)

custom_static:wnd():SetColor(col)

Не один из методов не работает.В ТЧ всё работало..Собсно ПЫС это полностью вырезали,или чем-то заменили?

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Влад,

есть же lua_help.script

cust_static:wnd():SetWidth(num)

cust_static:wnd():SetHeight(cw)

SetWndSize(vector2);

 

cust_static:wnd():SetWndPos(pos)

SetWndPos(vector2)

или всё сразу

SetWndRect(Frect);

 

custom_static:wnd():SetColor(col)

убрали совсем. В зависимости от задачи можно как-либо обойтись без этого

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Несколько вопросов к скриптерам:

можно ли в скрипте прописать две и более функции alife():create ?

может кто-нибудь объяснить, как автоматически запускать скрипт при старте игры через bind_stalker.script

Ссылка на комментарий

dimka.qwer

можно ли в скрипте прописать две и более функции alife():create

да,можно.

как автоматически запускать скрипт при старте игры через bind_stalker.script

находим:

function actor_binder:on_item_drop (obj)

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

function actor_binder:on_item_take (obj)

на взятие итема

function actor_binder:update(delta)

"общий апдейтер".

 

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Блин, никак не могу разобраться с bind_stalker.script

 

Имеется следующая функция спавна в файле mod_spawn.script

function mod_spawn ()

alife():create("esc_hunt",vector():set(-213.69770812988,-23.183309555054,-122.53145599365),39933,59)

end

 

Что нужно прописать в bind_stalker, чтобы вызвать один раз эту функцию при запуске игры ?

Изменено пользователем dimka.qwer
Ссылка на комментарий
Что нужно прописать в bind_stalker, чтобы вызвать один раз эту функцию при запуске игры ?

Почему непременно в bind_stalker? Если так уж надо именно там, то в actor_binder:net_spawn или actor_binder:reinit

Также можно в _g.start_game_callback, но надо учесть, что это вообще первый запускаемый скрипт и там ещё ничего не инициализировано.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

А как сделать проверку того, чтобы скрипт загружался один раз при запуске? Ибо при простом прописывании функции, при каждой новой загрузке спаунится клон создаваемого непися

Ссылка на комментарий

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

 

function mod_spawn ()
if not db.actor:has_info("spawn_esc_hunt")  then
alife():create("esc_hunt",vector():set(-213.69770812988,-23.183309555054,-122.53145599365),39933,59)
db.actor:give_info_portion("spawn_esc_hunt")
end
end

 

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

 

если колбэк не стоит , просто вызывайте в bind_stalker.script function actor_binder:update(delta) перед закрытием функциию

Что-то кончается, что-то начинается...

Ссылка на комментарий

Vano_Santuri,

а что мешает сделать с инфопрошеном, но там где я написал в предыдущем посте? И это не будет грузить апдейт

 

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
Я не скриптер, но отвечу. Можно попробовать поставить колбэк на спавн того же болта при старте новой игры...

 

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

Ссылка на комментарий

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

Ссылка на комментарий

Проблема-вопрос.

Первый работаю с all.spawn. Для начала хочу изменить стартовый набор ГГ. Скачал xrSpawner v0.13.1 Beta. Открыл в нем all.spawn.

На шел вот это:

Vif58PGb7gVg.jpg

Добавил то что выделена красным. Потом жму "Принять изменения". Потом Файл->Сохранить.

Начинаю новую игру, но нового предмета нет.

После этого открываю опять алл.спавн и вижу что он остался таки каким был (нету моего добавленного предмета). Может я не так сохранил\добавил?

 

З.Ы. Файл алл.спавн из мода "Зона Поражения 1.1".

Изменено пользователем Shadows
Ссылка на комментарий

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

Долго думая я переделал его.

И опять при загрузке ловлю вылет с логом, намекающим на неработоспособность bind_stalker.

Вот новый вариант моего скрипта.

  if weather_types[level.name()]==0 then
    local weather = level.get_weather()
    local play_vuga = false
    local play_snow = false
    if play_vuga = false then
        if not self.particles then
            self.particles=particles_object("anomaly2\\snow_vuga")
            self.particles:play_at_pos( db.actor:position() )
        end
        if self.particles then
            self.particles:move_to(db.actor:position(),vector():set(0,0,0))
        end
    end

    if  weather == "weather_surge" or
        weather == "weather_thunder" then
            play_vuga = true
        end
    elseif  weather == "weather_rainy" or
        weather == "weather_stormy" or
        weather == "weather_grey" or 
        weather == "weather_foggy" then
            play_snow = true
        end
    end

    if play_vuga = true then
        if self.particles and not self.particles:playing() then
            self.particles:play()
        end
    else
        if self.particles and self.particles:playing() then
            self.particles:stop_deffered()
        end
    end

    if play_snow = false then
        if not self.particles then
            self.particles=particles_object("anomaly2\\snow")
            self.particles:play_at_pos( db.actor:position() )
        end
        if self.particles then
            self.particles:move_to(db.actor:position(),vector():set(0,0,0))
        end
    end


    if play_snow = true then
        if self.particles and not self.particles:playing() then
            self.particles:play()
        end
    else
        if self.particles and self.particles:playing() then
            self.particles:stop_deffered()
        end
      end
  end

 

 

 

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

По поводу self. - все работает с ним. А вообще он был в скрипте от Monnoroch.

 

И еще один вопрос на засыпку - при каких случаях НПС может заснуть(желательно перечислить все)?

Изменено пользователем Galil
Ссылка на комментарий

Labus,

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Svoboда,

 

custom_data = <<END

[smart_terrain]

none = true

 

cfg = scripts\az_patrul_1.ltx

END

 

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

[piyan_kapitan_look]

points = p0,p1,p2

p0:name = wp00|t=1000

p0:flags = 0x1

p0:position = -147.18115234375,-0.584499299526215,-305.457458496094

p0:game_vertex_id = 447

p0:level_vertex_id = 90847

 

p1:name = wp01|t=1000

p1:flags = 0x2

p1:position = -151.469772338867,1.54915750026703,-294.154266357422

p1:game_vertex_id = 447

p1:level_vertex_id = 86489

 

p2:name = wp02|t=1000

p2:flags = 0x3

p2:position = -154.860473632813,0.0715790092945099,-300.463287353516

p2:game_vertex_id = 447

p2:level_vertex_id = 82560

 

 

[piyan_kapitan_walk]

points = p0,p1,p2

p0:name = wp00

p0:flags = 0x1

p0:position = -146.631423950195,-0.615138828754425,-305.455871582031

p0:game_vertex_id = 447

p0:level_vertex_id = 91609

p0:links = p1(1),p2(1)

 

p1:name = wp01

p1:flags = 0x2

p1:position = -150.6865234375,1.56070673465729,-293.817443847656

p1:game_vertex_id = 447

p1:level_vertex_id = 87210

p1:links = p0(1),p2(1)

 

p2:name = wp02

p2:flags = 0x3

p2:position = -155.097885131836,0.12029841542244,-300.179504394531

p2:game_vertex_id = 447

p2:level_vertex_id = 81791

p2:links = p0(1),p1(1)

 

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

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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