[SOURCE] Custom Colors From Database 1.5 Client

Page 1 of 2 12 LastLast
Results 1 to 15 of 24
  1. #1
    Good Guy George qet123 is offline
    MemberRank
    Apr 2009 Join Date
    DesertLocation
    1,432Posts

    note [SOURCE] Custom Colors From Database 1.5 Client

    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 NamesRedColorGreenColorBlueColorData 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(NOLOCKWHERE AID=@AID AND CharNum=@CharNum 

        SELECT    c
    .CIDc.AIDc.Namec.Levelc.Sexc.CharNumc.Hairc.Face      
                
    c.XPc.BPc.HPc.APc.FRc.CRc.ERc.WRc.GameCountc.KillCountc.DeathCountc.PlayTime
                
    cm.CLIDcl.Name AS 'ClanName'cm.Grade AS 'ClanGrade'cm.ContPoint AS ClanContPoint       
                
    ISNULL(tr.Rank0) as 'rank'
                
    , (SELECT RedColor FROM Account(NOLOCKWHERE AID=@AID) AS RedColor
                
    , (SELECT GreenColor FROM Account(NOLOCKWHERE AID=@AID) AS GreenColor
                
    , (SELECT BlueColor FROM Account(NOLOCKWHERE AID=@AID) AS BlueColor
        FROM    
    Character c(NOLOCKLEFT OUTER JOIN TotalRanking tr(NOLOCKON c.name tr.name )
                
    LEFT OUTER JOIN (Clan cl(NOLOCKJOIN ClanMember cm(NOLOCKON cl.CLID cm.CLIDON 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.
    Last edited by qet123; 04-06-13 at 03:57 PM.


  2. #2
    Account Upgraded | Title Enabled! flyffhelper is offline
    MemberRank
    Dec 2010 Join Date
    419Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Great release, GunZ is dead finally you get it.

  3. #3
    Good Guy George qet123 is offline
    MemberRank
    Apr 2009 Join Date
    DesertLocation
    1,432Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by flyffhelper View Post
    Great release, GunZ is dead finally you get it.
    nah, it's not. I released it because i have a dream that kids will add it and get more players.

  4. #4
    Account Upgraded | Title Enabled! medotarek is offline
    MemberRank
    Apr 2012 Join Date
    Egypt/RageZoneLocation
    615Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    how did you run the client two times??
    i need to open the game 2 times to test please tell me

  5. #5
    Developer / Patch Finder Tankado is offline
    MemberRank
    Oct 2011 Join Date
    The NetherlandsLocation
    451Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by medotarek View Post
    how did you run the client two times??
    i need to open the game 2 times to test please tell me
    disable mutex,

    On-Topic:
    Great Release, and where are my support credits LOl
    and i have to say, this is not the best way to done this.

  6. #6
    Alpha Member Chrisss is offline
    MemberRank
    Feb 2012 Join Date
    Ask the Fox!Location
    1,660Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Thanks George!

  7. #7
    Proficient Member Mr_Troy is offline
    MemberRank
    Jun 2007 Join Date
    172Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    You're a fucking idiot. Seriously, you're not even using the correct type for the colours.

  8. #8
    Good Guy George qet123 is offline
    MemberRank
    Apr 2009 Join Date
    DesertLocation
    1,432Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by Mr_Troy View Post
    You're a fucking idiot. Seriously, you're not even using the correct type for the colours.
    lol, so in HEX is the correct? does it make a diffrent ? really.

  9. #9
    Its Friday :D! trunksx is offline
    MemberRank
    Feb 2007 Join Date
    PerúLocation
    232Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    there are many simple ways to do this with just one new columm in the db:
    using the hexcolor or the long color code equivalent


    Code:
    bool GetCustomColor(long customColor,MCOLOR& CharNameColor,char* sp_name){
        /*alex color*/
         
              unsigned char r = ((customColor>> 16) & 0xFF) / 1.0;  // Extract the RR byte
              unsigned char g = ((customColor>> 8) & 0xFF) / 1.0;   // Extract the GG byte
              unsigned char b = ((customColor) & 0xFF) / 1.0;        // Extract the BB byte
              CharNameColor = MCOLOR(r,g, b); 
            return true;
          
    }
    Last edited by trunksx; 04-06-13 at 04:48 PM.

  10. #10
    Proficient Member Mr_Troy is offline
    MemberRank
    Jun 2007 Join Date
    172Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by qet123 View Post
    lol, so in HEX is the correct? does it make a diffrent ? really.
    The correct way is using an array of 3 characters, cause you are not using the alpha 'colour' at all. And yes it makes a difference, you're using more useless data.

  11. #11
    Hakuna Matata bulli10 is offline
    MemberRank
    Feb 2011 Join Date
    697Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    dat that alot of lines for me ..

    thanks :) good release

  12. #12
    Account Upgraded | Title Enabled! Patrick2607 is offline
    MemberRank
    May 2013 Join Date
    The NetherlandsLocation
    345Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    You don't care about what exactly anymore?

  13. #13
    Daemonsring Developer Gunblade is offline
    MemberRank
    Jul 2007 Join Date
    On the moonLocation
    728Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by Patrick2607 View Post
    You don't care about what exactly anymore?
    About BRZoNE

  14. #14
    Praise the Sun! Solaire is offline
    MemberRank
    Dec 2007 Join Date
    Undead BurgLocation
    2,862Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by Mr_Troy View Post
    The correct way is using an array of 3 characters, cause you are not using the alpha 'colour' at all. And yes it makes a difference, you're using more useless data.
    No need for an array, look at the post above yours.

  15. #15
    Proficient Member Mr_Troy is offline
    MemberRank
    Jun 2007 Join Date
    172Posts

    Re: [SOURCE] Custom Colors From Database 1.5 Client

    Quote Originally Posted by Wizkidje View Post
    No need for an array, look at the post above yours.
    I didn't notice that one, but yeah. That's fine as well.



Page 1 of 2 12 LastLast

Advertisement