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

Norman Eisenherz

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

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

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

  • Дней в топе

    1
  • AMKoin

    18,030 [Подарить AMKoin]

Norman Eisenherz последний раз побеждал 16 Октября 2023

Norman Eisenherz - автор самых популярных публикаций!

Баланс оценок

272

Недавние посетители профиля

Блок недавних посетителей отключен и не доступен другим пользователям для просмотра.

  1. Может, передавать ранг как аргумент, чтобы обойтись одной функцией? Все равно числа вручную вводятся, хотя при равномерном интервале можно обойтись нижней границей. … = {=actor_rank(min_rank)} … function actor_rank(min) local max = min + 300 if min == 900 then max = min *10 -- на всякий случай end local rank = db.actor:character_rank() return (rank >= min and rank < max) end
  2. Не понимаю, зачем упираться в готовые функции и в чем разница между ГГ и NPC при общем методе проверки ранга. [trade_npc.ltx] -- заменить инфо логической функцией sell_condition = {=fx_name} npc_sell_list, … [xr_conditions.script] -- добавить описание function fx_name() return db.actor:character_rank() < 300 end
  3. Если сравнивать с квестами, parse_condition понимает и ссылки на проверочные функции из [xr_conditions.script] – можно попробовать вместо ±инфо условие вида =fx_name с оформлением в указанном скрипте.
  4. 1. Надо привязаться к yes_phrase; действие "give_task" уже ссылается на нее – свое действие с проверкой ставить рядом. 2. Сообщение выдается при передаче предметов через обертку dialogs.relocate_item_section(…), которая ссылается на news_manager.script.
  5. AddAction + yes_phrase_id + task_id аналогично тому, что описано выше, если это циклический квест. Edit: даже проще – если заголовок конфига известен заранее, достаточно добавить в тот же CRandomTask:init_task_dialog проверку if v.name == "tm_find_artefact_1" then … yes_phrase:AddAction(…)
  6. Проверил таблицу: данные точно заполняются, причем ключи phrase_id, как и в обработчике action, являются текстом – не было ли при сверке перевода в число?
  7. 1. В обработчик action по умолчанию передается 4 аргумента: speaker1, speaker2, dialog_id, phrase_id (obj, obj, str, str) – последнее значение для фразы с описанием будет равно desc_phrase_id. 2. Порядковые номера фраз в CRandomTask:__init() генерируются подряд: yes_phrase_id = desc_phrase_id +1. 3. Есть готовая таблица self.task_id_by_yes_phrase_id – из нее и получить id.
  8. Если я правильно понял, это значение task_info.id.complex_type, которое для цикличек выглядит как type_parent. Пример: id = barmen_kill_stalker_5 complex_type = kill_stalker_barman
  9. Возможно, стоит указать путь от папки [characters_voice\], а не от папки [sounds\]
  10. В CRandomTask:select_task(…) можно добавить свой тип выбора из заданий, готовых к выдаче: for k, v in pairs(task_table) do if v:check_target(obj, faction) then if type == "bring_item" then (свой обработчик)
  11. 1. В системном конфиге нет ссылок на апгрейды, хотя их копии вставлены в конфиги оружия – по аналогии с [inventory_upgrades.script], стоит читать общий файл [item_upgrades.ltx]. 2. Для поиска параметра nightvision_sect надо не подставлять весь список up_list, а перебирать отдельные секции из него.
  12. @Juk_Bers0vik Уточняю: не должно быть пропусков в индексах. Значения scheme_index после этого апгрейда (по идее, всего одно, для смены калибра) исправлены?
  13. Получить всю таблицу из нетпакета, сравнить "есть/нет" по имени секции нужного апгрейда… В чем именно затык?
  14. В схеме не должно быть пустых позиций: если удаляется апгрейд "строка 3, столбец 2", следующие апгрейды надо сместить левее и выше.
  15. Подождите… Ссылка на конфиг для окна MessageBoxEx, которое выдается при переходе, указана только в движке (xr_3da\xrGame\UIGameSP.cpp) – чем поможет добавление нового типа? Или требуется просто отдельное похожее окно для своих целей?
×
×
  • Создать...