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

muzafir

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

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

  • Посещение

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

  1. не работает, ты прав. Хотя функция time_period(5:5) с такой передачей параметров есть в в оригинальном xr_conditions.script. Насчет and я не понял - как без, если надо все 3 поршня удалить? За мысль с рестриктором спасибо
  2. Привет всем. Мне нужно убрать у ГГ ранеее полученные инфопорции, но сделать это через время, чтобы дать ему возможность выйти с территории. Вызывал из диалога: function dolg_taboo() if xr_conditions.time_period(5:5) then db.actor:disable_info_portion("bar_dolg_base_pass") and db.actor:disable_info_portion("bar_dolg_community_start") and db.actor:disable_info_portion("bar_dolg_community_leader") end end Но это не работает. Как можно это реализовать?
  3. Так я и не осуждаю его подход. Просто я по первому посту понял, что загвоздка в том, как это сделать в СДК. Об этом и написал. И кроме того обратил внимание на то, что мне показалось неправильным в логике. Вот и все.
  4. Pepel , ты спрашивал про "систему флагов для работы в СДК". Я понял это, как то что ты не понимаешь, как ставить пути в СДК. Извини, нет желания смотреть твое видео на 40 мин. То что я написал, работает 100%. Зачем копаться в оллспавне, когда можно за 2 мин расставить точки в СДК прямо куда хочется, я тоже не очень понимаю. Но дело - твое. По логике, что ты привел: почему в каждой схеме walker у тебя одинаковые названия путей? Если ты хочешь, чтобы НПС двигался, они должны различаться. К примеру: [walker@wait] - стоит на точке, по поршню переключается в след схему [walker@to_kipesh] - двигается на встречу с другим НПС/актером. Сюда же подключаешь meet, чтобы в последней точке он мог поговорить. И если ему после этого нужно в ту же точку, на которой он стоял до этого, можно переключить опять на первую схему [walker@wait]. Или сделать новую [walker@wait_1] , использующую те же пути, что и первая, чтобы не ставить пути для возврата. Как-то так это все работает.
  5. vader_33 , спасибо, тогда оставлю я эту затею. Движок не модифицированный и не охота туда лезть. Программирование не на том уровне.
  6. Все там написано. Для схемы walker количество точек в walk_path и look_path не обязательно должно совпадать. Расставляешь все точки в СДК. Затем тебе нужно связать точку walk c точкой look (если НПС должен стоять тут и смотреть туда). Для этого кликни на точку walk в режиме Point Mode и нажми ENTER. Откроются ее свойства, там ты раздел Flags от 0-..., поставь галочку напротив нуля. Затем проделай то же самое с точкой look. Следующей паре точек назначишь 1 и т.д. Анимации и время прописываются в точках look_path - name02|a=guard|t=30000 - т.е. просто после имени точки добавляешь, что нужно. Считай, что НПС дошел до точки walk, смотрит в точку look и видит, что и как долго ему здесь делать. В walk_path прописывается как именно НПС идет к этой точке бегом, шагом, в патруле, с оружием в руках, с оружием за спиной, в присядку и т.д. (к примеру name04|a=patrol) И еще одно: связи между точками look_path можешь смело удалить - они не используются. Дополнено 5 минуты спустя Суть в том, что я хочу отловить нажатие V (подствол) и в этот момент заменить одно оружие другим. По след нажатию все нужно будет вернуть.
  7. А есть у кого-нибудь пример скрипта подмены предмета в слоте?
  8. При компиляции спавна (батник @start bins\compiler_ai\xrAI.exe -no_separator_check -s) в логе появляются такие строки: * loading script utils.script ! [LUA] 0 : [C] [C](-1) : ! [LUA] 1 : [Lua] gamedata\scripts\se_zones.script(6) : is_single_player_game ! [LUA] 2 : [Lua] gamedata\scripts\se_zones.script(51) : * trying to access variable alife, which doesn't exist, or to load script alife.script, which doesn't exist too Что можно с этим сделать? В se_zones.script действительно есть эта функция is_single_player_game и она, как я понял, как раз и проверяет, существует ли алайф. А как он может не существовать? Еще инфа на всякий случай, не знаю, что может оказаться полезным. Локация совершенно новая, не билдовская. Игра запускается, на локацию можно зайти-выйти, вроде все нормально. Но не убираются трупы. Лежат вечно. И рандомно тайники оказываются пустыми.
  9. Заработало! Может кому-нибудь пригодится: function actor_punch(npc) if db.actor:position():distance_to_sqr(npc:position()) > 4 then return else npc:add_animation("udar_0") end set_inactivate_input_time(30) local snd_obj = xr_sound.get_safe_sound_object([[affects\hit_fist]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) level.add_cam_effector("camera_effects\\fusker.anm", 999, false, "") end Можно вызывать из диалога экшеном, тогда ГГ получит по морде от собеседника. Только перед вызовом этой функции вставьте стандартный <action>dialogs.break_dialog</action> чтобы прервать диалог. Ну или засуньте это тоже в функцию. Всем удачи!
  10. Спасибо, это я видел. Но в xr_effects.script - только проверка на присутствие оружия в руках и эффекты от удара, самой анимации удара нет. xr_abuse.script - как я понял, используется для вызова из логики НПС. Как там сама анимация удара задействуется не пойму - не на том уровне у меня скрипты. Поэтому и подумал, может кто-нибудь уже знает ответ
  11. Всем привет! Подскажите, как можно организовать удар от НПС в морду актера? Может у кого есть готовая функция, чтобы ее можно было вызвать экшеном из диалога в нужном месте? Буду рад любым предложениям.
  12. Всем привет, подскажите, как можно убить скриптом определенного НПС? Дело в том, что у меня один товарищ отказывается умирать. Из его логики по инфопоршню вызывается функция: function dronea_hit(actor, npc) local h = hit() h.power = 1 h.direction = npc:direction() h.draftsman = db.actor h.impulse = 1 h.type = hit.wound npc:hit(h) end Все работало. Закончил с ним и пошел дальше. А теперь выяснилось, что он перестал слушаться! Пробовал уже и экшеном из диалога - ему хоть бы хны. Инфопорция точно выдается, т.к. по ней спавнится еще 3 псевдособаки (типа они его загрызли). Раньше он лежал себе спокойненько, а сейчас бегает от них с воплями по локации и они его догнать не могут ?
  13. Всем привет! Кто-нибудь знает, как победить эти строчки в логе при компиляции спавна? Игра при этом запускается, все, вроде, работает, но трупы не убираются и выброшенные из рюкзака предметы остаются лежать вечно. (Если что, это ТЧ и лока абсолютно новая, не из билдов или других частей) * loading script utils.script ! [LUA] 0 : [C] [C](-1) : ! [LUA] 1 : [Lua] gamedata\scripts\se_zones.script(6) : is_single_player_game ! [LUA] 2 : [Lua] gamedata\scripts\se_zones.script(51) : * trying to access variable alife, which doesn't exist, or to load script alife.script, which doesn't exist too Дополнено 8 минуты спустя imcrazyhoudini , сделай разные состояния для смарту для ночи и дня с разными наборами работ. Блок-пост на Кордоне, к примеру так работает. Еще разрабы использовали прямо в логике функцию is_day, примерно так: [logic] active = {=is_day} walker, kamp если день выполняется первая схема, в данном случае walker, ночью вторая - kamp Естественно, схемы могут быть любыми.
  14. Да, с gulag_simeiz.ltx вышла опечатка. Спасибо за script Syntax Checker - попробую. Ошибки уже как угодно искал, попробую еще и так
  15. Всем привет! При компиляции спавна на новой локации в логе такие строки: Все вроде бы понятно - не может загрузить gulag_simeiz.script, который не существует. Но прикол в том, что он существует!!! и зарегистрирован в xr_gulag.script!!! И xr_gulag.ltx существует и зарегистрирован в gulag_tasks.ltx В результате, игра грузится, но гулаг не работает, НПС отпущены на волю а-лайфа. Что можно с этим сделать?
  16. Ok, я так и думал. Буду рад любой мысли, что еще можно проверить, куда глянуть. В Тенях Чернобыля же нет файла, где нужно регистрировать все смарты на локации, как в Зове Припяти?
  17. Да, это кусочек логики для примера все параметры hit, death, meet прописаны, в gulag_tasks.ltx инклюд есть. У меня в смарте ровно 12 человек. Раньше было так: squad = 1 group = 9, т.к. трое сидят в кампе возле костра и выполняют одну работу. Когда переделывал, увидел, что работа для каждого в gulag.script грузится отдельно, поэтому изменил на squad = 1 group = 12 До сих пор сталкивался только с тем, что вылеты без лога случаются, когда есть косяки в названии путей (например пробел). Или грубая ошибка в конфиге (незакрытая скобка, отсутвующий end в функции). Все уже многократно проверял. Дело вряд ли в путях: если удалить все население смарта, игра грузится, если оставить хоть одного, вылетает на этапе синхронизации. Не представляю, как сузить круг поисков. Вообще главный вопрос: правильно ли я понимаю, что такая организация - gulag.script, gulag.ltx - необходима для работы респавна? Т.к. повторюсь: что при моем старом (рабочем) варианте вся логика прописана НПС прямо в кастом дата и все работало отлично. У меня уже полностью готов сюжет на локации и только сейчас я понял, что нужен респавн?
  18. Спасибо огромное, уже недели 2 ковыряюсь с этим. Миллион раз исправлял, а это все же не заметил. Это была ошибка однозначно, но когда я ее исправил вернулись мои "прекрасные" вылеты без лога ?. Появились они, когда я логику из кастом дата отдельных сталкеров собирал в gulag. ltx и gulag.script. До этого все работало прекрасно.
  19. Что конкретно показать? Какую свободную, если она прописана в Custom data конкретного НПС, который убит? Я, похоже, чего-то не понимаю
  20. Всем привет. Столкнулся с такой проблемой: Создал смарт-террейн на новой локации для новой группировки (не знаю, насколько это важно) и сначала прописал логику каждому НПС в Кастом Дату. Все было прекрасно, все работало отлично. Затем осознал, что нужно будет доспавнивать бойцов группировки. С какой тогда они появятся логикой? Поэтому создал файлы gulag.ltx, gulag.script, зарегил, где надо, - словом, сделал, как в оригинале. Но НПС перестали слушаться логики. Просто разбредаются кто-куда. К тому же, хотя часть и гибнет в перестрелках, спавнер отказывается доспавнивать. В чем может быть проблема? Уже сто раз все перепроверил. Ума не приложу, где искать. Они точно не уходят под другой смарт - его просто нет.