Administrator
Administrator
  • Mesaje: 4612
    Membru din: 07 Aug 2024, 21:53
  • Reacții: 100997
  • Mesaje utile: 45
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    Avatar utilizator
    Administrator
    Administrator
    *Descriere:

    Salutare comunitate Metin2 Forum,

    @Kori ne-a lasat un fix pentru un BUG Vizual care apare la clasa Shaman atunci cand este atacata.
    I think it's a general TMP4 issue. I tried it on another server that also uses the base but runs Uthar v2, and I tried the one from Distraught, and it happens on both of them.

    # Fix: Shaman bell damage sliding on hit

    ## Problem

    The **male Shaman** (and potentially other races/classes) would visibly **slide backwards** when hit while equipping a **Bell** (`WEAPON_BELL`). The female Shaman and other classes did not show the issue as strongly because their `damage.gr2` animations do not bake root-bone translation.

    The sliding was especially noticeable on the male Shaman because `pc/shaman/bell/damage.gr2` contains baked-in `Bip01` translation (a reactive backward motion).


    ## Root cause

    `client-src/src/GameLib/ActorInstance.cpp` around line 501:

    ```cpp
    void CActorInstance::__AccumulationMovement(float fRot)
    {
    // NOTE - 일단은 WAIT로 미끄러짐 방지
    // 추후에는 RaceMotionData가 이동되는 모션인지에 대한 Flag를 갖고 있게끔 한다. - [levites]
    if (CRaceMotionData::NAME_WAIT == __GetCurrentMotionIndex())
    return;

    ...

    UpdateTransform(&s_matRotationZ, GetAverageSecondElapsed());
    AddMovement(s_matRotationZ._41, s_matRotationZ._42, s_matRotationZ._43);
    }
    ```

    The original Korean comment literally says: *"For now only WAIT prevents sliding — RaceMotionData should later get a flag indicating whether the motion moves."* This TODO was never implemented.

    `UpdateTransform` calls `GrannyUpdateModelMatrix(...)`, which reads the root-bone delta straight out of the `.gr2` file and shifts the character. Every motion except `WAIT` was allowed to move the actor, including `DAMAGE` motions.

    Verification against official Gameforge files (version 20.5.4 / 26.0.5):

    | File | vs. official |
    |------|--------------|
    | `pc/shaman/bell/damage.gr2` | MD5 identical |
    | `pc/shaman/bell/damage_1.gr2` | MD5 identical |
    | `pc/shaman/bell/damage_2.gr2` | MD5 identical |
    | `pc/shaman/bell/damage_3.gr2` | MD5 identical |
    | `pc/shaman/bell/damage.msa` | identical |

    The animation data itself is **bit-identical** to the official client. The bug was in how our client applied root-bone movement for motions that should not move the actor.
    Daca esti shaman si te ataca un mob, vei observa un slide / push care te impinge in spate putin.

    Va las mai jos un GIF ca sa vedeti despre ce este vorba mai exact.

    *Poze / Video:

    BUG:

    *Link download / Code:

    1. Client: client-src/src/GameLib/RaceMotionData.cpp:

    Implement the previously-declared but missing IsAccumulationMotion():

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


    `m_isAccumulationMotion` is already set to `TRUE` when an `.msa` file contains the `Accumulation` token, and reset to `FALSE` in `LoadMotionData`.

    2. Client: client-src/src/GameLib/ActorInstance.cpp:

    In __AccumulationMovement, skip any motion that is not explicitly flagged as moving:

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


    ## Result

    - `DAMAGE` and other non-moving motions no longer slide the character.
    - `COMBO`, `WALK`, `RUN`, etc. keep their forward movement because their `.msa` files correctly set `Accumulation`.
    - Male Shaman with Bell no longer slides when hit.
    - Other classes are unaffected; for them the damage animation either had no root translation or the effect was not noticeable.

    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

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “FIX-uri”

    Informații

    Utilizatori ce navighează pe acest forum: Majestic-12 [Bot] și 4 vizitatori

    Discord ID copiat: