⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 player.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
// Player.h: interface for the Player class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PLAYER_H__B1CBCD1A_1F28_4A77_957B_ADDC6995E876__INCLUDED_)
#define AFX_PLAYER_H__B1CBCD1A_1F28_4A77_957B_ADDC6995E876__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


#include <SCPlayer.h>
#include <NetworkObject.h>
#include <Const.h>
#include <Timer.h>
#include <Struct.h>
#include <SCSlotContainer.h>
#include <PacketStruct_CG.h>
#include "Character.h"
#include "misc.h"
#include "PlayerAttrForUpdate.h"

using namespace util;

class MissionManager;
class QuestManager;
class ItemManager;
class ServerSession;
class TradeSlotContainer;
class VendorSlotContainer;
class SCSkillSlot;
class SkillManager;
class SlotManager;
class QuickManager;
class QuickStyleManager;
class MovementChecker;
class CWarehouseSlotContainer;
class EventInventorySlotContainer;
class PVPInfo;

class Player : public Character, public SCPlayer//, public NetworkObject
{
	friend class PlayerManager;
	friend class Village;
	friend class Zone;
	enum 
	{ 
		_DBP_UPDATE_CYCLE_DELAY	= 1000*60*3,		//< 烙矫 : 5盒 掉饭捞 => 3盒 掉饭捞肺 临烙
		SKILL_COOLTIME_MARGIN	= 500,				// 努扼焊促绰 酿鸥烙阑 累霸 棱酒辑 酿鸥烙俊 狼茄 胶懦 角菩啦阑 撤苗霖促.
		PLAYTIME_UPDATE_CYCLE	= 1000*60,			// 敲饭捞鸥烙 诀单捞飘 林扁
		SNAPSHOT_LOG_CYCLE     = 1000*60*30,		// 30盒 窜困 胶忱 鸡 巢扁扁..
	}; 
public:
	Player();
	virtual ~Player();

	virtual BOOL				Init();
	virtual VOID				Release();
	VOID						Create( ServerSession * pServerSession, KEYTYPE UserKey, const TCHAR * pszID );
	VOID						Destroy();
	virtual VOID				Update( DWORD dwDeltaTick );
	virtual VOID				Reuse()		{ Release(); }

	// GM包访
	BOOL						IsGMPlayer();
	BOOL						IsSuperPlayer();
	BOOL						CanChat();
	BOOL						CanBehave();
	VOID						SetDBCharState( eDBCHAR_STATE stat, WORD wMinutes = 0 ); //< wMinutes 喉钒且 矫埃

	// 弥脚 利侩 单捞磐
	virtual BASE_PLAYERINFO *	GetCharInfo();
	VOID						GetPlayerRenderInfo( PLAYER_RENDER_INFO * OUT pRenderInfo );
	VOID						GetPlayerVillageInfo( PLAYER_VILLAGE_INFO * OUT pVillageInfo );

	VOID						SetBehave( ePLAYER_BEHAVE_STATE state ) { m_BehaveState = state; }
	ePLAYER_BEHAVE_STATE		GetBehave() { return m_BehaveState;	}

	// 敲饭捞绢 Title
	VOID						AddPlayerTitle( ePLAYER_TITLE title );
	VOID						RemovePlayerTitle( ePLAYER_TITLE title );
	DWORD						GetPlayerTitle() { return m_PlayerTitle;	}

	// 岿靛汲沥 棺 蜡历虐
	VOID						SetStaticWorld( CWorldBase *pWorld );
	VOID						SetUserKey( DWORD dwUserKey ){ m_dwUserKey = dwUserKey;	}
	DWORD						GetUserKey() { return m_dwUserKey;	}
	const TCHAR *				GetUserID() { return m_pszUserID;	}
	VOID						SetUserID( const TCHAR * pszID ){ _tcsncpy( m_pszUserID, pszID, ID_MAX_LEN ); m_pszUserID[ID_MAX_LEN-1]=0;	}

