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

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


Svoboда

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

Кто-нибудь выкладывал логику неписей, чтобы ходили по Зоне сквадом/группой, т.е. чтобы не разбредались по одиночке - "кто куда". В принципе, не важно куда они пойдут и зачем, пусть шарохаются по Зоне, но вместе. Просто задумал сделать несколько таких спец.групп, гуляющих по Зоне. По задумке, они являются некими "карателями" для ГГ, и очень бы хотелось сделать встречу с ними случайной/рандомной, а, соответственно, внезапной для ГГ - можно нарваться на них, а можно и разминуться. Мод - "Народная Солянка". Если можно, то желательно без редактированния all.spawn. Знаю только, чтобы их не засосал какой-нибудь гулаг, нужно прописать -

[smart_terrains]

none = true

----------------

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

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


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

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

Суть проблемы - погибает квестовый персонаж, заспавненный через скрипт, в офф-лайфе, несмотря на присвоенную секцию Сахарова. В зоне а-лайфа нет никаких проблем - настоящий "Дункан МакКлау", хоть ядерную бомбу на него скидывай - ему хоть бы что. Но стоит уйти на другую локу, как мой непись морозится и выкашивается (если я правильно понимаю) скриптом - remove_zavis.script . Он коротенький, поэтому приведу его полностью -

function remove_obj(obj)
    local npc_id = obj:id()
    if IAmAStalker[obj:clsid()] or IAmAMonster[obj:clsid()] then
      abort("xr_logic: ОБНАРУЖЕН ОБЪЕКТ С ПОВРЕЖДЕННЫМ PSTOR: '%s' БУДЕТ ПРОИЗВЕДЕНА ПОПЫТКА ВОССТАНОВЛЕНИЯ", tostring(obj:name()))      
      
    local npc = level.object_by_id(npc_id)
    if npc then
        local h = hit()
        h.power = 3
        h.impulse = 3
        h.draftsman = npc
        h.direction = vector():set(0,0,0)
        -- h:bone("bip01_spine")
        h.type = hit.fire_wound
        npc:hit(h)
        if obj and IAmAStalker[obj:clsid()] then
            amk.make_suicide(npc)
        end
    end
      -- amk.dump_table(amk.read_stalker_params(npc))
      -- убиваем зависшего
      -- switch_offline(obj)
      -- прибираем трупик
      if obj then
        local npc_name = obj:name()
        alife():release(obj,true)
        if not obj then
          local text1 = "зависший "..npc_name.." id: "..npc_id.." удалён"
          get_console():execute("load ~#I#: pstor_load_all:"..string.format(text1))
        end
        -- return
      end
    end
end

 

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

---

Есть ли возможность сделать исключение в remove_zavis.script на некоторых, нужных мне, неписей, заспавненных через скрипт? Пусть он их "не трогает".

---

Либо, может быть есть какой-то другой эффективный способ обезопасить некоторых неписей, нужных для тех или иных миссий? Почему не гибнет Дэн, Архара, Костя, Дьяк.... они ведь тоже через скрипт спавнятся, однако стоят до конца игры, и "старуха с косой" обходит их стороной...

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


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

Тут не в том дело "почему он морозится", ведь у большинства игроков (~70%) он сидит у костра и не погибает (и, впоследствии, не убирается уборщиком), а вот у некоторых почему то выкашивается этим скриптом. Здесь вобще рандомом каким-то пахнет. Похоже что наугад выбирается любой сталкер и попадает под раздачу. Это из серии "Погиб сталкер Вася Петров. Кабан. Кордон." СтОит переиграть с последнего сейва и уже погибает какой-нибудь "Ваня Пупкин" и где-нибудь на Янтаре от снорка.

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

Почему не гибнет, например Фанат, Волк....Что делает их "неприкасаемыми"? почему, если я спавню непися торговцем, то он стоит до конца игры "истуканчиком" и с ним никогда ничего подобного не происходит. А стОит сталкера скриптом заспавнить, как сразу же и лоторея происходит...

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

P.S. У меня вобще приходила в голову мысль, удалить этого непися принудительно и потом вновь заспавнить через рестриктор, когда ГГ пойдет сдавать ему квест, чтобы наверняка этот непись был на месте в нужное время. Но способ этот не очень мне нравится... Возможно, есть более простой и изящный способ выхода из этой ситуации...

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

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


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

Я опять про спавн предметов в ящик...

Смотри, как "простенько и со вкусом" Сяк заспавнил винторез в inventory_box (в данном случае - в сейф), имеющий свой ID -

 

[4428]

; cse_abstract properties

section_name = inventory_box

name = level_prefix_inventory_box_sak

position = -128.889999389648,5,-204.460006713867

direction = 0,-1.57000005245209,0

 

; cse_alife_object properties

game_vertex_id = 621

distance = 0.100000001490116

level_vertex_id = 110680

object_flags = 0xffffff3b

story_id = 9115

 

; cse_visual properties

visual_name = physics\box\seif_01

 

 

Функция -

 

function agroprom_wpm()
local obj = alife():story_object(9115)
alife():create("wpn_vintorez_m1",obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id)
end

 

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


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

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