כיצד לפתור שגיאות Metin2 Quest?
מדריך לטעינה מחדש של קווסטים, חוסר תגובה של NPC, שגיאות פונקציה ובעיות הידור קווסטים.
קווסטים, שיחות NPC, מערכות אירועים, ביולוג, טלפורטציה, שוק, מעקב אחרי בוסים, תגמולים יומיים ומערכות מיוחדות רבות בשרתי Metin2. חיפוש זה עובד דרך קבצים. לכן, אפילו טעות קטנה שנעשתה בצד ה-quest עלולה לגרום ל-NPC לא להגיב, לאירוע לא להתחיל או לקובץ syserr של הערוץ לייצר כל הזמן שגיאות.
הבעיה הגדולה ביותר עם שגיאות קווסט היא שהשגיאה נראית לרוב כללית, כגון "NPC לא עובד". אבל הסיבה האמיתית עשויה להיות vnum שגוי, פונקציה חסרה, תחביר שבור, מבנה מצב פגום או שהקווסט לא הידור כלל.
1. היכן למצוא קבצי Quest?
הנתיב של קבצי Quest עשוי להשתנות בהתאם לתשתית השרת. ספריות בשימוש נפוץ הן:
/usr/game/share/locale/turkey/quest/ /home/game/share/locale/turkey/quest/ /usr/metin2/share/locale/turkey/quest/
קבצי Quest הם בדרך כלל .quest עם הרחבה. קבצים שנוצרו לאחר הידור חפץ זה נשמר מתחת לתיקייה.
2. בדוק תחילה כדי להבין שגיאת Quest
אם קווסט לא עובד, יש לבדוק תחילה את קובץ הערוץ הרלוונטי.
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. איך לטעון מחדש את Quest?
לאחר הקומפילציה של הקווסט, ניתן לטעון אותו מחדש במשחק עם דמות GM.
/reload q
במקרים מסוימים, רק טעינה מחדש אינה מספיקה. במיוחד אם מבנה המדינה, דגל המשימה או תנאי ההתחלה השתנו, ייתכן שיהיה צורך להזין מחדש את הדמות או להפעיל מחדש את הערוץ.
הסדר הכללי צריך להיות כדלקמן:
- ערוך קובץ קווסט
- בדוק תחביר
- הידור קובץ Quest עם qc
- בצע/טען מחדש את q במשחק
- בדוק את Syserr
- בדוק התנהגות של NPC או אירוע
5. NPC Quest לא עובד בעיה
אם שום דבר לא קורה כשאתה לוחץ על ה-NPC, יש לבדוק את הנקודות הבאות:
- האם ה-NPC vnum בשימוש ב-quest נכון?
- האם NPCs באמת מולידה על המפה בצד השרת?
- האם קווסט מורכב?
- האם 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. אם ה-NPC vnum שגוי, הקווסט לא יעבוד.
6. אין שגיאה כזו בפונקציית קווסט
בסיסר אין פונקציית קווסט כזו אם זה נראה, הפונקציה שבה נעשה שימוש ב-quest לא מוגדרת בשרת.
סיבות:
- Quest נלקח מתשתית אחרת.
- פונקציית הקווסט הרלוונטית לא מתווספת בצד המקור.
- פונקציית העזר שאמורה להיות ב-questlib.lua חסרה.
- שם הפונקציה מאוית שגוי.
במקרה זה, הפתרון הוא לבדוק האם הפונקציה אכן קיימת בשרת. משימות שנלקחו מקבצים אחרים לא אמורות להיחשב תואמות ישירות.
7. שגיאות תחביר קווסט
שגיאות ההקלדה הנפוצות ביותר בקבצי Quest הן:
- סוף שימוש תחת או יתר
- לא סוגר מרכאות
- שגוי כאשר התנאי נכתב
- שימוש בתווים טורקיים או קידוד גרוע
- שימוש בפונקציות שנלקחו ממערכת אחרת ללא הסתגלות
מבנה פגום לדוגמה:
say("Merhaba oyuncu)מבנה נכון:
say("Merhaba oyuncu")8. בעיות דגל קווסט
חלק מהמשימות שומרות דגל על הדמות או החשבון. הקווסט לא מתחיל או שנראה כאילו הושלם עקב ערך דגל שגוי.
לדוגמה, אם קווסט כבר הושלם, ייתכן שה-NPC לא יציג את התפריט שוב. במקרה זה, יש לבדוק את דגל הקווסט הרלוונטי.
טעויות נפוצות
- שוכחים לשים את קובץ ה-Quest בתיקייה ולהדר אותו
- ביצוע/טעינה מחדש של q למרות שיש שגיאת קומפילציה
- ערך VNUM של NPC שגוי
- שימוש בקווסטים שנלקחו מקבצים אחרים מבלי להתאים אותם
- חושב ש-NPC לא עובד בלי לבדוק את דגל ה-quest
- נראה שהקווסט נכון אבל לא עובד כי הקידוד פגום.
שאלות נפוצות
עשיתי /טענתי מחדש את q אבל הקווסט לא עבד, למה?
ייתכן שהקווסט לא הידור כלל, ייתכן שהוא נתן שגיאה במהלך ההידור, או שהוא לא נראה בנגן עקב המצב/מצב הדגל.
אני לוחץ על ה-NPC והתפריט לא מופיע. האם הבעיה ב-NPC?
לא תמיד. גם אם ה-NPC vnum נכון, ייתכן שהקווסט לא יהיה קומפילד, כתוב בצורה שגויה או פועל עקב תנאי.
מדוע הקווסט שקיבלתי משרת אחר נותן שגיאה?
מכיוון שהפונקציות בהן נעשה שימוש, ייתכן שתמיכות מבנה או מקור של questlib לא יהיו זמינות בתשתית שלך.
המלצות בטיחות ותפעול
- בצע גיבוי של הקובץ לפני עריכת Quest.
- הטמעו שינויים גדולים במשימה בשרת החי בשעות נמוכות של שחקן.
- בדוק את syserr לאחר כל הידור קווסט.
- שימו לב לאופי הטורקי ולעיוותים בקידוד.
- קח גיבוי לפני מחיקה בכמות גדולה של פעולות דגל קווסט הקשורות לנתוני שחקן.
מאמר זה הוכן במיוחד עבור PvPServer.