	// 菩哦 Send 棺 技记 包访
	virtual BOOL				SendPacket( MSG_BASE_FORWARD * pMsg, WORD wSize, BOOL bCrypt = FALSE );
	virtual BOOL				SendExPacket( DWORD dwNumberOfMessages, BYTE **pMsg, WORD *pwSize );
	BOOL						SendToGameDBPServer( MSG_BASE_FORWARD * pMsg, WORD wSize );
	BOOL						SendToGuildServer( MSG_BASE_FORWARD * pMsg, WORD wSize );
	inline VOID					SetServerSession( ServerSession * pSession ){ m_pServerSession = pSession;	}
	inline ServerSession *		GetServerSession(){ return m_pServerSession;	}
	VOID						ForceDisconnect( eDISCONNECT_REASON reason = UNKNOWN_REASON );

	// 鞘靛 立加 棺 唱啊扁
	virtual VOID				OnEnterField(Field* pField, WzVector* pwzVec);
	virtual VOID				OnLeaveField();
	
	// 傈捧包访
	RC::eBATTLE_RESULT			CanNormalAttack( BYTE byAttackType, WzVector &wvCurPos, WzVector &wvDestPos );
	RC::eBATTLE_RESULT			CanStyleAttack( BYTE byAttackType, SLOTCODE StyleCode, WzVector &wvCurPos, WzVector &wvDestPos );
	virtual BOOL				CanAttack() const;
	virtual BOOL				CanBeAttacked() const;
	VOID						SetAttackDelay( BYTE byAttackType, SLOTCODE StyleCode );
	virtual BOOL				OnResurrection( float fRecoverExp, float fRecoverHP, float fRecoverMP );
	virtual BOOL				OnDead();											// 磷菌阑 锭
	virtual VOID				OnAttack( Character *pTarget, SLOTCODE skillcode, DAMAGETYPE damage );		// 傍拜且 锭
	virtual DAMAGETYPE			Damaged( Character *pAttacker, eATTACK_TYPE attackType, DAMAGETYPE damage );	// 单固瘤 罐阑锭
	virtual VOID				ApplyPenalty();
	inline VOID					SetLastAttackSeq( BYTE byAttackSeq ) { m_byLastAttackSeq = byAttackSeq; }
	inline BYTE					GetLastAttackSeq() const { return m_byLastAttackSeq; }
	virtual BOOL				IsFriend( Character *pTarget );
	inline MovementChecker*		GetMovementChecker() { return m_pMovementChecker; }
	
	// 悼累
	virtual VOID				SetActionDelay( DWORD delay );
	DWORD						GetActionDelay();
	BOOL						IsActionExpired();
	inline BOOL					IsDoingAction() { return m_bDoingAction; }

	// 困摹 函拳
	virtual VOID				SetPos( WzVector* pwzVec );
	virtual BOOL				ExecuteThrust( BOOL bForcedMove, WzVector *pwvMoveDistance, WzVector &wvPosAfterThrust, float fMoveDistance, BOOL bDownAfterThrust=FALSE );

	// 酒捞袍 包访
	RC::eITEM_RESULT			CanUseItem( BASE_ITEMINFO * pItemInfo );
	ItemManager *				GetItemManager() { return m_pItemManager;}
	QuickManager *				GetQuickManager() { return m_pQuickManager;}

	// 颇扼固磐(沥焊 汲沥 棺 掘扁)
	virtual VOID				OnSetCharInfo();
	VOID						SerializeInventoryTotalInfo( INVENTORY_TOTAL_INFO & ItemInfo, eSERIALIZE eType );
	//VOID						SerializeEquipItemInfo( EQUIP_ITEM_INFO & OUT ItemInfoOut );
	POSTYPE						SerializeEquipItemBaseInfo( ITEMSLOT * OUT pSlotOut );
	VOID						SerializeSkillTotalInfo( SKILL_TOTAL_INFO & rSkillInfo, eSERIALIZE eType  );
	VOID						SerializeQuickTotalInfo( QUICK_TOTAL_INFO & QuickInfo, eSERIALIZE eType );
	VOID						SerializeStyleTotalInfo( STYLE_TOTAL_INFO & Info, eSERIALIZE eType );
	VOID						SerializeItemTotalInfo( ITEM_TOTAL_INFO & ItemInfo, eSERIALIZE eType );
	BOOL						SerializeInfoToDBProxy();
	VOID						CopyToCharInfo( PLAYERINFO_FOR_PACKET & rCharInfoOut );
	const BASE_ITEMINFO*		GetEquipItemInfo(eEQUIPCONTAINER_POS pos) const;

