I don't care anymore..
CSCommon\Source\MMatchDBMgr.cpp(920):
Code:
poutCharInfo->m_nRedColor = (int)rs.Field("RedColor").AsInt();
poutCharInfo->m_nGreenColor = (int)rs.Field("GreenColor").AsInt();
poutCharInfo->m_nBlueColor = (int)rs.Field("BlueColor").AsInt();
CSCommon\Source\MMatchServer.cpp(160):
Code:
pDest->nRedColor = (int)pSrcCharInfo->m_nRedColor;
pDest->nGreenColor = (int)pSrcCharInfo->m_nGreenColor;
pDest->nBlueColor = (int)pSrcCharInfo->m_nBlueColor;
CSCommon\Source\MMatchServer.cpp(242):
Code:
pDest->nRedColor = (int)pSrcCharInfo->m_nRedColor;
pDest->nGreenColor = (int)pSrcCharInfo->m_nGreenColor;
pDest->nBlueColor = (int)pSrcCharInfo->m_nBlueColor;
CSCommon\Source\MMatchServer_Channel.cpp(37):
Code:
pDest->nChannelRed = pSrcObject->GetCharInfo()->m_nRedColor;
pDest->nChannelGreen = pSrcObject->GetCharInfo()->m_nGreenColor;
pDest->nChannelBlue = pSrcObject->GetCharInfo()->m_nBlueColor;
CSCommon\Source\MMatchObjCache.cpp(40):
Code:
pCache->SetInfo(pObj->GetUID(), pObj->GetName(), pCharInfo->m_ClanInfo.m_szClanName,
pCharInfo->m_nLevel, pObj->GetAccountInfo()->m_nUGrade, pObj->GetAccountInfo()->m_nPGrade
, pCharInfo->m_nRank, pCharInfo->m_nTotalKillCount, pCharInfo->m_nTotalDeathCount, nDTLastWeekGrade
, pCharInfo->m_nRedColor, pCharInfo->m_nGreenColor, pCharInfo->m_nBlueColor);
CSCommon\Source\MMatchObject.cpp(541):
Code:
m_nRedColor = 0;
m_nGreenColor = 0;
m_nBlueColor = 0;
CSCommon\Include\MMatchObject.h(280):
Code:
int m_nRedColor, m_nGreenColor, m_nBlueColor;
CSCommon\Include\MMatchObject.h(285):
Code:
MMatchCharInfo() : m_nCID(0), m_nCharNum(0), m_nLevel(0), m_nSex(MMS_MALE), m_nFace(0),m_nRedColor(0), m_nGreenColor(0), m_nBlueColor(0),
m_nHair(0), m_nXP(0), m_nBP(0), m_fBonusRate(DEFAULT_CHARINFO_BONUSRATE), m_nPrize(DEFAULT_CHARINFO_PRIZE), m_nHP(0),
m_nAP(0), m_nMaxWeight(DEFAULT_CHARINFO_MAXWEIGHT), m_nSafeFalls(DEFAULT_CHARINFO_SAFEFALLS),
m_nFR(0), m_nCR(0), m_nER(0), m_nWR(0),
m_nConnTime(0), m_nTotalKillCount(0), m_nTotalDeathCount(0), m_nConnKillCount(0), m_nConnDeathCount(0),
m_nConnXP(0), m_nRank(0), m_nBattleStartTime(0), m_nPlayTimeSec(0), m_nTotalPlayTimeSec(0), m_nBattleStartXP(0)
CSCommon\Include\MMatchTransDataType.h(51):
Code:
int nRedColor, nGreenColor, nBlueColor;
CSCommon\Include\MMatchTransDataType.h(275):
Code:
int nRedColor, nGreenColor, nBlueColor;
Gunz\ZGameInterface_OnCommand.cpp:
Code:
case MC_MATCH_RESPONSE_SELECT_CHAR:
{
int nResult;
pCommand->GetParameter(&nResult, 0, MPT_INT);
if (nResult == MOK)
{
MCommandParameter* pParam = pCommand->GetParameter(1);
if(pParam->GetType()!=MPT_BLOB) {
_ASSERT(0);
break;
}
void* pCharBlob = pParam->GetPointer();
MTD_CharInfo* pCharInfo = (MTD_CharInfo*)MGetBlobArrayElement(pCharBlob, 0);
int nRed = pCharInfo->nRedColor, nGreen = pCharInfo->nGreenColor, nBlue = pCharInfo->nBlueColor;
char szRed[12], szGreen[12], szBlue[12];
sprintf(szRed, "%d", nRed);
sprintf(szGreen, "%d", nGreen);
sprintf(szBlue, "%d", nBlue);
memcpy(ZGetConfiguration()->GetEtc()->nRed, szRed, sizeof(nRed) + 64);
memcpy(ZGetConfiguration()->GetEtc()->nGreen, szGreen, sizeof(nGreen) + 64);
memcpy(ZGetConfiguration()->GetEtc()->nBlue, szBlue, sizeof(nBlue) + 64);
ZCharacterSelectView::SetLastChar(pCharInfo->szName);
ZGetMyInfo()->InitCharInfo(pCharInfo->szName, pCharInfo->szClanName, pCharInfo->nClanGrade, (MMatchSex)pCharInfo->nSex,
(int)pCharInfo->nHair, (int)pCharInfo->nFace);
ZGetMyInfo()->GetItemList()->SetEquipItemInfo(pCharInfo->uidEquipedItem, pCharInfo->nEquipedItemDesc, pCharInfo->nEquipedItemCount);
ZGetMyInfo()->SetBP(pCharInfo->nBP);
ZGetMyInfo()->SetXP((int)pCharInfo->nXP);
ZGetMyInfo()->SetLevel((int)pCharInfo->nLevel);
pParam = pCommand->GetParameter(2);
if (pParam->GetType()!=MPT_BLOB) {
_ASSERT(0);
break;
}
void* pExtraCharBlob = pParam->GetPointer();
MTD_MyExtraCharInfo* pMyExtraCharInfo = (MTD_MyExtraCharInfo*)MGetBlobArrayElement(pExtraCharBlob, 0);
if (pMyExtraCharInfo) {
ZGetMyInfo()->SetLevelPercent((int)pMyExtraCharInfo->nLevelPercent);
}
if ((ZGetGameClient()->GetServerMode() != MSM_CLAN) || (!ZGetMyInfo()->IsClanJoined())) {
ZPostRequestRecommendChannel();
} else {
ZPostChannelRequestJoinFromChannelName(ZGetGameClient()->GetPlayerUID(), MCHANNEL_TYPE_CLAN, ZGetMyInfo()->GetClanName());
}
ZPostUserOption();
}
}
break;
Gunz\ZCombatInterface.cpp(2651):
Code:
under ZScoreBoardItem *pItem=new ZScoreBoardItem;
int nRed = pCharacter->GetCharInfo()->nRedColor, nGreen = pCharacter->GetCharInfo()->nGreenColor, nBlue = pCharacter->GetCharInfo()->nBlueColor;
sprintf(pItem->szLevel,"%d%s",pCharacter->GetProperty()->nLevel, ZMsg(MSG_CHARINFO_LEVELMARKER));
pItem->SetColor(MCOLOR(nRed, nGreen, nBlue));
Gunz\ZObserver.cpp(562):
Code:
sprintf(szName, "%s (HP:%d, AP:%d)", m_pTargetCharacter->GetUserName(), (int)m_pTargetCharacter->GetHP(), (int)m_pTargetCharacter->GetAP());
int nRed = m_pTargetCharacter->GetCharInfo()->nRedColor, nGreen = m_pTargetCharacter->GetCharInfo()->nGreenColor, nBlue = m_pTargetCharacter->GetCharInfo()->nBlueColor;
pDC->SetColor(MCOLOR(nRed, nGreen, nBlue));
1VS2003\Gunz\ZChat.cpp(196):
Code:
int nRed = atoi(ZGetConfiguration()->GetEtc()->nRed), nGreen = atoi(ZGetConfiguration()->GetEtc()->nGreen), nBlue = atoi(ZGetConfiguration()->GetEtc()->nBlue);
switch (state)
{
case GUNZ_GAME:
{
ZCombatInterface* pCombatInterface = ZGetGameInterface()->GetCombatInterface();
int nTeam = MMT_ALL;
if (pCombatInterface->IsTeamChat() || bTeamChat)
nTeam = ZGetGame()->m_pMyCharacter->GetTeamID();
ZPostPeerChat(szMsg, nTeam, nRed, nGreen, nBlue);
}
break;
case GUNZ_LOBBY:
{
ZPostChannelChat(ZGetGameClient()->GetPlayerUID(), ZGetGameClient()->GetChannelUID(), szMsg, nRed, nGreen, nBlue);
}
break;
case GUNZ_STAGE:
{
ZPostStageChat(ZGetGameClient()->GetPlayerUID(), ZGetGameClient()->GetStageUID(), szMsg, nRed, nGreen, nBlue);
}
break;
}
Gunz\ZPost.h:
Code:
inline void ZPostPeerChat(char* szMsg, int nTeam=0, int nR=0, int nG=0, int nB=0)
{
char szSendMsg[ 256 ] = {0,};
const size_t nInputLen = strlen( szMsg );
if( 256 > nInputLen )
{
ZPOSTCMD5(MC_PEER_CHAT, MCmdParamInt(nTeam), MCommandParameterString(szMsg), MCommandParameterInt(nR), MCommandParameterInt(nG), MCommandParameterInt(nB))
}
else
{
strncpy( szSendMsg, szMsg, 255 );
ZPOSTCMD5(MC_PEER_CHAT, MCmdParamInt(nTeam), MCommandParameterString(szSendMsg), MCommandParameterInt(nR), MCommandParameterInt(nG), MCommandParameterInt(nB))
}
CHECK_RETURN_CALLSTACK(ZPostPeerChat);
}
#define ZPostChannelChat(/*const MUID&*/ uidChar, /*const MUID&*/ uidChannel, /*char**/ szChat, nR, nG, nB) { \
ZPOSTCMD6(CLOAK_CMD_ID(MC_MATCH_CHANNEL_REQUEST_CHAT, 87252), MCommandParameterUID(uidChar), MCommandParameterUID(uidChannel), MCmdParamStr(szChat), MCommandParameterInt(nR), MCommandParameterInt(nG), MCommandParameterInt(nB));\
}
inline void ZPostStageChat(const MUID& uidChar, const MUID& uidStage, char* szChat, int nR, int nG, int nB)
{
ZPOSTCMD6(MC_MATCH_STAGE_CHAT, MCommandParameterUID(uidChar), MCommandParameterUID(uidStage), MCmdParamStr(szChat), MCommandParameterInt(nR), MCommandParameterInt(nG), MCommandParameterInt(nB));
}
CSCommon\Source\MSharedCommandTable.cpp:
Code:
C(MC_MATCH_STAGE_CHAT, "Stage.Chat", "Chat to Stage", MCDT_MACHINE2MACHINE)
P(MPT_UID, "uidPlayer")
P(MPT_UID, "uidStage")
P(MPT_STR, "Chat")
P(MPT_INT, "nR")
P(MPT_INT, "nG")
P(MPT_INT, "nB")
C(MC_PEER_CHAT, "Peer.Chat", "Chat", MCDT_PEER2PEER)
P(MPT_INT, "TeamID")
P(MPT_STR, "Msg");
P(MPT_INT, "nR")
P(MPT_INT, "nG")
P(MPT_INT, "nB")
C(MC_MATCH_CHANNEL_REQUEST_CHAT, "Channel.Request.Chat", "Request Chat to Channel", MCDT_MACHINE2MACHINE)
P(MPT_UID, "uidPlayer")
P(MPT_UID, "uidChannel")
P(MPT_STR, "Chat");
P(MPT_INT, "nR")
P(MPT_INT, "nG")
P(MPT_INT, "nB")
C(MC_MATCH_CHANNEL_CHAT, "Channel.Chat", "Chat to Channel", MCDT_MACHINE2MACHINE)
P(MPT_UID, "uidChannel")
P(MPT_STR, "PlayerName")
P(MPT_STR, "Chat");
P(MPT_INT, "nGrade")
P(MPT_INT, "nR")
P(MPT_INT, "nG")
P(MPT_INT, "nB")
CSCommon\Source\MMatchServer_OnCommand.cpp:
Code:
case MC_MATCH_CHANNEL_REQUEST_CHAT:
{
MUID uidSender, uidPlayer, uidChannel;
static char szChat[ CHAT_STRING_LEN ];
int nR, nG, nB;
uidSender = pCommand->GetSenderUID();
pCommand->GetParameter(&uidPlayer, 0, MPT_UID);
if( uidSender != uidPlayer )
{
break;
}
pCommand->GetParameter(&uidChannel, 1, MPT_UID);
pCommand->GetParameter(szChat, 2, MPT_STR, CHAT_STRING_LEN );
pCommand->GetParameter(&nR, 3, MPT_INT);
pCommand->GetParameter(&nG, 4, MPT_INT);
pCommand->GetParameter(&nB, 5, MPT_INT);
OnChannelChat(uidSender, uidChannel, szChat, nR, nG, nB);
}
break;
case MC_MATCH_STAGE_CHAT:
{
MUID uidPlayer, uidSender, uidStage;
static char szChat[CHAT_STRING_LEN];
int nR, nG, nB;
uidSender = pCommand->GetSenderUID();
pCommand->GetParameter(&uidPlayer, 0, MPT_UID);
if( uidSender != uidPlayer )
{
break;
}
pCommand->GetParameter(&uidStage, 1, MPT_UID);
pCommand->GetParameter(szChat, 2, MPT_STR, CHAT_STRING_LEN );
pCommand->GetParameter(&nR, 3, MPT_INT);
pCommand->GetParameter(&nG, 4, MPT_INT);
pCommand->GetParameter(&nB, 5, MPT_INT);
OnStageChat(uidPlayer, uidStage, szChat, nR, nG, nB);
}
break;
CSCommon\Source\MMatchServer_Stage.cpp
Code:
void MMatchServer::OnStageChat(const MUID& uidPlayer, const MUID& uidStage, char* pszChat, int nR, int nG, int nB)
{
if (pszChat[0] == '/') {
if (StageKick(this, uidPlayer, uidStage, pszChat))
return;
if (StageShowInfo(this, uidPlayer, uidStage, pszChat))
return;
}
StageChat(uidPlayer, uidStage, pszChat, nR, nG, nB);
}
CSCommon\Include\MMatchServer.h:
Code:
void OnStageChat(const MUID& uidPlayer, const MUID& uidStage, char* pszChat, int nR, int nG, int nB);
CSCommon\Source\MMatchServer_Stage.cpp:
Code:
bool MMatchServer::StageChat(const MUID& uidPlayer, const MUID& uidStage, char* pszChat, int nR, int nG, int nB)
{
MMatchStage* pStage = FindStage(uidStage);
if (pStage == NULL) return false;
MMatchObject* pObj = (MMatchObject*)GetObject(uidPlayer);
if ((pObj == NULL) || (pObj->GetCharInfo() == NULL)) return false;
if (pObj->GetAccountInfo()->m_nUGrade == MMUG_CHAT_LIMITED) return false;
if( uidStage != pObj->GetStageUID() )
{
return false;
}
MCommand* pCmd = new MCommand(m_CommandManager.GetCommandDescByID(MC_MATCH_STAGE_CHAT), MUID(0,0), m_This);
pCmd->AddParameter(new MCommandParameterUID(uidPlayer));
pCmd->AddParameter(new MCommandParameterUID(uidStage));
pCmd->AddParameter(new MCommandParameterString(pszChat));
pCmd->AddParameter(new MCommandParameterInt(nR));
pCmd->AddParameter(new MCommandParameterInt(nG));
pCmd->AddParameter(new MCommandParameterInt(nB));
RouteToStage(uidStage, pCmd);
return true;
}
CSCommon\Include\MMatchServer.h:
Code:
bool StageChat(const MUID& uidPlayer, const MUID& uidStage, char* pszChat, int nR, int nG, int nB);
CSCommon\Source\MMatchServer_Channel.cpp:
Code:
void MMatchServer::OnChannelChat(const MUID& uidPlayer, const MUID& uidChannel, char* pszChat, int nR, int nG, int nB)
{
ChannelChat(uidPlayer, uidChannel, pszChat, nR, nG, nB);
}
CSCommon\Include\MMatchServer.h:
Code:
void OnChannelChat(const MUID& uidPlayer, const MUID& uidChannel, char* pszChat, int nR, int nG, int nB);
CSCommon\Source\MMatchServer_Channel.cpp:
Code:
bool MMatchServer::ChannelChat(const MUID& uidPlayer, const MUID& uidChannel, char* pszChat, int nR, int nG, int nB)
{
if( 0 == strlen(pszChat) ) return false;
MMatchChannel* pChannel = FindChannel(uidChannel);
if (pChannel == NULL) return false;
MMatchObject* pObj = (MMatchObject*)GetObject(uidPlayer);
if ((pObj == NULL) || (pObj->GetCharInfo() == NULL)) return false;
if (pObj->GetAccountInfo()->m_nUGrade == MMUG_CHAT_LIMITED) return false;
int nGrade = (int) pObj->GetAccountInfo()->m_nUGrade;
if( uidChannel != pObj->GetChannelUID() )
{
return false;
}
MUID uidStage = pObj->GetStageUID();
if( uidStage != MUID(0, 0) )
{
return false;
}
if( pObj->GetAccountPenaltyInfo()->IsBlock(MPC_CHAT_BLOCK) ) {
return false;
}
if( pObj->IsChatBanUser() == true ) return false;
if( pObj->CheckChatFlooding() )
{
pObj->SetChatBanUser();
MCommand* pCmd = new MCommand(m_CommandManager.GetCommandDescByID(MC_MATCH_CHANNEL_DUMB_CHAT), pObj->GetUID(), m_This);
Post(pCmd);
LOG(LOG_FILE, "MMatchServer::ChannelChat - Set Dumb Player(MUID:%d%d, Name:%s)", pObj->GetUID().High, pObj->GetUID().Low, pObj->GetName());
return false;
}
MCommand* pCmd = new MCommand(m_CommandManager.GetCommandDescByID(MC_MATCH_CHANNEL_CHAT), MUID(0,0), m_This);
pCmd->AddParameter(new MCommandParameterUID(uidChannel));
pCmd->AddParameter(new MCommandParameterString(pObj->GetCharInfo()->m_szName));
pCmd->AddParameter(new MCommandParameterString(pszChat));
pCmd->AddParameter(new MCommandParameterInt(nGrade));
pCmd->AddParameter(new MCommandParameterInt(nR));
pCmd->AddParameter(new MCommandParameterInt(nG));
pCmd->AddParameter(new MCommandParameterInt(nB));
RouteToChannelLobby(uidChannel, pCmd);
return true;
}
CSCommon\Include\MMatchServer.h:
Code:
bool ChannelChat(const MUID& uidPlayer, const MUID& uidChannel, char* pszChat, int nR, int nG, int nB);
Gunz\ZGameClient_OnCommand.cpp:
Code:
case MC_MATCH_CHANNEL_CHAT:
{
MUID uidChannel, uidChar;
char szChat[256];
char szName[256];
int nGrade;
int nR, nG, nB;
pCommand->GetParameter(&uidChannel, 0, MPT_UID);
pCommand->GetParameter(szName, 1, MPT_STR, sizeof(szName) );
pCommand->GetParameter(szChat, 2, MPT_STR, sizeof(szChat) );
pCommand->GetParameter(&nGrade,3, MPT_INT);
pCommand->GetParameter(&nR, 4, MPT_INT);
pCommand->GetParameter(&nG, 5, MPT_INT);
pCommand->GetParameter(&nB, 6, MPT_INT);
CheckMsgAboutChat(szChat);
OnChannelChat(uidChannel, szName, szChat, nGrade, nR, nG, nB);
}
break;
case MC_MATCH_STAGE_CHAT:
{
MUID uidStage, uidChar;
static char szChat[512];
int nR, nG, nB;
pCommand->GetParameter(&uidChar, 0, MPT_UID);
pCommand->GetParameter(&uidStage, 1, MPT_UID);
pCommand->GetParameter(szChat, 2, MPT_STR, sizeof(szChat) );
pCommand->GetParameter(&nR, 3, MPT_INT);
pCommand->GetParameter(&nG, 4, MPT_INT);
pCommand->GetParameter(&nB, 5, MPT_INT);
CheckMsgAboutChat(szChat);
OnStageChat(uidChar, uidStage, szChat, nR, nG, nB);
}
break;
Gunz\ZGameClient.cpp:
Code:
void ZGameClient::OnStageChat(const MUID& uidChar, const MUID& uidStage, char* szChat, int nR, int nG, int nB)
{
if (GetStageUID() != uidStage) return;
if (szChat[0] == 0) return;
if (ZGetGameClient()->GetRejectNormalChat()) return;
if (ZGetMyInfo()->GetCharName() == 0) return;
string name = GetObjName(uidChar);
char szText[512];
MCOLOR ChatColor = MCOLOR(nR, nG, nB);
sprintf(szText, "%s : %s", name.c_str(), szChat);
ZChatOutput(szText, ZChat::CMT_NORMAL, ZChat::CL_STAGE, ChatColor);
}
Gunz\ZGameClient.h:
Code:
void OnStageChat(const MUID& uidChar, const MUID& uidStage, char* szChat, int nR, int nG, int nB);
Gunz\ZGameClient.cpp:
Code:
void ZGameClient::OnChannelChat(const MUID& uidChannel, char* szName, char* szChat,int nGrade, int nR, int nG, int nB)
{
if (GetChannelUID() != uidChannel) return;
if ((szChat[0]==0) || (szName[0] == 0)) return;
char szText[155];
MCOLOR ChatColor = MCOLOR(nR, nG, nB);
sprintf(szText, "%s : %s", szName, szChat);
ZChatOutput(szText, ZChat::CMT_NORMAL, ZChat::CL_LOBBY, ChatColor);
}
Gunz\ZGameClient.h:
Code:
void OnChannelChat(const MUID& uidChannel, char* szName, char* szChat,int nGrade, int nR, int nG, int nB);
Gunz\ZGame.cpp:
Code:
case MC_PEER_CHAT:
{
int nTeam = MMT_ALL;
char szMsg[CHAT_STRING_LEN];
memset(szMsg, 0, sizeof(szMsg));
pCommand->GetParameter(&nTeam, 0, MPT_INT);
pCommand->GetParameter(szMsg, 1, MPT_STR, CHAT_STRING_LEN );
CheckMsgAboutChat(szMsg);
MUID uid=pCommand->GetSenderUID();
ZCharacter *pChar=ZGetCharacterManager()->Find(uid);
int nR, nG, nB;
pCommand->GetParameter(&nR, 2, MPT_INT);
pCommand->GetParameter(&nG, 3, MPT_INT);
pCommand->GetParameter(&nB, 4, MPT_INT);
MCOLOR ChatColor = MCOLOR(nR, nG, nB);
MCOLOR TeamChatColor = MCOLOR(109,207,246);
if(pChar)
{
int nMyTeam = ZGetGame()->m_pMyCharacter->GetTeamID();
if ( (nTeam == MMT_ALL) || (nTeam == MMT_SPECTATOR))
{
if ( !ZGetGameClient()->GetRejectNormalChat() || ( strcmp( pChar->GetUserName(), ZGetMyInfo()->GetCharName()) == 0))
{
ZGetSoundEngine()->PlaySound("if_error");
char szTemp[sizeof(szMsg)+64];
sprintf(szTemp, "%s%s : %s", ((pChar->IsDie()) ? "[DEAD] " : ""), pChar->GetProperty()->GetName(),szMsg);
ZChatOutput(ChatColor, szTemp);
}
}
else if (nTeam == nMyTeam)
{
if ( (!ZGetGameClient()->IsLadderGame() && !ZGetGameClient()->GetRejectTeamChat()) ||
( ZGetGameClient()->IsLadderGame() && !ZGetGameClient()->GetRejectClanChat()) ||
( strcmp( pChar->GetUserName(), ZGetMyInfo()->GetCharName()) == 0))
{
ZGetSoundEngine()->PlaySound("if_error");
char szTemp[256];
sprintf(szTemp, "%s(Team)%s : %s", ((pChar->IsDie()) ? "[DEAD] " : ""), pChar->GetProperty()->GetName(),szMsg);
ZChatOutput(TeamChatColor, szTemp);
}
}
}
}
break;
Gunz\ZPlayerListBox.cpp:
Code:
// mode PLAYERLISTMODE_CHANNEL
void ZPlayerListBox::AddPlayer(MUID& puid, ePlayerState state, int nLevel,char* szName, char *szClanName, unsigned int nClanID, MMatchUserGradeID nGrade, int duelTournamentGrade
,int nR, int nG, int nB)
{
if ( (int)strlen( szName) == 0) return;
char szFileName[64] = "";
char szLevel[64] = "";
char* szRefName = NULL;
MCOLOR _color = MCOLOR(nR, nG, nB);
sprintf(szLevel,"%2d",nLevel);
szRefName = szName;
switch (state)
{
case PS_FIGHT : strcpy(szFileName, "player_status_player.tga"); break;
case PS_WAIT : strcpy(szFileName, "player_status_game.tga"); break;
case PS_LOBBY : strcpy(szFileName, "player_status_lobby.tga"); break;
}
char szDTGradeIconFileName[64];
GetDuelTournamentGradeIconFileName(szDTGradeIconFileName, duelTournamentGrade);
MBitmap* pBmpDTGradeIcon = MBitmapManager::Get( szDTGradeIconFileName );
ZLobbyPlayerListItem* pItem = new ZLobbyPlayerListItem(puid, MBitmapManager::Get(szFileName), nClanID, szLevel, szRefName, szClanName, state, nGrade, pBmpDTGradeIcon );
pItem->SetColor(_color);
MListBox::Add( pItem );
}
// mode PLAYERLISTMODE_STAGE
void ZPlayerListBox::AddPlayer(MUID& puid, MMatchObjectStageState state, int nLevel, char* szName, char* szClanName, unsigned int nClanID, bool isMaster, MMatchTeam nTeam, int duelTournamentGrade
,int nR, int nG, int nB)
{
if ( (int)strlen( szName) == 0) return;
char szFileName[64] = "";
char szFileNameState[64] = "";
char szLevel[64] = "";
char* szRefName = NULL;
MCOLOR _color = MCOLOR(nR, nG, nB);
sprintf(szLevel,"%2d",nLevel);
szRefName = szName;
MBitmap* pBitmap = NULL;
if(isMaster) {
switch (state) {
case MOSS_NONREADY :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_master_red.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_master_blue.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_master_observer.tga");
else strcpy(szFileName, "stg_status_master_normal.tga");
break;
case MOSS_READY :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_master_red_ready.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_master_blue_ready.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_master_observer.tga");
else strcpy(szFileName, "stg_status_master_normal_ready.tga");
break;
case MOSS_EQUIPMENT :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_master_red_equip.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_master_blue_equip.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_master_observer.tga");
else strcpy(szFileName, "stg_status_master_normal_equip.tga");
break;
default :
strcpy(szFileName, " ");
break;
}
}
else {
switch (state) {
case MOSS_NONREADY :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_member_red.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_member_blue.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_member_observer.tga");
else strcpy(szFileName, "stg_status_member_normal.tga");
break;
case MOSS_READY :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_member_red_ready.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_member_blue_ready.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_member_observer.tga");
else strcpy(szFileName, "stg_status_member_normal_ready.tga");
break;
case MOSS_EQUIPMENT :
if(nTeam == MMT_RED) strcpy(szFileName, "stg_status_member_red_equip.tga");
else if(nTeam == MMT_BLUE) strcpy(szFileName, "stg_status_member_blue_equip.tga");
else if(nTeam == MMT_SPECTATOR) strcpy(szFileName, "stg_status_member_observer.tga");
else strcpy(szFileName, "stg_status_member_normal_equip.tga");
break;
}
}
pBitmap = MBitmapManager::Get(szFileName);
MMatchUserGradeID gid = MMUG_FREE;
char szDTGradeIconFileName[64];
GetDuelTournamentGradeIconFileName(szDTGradeIconFileName, duelTournamentGrade);
MBitmap* pBmpDTGradeIcon = MBitmapManager::Get( szDTGradeIconFileName );
ZStagePlayerListItem* pItem = new ZStagePlayerListItem(puid, pBitmap, nClanID, szRefName, szClanName, szLevel, gid, pBmpDTGradeIcon);
pItem->SetColor(_color);
MListBox::Add( pItem );
if( ZGetMyUID() == puid )
{
bool bBlue, bRed;
bBlue = bRed = false;
if( nTeam == MMT_BLUE) bBlue = true;
if( nTeam == MMT_RED) bRed = true;
MButton* pButton = (MButton*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget("StageTeamBlue");
pButton->SetCheck( bBlue );
pButton = (MButton*)ZApplication::GetGameInterface()->GetIDLResource()->FindWidget("StageTeamRed");
pButton->SetCheck( bRed );
}
}
Gunz\ZPlayerListBox.h:
Code:
// mode PLAYERLISTMODE_CHANNEL
void AddPlayer(MUID& puid, ePlayerState state, int nLevel,char* szName, char* szClanName, unsigned int nClanID, MMatchUserGradeID nGrade, int duelTournamentGrade
,int nR, int nG, int nB);
// mode PLAYERLISTMODE_STAGE
void AddPlayer(MUID& puid, MMatchObjectStageState state, int nLevel, char* szName, char* szClanName, unsigned int nClanID, bool isMaster,MMatchTeam nTeam, int duelTournamentGrade
,int nR, int nG, int nB);
Gunz\ZGameClient.cpp:
Code:
void ZGameClient::OnObjectCache(unsigned int nType, void* pBlob, int nCount)
{
MMatchClient::OnObjectCache(nType, pBlob, nCount);
ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource();
ZPlayerListBox* pList = (ZPlayerListBox*)pResource->FindWidget("StagePlayerList_");
vector< int > vecClanID;
if(pList)
{
if (nType == MATCHCACHEMODE_UPDATE) {
pList->RemoveAll();
ZGetPlayerManager()->Clear();
for(int i=0; i<nCount; i++){
MMatchObjCache* pCache = (MMatchObjCache*)MGetBlobArrayElement(pBlob, i);
if (pCache->CheckFlag(MTD_PlayerFlags_AdminHide) == false) {
pList->AddPlayer(pCache->GetUID(),MOSS_NONREADY,pCache->GetLevel(),
pCache->GetName(),pCache->GetClanName(),pCache->GetCLID(),false,MMT_ALL, pCache->GetDTGrade()
,pCache->GetRed(), pCache->GetGreen(), pCache->GetBlue());
if (m_EmblemMgr.CheckEmblem(pCache->GetCLID(), pCache->GetEmblemChecksum())) {
}
else if (pCache->GetEmblemChecksum() != 0) {
vecClanID.push_back( pCache->GetCLID() );
}
ZGetPlayerManager()->AddPlayer( pCache->GetUID(), pCache->GetName(), pCache->GetRank(), pCache->GetKillCount(), pCache->GetDeathCount());
}
}
} else if (nType == MATCHCACHEMODE_ADD) {
for(int i=0; i<nCount; i++){
MMatchObjCache* pCache = (MMatchObjCache*)MGetBlobArrayElement(pBlob, i);
if (pCache->CheckFlag(MTD_PlayerFlags_AdminHide) == false) { // Skip on AdminHide
pList->AddPlayer(pCache->GetUID(),MOSS_NONREADY,pCache->GetLevel(),
pCache->GetName(),pCache->GetClanName(),pCache->GetCLID(),false,MMT_ALL, pCache->GetDTGrade()
,pCache->GetRed(), pCache->GetGreen(), pCache->GetBlue());
if (m_EmblemMgr.CheckEmblem(pCache->GetCLID(), pCache->GetEmblemChecksum())) {
}
else if (pCache->GetEmblemChecksum() != 0) {
vecClanID.push_back( pCache->GetCLID() );
}
ZGetPlayerManager()->AddPlayer( pCache->GetUID(), pCache->GetName(), pCache->GetRank(), pCache->GetKillCount(), pCache->GetDeathCount());
}
}
} else if (nType == MATCHCACHEMODE_REMOVE) {
for(int i=0; i<nCount; i++){
MMatchObjCache* pCache = (MMatchObjCache*)MGetBlobArrayElement(pBlob, i);
pList->DelPlayer(pCache->GetUID());
ZGetPlayerManager()->RemovePlayer( pCache->GetUID());
}
ZApplication::GetGameInterface()->UpdateBlueRedTeam();
}
if(vecClanID.size() > 0)
{
void* pBlob = MMakeBlobArray(sizeof(int), (int)vecClanID.size());
int nCount = 0;
for(vector<int>::iterator it = vecClanID.begin(); it != vecClanID.end(); it++, nCount++)
{
int *nClanID = (int*)MGetBlobArrayElement(pBlob, nCount);
*nClanID = *it;
}
ZPostRequestEmblemURL(pBlob);
MEraseBlobArray(pBlob);
vecClanID.clear();
}
}
}
void ZGameClient::OnChannelPlayerList(int nTotalPlayerCount, int nPage, void* pBlob, int nCount)
{
ZIDLResource* pResource = ZApplication::GetGameInterface()->GetIDLResource();
ZPlayerListBox* pPlayerListBox = (ZPlayerListBox*)pResource->FindWidget("LobbyChannelPlayerList");
if (!pPlayerListBox) return;
if(pPlayerListBox->GetMode()!=ZPlayerListBox::PLAYERLISTMODE_CHANNEL) return;
MUID selUID = pPlayerListBox->GetSelectedPlayerUID();
int nStartIndex = pPlayerListBox->GetStartItem();
if(nCount) {
pPlayerListBox->RemoveAll();
} else {
return;
}
pPlayerListBox->m_nTotalPlayerCount = nTotalPlayerCount;
pPlayerListBox->m_nPage = nPage;
ZLobbyPlayerListItem* pItem = NULL;
vector< int > vecClanID;
for(int i=0; i<nCount; i++)
{
MTD_ChannelPlayerListNode* pNode = (MTD_ChannelPlayerListNode*)MGetBlobArrayElement(pBlob, i);
if( pNode )
{
ePlayerState state;
switch (pNode->nPlace)
{
case MMP_LOBBY: state = PS_LOBBY; break;
case MMP_STAGE: state = PS_WAIT; break;
case MMP_BATTLE: state = PS_FIGHT; break;
default: state = PS_LOBBY;
};
if ((pNode->nPlayerFlags & MTD_PlayerFlags_AdminHide) == true) {
} else {
if (m_EmblemMgr.CheckEmblem(pNode->nCLID, pNode->nEmblemChecksum)) {
}
else if (pNode->nEmblemChecksum != 0) {
vecClanID.push_back( pNode->nCLID );
}
pPlayerListBox->AddPlayer(pNode->uidPlayer, state, pNode->nLevel, pNode->szName, pNode->szClanName, pNode->nCLID,
(MMatchUserGradeID)pNode->nGrade, pNode->nDTLastWeekGrade, pNode->nChannelRed, pNode->nChannelGreen, pNode->nChannelBlue);
}
}
}
if(vecClanID.size() > 0)
{
void* pBlob = MMakeBlobArray(sizeof(int), (int)vecClanID.size());
int nCount = 0;
for(vector<int>::iterator it = vecClanID.begin(); it != vecClanID.end(); it++, nCount++)
{
int *nClanID = (int*)MGetBlobArrayElement(pBlob, nCount);
*nClanID = *it;
}
ZPostRequestEmblemURL(pBlob);
MEraseBlobArray(pBlob);
vecClanID.clear();
}
pPlayerListBox->SetStartItem(nStartIndex);
pPlayerListBox->SelectPlayer(selUID);
pPlayerListBox->AddTestItems();
}
Include\MMatchTransDataType.h:
Code:
struct MTD_ChannelPlayerListNode
{
MUID uidPlayer;
char szName[MATCHOBJECT_NAME_LENGTH];
char szClanName[CLAN_NAME_LENGTH];
char nLevel;
char nDTLastWeekGrade;
MMatchPlace nPlace;
unsigned char nGrade;
unsigned char nPlayerFlags;
unsigned int nCLID;
unsigned int nEmblemChecksum;
int nChannelRed, nChannelGreen, nChannelBlue;
};
CSCommon\Include\MMatchObjCache.h:
Code:
class MMatchObjCache {
protected:
MUID m_uidObject;
char m_szName[ MATCHOBJECT_NAME_LENGTH ];
char m_szClanName[CLAN_NAME_LENGTH];
char m_nLevel;
MMatchUserGradeID m_nUGrade;
MMatchPremiumGradeID m_nPGrade;
unsigned char m_nPlayerFlags;
unsigned int m_nCLID;
unsigned int m_nEmblemChecksum;
MMatchObjCacheCostume m_Costume;
unsigned int m_nRank;
int m_nKillCount;
int m_nDeathCount;
int m_nDTGrade;
int nStageRed, nStageGreen, nStageBlue;
public:
MMatchObjCache() {
m_szName[0] = NULL;
m_nLevel = 0;
m_nUGrade = MMUG_FREE;
m_nPGrade = MMPG_FREE;
memset(&m_Costume, 0, sizeof(MMatchObjCacheCostume));
ResetFlag();
m_nDTGrade = 0;
nStageRed =0; nStageGreen = 0; nStageBlue = 0;
}
virtual ~MMatchObjCache() {}
MUID GetUID() { return m_uidObject; }
char* GetName() { return m_szName; }
char* GetClanName() { return m_szClanName; }
int GetLevel() { return m_nLevel; }
MMatchUserGradeID GetUGrade() { return m_nUGrade; }
MMatchPremiumGradeID GetPGrade() { return m_nPGrade; }
int GetRed() { return nStageRed; }
int GetGreen() { return nStageGreen; }
int GetBlue() { return nStageBlue; }
void SetInfo(const MUID& uid, const char* szName, const char* szClanName, int nLevel,
MMatchUserGradeID nUGrade, MMatchPremiumGradeID nPGrade
, const unsigned int nRank, const int nKillCount, const int nDeathCount, int nDTGrade, int nR, int nG, int nB )
{
m_uidObject = uid;
strcpy(m_szName, szName);
strcpy(m_szClanName, szClanName);
m_nLevel = (char)nLevel;
m_nUGrade = nUGrade;
m_nPGrade = nPGrade;
m_nPlayerFlags = 0;
m_nRank = nRank;
m_nKillCount = nKillCount;
m_nDeathCount = nDeathCount;
m_nDTGrade = nDTGrade;
nStageRed = nR;
nStageGreen = nG;
nStageBlue = nB;
}
unsigned char GetFlags() { return m_nPlayerFlags; }
void SetFlags(unsigned char nFlags) { m_nPlayerFlags = nFlags; }
bool CheckFlag(unsigned char nFlagIdx) { return (m_nPlayerFlags & nFlagIdx) ? true:false; }
void ResetFlag() { m_nPlayerFlags = 0; }
void SetFlag(unsigned char nFlagIdx, bool bSet)
{
if (bSet) m_nPlayerFlags |= nFlagIdx;
else m_nPlayerFlags &= (0xff ^ nFlagIdx);
}
unsigned int GetCLID() { return m_nCLID; }
void SetCLID(unsigned int nCLID) { m_nCLID = nCLID; }
unsigned int GetEmblemChecksum() { return m_nEmblemChecksum; }
void SetEmblemChecksum(unsigned int nChecksum) { m_nEmblemChecksum = nChecksum; }
const unsigned int GetRank() { return m_nRank; }
const int GetKillCount() { return m_nKillCount; }
const int GetDeathCount() { return m_nDeathCount; }
int GetDTGrade() { return m_nDTGrade; }
void AssignCostume(MMatchObjCacheCostume* pCostume) { memcpy(&m_Costume, pCostume, sizeof(MMatchObjCacheCostume)); }
MMatchObjCacheCostume* GetCostume() { return &m_Costume; }
};
CSCommon\Source\MMatchClient.cpp:
Code:
void MMatchClient::ReplaceObjCache(MMatchObjCache* pCache)
{
MMatchObjCache* pScanCache = FindObjCache(pCache->GetUID());
if (pScanCache == NULL) return;
pScanCache->SetInfo(pCache->GetUID(), pCache->GetName(), pCache->GetClanName(), pCache->GetLevel(),
pCache->GetUGrade(), pCache->GetPGrade()
, pCache->GetRank(), pCache->GetKillCount(), pCache->GetDeathCount(), pCache->GetDTGrade()
, pCache->GetRed(), pCache->GetGreen(), pCache->GetBlue());
pScanCache->SetCLID(pCache->GetCLID());
pScanCache->SetEmblemChecksum(pCache->GetEmblemChecksum());
pScanCache->AssignCostume(pCache->GetCostume());
pScanCache->SetFlags(pCache->GetFlags());
}
void MMatchClient::UpdateObjCache(MMatchObjCache* pCache)
{
MMatchObjCache* pScanCache = FindObjCache(pCache->GetUID());
if (pScanCache != NULL) return;
MMatchObjCache* pNewCache = new MMatchObjCache;
pNewCache->SetInfo(pCache->GetUID(), pCache->GetName(), pCache->GetClanName(), pCache->GetLevel(),
pCache->GetUGrade(), pCache->GetPGrade()
, pCache->GetRank(), pCache->GetKillCount(), pCache->GetDeathCount(), pCache->GetDTGrade()
, pCache->GetRed(), pCache->GetGreen(), pCache->GetBlue());
pNewCache->SetCLID(pCache->GetCLID());
pNewCache->SetEmblemChecksum(pCache->GetEmblemChecksum());
pNewCache->AssignCostume(pCache->GetCostume());
pNewCache->SetFlags(pCache->GetFlags());
_ASSERT(m_ObjCacheMap.find(pNewCache->GetUID())==m_ObjCacheMap.end());
m_ObjCacheMap.Insert(pNewCache->GetUID(), pNewCache);
}
CSCommon\Source\MMatchObjCache.cpp:
Code:
MCommand* MMatchObjectCacheBuilder::GetResultCmd(MATCHCACHEMODE nMode, MCommandCommunicator* pCmdComm)
{
MCommand* pCmd = pCmdComm->CreateCommand(MC_MATCH_OBJECT_CACHE, MUID(0,0));
pCmd->AddParameter(new MCmdParamUChar(nMode));
int nCount = (int)m_ObjectCacheList.size();
void* pCacheArray = MMakeBlobArray(sizeof(MMatchObjCache), nCount);
int nIndex=0;
for (MMatchObjCacheList::iterator itor=m_ObjectCacheList.begin(); itor!=m_ObjectCacheList.end(); itor++) {
MMatchObjCache* pTrgCache = (MMatchObjCache*)MGetBlobArrayElement(pCacheArray, nIndex++);
MMatchObjCache* pSrcCache = (*itor);
pTrgCache->SetInfo(pSrcCache->GetUID(), pSrcCache->GetName(), pSrcCache->GetClanName(),
pSrcCache->GetLevel(), pSrcCache->GetUGrade(), pSrcCache->GetPGrade()
, pSrcCache->GetRank(), pSrcCache->GetKillCount(), pSrcCache->GetDeathCount(), pSrcCache->GetDTGrade()
, pSrcCache->GetRed(), pSrcCache->GetGreen(), pSrcCache->GetBlue());
pTrgCache->SetFlags(pSrcCache->GetFlags());
pTrgCache->SetCLID(pSrcCache->GetCLID());
pTrgCache->SetEmblemChecksum(pSrcCache->GetEmblemChecksum());
pTrgCache->AssignCostume(pSrcCache->GetCostume());
}
pCmd->AddParameter(new MCmdParamBlob(pCacheArray, MGetBlobArraySize(pCacheArray)));
MEraseBlobArray(pCacheArray);
return pCmd;
}
SQL:
PHP Code:
1)Database->GunzDB->Tables->Right Click Account.dbo and Hit Modify->
Add 3 Coloumns Names: RedColor, GreenColor, BlueColor. Data Type : int.
Programmabillity->Stored Procedures->Right Click spGetCharInfoByCharNum.dbo and Hit Modify and modify it with the following code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[spGetCharInfoByCharNum]
-- ALTER PROC dbo.spGetCharInfoByCharNum
@AID INT,
@CharNum SMALLINT
AS BEGIN
SET NOCOUNT ON;
DECLARE @CID INT;
SELECT @CID = CID FROM Character(NOLOCK) WHERE AID=@AID AND CharNum=@CharNum
SELECT c.CID, c.AID, c.Name, c.Level, c.Sex, c.CharNum, c.Hair, c.Face
, c.XP, c.BP, c.HP, c.AP, c.FR, c.CR, c.ER, c.WR, c.GameCount, c.KillCount, c.DeathCount, c.PlayTime
, cm.CLID, cl.Name AS 'ClanName', cm.Grade AS 'ClanGrade', cm.ContPoint AS ClanContPoint
, ISNULL(tr.Rank, 0) as 'rank'
, (SELECT RedColor FROM Account(NOLOCK) WHERE AID=@AID) AS RedColor
, (SELECT GreenColor FROM Account(NOLOCK) WHERE AID=@AID) AS GreenColor
, (SELECT BlueColor FROM Account(NOLOCK) WHERE AID=@AID) AS BlueColor
FROM ( Character c(NOLOCK) LEFT OUTER JOIN TotalRanking tr(NOLOCK) ON c.name = tr.name )
LEFT OUTER JOIN (Clan cl(NOLOCK) JOIN ClanMember cm(NOLOCK) ON cl.CLID = cm.CLID) ON c.CID = cm.CID
WHERE c.CID = @CID
END
Credits :
God Of Sun: Just a good support.
God please forgive me if i forgot anything.