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

Norman Eisenherz

Жители
  • Число публикаций

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

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

  • Дней в топе

    1
  • AMKoin

    15,848 [Подарить AMKoin]

Весь контент пользователя Norman Eisenherz

  1. 1. См. таблицу [news_manager.script] tips_icons. Если в описании иконок есть совпадающие с профилем [all.spawn] имена вроде "ui_npc_wolf", можно сопоставлять их и добавлять новые записи "имя = координаты" в эту же таблицу скриптом через get_texture_info(…). 2. Перебираются все доступные файлы с текстами (некоторые тексты указаны в "чужих" файлах), но именно в ТЧ новые файлы надо добавлять еще и в [localization.ltx].
  2. Остановка выдачи заданий категории recover_item (поиск уникальных предметов) после перехода на новую локацию – проблема древняя, однако найти исправление отдельно от глобальных модов и с описанием не удалось. Выкладываю здесь, может кому пригодится… Проблема кроется в механизме обработки заданий: сначала они все сохраняются в список [task_manager.script] self.inited_tasks в статусе normal (готово к выдаче), потом переводятся в статус selected / completed (начато / выполнено) и удаляются по мере выполнения, при этом задание, которое было только просмотрено (даже в виде заголовка), но не начато, остается в списке навечно. Ввиду того, что все задания recover_item используют общий заголовок, задание со старой локации занимает собой единственное место в очереди, но не выдается, так как не может пройти проверку actor_on_level(…). Дополнительная сложность: перед выдачей в диалог все задания также сохраняются в память отряда под номером категории (для recover_item это номер [3], который почему-то не совпадает с номером [7] в менеджере заданий), а все дефолтные проверки сделаны без учета варианта "есть порядковый номер задания entity_id в памяти отряда squad.random_tasks[?], но нет самого задания в inited_tasks". Правка сводится к удалению "висящих" заданий из памяти и изменению проверок, связанных с перебором squad.random_tasks целиком или только категории recover_item. Ну и, раз уж есть очистка памяти, можно сделать случайный выбор задания при входе в диалог, чтобы не все отряды NPC на локации искали один и тот же предмет. Начинать новую игру не требуется.
  3. Привязаться к таблице в менеджере заданий: local tm = task_manager.get_random_task() local task = tm.task_info[type_parent] if task.status = "selected" then …
  4. Стоит заглянуть в [xr_effects.script] – все подобные переключатели там.
  5. В своем, в чужом, в трупе, в коробке, в границах онлайна или нет? Если у себя, то obj:condition(), где obj – ссылка на объект через секцию db.actor:object(sect) или перебором от 0 до db.actor:object_count() -1.
  6. Не соглашусь: задание "find_item" имеет дополнительную обработку "есть на сервере, но не в кармане заказчика" – надо копировать или "artefact", или "monster_part".
  7. Проверил в ТЧ, подтверждаю (стоило сразу так сделать вместо советов "может быть"). Полный список правок, если кому-то интересно: • [game_tasks_by_vendor.xml] – новый тип задания "parent_new_type" • [task_manager.ltx] – конфиг нового задания, обязательно с заголовком в начале файла • [task_manager.script] – копия строк с обработкой задания "artefact" => "new_type"
  8. Вспомнил вот… Для заданий artefact и monster_part список target_objects не заполняется и метка не создается, а возможность выдачи определяется только простыми проверками "наличие выданных заданий такого типа + отсрочка". Для нового задания с поиском обычной брони (без секции в all.spawn) должно хватить копии конфигов и скриптов задания artefact / monster_part под другим именем.
  9. [task_manager.script] register_target() выбирает подходящие объекты при движковой регистрации и добавляет их id в task_info[задача].task_objects – куда-то сюда надо копать
  10. Остается только добавить такой же флаг в какую-нибудь проверку использования оптики
  11. Что понимается под "поведением" статика? Что-то сложнее "скрыть/показать"?
  12. Перебрать сервер с проверками "существующий объект + наличие родителя + id родителя = id коробки".
  13. @Капрал Хикс Может, это подойдет:
  14. 1. Мудреный вариант: взять список [system.ltx] [info_portions] files и перебрать все указанные файлы как текст через getFS():r_open(путь):r_stringZ() с проверкой "есть/нет" по каждому info_id. 2. Ленивый вариант: добавить вывод всех инфо-поршней в консоль в actor_binder:info_callback() и "слушать" с начала новой игры. 3. Неясный вариант: в ЧН вскоре после загрузки в консоль высыпается этот самый список – можно там посмотреть, но вроде как это движковый вызов. Единственное, что можно понять из самого списка – у инфо-поршней есть фиксированные id: [0]=[global_dialogs] … [1350]=[info_up_ac_spas12].
  15. Возможно, нарушен порядок чтения/записи нетпакета ГГ. См. любые недавние изменения со ссылкой на pstor или actor_binder:save() и …load(). Может, таймеры неудачно добавлены?
  16. Да. Минимальные требования: • ссылка в [game_tasks_by_vendor.xml] под каждого заказчика (можно только заголовок task_id=type_parent, остальное скриптом, но потребуется новая игра) • значение text ~= nil (описание/метка), иначе будет вылет при создании диалога • значение target и новая проверка в check_task_props() (при старых проверках часто требуется значение определенного типа или хотя бы ~= nil)
  17. То, что повешено на худ пользователем, именно при использовании оптики не скрывается, хотя в катсценах, диалогах и т. д. скрывается и это (кроме ЗП – там всегда только вручную). В старых модах вроде "Фотографа" можно наблюдать на худе самодельные часы при использовании прицела без черной заливки снаружи.
  18. HUD скрывается при использовании оптики, даже если заткнуть ссылки в начале [xr_effects.script] – остается только править движок. Трассеры читаются из конфига патронов при запуске игры: без правок движка они либо всегда есть, либо всегда нет. Разве что скриптом добавлять к пуле движущийся партикл… Надо спрашивать кого-то, кто работает с эффектами и светом.
  19. Точка при поиске/замене – спецзнак "один любой знак": поиск находит цифру после 1 или 2 и отсекает строку. Запись для поиска точки просто как точки: find("%.") -- обход спецзнака find(".", 1, true) -- поиск всех знаков в режиме "простой текст" (1 = отсчет слева)
  20. Можно получить ссылку на онлайн-объект NPC через диалог с ним: motivator_binder:use_callback + проверка obj:alive(). После этого как раз можно читать obj:id().
  21. Может, конфиг предметов с секцией rad_sec кривой? Хотя, что там может быть, кроме другой иконки…
  22. Потестил в ТЧ и ЧН с выводом rad_sec в сообщение: код рабочий. Видимо, функции переспавна дают сбой.
  23. Прочитать случайный ключ в переменную, сделать выбор, сделать table.remove с этим ключом, повторить выбор.
  24. Передать секции в простой список в цикле gmatch, потом прочитать t[ math.random( #t ) ].
  25. Метод "убить" для онлайн-объектов требует записи жертва:kill(убийца), в противном случае не срабатывает. Если не хочется портить отношения с группировками, надо оформлять убийство NPC как суицид.

AMK-Team.ru

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