	// 颇扼固磐
	virtual Attributes&			GetAttr()					{ return m_Attr; }
	virtual const Attributes&	GetAttr() const				{ return m_Attr; }

	eCHAR_TYPE					GetCharType() const			{ return SCPlayer::GetCharType(); }
	virtual LEVELTYPE			GetLevel() const			{ return SCPlayer::GetLevel(); }
	virtual float				GetSkillRangeBonus() const	{ return (float)m_Attr.GetSkillRangeBonus()/10.0f; }
	virtual float				GetSightRange() const		{ return (float)m_Attr.GetSightRange()/10.0f; }
	virtual eARMOR_TYPE			GetArmorType() const;
	virtual eMELEE_TYPE			GetMeleeType() const;
	virtual float				GetAttackRange() const;
	virtual DWORD				GetExp() const				{ return m_pCharInfo->m_dwExp; }
	DWORD						GetNextExp() const			{ return m_dwNextExp; }
	virtual DWORD				GetHP() const				{ return m_pCharInfo->m_dwHP; }
	virtual DWORD				GetMP() const				{ return m_pCharInfo->m_dwMP; }
	virtual DWORD				GetMaxHP() const			{ return m_Attr.GetMaxHP(); }
	virtual DWORD				GetMaxMP() const			{ return m_Attr.GetMaxMP(); }
	virtual TCHAR*				GetCharName() const			{ return m_pCharInfo->m_tszCharName; }
	virtual int					GetRegenHP() const			{ return m_Attr.GetRecoverHP(); }
	virtual int					GetRegenMP() const			{ return m_Attr.GetRecoverMP(); }
	DWORD						GetRemainStatPoint() const	{ return m_pCharInfo->m_dwRemainStat; }
	DWORD						GetRemainSkillPoint() const	{ return m_pCharInfo->m_dwRemainSkill; }
	MONEY						GetMoney()					{ return m_pCharInfo->m_Money; }

	// 力茄贸府甫 困秦辑 : 某腐磐啊 啊柳 扁夯 荐摹啊 鞘夸
	SHORT						GetBaseStrength() const		{ return m_Attr.GetBaseSTR(); }
	SHORT						GetBaseDexterity() const	{ return m_Attr.GetBaseDEX(); }
	SHORT						GetBaseVitality() const		{ return m_Attr.GetBaseVIT(); }
	SHORT						GetBaseSpirit() const		{ return m_Attr.GetBaseSPR(); }
	SHORT						GetBaseInteligence() const	{ return m_Attr.GetBaseINT(); }
	SHORT						GetBaseExperty1() const		{ return m_Attr.GetBaseExperty1(); }
	SHORT						GetBaseExperty2() const		{ return m_Attr.GetBaseExperty2(); }

	virtual SHORT				GetStrength() const			{ return m_Attr.GetSTR(); }
	virtual SHORT				GetDexterity()	const		{ return m_Attr.GetDEX(); }
	virtual SHORT				GetVitality()	const		{ return m_Attr.GetVIT(); }
	virtual SHORT				GetSpirit()	const			{ return m_Attr.GetSPR(); }
	virtual SHORT				GetInteligence() const		{ return m_Attr.GetINT(); }
	virtual DWORD				GetPhysicalAvoidValue() const { return (DWORD)( GetLevel()/5 + m_Attr.GetPhysicalAvoidRate() ); }
	virtual float				GetPhysicalAttackSpeed() const { return m_Attr.GetAttSpeedRatio()/100.0f; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -