Buusty 387 Опубликовано 9 Июля 2011 Кто-нибудь выкладывал логику неписей, чтобы ходили по Зоне сквадом/группой, т.е. чтобы не разбредались по одиночке - "кто куда". В принципе, не важно куда они пойдут и зачем, пусть шарохаются по Зоне, но вместе. Просто задумал сделать несколько таких спец.групп, гуляющих по Зоне. По задумке, они являются некими "карателями" для ГГ, и очень бы хотелось сделать встречу с ними случайной/рандомной, а, соответственно, внезапной для ГГ - можно нарваться на них, а можно и разминуться. Мод - "Народная Солянка". Если можно, то желательно без редактированния all.spawn. Знаю только, чтобы их не засосал какой-нибудь гулаг, нужно прописать - [smart_terrains] none = true ---------------- По большому счету, на этом мои познания в логике неписей и заканчиваются )). Если кто-то сможет помочь с этим вопросом, буду весьма благодарен! Можно в личку. Поделиться этим сообщением Ссылка на сообщение
Buusty 387 Опубликовано 19 Мая 2012 Прошу совета у опытных скриптеров. Суть проблемы - погибает квестовый персонаж, заспавненный через скрипт, в офф-лайфе, несмотря на присвоенную секцию Сахарова. В зоне а-лайфа нет никаких проблем - настоящий "Дункан МакКлау", хоть ядерную бомбу на него скидывай - ему хоть бы что. Но стоит уйти на другую локу, как мой непись морозится и выкашивается (если я правильно понимаю) скриптом - 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 на некоторых, нужных мне, неписей, заспавненных через скрипт? Пусть он их "не трогает". --- Либо, может быть есть какой-то другой эффективный способ обезопасить некоторых неписей, нужных для тех или иных миссий? Почему не гибнет Дэн, Архара, Костя, Дьяк.... они ведь тоже через скрипт спавнятся, однако стоят до конца игры, и "старуха с косой" обходит их стороной... Поделиться этим сообщением Ссылка на сообщение
Buusty 387 Опубликовано 19 Мая 2012 (изменено) Тут не в том дело "почему он морозится", ведь у большинства игроков (~70%) он сидит у костра и не погибает (и, впоследствии, не убирается уборщиком), а вот у некоторых почему то выкашивается этим скриптом. Здесь вобще рандомом каким-то пахнет. Похоже что наугад выбирается любой сталкер и попадает под раздачу. Это из серии "Погиб сталкер Вася Петров. Кабан. Кордон." СтОит переиграть с последнего сейва и уже погибает какой-нибудь "Ваня Пупкин" и где-нибудь на Янтаре от снорка. Приходит игрок сдать квест, а квестовика этого может и не быть, или может труп застать... Почему не гибнет, например Фанат, Волк....Что делает их "неприкасаемыми"? почему, если я спавню непися торговцем, то он стоит до конца игры "истуканчиком" и с ним никогда ничего подобного не происходит. А стОит сталкера скриптом заспавнить, как сразу же и лоторея происходит... Вот я и спрашиваю, как, что нужно сделать, чтобы исключить такую лоторею/рандом. Гулаг назначить этому неписю, только через алл.спавн этого непися спавнить.... или что-то еще. Я плохо в этом разбираюсь, вот и спрашиваю совета от бывалых. P.S. У меня вобще приходила в голову мысль, удалить этого непися принудительно и потом вновь заспавнить через рестриктор, когда ГГ пойдет сдавать ему квест, чтобы наверняка этот непись был на месте в нужное время. Но способ этот не очень мне нравится... Возможно, есть более простой и изящный способ выхода из этой ситуации... Изменено 19 Мая 2012 пользователем Buusty Поделиться этим сообщением Ссылка на сообщение
Buusty 387 Опубликовано 15 Декабря 2012 Я опять про спавн предметов в ящик... Смотри, как "простенько и со вкусом" Сяк заспавнил винторез в 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 Поделиться этим сообщением Ссылка на сообщение