Kirgudu 1 264 Опубликовано 11 Июня 2024 (изменено) Функция dialogs.relocate_item_section_from_actor, куда транслируются параметры из функции dialog_drda.chern_joe_hand_gave, требует на входе передачи первого и второго собеседников. Но указываемая в свойстве квеста <function_complete> функция вызывается совсем не с этими параметрами (ведь там нет диалога), а с такими: (task, objective), где task - идентификатор квеста, а objective - число, предположительно показывающее статус задания. Вот и выходит, что в переменную second_speaker вместо второго собеседника попадает число 1,0 (см. лог), а в переменную first_speaker - id квеста вместо ожидаемого первого собеседника. Да, и в ванильном ТЧ функций relocate_item_section_from_actor, relocate_item_section_to_actor и who_is_npc нет, ты их брал откуда-то ещё, например из ЧН (где они как раз присутствуют). Изменено 11 Июня 2024 пользователем Kirgudu 1 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 11 Июня 2024 (изменено) Эти функции не подходят для использования в качестве завершающих в квесте, а вот как раз для диалога они прекрасно подходят, поскольку именно в диалоге движок формирует и передаёт в вызываемую функцию параметры first_speaker и second_speaker. Соответственно, вызывать функцию chern_joe_hand_gave необходимо из диалога при нужном ответе, указав ссылку на неё в элементе <action>. Возможно, инфопорцию chern_joe_hand_gave тоже следует выдавать из диалога. Изменено 11 Июня 2024 пользователем Kirgudu 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 25 Июня 2024 Есть простой способ, как найти то, что тебе требуется, самостоятельно. Берёшь точный текст задания или его фрагмент, ищешь по файлам в папке config\text\. Находишь в одном из xml. Берёшь идентификатор этого текста, ищешь по всем файлам в папке config. Находишь таск, содержащий этот идентификатор, в одном из файлов config\gameplay\tasks_*.xml. Берёшь идентификатор этого таска, снова ищешь по всем файлам в папке config. Находишь, что он выдаётся вместе с выдачей одной инфопорции в одном из файлов config\gameplahy\info*.xml. Берёшь идентификатор этой инфопорции и снова ищешь по всем файлам в папке config. Находишь, что она выдаётся в диалоге в одном из файлов config\gameplay\dialogs_*.xml. Таким образом у тебя уже собраны почти все файлы, участвующие в функциональности этого таска, а также все точки, где происходит его запуск. Таким же образом можно действовать во всех подобных случаях вместо того, чтобы ожидать, что кто-то другой пройдёт за тебя всю цепочку в том же порядке и выложит тебе результат на блюдечке. Ну ведь не новичок уже давно, чесслово. Свои функции пишешь, в движке копаешься... 4 2 3 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 26 Июня 2024 53 минуты назад, dPlayer сказал: А куда приведёт эта дорога если взялся за всеми любимый автоквест? Поскольку я работал только с ЧН, то не в курсе, что это за пресловутый "всеми любимый автоквест", не могу знать и дорожку к нему. Но убеждён на сто процентов, что последовательным поиском по конфигам и скриптам (а если припрёт, то и по коду движка) можно найти если не всё, то очень и очень многое. 3 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 15 Августа 2024 6 часов назад, Norman Eisenherz сказал: отдельное похожее окно для своих целей Которое, если вдруг потребуется, в сочетании с рестриктором и созданием/удалением автоматического перехода по координатам актора для моментального переноса после подтверждения вполне может заменить всё тот же стандартный переход своим, кастомным. Тут уже как фантазия позволит. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 16 Августа 2024 (изменено) @Labadal есть ещё Шрам в начальном игровом ролике ЧН, лежащий на кровати, емнип, как раз в позиции "руки по швам". "mar_intro_1_actor" - что-то в этом роде. Изменено 16 Августа 2024 пользователем Kirgudu 1 2 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 9 Сентября 2024 1 час назад, imcrazyhoudini сказал: Как сделать чтобы remark был зациклен Можно добавить промежуточную секцию с вилкой на возврат по небольшому таймеру (если требуется пауза) или переход дальше: [remark@1] target = esc_baza_novice_walk_3, 0 meet = no_meet combat_ignore_cond = always on_timer = 5 | remark on_info = {+esc_zombie_off} walker А из секции remark сделать переход на remark@1. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 9 Сентября 2024 @imcrazyhoudini погоди, не обратил внимание, что во втором ремарке у тебя тоже звук с возвратом на начало по окончании. Тогда моё предложение можно не принимать во внимание, оно неверное по сути. Не знаю, без собственноручной пробы в игре сказать не могу. Пусть более искушённые в логике отвечают. ) 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 10 Сентября 2024 4 часа назад, Norman Eisenherz сказал: Может, передавать ранг как аргумент, чтобы обойтись одной функцией? Тогда, если правильно помню, функция должна содержать в своём объявлении ещё два параметра, которые в исходном её виде неявно опускаются, а при передаче аргумента обязательны: function actor_rank(actor, npc, min) --... end при этом желательно проверить, в каком виде приходит в функцию аргумент min: числа или таблицы с единственным элементом. 2 2 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 15 Сентября 2024 4 часа назад, Капрал Хикс сказал: if npc:section() == "actor" or npc:section() == "stalker" then Это хохма такая? ) 1 1 2 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 26 Сентября 2024 @Balavnik mod_call - это же самописная функция из, емнип, АМК мода. Можно открыть её и посмотреть на начинку. 1 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 27 Сентября 2024 39 минут назад, mole venomous сказал: return db.actor:object("gen_document_1354") and db.actor:object("gen_document_1355") Можно ещё OR воткнуть - в зависимости от того, требуется наличие обоих или хотя бы одного предмета из двух. 1 1 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 12 Октября 2024 20 часов назад, UriZzz сказал: Как указывать игровое время? 3*60 = 120 минут игрового времени? Или тут ошибка/опечатка? Опечатка. Первым параметром в данной функции идут игровые секунды, поэтому 3*60 - это 3 (три) игровые минуты. 10 часов назад, UriZzz сказал: Но почему схема проигрывается дважды? Таймер start_game_timer( XXX, "m_amk_weather.blowout_main" ) с разными значениями тайминга XXX запускается и в blowout_start() и в самой blowout_main() - тут не может быть пересечений? Больше ни за что взгляд не цепляется. Ну разве что сам выброс может длиться суммарно почти 30 минут, и тогда следующее срабатывание мультитаймера практически накладывается на конец выброса. Я бы на твоём месте сделал табличку значений переменной "blowout", напротив каждого из них указал прошедшее с начала выброса время, а также какой длительности запускается на данном шаге таймер. Чтобы наглядно посмотреть на предмет пересечений. Update: Ну да, так и есть, если я правильно подсчитал. Все шаги выброса срабатывают у тебя последовательно и без пропусков, при этом сумма таймеров в шагах с 1 по 6 даёт ровно 30 игровых минут. Ровно столько, через сколько срабатывает мультитаймер запуска следующего выбора. 1 2 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 19 Ноября 2024 3 часа назад, Balavnik сказал: Можно ли с помощью встроенных методов движка менять любые строки в любых файлах папки config? В ЧН и ЗП, а также в модифицированных движках или расширителях. В оригинальном ТЧ нет поддержки методов IO. 3 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 264 Опубликовано 31 Января (изменено) @Balavnik по информации из этого конфига движок создает в памяти свою табличку соответствия числовых значений story_id их строковым синонимам и помещает её в публичный класс story_ids, таким образом ты получаешь возможность использовать в скриптах и конфигах не только числа, но и элементы перечисления, например:alife():story_object(192) равно alife():story_object(story_ids.gar_exit_to_agroprom_01) Изменено 31 Января пользователем Kirgudu 4 Инструмент Поделиться этим сообщением Ссылка на сообщение