Party
here whats i have in my source works fine more me
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
have fun
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Code: Select all
void CGame::CreateNewPartyHandler(int iClientH)
{
BOOL bFlag;
if (m_pClientList[iClientH] == NULL) return;
bFlag = m_pClientList[iClientH]->bCreateNewParty();
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_RESPONSE_CREATENEWPARTY, (int)bFlag, NULL, NULL, NULL);
}
Code: Select all
void CGame::JoinPartyHandler(int iClientH, int iV1, char *pMemberName)
{
char * cp, cData[120];
short sAppr2;
DWORD * dwp;
WORD * wp;
int i;
if (m_pClientList[iClientH] == NULL) return;
if ((m_bAdminSecurity == TRUE) && (m_pClientList[iClientH]->m_iAdminUserLevel > 0)) return;
switch (iV1) {
case 0: // ÆÄƼ Å»Åð ½Åû
RequestDeletePartyHandler(iClientH);
break;
case 1: // ÆÄƼ °¡ÀÔ ½Åû
//testcode
wsprintf(G_cTxt, "Join Party Req: %s(%d) ID(%d) Stat(%d) ReqJoinH(%d) ReqJoinName(%s)", m_pClientList[iClientH]->m_cCharName, iClientH,
m_pClientList[iClientH]->m_iPartyID, m_pClientList[iClientH]->m_iPartyStatus, m_pClientList[iClientH]->m_iReqJoinPartyClientH,
m_pClientList[iClientH]->m_cReqJoinPartyName);
PutLogList(G_cTxt);
if ((m_pClientList[iClientH]->m_iPartyID != NULL) || (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL)) {
// ÀÌ¹Ì ÆÄƼ¿¡ °¡ÀÔÇØ ÀÖ´Ù¸é ÆÄƼ °¡ÀÔ ½ÅûÀ» ÇÒ ¼ö ¾ø´Ù.
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
//testcode
PutLogList("Join Party Reject (1)");
return;
}
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, pMemberName) == 0)) {
// °°Àº À̸§À» °¡Ãø Ç÷¹À̾ ã¾Ò´Ù.
sAppr2 = (short)((m_pClientList[i]->m_sAppr2 & 0xF000) >> 12);
if (sAppr2 != 0) {
// ÀüÅõ ¸ðµå »óÅÂÀÇ »ó´ë¿¡°Ô´Â ÆÄƼ °¡ÀÔ ½ÅûÀ» ÇÒ ¼ö ¾ø´Ù.
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
//testcode
PutLogList("Join Party Reject (2)");
}
else if (m_pClientList[i]->m_cSide != m_pClientList[iClientH]->m_cSide) {
// ÆÃÀÌ ´Ù¸£¸é ÆÄƼ¿¡ µé ¼ö ¾ø´Ù.
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
//testcode
PutLogList("Join Party Reject (3)");
}
else if (m_pClientList[i]->m_iPartyStatus == DEF_PARTYSTATUS_PROCESSING) {
// ÆÄƼ °¡ÀÔÀ» ½ÅûÇÑ ´ë»óÀÌ À̹Ì ´Ù¸¥ ÆÄƼ °¡ÀÔ °ü·Ã 󸮸¦ Çðà ÀÖ´Ù. ½Åû ºÒ°¡.
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
//testcode
PutLogList("Join Party Reject (4)");
//testcode
wsprintf(G_cTxt, "Party join reject(2) ClientH:%d ID:%d JoinName:%d", i, m_pClientList[i]->m_iPartyID, m_pClientList[i]->m_cReqJoinPartyName);
PutLogList(G_cTxt);
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
}
else {
// °¡ÀÔ ½ÂÀÎ ¿©ºÎ¸¦ ¹¯´Â´Ù.
m_pClientList[i]->m_iReqJoinPartyClientH = iClientH;
ZeroMemory(m_pClientList[i]->m_cReqJoinPartyName, sizeof(m_pClientList[i]->m_cReqJoinPartyName));
strcpy(m_pClientList[i]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName);
SendNotifyMsg(NULL, i, DEF_NOTIFY_QUERY_JOINPARTY, NULL, NULL, NULL, m_pClientList[iClientH]->m_cCharName);
// ½ÅûÇÑ Ãø¿¡´Â ÆÄƼ ¸¶½ºÅð¡ µÉ ij¸¯ÅÃÀÇ À妽º¸¦ ³Ö¾îÃÃœ. Ãë¼ÒÇÒ¶§ ó¸®Çñâ À§ÇÔÀÓ.
m_pClientList[iClientH]->m_iReqJoinPartyClientH = i;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
strcpy(m_pClientList[iClientH]->m_cReqJoinPartyName, m_pClientList[i]->m_cCharName);
// ÆÄƼ »óÅ ¼¼Æ®
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
}
return;
}
break;
case 2: // ÆÄƼ ¸â¹ö È®ÀÎ ¸Ã·É
if (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM) {
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 6; // ÆÄƼ ¸â¹ö ¸®½ºÆ® ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("JoinPartyHandler case (2) send 6 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
}
break;
}
}
Code: Select all
void CGame::RequestCreatePartyHandler(int iClientH)
{
char *cp, cData[120];
DWORD * dwp;
WORD * wp;
if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_bIsInitComplete == FALSE) return;
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL) {
// ÆÄƼ »óÅ°¡ À̹Ì Ã¸ÀçÇøé ÆÄƼ¸¦ ¸¸µé ¼ö ¾ø´Ù.
return;
}
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
// Gate Server¿¡ ÆÄƼ »ý¼ºÈÄ PartyID¸¦ ¾Ë·ÃÃÙ °ÃÀ» ¿äûÇÑ´Ù.
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 1; // 1, request
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
PutLogList("RequestCreatePartyHandler send 1 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
//testcode
wsprintf(G_cTxt, "Request Create Party: %d", iClientH);
PutLogList(G_cTxt);
}
Code: Select all
void CGame::PartyOperationResultHandler(char *pData)
{
char * cp, cResult, cName[12];
WORD * wp;
int i, iClientH, iPartyID, iTotal;
cp = (char *)(pData + 4);
wp = (WORD *)cp;
cp += 2;
switch (*wp) {
case 1:
cResult = *cp;
cp++;
wp = (WORD *)cp;
iClientH = (int)*wp;
cp += 2;
ZeroMemory(cName, sizeof(cName));
memcpy(cName, cp, 10);
cp += 10;
wp = (WORD *)cp;
iPartyID = (int)*wp;
cp += 2;
PartyOperationResult_Create(iClientH, cName, cResult, iPartyID);
wsprintf(G_cTxt, "party Operation Result: Create(ClientH:%d PartyID:%d)", iClientH, iPartyID);
PutLogList(G_cTxt);
break;
case 2:
wp = (WORD *)cp;
iPartyID = *wp;
cp += 2;
PartyOperationResult_Delete(iPartyID);
wsprintf(G_cTxt, "party Operation Result: Delete(PartyID:%d)", iPartyID);
PutLogList(G_cTxt);
break;
case 3:
wp = (WORD *)cp;
iClientH = *wp;
cp += 2;
ZeroMemory(cName, sizeof(cName));
memcpy(cName, cp, 10);
cp += 10;
if ((iClientH < 0) && (iClientH > DEF_MAXCLIENTS)) return;
if (m_pClientList[iClientH] == NULL) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, cName) != 0) return;
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == iClientH) {
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = 0;
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers--;
wsprintf(G_cTxt, "PartyID:%d member:%d Out(Clear) Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
PutLogList(G_cTxt);
goto PORH_LOOPBREAK1;
}
PORH_LOOPBREAK1:;
for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
if ((m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) && (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1] != 0)) {
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1];
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i+1] = 0;
}
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
wsprintf(G_cTxt, "Party Status NULL: %s", m_pClientList[iClientH]->m_cCharName);
PutLogList(G_cTxt);
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 8, 0, NULL, NULL);
break;
case 4:
cResult = *cp;
cp++;
wp = (WORD *)cp;
iClientH = (int)*wp;
cp += 2;
ZeroMemory(cName, sizeof(cName));
memcpy(cName, cp, 10);
cp += 10;
wp = (WORD *)cp;
iPartyID = (int)*wp;
cp += 2;
PartyOperationResult_Join(iClientH, cName, cResult, iPartyID);
wsprintf(G_cTxt, "party Operation Result: Join(ClientH:%d PartyID:%d)", iClientH, iPartyID);
PutLogList(G_cTxt);
break;
case 5:
wp = (WORD *)cp;
iClientH = (int)*wp;
cp += 2;
ZeroMemory(cName, sizeof(cName));
memcpy(cName, cp, 10);
cp += 10;
wp = (WORD *)cp;
iTotal = (int)*wp;
cp += 2;
PartyOperationResult_Info(iClientH, cName, iTotal, cp);
wsprintf(G_cTxt, "party Operation Result: Info(ClientH:%d Total:%d)", iClientH, iTotal);
PutLogList(G_cTxt);
break;
case 6:
cResult = *cp;
cp++;
wp = (WORD *)cp;
iClientH = (int)*wp;
cp += 2;
ZeroMemory(cName, sizeof(cName));
memcpy(cName, cp, 10);
cp += 10;
wp = (WORD *)cp;
iPartyID = (int)*wp;
cp += 2;
PartyOperationResult_Dismiss(iClientH, cName, cResult, iPartyID);
wsprintf(G_cTxt, "party Operation Result: Dismiss(ClientH:%d PartyID:%d)", iClientH, iPartyID);
PutLogList(G_cTxt);
break;
}
}
Code: Select all
void CGame::PartyOperationResult_Create(int iClientH, char *pName, int iResult, int iPartyID)
{
char * cp, cData[120];
DWORD * dwp;
WORD * wp;
int i;
if (m_pClientList[iClientH] == NULL) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
switch (iResult) {
case 0: // ÆÄƼ »ý¼º ½ÇÆÃ
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 1, 0, NULL, NULL);
break;
case 1: // ÆÄƼ »ý¼º ¼º°ø
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
m_pClientList[iClientH]->m_iPartyID = iPartyID;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_CONFIRM;
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 1, 1, NULL, NULL);
// °ÔÀÓ ¼Â¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡ µî·Ã.
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) {
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = iClientH;
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers++;
//testcode
wsprintf(G_cTxt, "PartyID:%d member:%d New Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
PutLogList(G_cTxt);
goto PORC_LOOPBREAK1;
}
PORC_LOOPBREAK1:;
if ((m_pClientList[iClientH]->m_iReqJoinPartyClientH != NULL) && (strlen(m_pClientList[iClientH]->m_cReqJoinPartyName) != NULL)) {
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 3;
cp += 2;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cReqJoinPartyName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("PartyOperationResult_Create send 3 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
}
break;
}
}
Code: Select all
void CGame::PartyOperationResult_Join(int iClientH, char *pName, int iResult, int iPartyID)
{
int i;
if (m_pClientList[iClientH] == NULL) return;
switch (iResult) {
case 0:
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 4, 0, NULL, pName);
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
break;
case 1:
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
m_pClientList[iClientH]->m_iPartyID = iPartyID;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_CONFIRM;
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 4, 1, NULL, pName);
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
if (m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] == 0) {
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iIndex[i] = iClientH;
m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers++;
wsprintf(G_cTxt, "PartyID:%d member:%d In(Join) Total:%d", m_pClientList[iClientH]->m_iPartyID, iClientH, m_stPartyInfo[m_pClientList[iClientH]->m_iPartyID].iTotalMembers);
PutLogList(G_cTxt);
goto PORC_LOOPBREAK1;
}
PORC_LOOPBREAK1:;
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((i != iClientH) && (m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 4, 1, NULL, pName);
}
break;
}
}
Code: Select all
void CGame::PartyOperationResult_Dismiss(int iClientH, char *pName, int iResult, int iPartyID)
{
int i;
// iClientH´Â À̹Ì »ç¶óÃö°à ¾ø´Â ij¸¯ÅÃÀüöµµ ÀÖ´Ù.
switch (iResult) {
case 0: // ÆÄƼ Å»Åð ½ÇÆà ? ÀÌ·± ÀÃÀÌ?
break;
case 1: // ÆÄƼ Å»Å𠼺°ø
if (iClientH == NULL) {
// iClientH °¡ NULLÀ̸é ¼Â¹ö À̵¿Ãß Ã¢¼Ó þ·áµÇ¾î °Âæ æ°Å ¿äûµÈ °ÃÀÓ.
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, pName) == 0)) {
iClientH = i;
goto PORD_LOOPBREAK;
}
PORD_LOOPBREAK:;
// °ÔÀÓ ¼Â¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡¼ ÇØæ.
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
if (m_stPartyInfo[iPartyID].iIndex[i] == iClientH) {
m_stPartyInfo[iPartyID].iIndex[i] = 0;
m_stPartyInfo[iPartyID].iTotalMembers--;
//testcode
wsprintf(G_cTxt, "PartyID:%d member:%d Out Total:%d", iPartyID, iClientH, m_stPartyInfo[iPartyID].iTotalMembers);
PutLogList(G_cTxt);
goto PORC_LOOPBREAK1;
}
PORC_LOOPBREAK1:;
// ¸®½ºÆ® À妽ºÀÇ ºó°ø°£À» æ°ÅÇÑ´Ù.
for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
if ((m_stPartyInfo[iPartyID].iIndex[i] == 0) && (m_stPartyInfo[iPartyID].iIndex[i+1] != 0)) {
m_stPartyInfo[iPartyID].iIndex[i] = m_stPartyInfo[iPartyID].iIndex[i+1];
m_stPartyInfo[iPartyID].iIndex[i+1] = 0;
}
if (m_pClientList[iClientH] != NULL) {
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
}
// ¸ðµç ÆÄƼ¿øµé¿¡°Ô ¾Ë·ÃÃØ´Ù.
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 6, 1, NULL, pName);
}
return;
}
if ((m_pClientList[iClientH] != NULL) && (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING)) return;
if ((m_pClientList[iClientH] != NULL) && (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0)) return;
// ¸ðµç ÆÄƼ¿øµé¿¡°Ô ¾Ë·ÃÃØ´Ù.
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 6, 1, NULL, pName);
}
// °ÔÀÓ ¼Â¹öÀÇ ÆÄƼ ¸®½ºÆ®¿¡¼ ÇØæ.
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
if (m_stPartyInfo[iPartyID].iIndex[i] == iClientH) {
m_stPartyInfo[iPartyID].iIndex[i] = 0;
m_stPartyInfo[iPartyID].iTotalMembers--;
//testcode
wsprintf(G_cTxt, "PartyID:%d member:%d Out Total:%d", iPartyID, iClientH, m_stPartyInfo[iPartyID].iTotalMembers);
PutLogList(G_cTxt);
goto PORC_LOOPBREAK2;
}
PORC_LOOPBREAK2:;
// ¸®½ºÆ® À妽ºÀÇ ºó°ø°£À» æ°ÅÇÑ´Ù.
for (i = 0; i < DEF_MAXPARTYMEMBERS-1; i++)
if ((m_stPartyInfo[iPartyID].iIndex[i] == 0) && (m_stPartyInfo[iPartyID].iIndex[i+1] != 0)) {
m_stPartyInfo[iPartyID].iIndex[i] = m_stPartyInfo[iPartyID].iIndex[i+1];
m_stPartyInfo[iPartyID].iIndex[i+1] = 0;
}
if (m_pClientList[iClientH] != NULL) {
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
}
break;
}
}
Code: Select all
void CGame::PartyOperationResult_Delete(int iPartyID)
{
int i;
for (i = 0; i < DEF_MAXPARTYMEMBERS; i++)
{
m_stPartyInfo[iPartyID].iIndex[i] = 0;
m_stPartyInfo[iPartyID].iTotalMembers = 0;
}
// ÆÄƼ ÇØ»êµÊ
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (m_pClientList[i]->m_iPartyID == iPartyID)) {
SendNotifyMsg(NULL, i, DEF_NOTIFY_PARTY, 2, 0, NULL, NULL);
m_pClientList[i]->m_iPartyID = NULL;
m_pClientList[i]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[i]->m_iReqJoinPartyClientH = NULL;
//testcode
wsprintf(G_cTxt, "Notify delete party: %d", i);
PutLogList(G_cTxt);
}
}
Code: Select all
void CGame::RequestJoinPartyHandler(int iClientH, char *pData, DWORD dwMsgSize)
{
char seps[] = "= \t\n";
char * cp, * token, cBuff[256], cData[120], cName[12];
class CStrTok * pStrTok;
DWORD * dwp;
WORD * wp;
int i;
// ÆÄƼ °¡ÀÔ ¿©ºÎ¸¦ ¹¯°à ÀÖ´Ù.
if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_NULL) return;
if ((dwMsgSize) <= 0) return;
if ((m_bAdminSecurity == TRUE) && (m_pClientList[iClientH]->m_iAdminUserLevel > 0)) return;
ZeroMemory(cBuff, sizeof(cBuff));
memcpy(cBuff, pData, dwMsgSize);
pStrTok = new class CStrTok(cBuff, seps);
token = pStrTok->pGet();
token = pStrTok->pGet();
if (token != NULL) {
ZeroMemory(cName, sizeof(cName));
strcpy(cName, token);
}
else return;
for (i = 1; i < DEF_MAXCLIENTS; i++)
if ((m_pClientList[i] != NULL) && (strcmp(m_pClientList[i]->m_cCharName, cName) == 0)) {
// °ÔÀÌÆ® ¼Â¹ö·Î ÆÄƼ ¸â¹ö °¡ÀÔÀ» ½ÅûÇÑ´Ù.
if ((m_pClientList[i]->m_iPartyID == NULL) || (m_pClientList[i]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM)) {
// ÆÄƼ¿¡ °¡ÀÔÇðÃÀÚ ÇÑ ij¸¯Åð¡ ÆÄƼ ¸¶½ºÅ𡠾ƴôÙ.
return;
}
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 3; // ÆÄƼ ¸â¹ö Ãß°¡ ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[i]->m_iPartyID;
cp += 2;
PutLogList("RequestJoinPartyHandler send 3 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
return;
}
// °¡ÀÔÇðÃÀÚ Çô ÆÄƼ ¸¶½ºÅð¡ ÇöÀç ¼Â¹ö¿¡ øÀçÇÃÃö ¾Ê´Â´Ù.
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PLAYERNOTONGAME, NULL, NULL, NULL, cName);
}
Code: Select all
void CGame::RequestDismissPartyHandler(int iClientH)
{
char * cp, cData[120];
DWORD * dwp;
WORD * wp;
if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 4; // ¸â¹ö æ°Å ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("RequestDismissPartyHandler send 4 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
}
Code: Select all
void CGame::GetPartyInfoHandler(int iClientH)
{
char * cp, cData[120];
DWORD * dwp;
WORD * wp;
if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 5; // ÆÄƼ 亸 ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("GetPartyInfoHandler send 5 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
}
Code: Select all
void CGame::PartyOperationResult_Info(int iClientH, char * pName, int iTotal, char *pNameList)
{
if (m_pClientList[iClientH] == NULL) return;
if (strcmp(m_pClientList[iClientH]->m_cCharName, pName) != 0) return;
if (m_pClientList[iClientH]->m_iPartyStatus != DEF_PARTYSTATUS_CONFIRM) return;
SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_PARTY, 5, 1, iTotal, pNameList);
}
Code: Select all
void CGame::RequestDeletePartyHandler(int iClientH)
{
char * cp, cData[120];
DWORD * dwp;
WORD * wp;
if (m_pClientList[iClientH] == NULL) return;
if (m_pClientList[iClientH]->m_iPartyID != NULL) {
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 4; // ¸â¹ö æ°Å ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = iClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cCharName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("RequestDeletePartyHandler send 4 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
// »óÅ º¯È¯
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_PROCESSING;
}
}
Code: Select all
void CGame::RequestAcceptJoinPartyHandler(int iClientH, int iResult)
{
char *cp, cData[120];
DWORD * dwp;
WORD * wp;
int iH;
if (m_pClientList[iClientH] == NULL) return;
switch (iResult) {
case 0: // ÆÄƼ °¡ÀÔ ½Åû °ÅºÎµÇ¾úÀ½À» ¾Ë·ÃÃØ´Ù.
iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
if (m_pClientList[iH] == NULL) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
return;
}
if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
// °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã´Ù.
return;
}
SendNotifyMsg(NULL, iH, DEF_NOTIFY_PARTY, 7, 0, NULL, NULL);
//testcode
wsprintf(G_cTxt, "Party join reject(3) ClientH:%d ID:%d", iH, m_pClientList[iH]->m_iPartyID);
PutLogList(G_cTxt);
m_pClientList[iH]->m_iPartyID = NULL;
m_pClientList[iH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[iH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iH]->m_cReqJoinPartyName, sizeof(m_pClientList[iH]->m_cReqJoinPartyName));
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
break;
case 1: // ÆÄƼ °¡ÀÔ ½Åû ½ÂÀÎ
if ((m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM) && (m_pClientList[iClientH]->m_iPartyID != NULL)) {
iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
if (m_pClientList[iH] == NULL) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
return;
}
if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
// °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã´Ù.
return;
}
// °¡ÀÔ Ã³¸® ÇÑ´Ù.
ZeroMemory(cData, sizeof(cData));
cp = (char *)cData;
dwp = (DWORD *)cp;
*dwp = MSGID_PARTYOPERATION;
cp += 4;
wp = (WORD*)cp;
*wp = 3; // ÆÄƼ ¸â¹ö Ãß°¡ ¿äû
cp += 2;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
cp += 2;
memcpy(cp, m_pClientList[iClientH]->m_cReqJoinPartyName, 10);
cp += 10;
wp = (WORD *)cp;
*wp = m_pClientList[iClientH]->m_iPartyID;
cp += 2;
PutLogList("RequestAcceptJoinPartyHandler send 3 to GateServer");
SendMsgToGateServer(MSGID_PARTYOPERATION, iClientH, cData);
}
else {
iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
if (m_pClientList[iH] == NULL) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (strcmp(m_pClientList[iH]->m_cCharName, m_pClientList[iClientH]->m_cReqJoinPartyName) != 0) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾ ¼Â¹ö»ó¿¡ ¾ø´Ù.
return;
}
if (m_pClientList[iH]->m_iPartyStatus != DEF_PARTYSTATUS_PROCESSING) {
// °¡ÀÔÀ» ½ÅûÇß´ø Ç÷¹À̾îÀÇ »óÅ°¡ º¯°æµÇ¾ú´Ù.
return;
}
if ((m_pClientList[iH]->m_iReqJoinPartyClientH != iClientH) || (strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) != 0)) {
// °¡ÀÔÀ» ½ÅûÇß´ø ±×¶§ ±× Ç÷¹À̾ ¾Æ´Ã´Ù.
return;
}
if (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_NULL) {
// ½Åû ¹ÞÀº Ç÷¹À̾ ¾Æ¹«·± ÆÄƼ¿¡µµ °¡ÀÔÇðà ÀÖÃö ¾Ê´Ù. ÀÌ ij¸¯Åø¦ ÆÄƼ ¸¶½ºÅ÷Π½ÅûÇÑ´Ù.
RequestCreatePartyHandler(iClientH);
}
else {
// ó¸® ºÒ°¡
}
}
break;
case 2: // ÆÄƼ °¡ÀÔ ½Åû Ãë¼Ò
// ÀÌ ¸Þ½ÃÃö¸¦ ¹Þ±â Àü¿¡ À̹Ì ÆÄƼ¿¡ °¡ÀԵǾú´Ù¸é Å»Åð 󸮸¦ ÇÑ´Ù.
if ((m_pClientList[iClientH]->m_iPartyID != NULL) && (m_pClientList[iClientH]->m_iPartyStatus == DEF_PARTYSTATUS_CONFIRM)) {
// ¸â¹ö æ°Å¸¦ ¿äûÇÑ´Ù.
RequestDismissPartyHandler(iClientH);
}
else {
// °¡ÀÔ ½Åû »óÅ¿´´ø °ªµéÀ» ÃʱâÈ ÇÑ´Ù.
iH = m_pClientList[iClientH]->m_iReqJoinPartyClientH;
// ½ÅûÇß´ø ij¸¯Åð¡ â¼ÓÀ» ²÷Àº »óŶó¸é NULLÀà ¼ö ÀÖ´Ù.
if ((m_pClientList[iH] != NULL) && (m_pClientList[iH]->m_iReqJoinPartyClientH == iClientH) &&
(strcmp(m_pClientList[iH]->m_cReqJoinPartyName, m_pClientList[iClientH]->m_cCharName) == 0)) {
// ½ÅûÇß´ø ij¸¯ÅÃÀÇ ÆÄƼ ¾ÆÀ̵ð¿à »óÅ´Â °Çµå¸®Ãö ¾Ê´Â´Ù.
m_pClientList[iH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iH]->m_cReqJoinPartyName, sizeof(m_pClientList[iH]->m_cReqJoinPartyName));
}
m_pClientList[iClientH]->m_iPartyID = NULL;
m_pClientList[iClientH]->m_iPartyStatus = DEF_PARTYSTATUS_NULL;
m_pClientList[iClientH]->m_iReqJoinPartyClientH = NULL;
ZeroMemory(m_pClientList[iClientH]->m_cReqJoinPartyName, sizeof(m_pClientList[iClientH]->m_cReqJoinPartyName));
}
break;
}
}
have fun
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There is missing the DeleteClient(...) part.
and, most important: InitPlayerData(...) must finish using GetPartyInfoHandler(iClientH);
and, most important: InitPlayerData(...) must finish using GetPartyInfoHandler(iClientH);
_\_ _<br> / , \__/ . \ Admin of Equilibrium Project<br> II\ \___ . O<br> III \_/ \ _ / <a href='http://www.equiprojet.com' target='_blank'>http://www.equiprojet.com</a><br> II I¯I
the source i sent works works fine wsith my server
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Party Fix
Search void cgame::RequestInitDataHandler(...) ... and then add....
test it..im not sure if this will work...
Search void cgame::RequestInitDataHandler(...) ... and then add....
Code: Select all
//If the party is finished u have party-id = 0
if (m_pClientList[iClientH]->m_iPartyID != 0) {
m_pClientList[iClientH]->m_iPartyID = NULL;
GetPartyInfoHandler(iClientH);
}
party bugs fixed in 3.0 for the mosted part just use there code
<img src='http://lifeplaysu420.com/unknow/nightsign.png' border='0' alt='user posted image' /><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>Wanna make money for surfing the net sing up at <br><a href='http://www.cashfiesta.com/php/join.php? ... yprivitera' target='_blank'>cash fiesta</a><br>its all free hey why ntot make money while fucking around on the computer<br><br><br>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~