Как исправить ошибки квестов Metin2?
Руководство по перезагрузке квестов, зависанию NPC, ошибкам функций и проблемам компиляции квестов.
Квесты, разговоры с NPC, системы событий, биолог, телепортация, рынок, отслеживание боссов, ежедневные награды и множество специальных систем на серверах Metin2. квест Это работает через файлы. Поэтому даже небольшая ошибка, допущенная на стороне квеста, может привести к тому, что NPC не отреагирует, событие не запустится или файл syserr канала будет постоянно выдавать ошибки.
Самая большая проблема с ошибками квестов заключается в том, что ошибка часто кажется общей, например «NPC не работает». Но настоящей причиной может быть неправильный vnum, отсутствующая функция, неправильный синтаксис, неправильная структура состояния или квест вообще не компилируется.
1. Где найти файлы квестов?
Путь к файлам Quest может различаться в зависимости от инфраструктуры сервера. Обычно используемые каталоги:
/usr/game/share/locale/turkey/quest/ /home/game/share/locale/turkey/quest/ /usr/metin2/share/locale/turkey/quest/
Файлы квестов обычно .quest с расширением. Файлы, созданные после компиляции объект Он хранится в папке.
2. Первая проверка, чтобы понять ошибку квеста
Если квест не работает, сначала следует проверить файл syserr соответствующего канала.
cd /usr/game/channel1/core1 tail -n 100 syserr
Чтобы просмотреть в реальном времени ошибки, возникающие после перезагрузки квеста:
tail -f syserr
Примеры типичных ошибок квестов:
no such quest function attempt to call field syntax error unexpected symbol quest not found when condition error
3. Как составить квест?
Когда вы добавляете новый файл квеста, недостаточно просто закинуть файл в папку. Квест необходимо составить.
Сначала войдите в каталог квестов:
cd /usr/game/share/locale/turkey/quest
Пример составления одиночного квеста:
./qc quest_adi.quest
Путь qc может отличаться в некоторых системах:
/usr/game/share/locale/turkey/quest/qc quest_adi.quest
Имя скрипта, используемое для компиляции всех квестов, варьируется в зависимости от инфраструктуры. Пример:
sh make.sh
4. Как перезагрузить квест?
После того, как квест составлен, его можно перезагрузить в игре персонажем GM.
/reload q
В некоторых случаях просто перезагрузки недостаточно. Особенно если изменилась структура штата, флаг квеста или стартовые условия, может потребоваться повторный ввод персонажа или перезапуск канала.
Общий порядок должен быть следующим:
- Редактировать файл квеста
- Проверьте синтаксис
- Скомпилируйте файл Quest с помощью qc
- Выполнить/перезагрузить q в игре.
- Посмотрите Сисёрр
- Тестирование поведения NPC или события
5. Квест NPC не работает. Проблема
Если при нажатии на NPC ничего не происходит, следует проверить следующие моменты:
- Правильно ли используется vnum NPC в квесте?
- Действительно ли NPC спавнятся на карте на стороне сервера?
- Квест скомпилирован?
- Возник ли syserr после /reload q?
- Правильно ли начало состояния квеста?
- Код перестает выполняться из-за неправильного условия в Quest?
Пример структуры триггера NPC:
quest ornek_npc begin
state start begin
when 20011.chat."Ornek Menu" begin
say_title("Ornek NPC")
say("Bu bir test mesajidir.")
end
end
endЗдесь 20011 Значение vnum NPC. Если vnum NPC неправильный, квест не сработает.
6. нет такой ошибки функции квеста
в Сысерре нет такой функции квеста Если он виден, значит функция, используемая в квесте, не определена на сервере.
Причины:
- Квест взят из другой инфраструктуры.
- Соответствующая квестовая функция не добавлена на стороне Source.
- Вспомогательная функция, которая должна быть в questlib.lua, отсутствует.
- Имя функции написано с ошибкой.
В этом случае решение — проверить, действительно ли функция существует на сервере. Квесты, взятые из других файлов, не следует считать напрямую совместимыми.
7. Синтаксические ошибки квестов
Наиболее распространенные опечатки в файлах Quest:
- конец недостаточное или чрезмерное использование
- Не закрывая кавычки
- Неправильно, когда написано условие
- Использование турецких символов или плохая кодировка
- Использование функций, взятых из другой системы, без адаптации
Пример ошибочной структуры:
say("Merhaba oyuncu)Правильная структура:
say("Merhaba oyuncu")8. Проблемы с флагом квеста
Некоторые квесты сохраняют флаг на персонаже или учетной записи. Квест не запускается или может показаться завершенным из-за неправильного значения флага.
Например, если квест уже выполнен, NPC может больше не показывать меню. В этом случае следует проверить соответствующий флаг квеста.
Распространенные ошибки
- Забыл положить файл Quest в папку и скомпилировать его
- Выполнение /reload q даже при ошибке компиляции
- Неверное значение vnum NPC
- Использование квестов, взятых из других файлов, без их адаптации.
- Думая, что NPC не работает, не проверив флаг квеста
- Квест вроде правильный, но не работает, так как кодировка повреждена.
Часто задаваемые вопросы
Я сделал /reload q, но квест не сработал, почему?
Квест мог вообще не скомпилироваться, возможно, при компиляции возникла ошибка или он не был виден в плеере из-за состояния/флага.
Нажимаю на НПС и меню не появляется. Проблема в НПС?
Не всегда. Даже если vnum NPC верен, квест может не скомпилироваться, написаться неправильно или запуститься из-за какого-либо условия.
Почему квест, который я получил с другого сервера, выдает ошибку?
Поскольку используемые функции, структура questlib или поддержка исходного кода могут быть недоступны в вашей инфраструктуре.
Рекомендации по безопасности и эксплуатации
- Сделайте резервную копию файла перед редактированием Quest.
- Внедрите основные изменения квестов на основном сервере в часы наименьшего количества игроков.
- Проверяйте syserr после каждой компиляции квеста.
- Обратите внимание на турецкий символ и искажения кодировки.
- Сделайте резервную копию перед массовым удалением операций с флагами квестов, связанных с данными игрока.
Эта статья специально подготовлена для PvPServer.