*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;
}





