📄 player.h
字号:
// 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 + -