*Descriere:
Metin2 Quest Fix - Multiple TAKE Quests pe acelasi NPC
Acest fix rezolva problema aparuta cand acelasi NPC are mai multe quest-uri pe event-ul take. Daca primul quest ajunge la select, urmatorul handler poate suprascrie starea curenta si apare eroarea wrong QUEST_SELECT request.
- permite mai multe TAKE quest-uri pe acelasi NPC;
- rezolva blocarea cinematic bars;
- previne eroarea wrong QUEST_SELECT request;
- opreste procesarea celorlalte handler-e cand quest-ul asteapta input de la player.
*Link download / Code:
Deschide game/src/questnpc.cpp si cauta functia:
In aceasta functie exista doua loop-uri care apeleaza CQuestManager::ExecuteQuestScript. Ambele apeluri trebuie modificate.
Cauta apelul care foloseste fMatch:
Inlocuieste cu:
Cauta apelul care foloseste fMiss:
Inlocuieste cu:
Nu folosi un return neconditionat. Trebuie verificata valoarea returnata de ExecuteQuestScript.
Functia ExecuteQuestScript returneaza true atunci cand quest-ul este suspendat si asteapta interactiunea playerului, de exemplu:
Cand se intampla asta, NPC::HandleEvent trebuie sa opreasca procesarea celorlalte quest-uri pentru acelasi event.
Daca quest-ul se termina fara sa fie suspendat, ExecuteQuestScript returneaza false, iar loop-ul continua cu urmatorul handler.
Astfel, poti avea mai multe TAKE quest-uri pe acelasi NPC, de exemplu:
Primul handler care ajunge la select sau la alta functie care asteapta input de la player va prelua event-ul, iar celelalte handler-e nu vor mai fi executate in acelasi apel.
Este recomandat ca conditiile quest-urilor sa ramana cat mai exclusive. Daca doua quest-uri proceseaza acelasi item si ambele trebuie sa deschida un select, este mai bine sa fie combinate intr-un singur flow de quest.
Metin2 Quest Fix - Multiple TAKE Quests pe acelasi NPC
Acest fix rezolva problema aparuta cand acelasi NPC are mai multe quest-uri pe event-ul take. Daca primul quest ajunge la select, urmatorul handler poate suprascrie starea curenta si apare eroarea wrong QUEST_SELECT request.
- permite mai multe TAKE quest-uri pe acelasi NPC;
- rezolva blocarea cinematic bars;
- previne eroarea wrong QUEST_SELECT request;
- opreste procesarea celorlalte handler-e cand quest-ul asteapta input de la player.
*Link download / Code:
Deschide game/src/questnpc.cpp si cauta functia:
Cod: Selectaţi tot
bool NPC::HandleEvent(PC& pc, int EventIndex)In aceasta functie exista doua loop-uri care apeleaza CQuestManager::ExecuteQuestScript. Ambele apeluri trebuie modificate.
Cauta apelul care foloseste fMatch:
Cod: Selectaţi tot
CQuestManager::ExecuteQuestScript(pc, fMatch.vdwQuesIndices[i], fMatch.viPCStates[i],
fMatch.vcodes[i], fMatch.vcode_sizes[i]);Inlocuieste cu:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta apelul care foloseste fMiss:
Cod: Selectaţi tot
CQuestManager::ExecuteQuestScript(
pc,
fMiss.vdwNewStartQuestIndices[i],
0,
script.GetCode(),
script.GetSize());Inlocuieste cu:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Nu folosi un return neconditionat. Trebuie verificata valoarea returnata de ExecuteQuestScript.
Functia ExecuteQuestScript returneaza true atunci cand quest-ul este suspendat si asteapta interactiunea playerului, de exemplu:
Cod: Selectaţi tot
select
wait
input
confirm
select_itemCand se intampla asta, NPC::HandleEvent trebuie sa opreasca procesarea celorlalte quest-uri pentru acelasi event.
Daca quest-ul se termina fara sa fie suspendat, ExecuteQuestScript returneaza false, iar loop-ul continua cu urmatorul handler.
Astfel, poti avea mai multe TAKE quest-uri pe acelasi NPC, de exemplu:
Cod: Selectaţi tot
object/9009/take/fisher.start
object/9009/take/eveniment_pescar.startPrimul handler care ajunge la select sau la alta functie care asteapta input de la player va prelua event-ul, iar celelalte handler-e nu vor mai fi executate in acelasi apel.
Este recomandat ca conditiile quest-urilor sa ramana cat mai exclusive. Daca doua quest-uri proceseaza acelasi item si ambele trebuie sa deschida un select, este mai bine sa fie combinate intr-un singur flow de quest.



