Dev - C++ - Problema con codigo c++

 
Vista:

Problema con codigo c++

Publicado por angel (1 intervención) el 03/05/2007 05:24:29
Hola que tal. tengo un problema con este codigo.
Es de un juego.
Se supone que en esta parte me tendria que crear una guild y sacarme 1000000 de plata.
Ahora la cuestion es que la guild me la crea sin problemas,pero no me descuenta la plata.

Aca les dejo el codigo.

void CGame::RequestCreateNewGuildHandler(int iClientH, char * pData, DWORD dwMsgSize) // KaoZureS - Lvl 100 y 1kk de Gold para crear guild
{
char * cp, cGuildName[21], cTxt[120], cData[100];
DWORD * dwp, dwGoldCount;
WORD * wp;
int iRet;
SYSTEMTIME SysTime;


if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_bIsInitComplete == FALSE) return;
if (m_bIsCrusadeMode == TRUE) return;

cp = (char *)(pData + DEF_INDEX2_MSGTYPE + 2);

cp += 10;
cp += 10;
cp += 10;

ZeroMemory(cGuildName, sizeof(cGuildName));
memcpy(cGuildName, cp, 20);
cp += 20;

if (m_pClientList[iClientH]->m_iGuildRank != -1) {
// ÀÌ Ä³¸¯ÅÍ´Â ÀÌ¹Ì ±æµå¿¡ °¡ÀÔÇÏ¿© ÀÖÀ¸¹Ç·Î ±æµå¸¦ ¸¸µé ¼ö ¾ø´Ù.
wsprintf(cTxt, "(!)Cannot create guild! Already guild member.: CharName(%s)", m_pClientList[iClientH]->m_cCharName);
PutLogList(cTxt);
}
else {
dwGoldCount = dwGetItemCount(iClientH, "Gold");
if ( (m_pClientList[iClientH]->m_iLevel < m_sGuildLevel) || (dwGoldCount < 1000000) || (m_pClientList[iClientH]->m_iCharisma < 20) ||
(memcmp(m_pClientList[iClientH]->m_cLocation, "NONE", 4) == 0) ||
(memcmp(m_pClientList[iClientH]->m_cLocation, m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName, 10) != 0) ) { // v1.4
// ÀÚ°Ý¿ä°ÇÀÌ ¸ÂÁö ¾Ê´Â´Ù. Ư¼ºÄ¡°¡ ³·°Å³ª ¸¶À»ÀÇ À§Ä¡°¡ ´Ù¸£°Å³ª ½Ã¹ÎÀÌ ¾Æ´Ñ °æ¿ì
ZeroMemory(cData, sizeof(cData));

dwp = (DWORD *)(cData + DEF_INDEX4_MSGID);
*dwp = MSGID_RESPONSE_CREATENEWGUILD;
wp = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
*wp = DEF_MSGTYPE_REJECT;

// ±æµå »ý¼º ¿ä±¸ ÀÀ´ä ¸Þ½ÃÁö¸¦ Ŭ¶óÀ̾ðÆ®¿¡°Ô Àü¼Û
iRet = m_pClientList[iClientH]->m_pXSock->iSendMsg(cData, 6);
switch (iRet) {
case DEF_XSOCKEVENT_QUENEFULL:
case DEF_XSOCKEVENT_SOCKETERROR:
case DEF_XSOCKEVENT_CRITICALERROR:
case DEF_XSOCKEVENT_SOCKETCLOSED:
// ¸Þ½ÃÁö¸¦ º¸³¾¶§ ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é Á¦°ÅÇÑ´Ù.
DeleteClient(iClientH, TRUE, TRUE);
return;
}
}
else {
// ±æµå À̸§À» Àӽ÷ΠÀúÀåÇÑ´Ù. -> ¾îÂ÷ÇÇ ±æµå À̸§Àº Rank°¡ -1À϶§ ¹«ÀǹÌÇϹǷΠ.
ZeroMemory(m_pClientList[iClientH]->m_cGuildName, sizeof(m_pClientList[iClientH]->m_cGuildName));
strcpy(m_pClientList[iClientH]->m_cGuildName, cGuildName);
// ±æµåÀÇ ¼Ò¼Ó ¸¶À» À̸§À» ÀúÀåÇÑ´Ù.
ZeroMemory(m_pClientList[iClientH]->m_cLocation, sizeof(m_pClientList[iClientH]->m_cLocation));
strcpy(m_pClientList[iClientH]->m_cLocation, m_pMapList[m_pClientList[iClientH]->m_cMapIndex]->m_cLocationName);
// ±æµåÀÇ GUID¸¦ »ý¼ºÇÏ¿© ÀÔ·ÂÇÑ´Ù.
GetLocalTime(&SysTime);
m_pClientList[iClientH]->m_iGuildGUID = (int)(SysTime.wYear + SysTime.wMonth + SysTime.wDay + SysTime.wHour + SysTime.wMinute + timeGetTime());
SetItemCount(iClientH, "Gold", dwGoldCount - m_sGuildGold);
// ±æµå »ý¼º¿äû ¸Þ½ÃÁö¸¦ ·Î±×¼­¹ö·Î Àü¼ÛÇÑ´Ù.
bSendMsgToLS(MSGID_REQUEST_CREATENEWGUILD, iClientH);
}
}
}

alguien me podria dar una mano, plz?..

saludos
Angel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder