Перейти к содержанию

makdm

Разработчики
  • Публикаций

    585
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Весь контент makdm

  1. Нескромный вопрос. А зачем вам нужен этот оригинальный, но давно устаревший способ, когда есть другие способы неограниченного сохранения данных?
  2. В Сталкере у каждого бага есть фамилия, имя и отчество. Канона не существует. Каждый разработчик рисует те баги - на какие он горазд.
  3. Для этого объект нужно прописать в файле 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);
  4. В ЗП для этого нужно использовать схему в файле xr_heli_hunter.script
  5. У меня установлен 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
  6. Скадовск тут совсем ни при чем. За то, чтобы вести войну или игнорить её, отвечает xr_combat_ignore.script Что туда воткнете, то и будет. Туда можно прописывать смарты, на которые нельзя нападать, и зоны, в которых запрещено вести боевые действия.
  7. Попробуй так ( сам не проверял ). Пусть есть сквад с секцией [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 Потом расскажешь что получилось.
  8. Это риторический вопрос. Сколько программистов, столько и мнений по написанию кода. Это на олимпиаде вы будете считать такты процессора. Здесь это не важно. Каждый делает так, как ему УДОБНЕЕ. В данном случае, важен только результат.
  9. Не проставлены флаги, вот ваш НПС и тупит. Вот так сделано у меня и все работает на отлично:
  10. Ошибка в функции передачи предмета. Правильный пример для передачи НПС двух бутылок водки: function actor_gave_vodka( first_speaker, second_speaker ) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka", 2 ) end
  11. В точке 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;
  12. function transfer_box_inventory_to_actor( actor, npc, p ) local out_box = get_story_object( p[ 1 ] ) local function relocate( out_box, item ) out_box:transfer_item( item, actor ) end out_box:iterate_inventory_box( relocate, out_box ) end
  13. Тогда самый примитив: В файлах 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
  14. Абсолютно не корректный вопрос. Что такое квестовый НПС? В оригинальном ЗП под квестовым НПС имелся ввиду НПС, имеющий стори_айди( story_id ). Все остальные НПС, не имеющие story_id, считались расходным материалом, на который можно не заморачиваться. Что вы вкладываете в понятие - квестовый НПС? В зависимости от этого, возможно будет и решение.
  15. Ещё в 2015 году в Моде Припять. Точка Отсчета переделал на отдельную схему. Файлы: modules.script, bind_heli.script, heli_combat.script Логику вертушки можно посмотреть в файле - ost_heli_8. ltx
  16. Ну так вы же создаете сцену! К примеру конкретный сквад Долга [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] А вы как хотели?
  17. в каждую секцию сквада можно прописать параметр on_death Вот тут и прописывайте все что хотите в случае гибели сквада.
  18. Так же как и любой другой объект в Сталкере. По его ID. Получить ID можно через story_id.
  19. Где шляться отрядам по локе, куда бежать во время выброса, куда приходить на ночевку прописывается в sim_board.script
  20. Как у вас все просто! Выдал поршни и готово! Начните с ковыряния файла jup_b217_cutscene_control.ltx Затем будете править логику Азота и Лоцмана.