Aca les dejo los codigos fuentes del GameServer.exe (hosteador de mapas)
case MSGID_REQUEST_REGISTERGAMESERVER:
Código:
wsprintf(cTxt, "(!) Try to register game server(%s) - GateServer", m_cServerName);
PutLogList(cTxt);
dwp = (DWORD *)(cData + DEF_INDEX4_MSGID);
*dwp = MSGID_REQUEST_REGISTERGAMESERVER;
wp = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
*wp = DEF_MSGTYPE_CONFIRM;
cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);
memcpy(cAccountName, m_cServerName, 10);
memcpy(cAddress, m_cGameServerAddr, strlen(m_cGameServerAddr));
memcpy(cp, cAccountName, 10);
cp += 10;
memcpy(cp, cAddress, 16);
cp += 16;
wp = (WORD *)cp;
*wp = m_iGameServerPort;
cp += 2;
*cp = m_iTotalMaps;
cp++;
for (i = 0; i < m_iTotalMaps; i++) {
memcpy(cp, m_pMapList[i]->m_cName, 11);
cp += 11;
}
dwp = (DWORD *)cp;
*dwp = (DWORD)GetCurrentProcessId(); // ÇÁ·Î¼¼½º ÇÚµéÀ» ±â·ÏÇÑ´Ù.
cp += 4;
dwp = (DWORD *)cp;
*dwp = (DWORD)DEF_BUILDDATE;
cp += 4;
iRet = m_pGateSock->iSendMsg(cData, 39 + m_iTotalMaps*11 + 4);
break;
case MSGID_REQUEST_PLAYERDATA:
Código:
if (_bCheckSubLogSocketIndex() == FALSE) return FALSE;
if (m_pClientList[iClientH] == NULL) return FALSE;
dwp = (DWORD *)(G_cData50000 + DEF_INDEX4_MSGID);
*dwp = MSGID_REQUEST_PLAYERDATA;
wp = (WORD *)(G_cData50000 + DEF_INDEX2_MSGTYPE);
*wp = DEF_MSGTYPE_CONFIRM;
cp = (char *)(G_cData50000 + DEF_INDEX2_MSGTYPE + 2);
if (strlen(m_pClientList[iClientH]->m_cCharName) == 0) PutLogList("(X) CharName NULL!");
memcpy(cCharName, m_pClientList[iClientH]->m_cCharName, 10);
memcpy(cAccountName, m_pClientList[iClientH]->m_cAccountName, 10);
memcpy(cAccountPassword, m_pClientList[iClientH]->m_cAccountPassword, 10);
memcpy((char *)cp, cCharName, 10);
cp += 10;
memcpy((char *)cp, cAccountName, 10);
cp += 10;
memcpy((char *)cp, cAccountPassword, 10);
cp += 10;
ZeroMemory(cTemp, sizeof(cTemp));
iRet = m_pClientList[iClientH]->m_pXSock->iGetPeerAddress(cTemp);
memcpy((char *)cp, cTemp, 15);
cp += 15;
iRet = m_pSubLogSock[m_iCurSubLogSockIndex]->iSendMsg(G_cData50000, 52);
iSendSize = 52;
break;
case MSGID_REQUEST_SAVEPLAYERDATA_REPLY:
case MSGID_REQUEST_SAVEPLAYERDATA:
case MSGID_REQUEST_SAVEPLAYERDATALOGOUT:
Código:
if (_bCheckSubLogSocketIndex() == FALSE) return FALSE;
if (m_pClientList[iClientH] == NULL) return FALSE;
dwp = (DWORD *)(G_cData50000 + DEF_INDEX4_MSGID);
*dwp = dwMsg;
wp = (WORD *)(G_cData50000 + DEF_INDEX2_MSGTYPE);
*wp = DEF_MSGTYPE_CONFIRM;
cp = (char *)(G_cData50000 + DEF_INDEX2_MSGTYPE + 2);
memcpy(cCharName, m_pClientList[iClientH]->m_cCharName, 10);
memcpy(cAccountName, m_pClientList[iClientH]->m_cAccountName, 10);
memcpy(cAccountPassword, m_pClientList[iClientH]->m_cAccountPassword, 10);
memcpy((char *)cp, cCharName, 10);
cp += 10;
memcpy((char *)cp, cAccountName, 10);
cp += 10;
memcpy((char *)cp, cAccountPassword, 10);
cp += 10;
Marcadores