3 mesaje
  • Mesaje: 9
  • Reacții: 2
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    *Problemă/Întrebare: Bună ziua. Mă poate ajuta cineva să schimb „Culoarea numelui breslei după rang” în „Culoarea numelui breslei după nivel”? Mai exact, mă refer la faptul că atunci când o breslă ajunge la nivelul 1, culoarea este standard, la nivelul 2, culoarea este diferită etc.

    *Resursă folosită (sistem/funcție/modificare): modificare

    *Syserr:

    *Fișier(e) cu problema (link pastebin / code):
    Code:
     //char.cpp
    
    void CHARACTER::SendGuildName(CGuild* pGuild)
    {
        if (NULL == pGuild) return;
    	    DESC    *desc = GetDesc();
    	    if (NULL == desc) return;
        if (m_known_guild.find(pGuild->GetID()) != m_known_guild.end()) return;
    	    m_known_guild.insert(pGuild->GetID());
    	    TPacketGCGuildName    pack;
        memset(&pack, 0x00, sizeof(pack));
        pack.header        = HEADER_GC_GUILD;
        pack.subheader    = GUILD_SUBHEADER_GC_GUILD_NAME;
        pack.size        = sizeof(TPacketGCGuildName);
        pack.guildID    = pGuild->GetID();    
        memcpy(pack.guildName, pGuild->GetName(), GUILD_NAME_MAX_LEN);
        pack.guildRank = CGuildManager::instance().GetRank(pGuild);
        desc->Packet(&pack, sizeof(pack));
    }
    
    Modify like:
    
    void CHARACTER::SendGuildName(CGuild* pGuild)
    {
        if (NULL == pGuild) return;
    	    DESC    *desc = GetDesc();
    	    if (NULL == desc) return;
        if (m_known_guild.find(pGuild->GetID()) != m_known_guild.end()) return;
    	    m_known_guild.insert(pGuild->GetID());
    	    TPacketGCGuildName    pack;
        memset(&pack, 0x00, sizeof(pack));
        pack.header        = HEADER_GC_GUILD;
        pack.subheader    = GUILD_SUBHEADER_GC_GUILD_NAME;
        pack.size        = sizeof(TPacketGCGuildName);
        pack.guildID    = pGuild->GetID();    
        memcpy(pack.guildName, pGuild->GetName(), GUILD_NAME_MAX_LEN);
        pack.guildLevel = CGuildManager::instance().GetLevel(pGuild);
        desc->Packet(&pack, sizeof(pack));
    }
    
    
    //packet.h 
    
    typedef struct packet_guild_name_t
    {
        BYTE header;
        WORD size;
        BYTE subheader;
        DWORD    guildID;
        char    guildName[GUILD_NAME_MAX_LEN];
        int guildRank;
        
    } TPacketGCGuildName;
    
    Modify like:
    
    typedef struct packet_guild_name_t
    {
        BYTE header;
        WORD size;
        BYTE subheader;
        DWORD    guildID;
        char    guildLevel[GUILD_NAME_MAX_LEN];
        int guildLevel;
        
    } TPacketGCGuildName;
    
    
    //PythonGuild.h 
    
    typedef std::map<DWORD, GuildNameRank> TGuildNameMap;
    
    struct GuildNameRank
    {
        std::string name;
        int rank;
    };
    
    void RegisterGuildName(DWORD dwID, const char * c_szName, int rank);
    
    Modify like:
    
    typedef std::map<DWORD, GuildNameLevel> TGuildNameMap;
    
    struct GuildNameLevel
    {
        std::string name;
        int level;
    };
    
    void RegisterGuildName(DWORD dwID, const char * c_szName, int level);
    
    
    //PythonGuild.cpp-t 
    
    void CPythonGuild::RegisterGuildName(DWORD dwID, const char * c_szName, int rank)
    {
    	GuildNameRank gnr;
    	gnr.name = std::string(c_szName);
    	gnr.rank = rank;
    	m_GuildNameMap.insert(make_pair(dwID, gnr));
    }
    
    bool CPythonGuild::GetGuildName(DWORD dwID, std::string * pstrGuildName)
    {
    	if (m_GuildNameMap.end() == m_GuildNameMap.find(dwID))
    		return false;
    
    	switch (m_GuildNameMap[dwID].rank)
    	{
    	case 1:
    		*pstrGuildName = "|cffFFC125" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	case 2:
    		*pstrGuildName = "|cff888888" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	case 3:
    		*pstrGuildName = "|cffCD661D" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	default:
    		*pstrGuildName = m_GuildNameMap[dwID].name;
    		break;
    	}
    
    	return true;
    }
    
    Modify:
    
    void CPythonGuild::RegisterGuildName(DWORD dwID, const char * c_szName, int level)
    {
    	GuildNamelevel gnr;
    	gnr.name = std::string(c_szName);
    	gnr.level = level;
    	m_GuildNameMap.insert(make_pair(dwID, gnr));
    }
    
    bool CPythonGuild::GetGuildName(DWORD dwID, std::string * pstrGuildName)
    {
    	if (m_GuildNameMap.end() == m_GuildNameMap.find(dwID))
    		return false;
    
    	switch (m_GuildNameMap[dwID].rank)
    	{
    	case 1:
    		*pstrGuildName = "|cffFFC125" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	case 2:
    		*pstrGuildName = "|cff888888" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	case 3:
    		*pstrGuildName = "|cffCD661D" + m_GuildNameMap[dwID].name + "|r";
    		break;
    	default:
    		*pstrGuildName = m_GuildNameMap[dwID].name;
    		break;
    	}
    
    	return true;
    }
    
    
    //PythonNetworkStreamPhaseGame.cpp
    
    case GUILD_SUBHEADER_GC_GUILD_NAME:
            {
                DWORD dwID;
                char szGuildName[GUILD_NAME_MAX_LEN+1];
                int guildRank;
    	            int iPacketSize = int(GuildPacket.size) - sizeof(GuildPacket);
    	            int nItemSize = sizeof(dwID) + GUILD_NAME_MAX_LEN + sizeof(guildRank);
    	            assert(iPacketSize%nItemSize==0 && "GUILD_SUBHEADER_GC_GUILD_NAME");
    	            for (; iPacketSize > 0;)
                {
                    if (!Recv(sizeof(dwID), &dwID))
                        return false;
                    
                    if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName))
                        return false;
    	                if (!Recv(sizeof(guildRank), &guildRank))
                        return false;
    	                szGuildName[GUILD_NAME_MAX_LEN] = 0;
                    //Tracef(" >> GulidName [%d : %s]\n", dwID, szGuildName);
                    CPythonGuild::Instance().RegisterGuildName(dwID, szGuildName, guildRank);
                    iPacketSize -= nItemSize;
                }
                break;
            }
    		
    Modify:
    
    case GUILD_SUBHEADER_GC_GUILD_NAME:
            {
                DWORD dwID;
                char szGuildName[GUILD_NAME_MAX_LEN+1];
                int guildLevel;
    	            int iPacketSize = int(GuildPacket.size) - sizeof(GuildPacket);
    	            int nItemSize = sizeof(dwID) + GUILD_NAME_MAX_LEN + sizeof(guildLevel);
    	            assert(iPacketSize%nItemSize==0 && "GUILD_SUBHEADER_GC_GUILD_NAME");
    	            for (; iPacketSize > 0;)
                {
                    if (!Recv(sizeof(dwID), &dwID))
                        return false;
                    
                    if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName))
                        return false;
    	                if (!Recv(sizeof(guildRank), &guildLevel))
                        return false;
    	                szGuildName[GUILD_NAME_MAX_LEN] = 0;
                    //Tracef(" >> GulidName [%d : %s]\n", dwID, szGuildName);
                    CPythonGuild::Instance().RegisterGuildName(dwID, szGuildName, guildLevel);
                    iPacketSize -= nItemSize;
                }
                break;
            }
    *Poze / Video: Modificare de la Culoarea numelui breslei după clasament la Culoarea numelui breslei după nivel - Mesaj 1 - Imagine 1

    🔥 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!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
    Robot Robot
  • Mesaje: 122
  • Reacții: 0
  • Mesaje utile: 0
  • Status: Sunt doar un Bot :)
  • Regat: Shinsoo
  • Contact:

    Medalii

    Avatar utilizator
    Robot
    Robot

    Mesaj de Uriel »

    Salut, Szyfrant!

    Îți recomand câteva link-uri utile care te pot ajuta să rezolvi problema mai rapid:

    - Alte probleme rezolvate
    - Fixuri Metin2
    - Tutoriale
    - Cum resetez parola MySQL
    - Compilare sursă Metin2
    - Lista FreeBSD pentru compilare


    Și dacă vrei ajutor direct, te așteptăm pe serverul nostru de Discord — chat activ, suport live și o comunitate faină gata să te ajute! Pentru a intra pe serverul de Discord: Click aici
    Moderator Moderator
  • Mesaje: 163
  • Reacții: 2095
  • Mesaje utile: 7
  • Status: Recuperator de taxe .
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Moderator
    Moderator

    Mesaj de annoyed__ »

    ce ai pus tu acolo e modificare ca sa trimiti in pachet si nivelul la guild . in sursa binary trebuie sa modifici ca sa primeasca si leveleul , iar in fisierele unde ai alea de text , text color prin pythontexttail trebuie sa te invarti si sa pui verificarile .
    Iti las un model cum am facut eu la grade :
    char chrName[CHARACTER_NAME_MAX_LEN + 1 + 6]; // + 5 is for mob Vnum
    #ifdef GRAD_IN_PARANTEZE

    if (pCharacterInstance->IsGameMaster())
    snprintf(chrName, sizeof(chrName), "%s%s%s|r", GRAD_GM, NUME_GM, pCharacterInstance->GetNameString());

    else if (pCharacterInstance->IsBuffi())
    snprintf(chrName, sizeof(chrName), "%s%s%s|r", GRAD_BUFFI, NUME_COMMON, pCharacterInstance->GetNameString());

    #define GRAD_GM ""//"|cFF8080FF[GM]|r " //Grad in paranteza inaintea numelui GM
    #define GRAD_BUFFI "|cFFFF0000[BUFFI]|r " //Grad in paranteza inaintea numelui BUFFI

    Nu trebuie sa fie lafel dar poate te ajuta . La mine am facut un sistem care ma ajuta sa schimba culori / nume / grade etc doar din define .
    See full signature

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Închis

    Înapoi la “Arhivă probleme”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator

    Discord ID copiat: