1 mesaj
Administrator Administrator
  • Mesaje: 3558
  • Reacții: 59773
  • Mesaje utile: 38
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    *Descriere:

    Party System - Extended Info Members

    Afiseaza informatii extinse la membrii din grupa.

    *Poze / Video:
    [C++/Py] Informatii membrii grupa (Avansat) - Mesaj 1 - Imagine 2
    [C++/Py] Informatii membrii grupa (Avansat) - Mesaj 1 - Imagine 1

    *Link download / Code:


    Adaugam in common/service.h:
    Code:
        #define EXTENDED_PARTY_INFO
    Deschidem char.cpp si cautam:
    Code:
        bool CHARACTER::BuildUpdatePartyPacket(TPacketGCPartyUpdate & out)
               out.role                = GetParty()->GetRole(GetPlayerID());
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mai jos avem
    Code:
        void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
                                                val = GetExp();
                                        }
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem packet.h si cautam:
    Code:
        typedef struct packet_party_update
        {
                BYTE    header;
                DWORD   pid;
                BYTE    role;
                BYTE    percent_hp;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Deschidem party.cpp si cautam:
    Code:
        void CParty::SendPartyInfoOneToAll(DWORD pid)
        {
                auto it = m_memberMap.find(pid);
                if (it == m_memberMap.end())
                        return;
                if (it->second.pCharacter)
                {
                        SendPartyInfoOneToAll(it->second.pCharacter);
                        return;
                }
                // Data Building
                TPacketGCPartyUpdate p;
                memset(&p, 0, sizeof(p));
                p.header = HEADER_GC_PARTY_UPDATE;
                p.pid = pid;
                p.percent_hp = 255;
                p.role = it->second.bRole;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
        void CParty::SendPartyInfoAllToOne(LPCHARACTER ch)
        {
                TPacketGCPartyUpdate p;
                for (auto it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
                {
                        if (!it->second.pCharacter)
                        {
                                DWORD pid = it->first;
                                memset(&p, 0, sizeof(p));
                                p.header = HEADER_GC_PARTY_UPDATE;
                                p.pid = pid;
                                p.percent_hp = 255;
                                p.role = it->second.bRole;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Acum, in sursa binary deschidem Packet.h si cautam:
    Code:
        typedef struct packet_party_update
        {
            BYTE header;
            DWORD pid;
            BYTE state;
            BYTE percent_hp;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


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


    Deschidem PythonNetworkStreamPhaseGame.cpp si cautam:
    Code:
    CPythonPlayer::Instance().UpdatePartyMemberInfo(kPartyUpdatePacket.pid, kPartyUpdatePacket.state, kPartyUpdatePacket.percent_hp);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonPlayer.cpp si cautam:
    Code:
    void CPythonPlayer::UpdatePartyMemberInfo(DWORD dwPID, BYTE byState, BYTE byHPPercentage)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam mai jos:
    Code:
            pPartyMemberInfo->byState = byState;
            pPartyMemberInfo->byHPPercentage = byHPPercentage;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem acum PythonPlayer.h si cautam:
    Code:
                typedef struct SPartyMemberInfo
                {
                    SPartyMemberInfo(DWORD _dwPID, const char * c_szName) : dwPID(_dwPID), strName(c_szName), dwVID(0) {}
                    DWORD dwVID;
                    DWORD dwPID;
                    std::string strName;
                    BYTE byState;
                    BYTE byHPPercentage;
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mai jos gasim:
    Code:
    void    UpdatePartyMemberInfo(DWORD dwPID, BYTE byState, BYTE byHPPercentage);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonPlayerModule.cpp si cautam:
    Code:
        PyObject * playerGetPartyMemberHPPercentage(PyObject* poSelf, PyObject* poArgs)
        {
            int iPID;
            if (!PyTuple_GetInteger(poArgs, 0, &iPID))
                return Py_BuildException();
            CPythonPlayer::TPartyMemberInfo * pPartyMemberInfo;
            if (!CPythonPlayer::Instance().GetPartyMemberPtr(iPID, &pPartyMemberInfo))
                return Py_BuildValue("i", FALSE);
            return Py_BuildValue("i", pPartyMemberInfo->byHPPercentage);
        }
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mai jos gasim:
    Code:
                { "GetPartyMemberHPPercentage",    playerGetPartyMemberHPPercentage,    METH_VARARGS },
    Adaugam:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Nu uitati sa adaugati in locale_inc.h:
    Code:
    #define EXTENDED_PARTY_INFO
    Pentru partea de client va las fisierele complete, voi cautati dupa:
    Code:
    EXTENDED_PARTY_INFO
    si modificati/adaugati cum e in fisiere.

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


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


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


    Adaugati in etc\ymir work\ui\pattern\ asta:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    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
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/jWxeDSf7HP

    Suntem aproape 2000 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:




    See full signature

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    Suntem aproape: 
    Robot Discord
    Roboțelu'
    Anunț

    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 “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: Maruski și 5 vizitatori

    Discord ID copiat: