📄 dbsocket.cpp
字号:
// --------------------------------------------------------------------------------
// 立加 辆丰 且 PLAYER甫 掘澜 [20 Byte肺 傈价]
// --------------------------------------------------------------------------------
char *pPlayerID = pDBPacket->strPacket;
_LPSOCKET_FD pClosePlayerFD = g_pMap->Find_Player( pPlayerID );
// --------------------------------------------------------------------------------
// 秦寸 PLYAER甫 茫酒辑 立加 辆丰 矫糯
// --------------------------------------------------------------------------------
if( pClosePlayerFD )
{
if( strcmp( pPlayerID, pClosePlayerFD->pPlayer->m_strPlayerID ) )
{
ErrorMsg( "(X) Character Logout failed %s / %s",pPlayerID, pClosePlayerFD->pPlayer->m_strPlayerID );
g_lpDBSock->WorldSend_PlayerClose( pPlayerID );
return;
}
else
{
ErrorMsg( "(X) Logout character find successful %s ",pPlayerID );
}
// ----------------------------------------------------------------------------
// Connect父等 版快
// ----------------------------------------------------------------------------
if( pClosePlayerFD->PlayerStatus == CONNECT_LOGIN)
{
pClosePlayerFD->pPlayer->Player_Close();
g_lpDBSock->WorldSend_PlayerClose( pClosePlayerFD->pPlayer->m_strPlayerID );
// 泪矫饶 促矫 立加窍扼绊 坷幅 皋技瘤 傈价
g_pServer->PacketSend_PlayerIn( pClosePlayerFD, 0, MSG_PLAYERIN_RECONNECT );
g_pServer->CloseClient( pClosePlayerFD );
return;
}
g_pServer->PlayerLogOut( pClosePlayerFD ); // Player Logout贸府
g_pServer->CloseClient( pClosePlayerFD );
}
// --------------------------------------------------------------------------------
// 秦寸 PLAYER甫 茫瘤 给茄 版快
// --------------------------------------------------------------------------------
else
{
g_lpDBSock->WorldSend_PlayerClose( pPlayerID ); // pSocketFD 鞘夸 咯何 魄沥
}
}
////////////////////////////////////////////////////////////////////////////////////////
// WORLD SERVER -> PLAYER IN (PLAYER BASE)
//
// - Return Code甫 Define巩栏肺 盒府矫糯
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerIn(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pWorldPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pWorldPacket->pSocketFD;
if( !IsSocketValidity(pSocketFD )) return;
// --------------------------------------------------------------------------------
// WORLD SERVER狼 牢刘 搬苞 犬牢
//
// 0 : WORLD SERVER 牢刘 角菩
// 1 : WORLD SERVER 牢刘 己傍
// 2 : WORLD SERVER 汗备 MODE
// MAP SERVER立加 阂啊 矫 馆券 [Client Side俊辑 Connection Close]
// --------------------------------------------------------------------------------
char * lpData = pWorldPacket->strPacket;
// DEF_KUMA_CHINA
if ( lpData == NULL )
return;
BYTE nResult = (BYTE)*lpData; // PLAYERIN_ASK狼览翠 掘澜 [BYTE]
lpData += 1;
// --------------------------------------------------------------------------------
// 牢刘 角菩且 版快 World Server俊辑 PLAYER OUT Mes 鞘夸 咯何 Checking
// --------------------------------------------------------------------------------
switch( nResult )
{
// WORLD SERVER 牢刘 己傍
case 1 : g_pServer->PacketSend_PlayerIn( pSocketFD, 1, NULL ); break ;
// World Server 牢刘 角菩
case 0 : g_pServer->PacketSend_PlayerIn( pSocketFD, 0, MSG_PLAYERIN_CANNTFINDPLAYER ); return;
case 3 :
// World Server Recovery Mode
case 4 : g_pServer->PacketSend_PlayerIn( pSocketFD, 0, MSG_PLAYERIN_RECONNECT ); return;
// World Server 啊钱
case 5 : g_pServer->PacketSend_PlayerIn( pSocketFD, 0, MSG_PLAYERIN_WORLDSERVERFULL ); return;
#ifdef DEF_NPCCARD
// NPC CARD BUY 累诀吝捞促..
case 10 : g_pServer->PacketSend_PlayerIn( pSocketFD, 0, NPCCARD_BLOCK_BUY ); return;
// NPC CARD SELL 累诀吝捞促..
case 11 : g_pServer->PacketSend_PlayerIn( pSocketFD, 0, NPCCARD_BLOCK_BUY ); return;
#endif
default : return;
}
_LPZP_PLAYERBASE pPlayerBase = (_LPZP_PLAYERBASE) lpData ; // PLAYER BASE 沥焊甫 掘澜
// 坷幅 皋矫瘤 贸府
pSocketFD->pPlayer->Init_PlayerBase(pSocketFD, pPlayerBase );
#ifdef DEF_CHINES_FREEUSER
lpData += sizeof(_ZP_PLAYERBASE);
_LPZP_PLAYERIN_ASK pPlayerIn = (_LPZP_PLAYERIN_ASK)lpData;
pSocketFD->pPlayer->m_nBillCode = pPlayerIn->nBillCode;
ErrorMsg( "BILL : %s - %d", pSocketFD->pPlayer->m_strAccountID, pSocketFD->pPlayer->m_nBillCode);
#endif
}
#ifdef DEF_NPCCARD
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_NPCCardInfo(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pDBPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pDBPacket->pSocketFD;
_LPZW_NPCCARDINFO_REP pNPCCardInfo = (_LPZW_NPCCARDINFO_REP)pDBPacket->strPacket;
_LPSOCKET_FD pPlayerFD = g_pMap->Find_Player( pNPCCardInfo->m_szAccount );
//#ifdef DEF_LOGOUT_TO_WORLD
// if ( pPlayerFD == NULL )
// {
// char strTempPlayer[22] ={0,} ;
//
// memcpy( strTempPlayer, pNPCCardInfo->m_szAccount, 20 );
//
// pPlayerFD = (_LPSOCKET_FD)g_pMap->m_MapTempPlayerID.Find( strupr( strTempPlayer ) );
// }
//#endif
if ( pPlayerFD )
{
switch( pNPCCardInfo->m_nResult )
{
// NPC CARD BUY 1盒饶 立加 辆丰 茄促.
case 12:
g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_BUY );
break;
// NPC CARD BUY 己傍茄霸 乐促
case 13:
if ( pPlayerFD->pPlayer )
pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_BUY;
break;
// NPC CARD SELL 1盒饶 立加 辆丰 茄促.
case 14:
g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_SELL );
break;
// NPC CARD SELL 己傍茄霸 乐促
case 15:
if ( pPlayerFD->pPlayer )
pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_SELL;
break;
// NPC CARD SELL 己傍茄霸 乐促( 柯扼牢惑俊辑 舅妨林磊 )
case 16:
g_pServer->PacketSend_WarningMsg( pPlayerFD,NPCCARD_LOGOUT_SELL );
break;
// NPC CARD BUY FAIL : FOR NOT ENOUGH TRA
case 17:
if ( pPlayerFD->pPlayer )
pPlayerFD->pPlayer->m_dwNPCCardSellComplete |= NPCCARDSELL_TYPE_BUYFAIL_TRA;
break;
}
}
}
#endif
////////////////////////////////////////////////////////////////////////////////////////
// WORLD SERVER -> PLAYER INVETORY
//
// - 坷幅 贸府 风凭 眠啊
// - N俺肺 唱穿绢辑 Client俊 傈价窃
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerInvetory(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pWorldPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pWorldPacket->pSocketFD;
//
// SOCKET 蜡瓤己 Checking
//
if( !IsSocketValidity(pSocketFD )) return;
//
// Wrod Server俊辑 罐篮 牢亥配府 涝仿 矫糯
//
char *lpReadData = pWorldPacket->strPacket;
WORD *lpReadNum = (WORD *) lpReadData ;
int nReadNum = (int) (*lpReadNum);
lpReadData += sizeof(WORD) ;
//
// 牢亥配府 历厘 沥焊甫 掘澜
//
EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
while ((nReadNum)-- > 0 )
{
// Read等 Invetory沥焊甫 涝仿 矫糯
_LP_PLAYERINVENTORY lpItem = (_LP_PLAYERINVENTORY ) lpReadData ;
pSocketFD->pPlayer->Init_Inventory( lpItem );
lpReadData += sizeof(_PLAYERINVENTORY) ;
}
#ifdef DEF_AZIT
#else
pSocketFD->pPlayer->m_dwPartyQuest = 0;
pSocketFD->pPlayer->SetChannel( 0 );
#endif
LeaveCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
#ifdef DEF_ITEMCOUNT_BADAJOA20041108_TEST
ErrorMsg("Inv(%d) Equ(%d) Where(%d) ",pSocketFD->pPlayer->m_sItemCount[WHERE_INVENTORY],pSocketFD->pPlayer->m_sItemCount[WHERE_EQUIPMENT],pSocketFD->pPlayer->m_sItemCount[WHERE_WAREHOUSE] ) ;
#endif
ErrorMsg( "LOGIN - Receve Inventory [%s]", pSocketFD->pPlayer->m_strPlayerID );
}
////////////////////////////////////////////////////////////////////////////////////////
// QUEST LIST
//
// - Active Quest甫 涝仿矫糯
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_QuestList(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pWorldPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pWorldPacket->pSocketFD;
//
// SOCKET 蜡瓤己 Checking
//
if( !IsSocketValidity(pSocketFD )) return;
//
// Wrod Server俊辑 罐篮 牢亥配府 涝仿 矫糯
//
char *lpReadData = pWorldPacket->strPacket;
WORD *lpReadNum = (WORD *) lpReadData ;
int nReadNum = (int) (*lpReadNum);
lpReadData += sizeof(WORD) ;
EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
while ((nReadNum)-- > 0 )
{
_LPZW_QUESTLIST_REP pQuest = (_LPZW_QUESTLIST_REP ) lpReadData ;
pSocketFD->pPlayer->Init_Quest( pQuest );
lpReadData += sizeof( _ZW_QUESTLIST_REP) ;
}
LeaveCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
}
////////////////////////////////////////////////////////////////////////////////////////
// QUEST GLOBAL VALUE
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_QuestGlobalValue(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pWorldPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pWorldPacket->pSocketFD;
// --------------------------------------------------------------------------------
// SOCKET 蜡瓤己 Checking
// --------------------------------------------------------------------------------
if( !IsSocketValidity(pSocketFD )) return;
// --------------------------------------------------------------------------------
// Global Value蔼阑 悸泼矫糯
// --------------------------------------------------------------------------------
pSocketFD->pPlayer->QuestGlobal_SetValueByWorld( (_LPZW_QUESTGLOBALVALUE_REP)pWorldPacket->strPacket );
}
////////////////////////////////////////////////////////////////////////////////////////
// WORLD SERVER -> PLAYER SKILL
//
// - 泅犁 Player Skill篮 70俺 捞惑 逞瘤 臼绰巴栏肺 啊沥
// - SKILL涝仿风 单捞鸥 傈价
//
////////////////////////////////////////////////////////////////////////////////////////
void WorldPacket_PlayerSkill(_LPDBSOCK lpWorldSock, _LPPER_BULK_IO_CONTEXT lpIOContext )
{
_LPDBPACKET pDBPacket = (_LPDBPACKET)lpIOContext->buf;
_LPSOCKET_FD pSocketFD = (_LPSOCKET_FD)pDBPacket->pSocketFD;
_LPDBSOCKET_FD pDBSocket = (_LPDBSOCKET_FD)lpIOContext->lpSocketContext;
if( !IsSocketValidity( pSocketFD ) ) return; // SOCKET 八荤
// --------------------------------------------------------------------------------
// SKILL 沥焊甫 掘澜
// --------------------------------------------------------------------------------
char * lpReadData = pDBPacket->strPacket;
WORD *lpReadNum = (WORD *) lpReadData ;
int nReadNum = (int)(*lpReadNum);
lpReadData += sizeof(WORD) ;
// --------------------------------------------------------------------------------
// Skill 包访 沥焊甫 Memory俊 历厘
// --------------------------------------------------------------------------------
EnterCriticalSection( &pSocketFD->pPlayer->m_LockPlayer );
while ((nReadNum)-- > 0 )
{
_LPZW_PLAYERSKILL_REP pSkill = (_LPZW_PLAYERSKILL_REP) lpReadData ;
pSocketFD->pPlayer->Init_PlayerSkill( pSkill );
lpReadData += sizeof(_ZW_PLAYERSKILL_REP) ;
}
_LPZEMIPACKET lpSendPacket = g_pServerMem->ZemiPacket_Pop();
// --------------------------------------------------------------------------------
// 牢亥配府 沥焊甫 Client沥焊甫 傈价
// --------------------------------------------------------------------------------
char * cp = lpSendPacket->strPacket;
char * pTmpCount ;
WORD wNum = 0 ;
WORD wSize = 0 ;
MAP_VOIDPTR::iterator it = pSocketFD->pPlayer->m_MapInventory.Begin();
MAP_VOIDPTR::iterator itEnd = pSocketFD->pPlayer->m_MapInventory.End();
while(true)
{
wNum = 0 ;
memset(lpSendPacket, 0x0 , (sizeof( _ZEMIPACKET ))) ;
cp = lpSendPacket->strPacket;
// 酒捞袍狼 肮荐甫 历厘窍绰 厘家捞促.
pTmpCount = cp ;
cp += sizeof(wNum) ;
for (; it != itEnd; ++it)
{
CItem *pItem = (CItem *)it->second;
if ( !pItem ) continue;
pItem->GetInventory( (_LP_PLAYERINVENTORY)cp );
#ifdef _DEBUG
_LP_PLAYERINVENTORY p = (_LP_PLAYERINVENTORY)cp;
if(p->wITEMIDX == 0 )
{
ErrorMsg("(X) p->wITEMIDX is 0 (%d) ",wNum ) ;
}
#endif
cp += sizeof(_PLAYERINVENTORY) ;
++wNum;
// /////////////////////////////////////////////
// 12究 ITEM阑 傈价 窃
// /////////////////////////////////////////////
if(wNum == 11)
{
++it;
break ;
}
}
memcpy (pTmpCount, &wNum,sizeof(wNum) ) ;
lpSendPacket->dwSize = cp - lpSendPacket->strPacket ;
lpSendPacket->dwCommand = ZP_INVENTORYLIST_REP ;
g_pServer->Send_Single( pSocketFD , lpSendPacket);
if(it == itEnd) break ;
}
// --------------------------------------------------------------------------------
// Guild SKILL沥焊甫 傈价窃
// --------------------------------------------------------------------------------
memset(lpSendPacket, 0x0 , (sizeof( _ZEMIPACKET ))) ;
cp = lpSendPacket->strPacket;
wNum = 0 ;
wSize = 0 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -