Avatar utilizator
SCOOB
Administrator
Administrator
  • Mesaje: 4922
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 122533
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • *Descriere:

    Metin2 Projectile Target Fix - Sageti si Skill-uri care Zboara Gresit

    Acest fix rezolva problema din client in care sagetile si proiectilele skill-urilor pot zbura spre pozitii gresite, spre coltul hartii sau catre target-uri vechi.

    Problema este cauzata de CFlyTarget::Clear, care nu elimina corect target-ul din lista actorului, dar si de target-urile ramase in m_kQue_kFlyTarget si backup-ul folosit de skill-urile multi-target.

    - rezolva pointerii vechi din CFlyTarget;
    - previne folosirea target-urilor din cast-ul anterior;
    - corecteaza proiectilele pentru skill-uri multi-target;
    - evita proiectilele trimise spre pozitii stale sau spre originea hartii.


    *Link download / Code:

    Deschide GameLib/FlyTarget.cpp si cauta functia:
    Code:
    void CFlyTarget::Clear()

    Inlocuieste toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Cauta functia:
    Code:
    void CFlyTarget::NotifyTargetClear()

    Inlocuieste toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    In operator=, adauga la inceput:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Cauta functia:
    Code:
    void CFlyTarget::GetFlyTargetData(CFlyTarget * pFlyTarget)

    Inlocuieste toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Aceasta modificare foloseste operator= in loc sa copieze direct pointerul intern, astfel incat copia sa fie gestionata prin aceeasi logica de inregistrare a target-ului.


    Deschide UserInterface/InstanceBaseBattle.cpp, in functia CInstanceBase::SetFlyTargetInstance, cauta apelul:
    Code:
    SetFlyTarget

    Adauga deasupra:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Deschide UserInterface/PythonNetworkStreamPhaseGame.cpp, in functia RecvFlyTargetingPacket, cauta zona in care este obtinut pTarget.


    Imediat dupa ce pTarget este gasit, adauga:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Problema apare deoarece CFlyTarget::Clear reseta pointerul fara sa elimine obiectul din lista de fly targeters a actorului vechi.

    Cand acel actor era distrus mai tarziu, putea apela NotifyTargetClear pe un CFlyTarget deja refolosit pentru alt target.


    NotifyTargetClear salveaza acum pozitia curenta a target-ului inainte de a transforma target-ul din:
    Code:
    TYPE_OBJECT

    in:
    Code:
    TYPE_POSITION

    Astfel, proiectilul nu mai foloseste o pozitie veche sau valoarea initiala:
    Code:
    (0, 0, 0)

    Curatarea din SetFlyTargetInstance si RecvFlyTargetingPacket elimina si target-urile ramase din cast-ul anterior.


    Aceasta modificare nu strica Chain Lightning.

    Packet-ul FLY_TARGETING este trimis cand incepe motion-ul skill-ului, inainte de packet-urile:
    Code:
    ADD_FLY_TARGETING

    Astfel, target-urile suplimentare ale volley-ului curent sunt adaugate dupa ClearFlyTarget.


    Apelul OnGetFlyTargetPosition din NotifyTargetClear este sigur in acest flow, deoarece ClearFlyTargeter este apelat la inceputul CActorInstance::Destroy.

    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
    Comunitatea Metin2 Romania este si pe Discord! :ymcowboy:

    2500+ membri • Chat activ zilnic • Support • Cereri & Resurse

    ► discord.gg/jWxeDSf7HP ◄





    See full signature

    Înapoi la “FIX-uri”

    Discord ID copiat: