-
Публикаций
609 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Блоги
Календарь
Новости
Моды
Весь контент makdm
-
В Сталкере у каждого бага есть фамилия, имя и отчество. Канона не существует. Каждый разработчик рисует те баги - на какие он горазд.
-
Для этого объект нужно прописать в файле dynamic_objects.ltx Указать кость фиксации. Тогда вы его уже ничем не сдвинете. Функция спавна была есть и будет только одна. на все серии Сталкера:: function create(alife_simulator*, number); function create(alife_simulator*, string, const vector&, number, number, number); function create(alife_simulator*, string, const vector&, number, number);
-
У меня установлен SDK. Но я не спавню вертушку через него. Зачем? Чтобы сидел где-то под локацией и "жрал" ресурсы на обработку его логики? Все делается скриптом. В логике рестриктора в нужный момент вызываем спавн вертушки. function spawn_esc_heli( actor, npc ) spawn_net_objects.spawn_helicopter("esc_a5_heli_dawn", "[logic]\ncfg = scripts\\escape\\esc_helicopter_1.ltx") end В файле spawn_net_objects. script пишем функцию спавна Ну и логика вертушки , как видно из вызова функции, в файле scripts\escape\esc_helicopter_1.ltx
-
Попробуй так ( сам не проверял ). Пусть есть сквад с секцией [bandit_squad]:online_offline_group В файле se_squad_group.script меняешь метод. Вместо function se_squad:can_switch_offline() return cse_alife_online_offline_group.can_switch_offline(self) end Пишешь function se_squad:can_switch_offline() if self:section_name() == "bandit_squad" then return false end return cse_alife_online_offline_group.can_switch_offline(self) end Потом расскажешь что получилось.
-
В точке look Например : wp00|a=sleep или wp00|a=rest Файл lua.script, возможные анимации const attack = 7; const capture_prepare = 1; const danger = 0; const eat = 4; const free = 1; const lie_idle = 3; const look_around = 8; const panic = 2; const rest = 6; const sit_idle = 2; const sleep = 5; const stand_idle = 0; const turn = 9;
-
Тогда самый примитив: В файлах bind_monster.script и xr_motivator.script в методе update(delta) обоих файлов прописать local radius = 20 * 20 --радиус проверки. Есть ли ГГ в этом радиусе. Здесь радиус 20 метров. Можно менять. if db.actor and get_object_story_id( self.object:id() ) ~= nil then local actor = db.actor if self.object:position():distance_to_sqr( actor:position() ) <= radius then if not has_alife_info( "actor_neer_quest_npc" ) then actor:give_info_portion( "actor_neer_quest_npc" ) end elseif has_alife_info( "actor_neer_quest_npc" ) then actor:disable_info_portion( "actor_neer_quest_npc" ) end end Здесь выдается и забирается инфопорция - actor_neer_quest_npc
-
Абсолютно не корректный вопрос. Что такое квестовый НПС? В оригинальном ЗП под квестовым НПС имелся ввиду НПС, имеющий стори_айди( story_id ). Все остальные НПС, не имеющие story_id, считались расходным материалом, на который можно не заморачиваться. Что вы вкладываете в понятие - квестовый НПС? В зависимости от этого, возможно будет и решение.
-
Ну так вы же создаете сцену! К примеру конкретный сквад Долга [dolg_squad] атакует конкретный сквад Монолита [monolith_squad] В секции сквада Долга пишите on_death = %+monolith_squad_win% В секции сквада Монолита пишите on_death = %+dolg_squad_win% Дальше в логике рестриктора проверяете кто кого конкретно завалил и выполняете нужное вам действие [sr_idle@1] on_info = {+monolith_squad_win} sr_idle@2 %=действие при победе Монолита% on_info2 = {+dolg_squad_win} sr_idle@2 %=действие при победе Долга% [sr_idle@2] А вы как хотели?
-
Я в причину не вникал. Но такую же байду можно увидеть в оригинальном ЗП в прачечной в Припяти. Там военные катапультируются с первого этажа на второй в свои анимпоинты. Решение простое. На первом этаже удалите ноду сетки, которая точно соответствует по вертикале ноде на втором этаже, на которой установлен флажок анимпоинта. НПС сразу забудут, что в здании есть первый этаж. Э.Ы. Про то, что после этого нужно сделать make ai-map и перекомпиллить сетку, я думаю вам и так понятно.