?? playerinfo.cpp
字號:
////////////////////////////////////////////////////////////////////////////////////////
// PlayerInfo.cpp : implementation file
//
//
//
//
//
//
////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Resource.h"
#include "CUdpSocket.h"
#include "PlayerInfo.h"
#include "MapServerSocket.h"
#include "DBSocket.h"
#include "CFightZone.h"
#include "CLog.h"
#include "ServerMem.h"
#include "QuestEngine.h" // Quest
#include "ActiveQuest.h" // Active Quest
#include "QuestEngine.h"
#ifdef DEF_AZIT
#include "AzitManager.h"
#endif
#ifdef DEF_UNIQUEITEM
#include "UniqueManager.h"
#endif
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
////////////////////////////////////////////////////////////////////////////////////////
// Global Values
////////////////////////////////////////////////////////////////////////////////////////
extern CDBConnection g_AccountDB; // Account Database Connect
extern _LPCLOGMANAGER g_lpLog ; // Log
extern CQuestEngine *g_pQuestEngine; // Quest Engine
extern ServerMem *g_pServerMem;
extern BaseData g_Base; // DATABASE 包訪
extern Map *g_pMap; // MAP 包府
extern MapServerSocket *g_pServer; // Map Server Pointer
extern _LPDBSOCK g_lpDBSock ; // World Server
extern _LPUDPSOCKET g_lpUdpSock ; // UDP
extern _LPCFIGHTZONEMANAGER g_lpFightzoneManager ;
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
#ifdef DEF_CHECKATTAKRANGE
//DEF_CHECKATTAKRANGE_MORE
inline int GetAllowSkillAttackRange( CEnchant* pSkill, bool bOff )
{
if ( pSkill )
{
switch( pSkill->m_wRangeType )
{
case SKILL_RANGE_ONLYMYSELF: // 阿輛 牢忙飄, 磊扁 磊腳俊霸父 矯傈
break;
case SKILL_RANGE_ONLYITSELF: // 頗撈絹 杭飄, 澆貳矯殿 努腐茄 措惑 茄疙俊霸父 矯傈
{
if ( pSkill->m_wSkillRange == 0 )
return MAX_ALLOWED_ATTACK;
if ( pSkill->m_wSkillRange <= MAX_ALLOWED_ATTACK )
return MAX_ALLOWED_ATTACK;
return ( ( ( pSkill->m_wSkillRange + OFFSET_ALLOWED_RANGE ) > MAX_ALLOWED_ATTACKINAOI ) ? MAX_ALLOWED_ATTACKINAOI : ( pSkill->m_wSkillRange + OFFSET_ALLOWED_RANGE ) );
}
break;
case SKILL_RANGE_TARGET: // 皋拋坷, 頗撈絹 杭
case SKILL_RANGE_STRIKE: // 抄葷, 家靛 配匙撈檔
return MAX_ALLOWED_ATTACKINAOI;
break;
case SKILL_RANGE_SQUARE: // 酒撈膠 鞘扼, 家靛膠盆
{
if ( pSkill->m_wSkillHitRange == 0 )
return MAX_ALLOWED_ATTACK + OFFSET_ALLOWED_RANGE;
if ( pSkill->m_wSkillHitRange <= ( MAX_ALLOWED_ATTACK + OFFSET_ALLOWED_RANGE ) )
return MAX_ALLOWED_ATTACK + OFFSET_ALLOWED_RANGE;
return ( ( ( pSkill->m_wSkillHitRange + OFFSET_ALLOWED_RANGE ) > MAX_ALLOWED_ATTACKINAOI ) ? MAX_ALLOWED_ATTACKINAOI : ( pSkill->m_wSkillHitRange + OFFSET_ALLOWED_RANGE ) );
}
break;
}
}
return MAX_ALLOWED_ATTACK;
}
// 老竄 吝憊鉑肺 利儈 鞏力 樂闌錠綽 犬牢 鞘夸 2005-3-10
//inline int GetAllowSkillAttackRange( CEnchant* pSkill, bool bOff )
//{
// if ( pSkill )
// {
// switch( pSkill->m_wRangeType )
// {
// case 0: // 阿輛 牢忙飄, 磊扁 磊腳俊霸父 矯傈
// break;
//
// case 1: // 頗撈絹 杭飄, 澆貳矯殿 努腐茄 措惑 茄疙俊霸父 矯傈
// case 2: // 皋拋坷, 頗撈絹 杭
// case 3: // 抄葷, 家靛 配匙撈檔
// case 4: // 酒撈膠 鞘扼, 家靛膠盆
// {
// if ( pSkill->m_wSkillRange == 0 )
// return MAX_ALLOWED_ATTACK;
//
// if ( bOff )
// {
// return ( ( ( pSkill->m_wSkillRange + OFFSET_ALLOWED_RANGE ) > MAX_ALLOWED_ATTACKINAOI ) ? MAX_ALLOWED_ATTACKINAOI : ( pSkill->m_wSkillRange + OFFSET_ALLOWED_RANGE ) );
// }
// else
// {
// if ( pSkill->m_wSkillRange <= OFFSET_ALLOWED_RANGE )
// return OFFSET_ALLOWED_RANGE;
//
// return ( ( pSkill->m_wSkillRange > MAX_ALLOWED_ATTACKINAOI ) ? MAX_ALLOWED_ATTACKINAOI : pSkill->m_wSkillRange );
// }
// }
// break;
// }
// }
//
// return MAX_ALLOWED_ATTACKINAOI;
//}
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
inline int GetAllowPhysicalAttackRange( int nIdx )
{
return MAX_ALLOWED_ATTACK;
}
////////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////////
inline int GetAllowMissileAttackRange( int nIdx )
{
return MAX_ALLOWED_MISSILEATTACK;
}
#endif
////////////////////////////////////////////////////////////////////////////////////////
// PlayerInfo
////////////////////////////////////////////////////////////////////////////////////////
PlayerInfo::PlayerInfo()
{
memset(&_PLAYERINFO, 0x0, sizeof(_ZP_PLAYERINFO));
m_bOptionWhisper = TRUE; // 庇加富 勸己拳 咯何
m_bOptionCommunity = TRUE; // 目孤聰萍 勸己 咯何
#ifdef DEF_KUMA_GAMBLE
m_nGambleState = 0;
m_pTmpGambleItem = NULL;
#endif
m_bWaitForPartyReq = false;
m_bPartyBreak = false;
m_iContribute = 0 ;
m_bHoldTurn = false;
}
PlayerInfo::~PlayerInfo()
{
}
////////////////////////////////////////////////////////////////////////////////////////
// Player客 包訪等 函薦甫 Clear矯糯
//
// - 檬扁拳 親格 郴儈 痢八 累訣 鞘夸
////////////////////////////////////////////////////////////////////////////////////////
void PlayerInfo::Clear_PlayerInfo()
{
CPlayer::Clear_Player();
m_nStatus = STATUS_NOTHING; // 酒公 悼累檔 絕綽 惑怕
m_pSocketFD = NULL;
m_dwHandle = 0; // Player Handle
Party_ClearHandle() ;
m_bOptionWhisper = TRUE; // 庇加富 勸己拳 咯何
m_bOptionCommunity = TRUE; // 目孤聰萍 勸己 咯何
m_nAdminDiv = 0;
m_nTeleportMapID = 0;
m_bIsForceLogout = false ;
m_dwGuildHandle = 0;
m_nGuildLevel = 0;
#ifdef DEF_GUILDRANKDUB
m_iGuildRank = 0;
#endif
m_dwMatchSEQ = 0 ;
m_nTeam = 0 ;
m_nKillCount = 0 ;
m_bIsFightZone = false ;
m_bIsFightMode = false ;
m_sProtectTime = 0 ;
m_nUsePotion = PVP_POTION_USE ; // 拱距 葷儈撈 啊瓷竅促
m_nMatchTeamType = 0;
m_nPartyType = 0;
m_sPartyClass = 0;
m_bHoldTurn = false;
memset( m_strAccountID ,0x0, sizeof( m_strAccountID) );
memset( m_strPlayerID ,0x0, sizeof( m_strPlayerID ) );
memset( m_strGuildName ,0x0, sizeof( m_strGuildName) );
memset( m_strGuildMark ,0x0, sizeof( m_strGuildMark) );
memset( &m_OldCellPoint ,0x0, sizeof( _POINT ) ); // 困摹 包訪 函薦 檬扁拳
memset( &m_FromCell ,0x0, sizeof( _POINT ) );
memset( &m_ToCell ,0x0, sizeof( _POINT ) );
memset( &m_BaseFromCell ,0x0, sizeof( _POINT ) );
memset( &m_BaseToCell ,0x0, sizeof( _POINT ) );
memset(&_PLAYERINFO ,0x0, sizeof(_ZP_PLAYERINFO)); // Visual 瀝焊 檬扁拳
//
// NPC SYSTEM Clear
//
m_listSummonNPC.RemoveAll();
//
// 牢亥配府 郴儈 檬扁拳
//
if( bInventoryMapClear())
{
ErrorMsg( "(X) Play Clear Error - Inventory" );
}
//
// 膠懦 檬扁拳
//
m_pAttackSkill = NULL;
if( bSkillMapClear() )
{
ErrorMsg( "(X) Play Clear Error - Skill" );
}
//
// Enchant 檬扁拳
//
if( bEnchantMapClear())
{
ErrorMsg( "(X) Play Clear Error - Enchant" );
}
// 辨靛 膠懦 努府絹
if( bGuildSkillClear() )
{
ErrorMsg( "(X) Play Clear Error - m_MapGuildSkill" );
}
//
// Quest檬扁拳 (竊薦肺 盒府矯糯)
//
if( !m_ActiveQuest.m_SafeMap.empty() )
{
MAP_VOIDPTR::iterator itEnd = m_ActiveQuest.End() ;
for ( MAP_VOIDPTR::iterator it = m_ActiveQuest.Begin(); it != itEnd; it++)
{
CActiveQuest *pActiveQuest = (CActiveQuest *)it->second;
g_pServerMem->ActiveQuest_Push( pActiveQuest );
}
m_ActiveQuest.Clear();
ErrorMsg( "(X) Play Clear Error - ActiveQuest" );
}
#ifdef DEF_CHECK_QUESTDONE
//
// 竊薦肺 盒府 矯糯
//
if ( !m_QuestDone.m_SafeMap.empty() )
{
MAP_VOIDPTR::iterator itEnd = m_QuestDone.End();
for ( MAP_VOIDPTR::iterator it = m_QuestDone.Begin(); it != itEnd; it++)
{
_QUEST_SUCCESS_INFO *pQuestDone = (_QUEST_SUCCESS_INFO *)it->second;
g_pServerMem->QuestSuccessInfo_Push( pQuestDone );
}
m_QuestDone.Clear();
}
#endif
//
// 辨靛 桂農 檬扁拳
//
#ifdef DEF_GUILDBANK
if( bGuildInventoryClear() )
ErrorMsg( "(X) Play Clear Error - m_MapGuildInventory" );
#endif
// --------------------------------------------------------------------------------
// 厘饅 瀝焊 檬扁拳
// --------------------------------------------------------------------------------
memset( m_pEquipments ,0x0, sizeof(m_pEquipments ) );
// --------------------------------------------------------------------------------
// 技飄酒撈袍 可記
// --------------------------------------------------------------------------------
m_SetItemOption = 0;
m_pSetItemFullOption= NULL;
// --------------------------------------------------------------------------------
// 苞陛 包訪 函薦 檬扁拳
// --------------------------------------------------------------------------------
m_nBillCode = 0;
m_nConnectLocation = 0;
// --------------------------------------------------------------------------------
// PK Chao
// --------------------------------------------------------------------------------
m_pPKChao = NULL;
m_sAttackModeTime = 0 ;
m_iPKPoint = 0 ;
m_iPKWin = 0 ;
m_iPKLose = 0 ;
// --------------------------------------------------------------------------------
// PARTYQUEST
// --------------------------------------------------------------------------------
memset( m_nQuestGlobalValue, 0x00, sizeof(int)*DEF_QUEST_GLOBALVALUE_MAX );
//
//
// Event Map俊 措茄 Path甫 歷厘矯糯
//
// - 眠饒 包訪 Pointer泅怕肺 函版矯糯
//
m_nEventMapBase = 0;
m_nEventMapPath = 0;
m_nEventMapSelect = 0;
#ifdef DEF_AZIT
m_dwPartyQuest = 0;
SetChannel( 0 );
#endif
#ifdef DEF_KUMA_GAMBLE
m_nGambleState = 0;
m_pTmpGambleItem = NULL;
#endif
m_iContribute = 0 ;
#ifdef DEF_ITEMCOUNT_BADAJOA20041108
memset(m_sItemCount,0x0,sizeof(m_sItemCount)) ;
#endif
#ifdef DEF_NPCCARD
m_dwNPCCardSellComplete = 0;
#endif
#ifdef DEF_DEFENCESKILLHACK
m_nReactAttackCount = 0 ;
#endif
#ifdef DEF_GUILDWAR
m_lpGuild = NULL ;
#endif
m_bStallHack = FALSE;
}
#ifdef DEF_CHECK_QUESTDONE
////////////////////////////////////////////////////////////////////////////////////////
// 涅膠飄 薦青矯埃撈 20檬 固父牢 巴撈 7鍋撈惑 唱鷗唱擱 老竄 肺弊甫 巢扁磊..
//
////////////////////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -