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

=VENOM=

Проверенные
  • Число публикаций

    131
  • Регистрация

  • Последнее посещение

  • AMKoin

    20 [Подарить AMKoin]

Весь контент пользователя =VENOM=

  1. =VENOM=

    Скриншоты

    Сидор поменял ассортимент :
  2. Обнаружил вот какую неприятность: при использовании изменённого game.graph (дополнительные "АИ-связи" локаций), на большом расстоянии от "перехода" исчезает укзатель (стрелка на миникарте) на маркер задачи, назначенной на другой локации. Что не есть гуд. Кто-нибудь решал такую проблемку?
  3. =VENOM=

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

    Иногда самое интересное в логе вылета не всегда находится после "FATAL ERROR", а в предыдущих строках. Скинь полностью лог вылета.
  4. =VENOM=

    Скриншоты

    Я и мои друзья (уточню - друзья на переднем плане ). Мы вместе путешествуем по Зоне. Второе фото - круговая оборона.
  5. =VENOM=

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

    Stalkersof, делать можно как угодно, ты разработчик - тебе и карты в руки . Стандартная функция, создающая объекты в игре, в целом выглядт так: alife():create("item_section_name", vector():set(x, y, z), level_vertex_id, game_vertex_id) Но. С другой стороны, если ты собрался создавать рестриктор, при входе в который будет выдаваться команда на спон неписей, то всё равно придётся ковырять all.spawn. А если придётся ковырять all.spawn, то почему заодно не добавить нужных NPC на нужных позициях с заранее продуманной и настроенной логикой, которые "появятся" при входе в рестриктор? Другое дело, если нужно, чтобы спон неписей происходил по условию (как ты вначале писал, по условной фразе в диалоге)... Стучись в личку.
  6. =VENOM=

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

    *Shoker*, я как-то пытался "телепортировать" труп непися в ТЧ (как раз оффлайн). При просмотре с другой локации видно, что NPC переместился в заданную точку. Но стоит перебраться на "родную" для трупа локацию, как он (труп) тут же оказывается на прежнем месте. В общем, поковырялся с часик, и бросил эту затею (хотел эдакое "оффлайн-кладбище" сделать, но потом сделал свой уборщик трупостволов, и отказался от этой фишки ). Stalkersof, таких неписей (без использования оллспона) заспонить несложно. Стандартной функцией создаём нужных NPC на заданных позициях. Почему нельзя спонить "кучей", как обычно это делается, поясню ниже. Затем (ну, я так поступаю - просто и удобно ) парой функций из набора АМК (read_salker_params/write_stalker_params) вписываем им в "кустодату" логику, основанную на схеме поведения remark, в которой нужно указать, что сталкеры должны смотреть в сторону игрока (target = actor). Вот почему нельзя спонить "кучей" - чтобы каждый сталкер под этой схемой находился на отдельной позиции (предполагаю, что это будет засада, не так ли ?) Там же в логике укажи условие перехода неписей в "боевое состояние" - то есть, как у тебя написано, при приближении игрока (скажем, on_actor_dist_le_nvis = 100| remark@bey_vragov %=здесь функция для "обижания" неписей на игрка, если их группировка не враждебна к игроку%). Собственно, всё. По итогам боя можно либо отправить неписей в какой-нибудь смарт, либо оставить под той же схемой, либо загнать в nil - тогда они тупо будут слоняться по местности, пока их кто-нибудь (или что-нибудь) не прикончит. Ну, я предполагаю, что по итогам боя они все должны погибнуть, верно ?
  7. =VENOM=

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

    Не имея общей картины, могу посоветовать только то, как поступаю сам. Как только довожу "до ума" какую-либо новую фишку (а зачастую даже и в процессе разработки) я всегда делаю резервное копирование данных. Как только начинается очередной геморрой, распаковываю работоспособную версию, и легко и просто нахожу, в чём... нет, не собака, а где сам порылся, и как именно всё испортил . Частенько помогает. Скрипт хStream'а просмотрел, ничего кривого не обнаружил. А к остальным "зарезервированным" персонажам медики тоже сбегаются, или нет?
  8. =VENOM=

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

    Ulman, вот так должна выглядеть таблица в файле xrs_medic.script (чистая версия, с добавлением одного "больного"): local excluded_npcs={ esc_fox=true, esc_vagon_wounded=true, gar_bandit_stroyka3=true, gar_wounded_bandit=true, val_sos_wounded=true, val_escort_bandit_halfdead=true, vasya_pupkin = true } Вместо vasya_pupkin вставь имя своего "больного". Всё должно работать. Либо выложи свой вариант этого скрипта, возможно, в нём уже кто-то поковырялся шаловливыми ручками, и просто удалил проверку на "бесхозных больных".
  9. =VENOM=

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

    Disord, я уже отписал, что изначально в схеме можно указывать тех, кто не будет работать под схемой "мародёры" (то есть не будет обшаривать трупы). Это и есть пресловутая переменная "zombi". Не веришь - обрати внимание, там прописаны как раз зомбированные, а они, в свою очередь, как раз мародёрством не занимаются . Ну, это, конечно, исправить можно, если только у всех моделек зомбированных сталкеров имеется полный набор "сталкеровских" анимаций, иначе, как водится, будет стопудовый вылет. А Ulman'u надо, чтобы указанных персонажей именно не обшаривали после смерти. Ulman, если уж совсем просто, то сделай так - добавь в самое начало функции checkCorpse(obj) (файл watcher_act.script) вот такую строчку: if IsStalker(obj) and obj:name() == "stalker_name" then return false end "stalker_name" следует заменить на имя того сталкера, труп которого не должны обшаривать мародёры - но только не на "Вася" или "Петя", а на такое же, как и в файле xrs_medic.script для раненого, которому "не требуется" помощь.
  10. =VENOM=

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

    Ulman, если для "лечения" NPC используется т.н АИ-пак xStream'a (а скорее всего, так оно и есть), то в самом начале файла xrs_medic.script можно обнаружить табличку по имени excluded_npcs. Вот в неё и нужно заносить имена NPC, которых будут игнорировать NPC-"медики" - там, кстати, уже указаны несколько "беспомощных товарищей", так что разберёшься. Что касается исключений для обыска, тут сложнее, т.к. автор (кто забыл - Red75, файл watcher_act.script) отчего-то не предусмотрел такой возможности (зато изначально есть возможность определить тех, кто мародёрствовать не станет ), но добавить условие по "отсеиваию" имён (или по story_id, например, или по названию группировки и т.д. и т.п.) совсем несложно.
  11. kuzia, можно. Судя по всему, речь идёт о т.н. АМК-аномалиях. В общем случае даже не потребуется править all.spawn (вообще, это нужно только для того, чтобы очистить его от АМК-аномалий, а заодно и расширить за их счёт массив свободных сториайд, без чего можно спокойно обойтись ). Заново ничего создавать не нужно - т.к. "аномалии разработчиков" не удалялись из all.spawn, а просто "стираются" тем же самым скриптом, что и спонятся новые, динамические. Так что нужно всего лишь слегка поправить "фичу", спонящую/удаляющую динамические аномалии.
  12. strchi, выложи свой вариант скрипта, чтобы можно было просмотреть, в чём ошибка. А чтобы приёмник был изначально, либо зарегистрируй его в all.spawn, либо создай его тем же самым скриптом, вызвав при первом запуске игры. При этом не забудь удалить вызов функции - удали строку moi_mod.spawn_patefon() из give_weapon_to_actor(trader, actor), иначе в дальнейшем жутких косяков со звуками не избежать .
  13. =VENOM=

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

    Ulman, ищи в файле watcher_act.script, место, где NPC добрался до трупа, и начинает непосредственно его обыскивать (включение анимации search). Вот сюда как раз и желательно засунуть проигрывание разового звука, исходящего от NPC. Интересная мысль, надо бы у себя тоже сделать .
  14. TheDoktor, возможно, в этом месте ГГ приближается к какому-либо объекту (NPC, например), который в этот момент переходит в онлайн, и, по причине ошибок в скриптах или конфигах, даёт вылет. Советую "пощупать" NPC, к которым, воможно, в этом месте приближается игрок, вызывая их переход в онлайн - особенно если проводилась какя-либо работа с этими NPC (или вообще какими-то новыми, или модифицированными старыми объектами). Раз уж вылет без лога.
  15. =VENOM=

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

    Ну, это сделать совсем непросто, если вообще возможно: придётся создавать новые модельки сталкеров, с новыми анимациями, или прописывать новые анимации уже существующим. Вряд ли что выйдет ...
  16. =VENOM=

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

    Igor88.89, именно. Кстати, можно и сразу "переодевать" NPC, используя эффект, например, кратковременного потемнения в глазах ГГ, или наоборот, яркой засветки (эффект телепорта), чтобы не было видно исчезновения/появления NPC. При "оживлении" трупов я такой эффект использую ...
  17. =VENOM=

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

    Если вылет во время диалога, то есть, как я предполагаю, в момент получения инфопоршна, и инфопоршн зарегистрирован, то всё дело в секции [walker@walker1]. Если только в диалоге не используются какие-нибудь прекондишны и экшны. А лог вылета есть, хоть какой-нибудь?
  18. =VENOM=

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

    А сам инфопоршн зарегистрировал в каком-нибудь файле с инфопоршнами? Если нет, то вот это и причина для вылета. Вторая возможная причина - отсутствие path_look в секции [walker@walker1].
  19. =VENOM=

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

    В АМК главная функция тянет за собой сервисную. Вот готовая, удаляет предмет из инвентаря ГГ по имени. Только не пытайтесь удалять болт : function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj then alife():release(alife():object(obj:id()), true) end end
  20. =VENOM=

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

    Disord, сам инфопоршн на "последней" точке пути NPC выдать не сможет. Но. В путях на последней точке можно установить так называемый сигнал: [walk] points = p0 p0:name = wp01|a=walk|sig=arrif ... а в логической схеме NPC прописать реакцию на этот сигнал, в том числе и получение инфопоршна, примерно так: [walker@tra_la_la] ... on_signal = arrif | walker@tro_lo_lo %+infoportion% ... По второму вопросу - менять нужно у ГГ не только direction, но и параметр upd:o_torso.
  21. =VENOM=

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

    korshyn-3, укажи в логике, в конкретной секции NPC (walker или кто он у тебя) параметр meet = no_meet. strelok200, в диалоге получай инфопоршн, который будет условием переключения логики NPC на другую секцию, например: on_info = {+infoportion} walker@go_to_new_location.
  22. herurg, именно так. Каждый объект в "оллспоне" прописывается отдельно. Можно обойтись и без all.spawn - воспользоваться скриптовым споном - например, по условию или на апдейте при загрузке уровня. Или "подцепить" спон группы тушканов к какому-нибудь событию - скажем, к выбросу. Или использовать АМК-спон, там всё достаточно просто и гибко настраивается - рекомендую !
  23. =VENOM=

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

    Disord, 1. для организации "неподвижности" игрока можно использовать функцию set_inactivate_input_time(xxx), в которой xxx это время, в течение которого отключается ввод команд для ГГ. Эта функция используется, например, в ситуации, когда ГГ получает удар в физиономию за слишком настойчивые приставания к сталкерам. Либо напрямую использовать level.disable_input()/level.enable_input(). 2. Вот такая конструкция подойдёт ? function clear_player_inventory() db.actor:iterate_inventory( function(dummy,item) local nameid = item:section() if nameid ~= "bolt" then alife():release(alife():object(item:id()), true) end end, nil) db.actor:give_money(-db.actor:money()) end
  24. =VENOM=

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

    Например, вот так: local distance = obj:position():distance_to(db.actor:position())
  25. Whisper, вот ещё вариант звуковой функции с задержкой ввода (задержки вывода очередной фразы не будет, но на некоторое время отключается ввод): function tra_la_la(first_speaker, second_speaker) local snd_obj = xr_sound.get_safe_sound_object([[monsters\poltergeist\die_2]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) set_inactivate_input_time(50) end Или воткни action с функцией set_inactivate_input_time(хх) до или после "звуковой" фразы. Поэкспериментируй. В т.ч. и с параметром задержки ввода функции.

AMK-Team.ru

×
×
  • Создать...