📄 playerinfo.cpp
字号:
#define QUEST_DONE_CHECK 20 * 1000 // 20檬
#define QUEST_DONE_CHECK_CNT 7
void PlayerInfo::CheckQuestStart( DWORD pQuestIdx )
{
_QUEST_SUCCESS_INFO *pQuestDone = (_QUEST_SUCCESS_INFO*)m_QuestDone.Find( pQuestIdx );
if ( pQuestDone == NULL )
{
_QUEST_SUCCESS_INFO *pQuestDone = g_pServerMem->QuestSuccessInfo_Pop();
if ( pQuestDone )
{
m_QuestDone.Insert( pQuestIdx, pQuestDone );
pQuestDone->nQuestDoneCnt = 0;
pQuestDone->dwQuestIdx = pQuestIdx;
pQuestDone->dwLastDoneTime = 0;
}
else
return;
}
pQuestDone->dwStartTime = timeGetTime();
}
////////////////////////////////////////////////////////////////////////////////////////
//
//
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::CheckQuestDone( DWORD pQuestIdx, bool bSuccess )
{
_QUEST_SUCCESS_INFO *pQuest = (_QUEST_SUCCESS_INFO*)m_QuestDone.Find( pQuestIdx );
if ( pQuest == NULL )
return;
DWORD dwTime = timeGetTime();
if ( ( dwTime - pQuest->dwStartTime ) <= QUEST_DONE_CHECK )
{
if ( ( pQuest->dwLastDoneTime != 0 ) &&
( ( dwTime - pQuest->dwLastDoneTime ) <= QUEST_DONE_CHECK ) )
{
pQuest->nQuestDoneCnt += 1;
if ( pQuest->nQuestDoneCnt > QUEST_DONE_CHECK_CNT )
{
// 购啊 捞惑窍促.... 老窜 肺弊 巢扁磊..
g_lpLog->OnFunc[DEF_LOG_CHECKQUESTDONE].proc(DEF_LOG_CHECKQUESTDONE,this, NULL, NULL, pQuestIdx) ;
pQuest->nQuestDoneCnt = 0;
}
}
pQuest->dwLastDoneTime = dwTime;
}
}
#endif
////////////////////////////////////////////////////////////////////////////////////////
// 弥檬 霸烙 立加 矫档
//
// - WORLD SERVER俊 立加 皋矫瘤 傈价 傈
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::Init_Login(_LPSOCKET_FD pSocketFD, _LPZP_PLAYERIN_ASK pPlayerIN)
{
m_pSocketFD = pSocketFD;
m_nSaveTick = 0 ;
memcpy( m_strAccountID, pPlayerIN->strAccountId , sizeof(m_strAccountID) ); // Account ID 涝仿
memcpy( m_strPlayerID , pPlayerIN->strPlayerId , sizeof(m_strPlayerID ) ); // 纳腐磐 ID 涝仿
m_nStart = pPlayerIN->nStart; // 弥檬 立加咯何
// 0
// 1
//#ifdef DEF_LOGOUT_TO_WORLD
//
// // --------------------------------------------------------------------------------
// // PLAYER ID 殿废矫 措巩磊 函券饶 殿废
// // --------------------------------------------------------------------------------
// char strTempPlayer[22] ={0,} ;
//
// memcpy( strTempPlayer, pPlayerIN->strPlayerId , 20 );
//
// g_pMap->m_MapTempPlayerID.Delete(strupr( strTempPlayer ));
//
// g_pMap->m_MapTempPlayerID.Insert( strupr( strTempPlayer ), pSocketFD );
//
//#else
// --------------------------------------------------------------------------------
// NOTENOTE: 吝汗 立加栏肺 牢茄 归挤阑 秦搬窍扁 困秦 荐沥窃
// ACCOUNT ID殿废
// --------------------------------------------------------------------------------
g_pMap->m_MapAccountID.Insert( pPlayerIN->strAccountId , pSocketFD );
// --------------------------------------------------------------------------------
// PLAYER ID 殿废矫 措巩磊 函券饶 殿废
// --------------------------------------------------------------------------------
char strTempPlayer[22] ={0,} ;
memcpy( strTempPlayer, pPlayerIN->strPlayerId , 20 );
g_pMap->m_MapPlayerID.Insert( strupr( strTempPlayer ), pSocketFD );
// #endif // DEF_LOGOUT_TO_WORLD
// --------------------------------------------------------------------------------
// 苞陛 包访 沥焊甫 涝仿矫糯
// --------------------------------------------------------------------------------
#if defined(DEF_BILLING) || defined(DEF_CHINES_FREEUSER)
m_nBillCode = pPlayerIN->nBillCode; // 苞陛 内靛
m_nConnectLocation = pPlayerIN->nConnectLocation; // 立加 瘤开
#endif
}
////////////////////////////////////////////////////////////////////////////////////////
// Player狼 包访 沥焊甫 檬扁拳 矫糯
//
// - PLAYER INFO STRUCT甫 涝仿 FUNCTION阑 劝侩
// - 坷幅 皋矫瘤 贸府 立加 角菩 矫
//
// - 酒瘤飘 甘 立加 矫 酒瘤飘 傈 荐青 咯何甫 魄窜窍咯 包访 涅胶飘甫 惯悼矫糯
////////////////////////////////////////////////////////////////////////////////////////
bool PlayerInfo::Init_PlayerBase(_LPSOCKET_FD pSocketFD, _LPZP_PLAYERBASE_REP pPlayerBase )
{
// --------------------------------------------------------------------------------
// Player狼 扁夯 沥焊甫 涝仿 矫糯
// --------------------------------------------------------------------------------
m_dwHandle = pPlayerBase->dwPlayerHandle; // Player Handle
m_nCharacterType = pPlayerBase->nPlayerClass %10; // 檬扁 Setting蔼 沥焊甫 掘澜
m_nJob = pPlayerBase->nPlayerClass; // 流诀阑 殿废矫糯
// Player Visual沥焊甫 涝仿 矫糯
memcpy( _PLAYERINFO.strPlayerId , m_strPlayerID, sizeof( _PLAYERINFO.strPlayerId ) );
_PLAYERINFO.dwPlayerHandle = pPlayerBase->dwPlayerHandle; // Player Handle
_PLAYERINFO.nPlayerClass = m_nJob; // Player Class
m_nBaseStr = pPlayerBase->wSTR; // 某腐磐狼 扁夯塞
m_nBaseDex = pPlayerBase->wDEX; // 某腐磐狼 扁夯 刮酶
m_nBaseIntel = pPlayerBase->wINTEL; // 某腐磐狼 扁夯 瘤仿
m_nBaseLuck = pPlayerBase->wLUCK; // 某腐磐狼 扁夯 款
m_nLevel = pPlayerBase->dwLVL; // 某腐磐狼 饭骇
m_nAlign = pPlayerBase->nAlign; // 己氢摹
_PLAYERINFO.nAlign = pPlayerBase->nAlign; // 己氢摹
// --------------------------------------------------------------------------------
// 纳腐狼 捞傈 版氰摹甫 掘澜
//
// - 酒贰客 鞍捞 荐沥饶 眠饶 Error Msg贸府 窍档废 窃
// --------------------------------------------------------------------------------
_LEVEL_UP_ *pLeveUp = g_Base.Find_LevelUp( m_nLevel - 1 ); // Level Up 单捞鸥甫 掘澜
if( pLeveUp )
{
m_nBaseExp = pLeveUp->dwEXPNEED;
}
else
{
ErrorMsg( "(X) Level(%d) %d No default experience info", m_nLevel, m_nLevel - 1 );
return false ;
}
m_nExp = pPlayerBase->dwEXP; // 某腐磐狼 版氰摹
// --------------------------------------------------------------------------------
// 矫累 版氰摹啊 累篮 版快
// --------------------------------------------------------------------------------
if( m_nExp < m_nBaseExp )
{
ErrorMsg( "(X) %s experience less than default experience", m_strPlayerID );
// ----------------------------------------------------------------------------
// 秦寸 版氰摹狼 Level俊 嘎档废 Down阑 矫糯
// ----------------------------------------------------------------------------
while(1)
{
pLeveUp = g_Base.Find_LevelUp( m_nLevel - 1 ); // Level Up 捞傈 单捞鸥甫 掘澜
if( NULL == pLeveUp )
{
ErrorMsg( "(X) Level(%d) %d No default experience info", m_nLevel, m_nLevel - 1 );
return false ;
}
if( pLeveUp->dwEXPNEED > m_nExp )
{
--m_nLevel; // Level Down矫糯
m_nNextExp = pLeveUp->dwEXPNEED;
}
else
{
// 泅犁 Level狼 矫累 版氰摹
// 包访 荐摹狼 八刘累诀捞 鞘夸窃
if( pLeveUp->dwEXPNEED < m_nBaseExp )
m_nBaseExp = pLeveUp->dwEXPNEED;
break;
}
}
}
// --------------------------------------------------------------------------------
// 促澜 版氰摹 沥焊甫 掘澜
// --------------------------------------------------------------------------------
pLeveUp = g_Base.Find_LevelUp( m_nLevel );
if( pLeveUp )
m_nNextExp = pLeveUp->dwEXPNEED;
else
ErrorMsg( "(X) Have not Experience info after Level %d", m_nLevel );
// m_nNextExp = pPlayerBase->dwNEXTEXP; // 促澜 饭骇 版氰摹
// 饭骇 焊沥 累诀
m_nLastLevel = pPlayerBase->dwLASTLVL; // 某腐磐狼 饭骇(胶懦器牢飘 罐篮 锭鳖瘤 饭骇)
m_nHP = pPlayerBase->dwHP; // 某腐磐狼 眉仿
m_nMP = pPlayerBase->dwMP; // 某腐磐狼 付过仿
m_nSkillPoint = pPlayerBase->dwSKILLPOINT; // 某腐磐狼 胶懦 器牢飘
m_nStatPoint = pPlayerBase->dwSTATPOINT; // 某腐磐狼 胶湃 器牢飘
// pPlayerBase->wX; // Player X 困摹
// pPlayerBase->wY; // Player Y 困摹
//
// 荐沥 荤亲 : m_nPartyType / m_sPartyClass俊 包访 沥焊涝仿
//
//
#ifdef DEF_PARTYQUEST
m_dwPartyHandle = pPlayerBase->dwPARTYIDX ; // 颇萍狼 沥焊 [MAP 捞悼矫 狼固啊 乐澜]
#else
if( !m_nStart )
{ // 颇萍狼 沥焊 [MAP 捞悼矫 狼固啊 乐澜]
Party_ClearHandle() ;
}
else
{
m_dwPartyHandle = pPlayerBase->dwPARTYIDX ; // 颇萍狼 沥焊 [MAP 捞悼矫 狼固啊 乐澜]
}
#endif
if(m_dwPartyHandle != 0)
{
_PLAYERINFO.dwPartyHandle = m_dwPartyHandle ;
}
m_dwGuildHandle = pPlayerBase->dwGUILDIDX; // 辨靛 沥焊
// --------------------------------------------------------------------------------
// 辨靛俊 啊涝等 版快贸府
// --------------------------------------------------------------------------------
if(m_dwGuildHandle != 0)
{
memcpy(m_strGuildName, pPlayerBase->strGuildName, 20); // 辨靛狼 捞抚
memcpy(m_strGuildMark, pPlayerBase->strGuildMark, sizeof( m_strGuildMark )); // 辨靛狼 付农
m_nGuildLevel = pPlayerBase->nGuildLevel; // 辨靛郴狼 饭骇
memcpy( _PLAYERINFO.strGuildName , m_strGuildName, sizeof( m_strGuildName ) );
memcpy( _PLAYERINFO.strGuildMark , m_strGuildMark, sizeof( m_strGuildMark ) );
_PLAYERINFO.nGuildLevel = m_nGuildLevel; // 辨靛郴狼 饭骇
_PLAYERINFO.dwGuildHandle = m_dwGuildHandle;
Guild_PlayerIn(m_strGuildName) ;
m_iContribute = pPlayerBase->iContribute ;
#ifdef DEF_GUILDRANKDUB
m_iGuildRank = pPlayerBase->iGuildRank ;
#endif
}
m_nGold = pPlayerBase->dwGOLD; // 爱绊 乐绰 陛狼 剧
m_nBankGold = pPlayerBase->dwBANKGOLD; // 芒绊俊 该扁 陛狼 剧
m_nActiveSlot = pPlayerBase->nACTIVESLOT; // 胶懦 窍窜 ICON急琶等 SLOT困摹
m_nAdminDiv = pPlayerBase->nDiv; // 老馆 荤侩磊/GM备盒
// --------------------------------------------------------------------------------
// 纳腐 LEVEL俊 秦寸登绰 MAX HP/MAXP MP/CM甫 掘澜
// --------------------------------------------------------------------------------
_INIT_STAT_ *pInitStat = g_Base.Find_InitStat( m_nCharacterType ); // 檬扁 Setting蔼 沥焊甫 掘澜
if( !pInitStat ) return false;
m_nBaseMaxHP = pInitStat->wHP + pInitStat->wHPLVL * m_nLevel; // MAX HP
m_nBaseMaxMP = pInitStat->wMP + pInitStat->wMPLVL * m_nLevel; // MAX MP
m_nCM = pInitStat->wCM; // CM
// --------------------------------------------------------------------------------
// 纳腐捞 扁夯 葛嚼 Setting (Client傈价 单捞鸥 涝仿)
//
// - Base版氰摹绰 老 窜 涝仿 矫糯 眠饶 肺流 荐沥 鞘夸
// (MAP 捞悼 矫 版氰摹啊 肋给 钎矫 蹬绰 Bug惯积)
// --------------------------------------------------------------------------------
pPlayerBase->dwLVL = m_nLevel;
pPlayerBase->dwBASEEXP = m_nBaseExp;
pPlayerBase->dwNEXTEXP = m_nNextExp;
// --------------------------------------------------------------------------------
// 芒绊 TAB / 芒绊 鞠龋 (2004.04.21 Duke Kim眠啊)
// --------------------------------------------------------------------------------
m_nBankTab = pPlayerBase->nBankTab; // 荤侩 芒绊 TAB
m_nBankLock = pPlayerBase->nBankLock; // 芒绊 LOCK咯何
// --------------------------------------------------------------------------------
// 芒绊 Password (Map Server/World Server荤侩)
// --------------------------------------------------------------------------------
memcpy( m_strBankPassword, pPlayerBase->strBankPassword, sizeof(pPlayerBase->strBankPassword) );
// --------------------------------------------------------------------------------
// 蜡历甸俊霸绰 芒绊 菩胶况靛 沥焊甫 焊郴瘤 臼绰促.
// --------------------------------------------------------------------------------
memset(pPlayerBase->strBankPassword,0x0, sizeof(pPlayerBase->strBankPassword) ) ;
// --------------------------------------------------------------------------------
// ZP_PLAYERBASE_REP 沥焊甫 Client俊 傈价 矫糯
// --------------------------------------------------------------------------------
g_pServer->PacketSend_PlayerBase( m_pSocketFD, pPlayerBase );
// --------------------------------------------------------------------------------
// 秦寸 Map Layer沥焊甫 掘澜
// --------------------------------------------------------------------------------
m_dwMatchSEQ = pPlayerBase->dwMatchSEQ;
m_nTeam = pPlayerBase->nTeam;
m_dwPKCount = pPlayerBase->dwPKCount;
m_dwPVPWin = pPlayerBase->dwPVPWin;
m_dwPVPLose = pPlayerBase->dwPVPLose;
m_nMapID = pPlayerBase->nMapID;
m_iPKPoint = pPlayerBase->iPKPoint ;
m_iPKWin = pPlayerBase->iPKWin ;
m_iPKWin = pPlayerBase->iPKWin ;
m_sAttackModeTime = pPlayerBase->sAttackModeTime ;
if(m_sAttackModeTime > 0 )
_PLAYERINFO.bPlayerAttackMode = true ;
//
// 秦寸 Map Layer甫掘篮 -> Map Search肺 函版 矫糯
//
// - 秦寸 风凭阑 Function栏肺 盒府矫糯
//
m_nMapLayer = 0;
for( int i=0; i < g_pMap->m_nMaxLayer; i ++ )
{
if( g_pMap->GetMapID( i ) == m_nMapID )
{
m_nMapLayer = i;
break;
}
}
//
// Max Layer坷幅
//
if( m_nMapLayer >= MAX_MAPLAYER )
{
ErrorMsg( "(X) Max Map Layer error %s", m_strPlayerID );
m_nMapLayer = 0;
}
// --------------------------------------------------------------------------------
// 荤捧厘 甘牢 版快绰 眉农
// --------------------------------------------------------------------------------
if( g_pMap->IsFightMap( m_nMapLayer ) )
{
// 矫累 困摹啊 荤捧厘牢 版快
if (g_pMap->IsFightZone( m_nMapLayer, (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100 ))
{
// 泅犁 困摹啊 磊脚狼 荤捧厘捞 酒囱 版快 肺厚肺 埃促.
if ( (m_dwMatchSEQ == 0)
|| (false == g_lpFightzoneManager->bLoginZone(pSocketFD ,m_dwMatchSEQ,m_nTeam, (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100)))
{
SendToLobby(pPlayerBase) ;
}
}
}
// --------------------------------------------------------------------------------
// 困摹 蔼阑 涝仿 [眠饶 包访 困摹 矫累 风凭 荐沥]
//
// - 历厘 困摹蔼捞 绝绰 版快 : Map狼 矫累 困摹俊辑 矫累
// - 酒贰 风凭 八刘捞 鞘夸窃 力措肺 悼累 臼窍绰 巴栏肺 焊烙
// --------------------------------------------------------------------------------
if( pPlayerBase->wX == 0 && pPlayerBase->wY == 0 )
{
// 泅 困摹俊 粮犁 窍绰 版快
_PLAYERINFO.wX = g_pMap->MapConfig[m_nMapLayer].StartPoint.x;
_PLAYERINFO.wY = g_pMap->MapConfig[m_nMapLayer].StartPoint.y;
}
// 历厘 困摹蔼捞 乐绰 版快 : 秦寸 困摹俊辑 矫累
else
{
// 矫累 困摹啊 捞悼 陛瘤 备开牢 版快 檬扁 困摹肺 捞悼
if( g_pMap->IsMoveable( m_nMapLayer, (int)pPlayerBase->wX/100, (int)pPlayerBase->wY/100 ) )
{
_PLAYERINFO.wX = pPlayerBase->wX;
_PLAYERINFO.wY = pPlayerBase->wY;
}
else
{
_PLAYERINFO.wX = g_pMap->MapConfig[m_nMapLayer].StartPoint.x;
_PLAYERINFO.wY = g_pMap->MapConfig[m_nMapLayer].StartPoint.y;
}
}
// --------------------------------------------------------------------------------
// 己氢摹 包访 荐摹 涝仿
//
// - World Server DB俊 包访 Chao沥焊甫 眠饶 历厘矫挪饶 沥焊甫 掘澜
// - 鞘靛 犬厘饶 单捞鸥 粮犁矫 包访 亲格 PK C
// --------------------------------------------------------------------------------
for ( MAP_VOIDPTR::iterator it = g_Base.m_PKChaoChart.Begin(); it != g_Base.m_PKChaoChart.End(); it++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -