Administrator
Administrator
  • Mesaje: 4965
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 125340
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • *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:

    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.



    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.



    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_item

    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:

    Cod: Selectaţi tot

    object/9009/take/fisher.start
    object/9009/take/eveniment_pescar.start

    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.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    See full signature

    Înapoi la “FIX-uri”

    Informații

    Utilizatori ce navighează pe acest forum: cmod_, danielionut8535, nevermindz, zsoltika199 și 2 vizitatori

    Discord ID copiat: