📄 user.h
字号:
virtual DWORD GetMaxMana ();
virtual DWORD GetMinAtk ();
virtual DWORD GetMaxAtk ();
virtual DWORD GetMgcMinAtk ();
virtual DWORD GetMgcMaxAtk ();
virtual DWORD GetAttack ();
virtual DWORD GetMagicAttack ();
virtual DWORD GetAtkHitRate ();
virtual DWORD GetDef ();
virtual DWORD GetDefence ();
virtual DWORD GetDefence2 ();
virtual DWORD GetDex ();
virtual DWORD GetDexterity ();
virtual DWORD GetDdg ();
virtual DWORD GetDodge ();
// virtual DWORD GetMagicAtk ();
virtual DWORD GetMagicDef ();
virtual DWORD GetInterAtkRate ();
virtual DWORD GetIntervalAtkRate ();
virtual int GetAttackRange (int nTargetSizeAdd);
virtual int GetSizeAdd ();
virtual int GetLuck ();
virtual void AwardBattleExp (int nExp, bool bGemEffect=true);
virtual int AdjustHitRate (int nHitRate);
virtual int AdjustAttack (int nAtk);
virtual int AdjustDefence (int nDef);
virtual int AdjustMagicAtk (int nAtk);
virtual int AdjustMagicDef (int nDef);
virtual int AdjustBowDefence (int nDef);
virtual int AdjustWeaponDamage (int nDamage);
virtual int AdjustMagicDamage (int nDamage);
virtual void SetFightPause (int nInterval) { m_nFightPause = nInterval; }
virtual int GetDistance (IMapThing* pTarget) { return __max(abs(GetPosX() - pTarget->GetPosX()), abs(GetPosY() - pTarget->GetPosY())); }
virtual int GetDistance (int x, int y) { return __max(abs(GetPosX() - x), abs(GetPosY() - y)); }
virtual int GetExp () { return m_data.m_Info.nExp; }
virtual void SetStatus (int nStatus, bool bSynchro=true);
virtual void ClsStatus (int nStatus, bool bSynchro=true);
virtual DWORD GetStatus () { return m_data.m_Info.dwStatus; }
virtual void ClearAllStatus ();
// virtual BOOL CheckStatus (int nStatus);
virtual I64 GetEffect ();
virtual DWORD GetLev ();
virtual void IncLev (int nLev);
virtual void AllotPoint ();
virtual void ClrAttackTarget () { SetAttackTarget(NULL); QueryMagic()->BreakAutoAttack(); }
virtual bool SetAttackTarget (IRole* pTarget);
virtual OBJID GetAttackTargetID () { if (m_pBattleSystem) return m_pBattleSystem->GetTargetID(); return ID_NONE; }
virtual bool AutoSkillAttack (IRole* pTarget) { return QueryMagic()->AutoAttackTarget(pTarget); }
virtual bool AdditionMagic(int nLifeLost, int nDamage) { return false; }
virtual int Attack (IRole* pTarget);
virtual bool BeAttack (bool bMagic, IRole* pTarget, int nPower, bool bReflectEnable=true);
virtual bool MagicAttack (int nType, OBJID idTarget, int x, int y);
virtual void Kill (IRole* pTarget, DWORD dwDieWay);
virtual void BeKill (IRole* pTarget = NULL);
virtual bool BroadcastTeamLife (bool bMaxLife=false);
virtual bool IsAtkable (IRole* pTarget, bool bSendHint=false);
virtual bool IsBeAtkable ();
virtual void SendDamageMsg (OBJID idTarget, int nDamage);
virtual void ProcessPk (CUser* pTargetUser);
virtual bool TransferShield (bool bMagic, IRole* pAtker, int nDamage);
virtual int GetHelmetTypeID () { if(m_pHelmet) return m_pHelmet->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetArmorTypeID () { if(m_nSynDressArmorType) return m_nSynDressArmorType; if(m_pArmor) return m_pArmor->GetInt(ITEMDATA_TYPE); return ID_NONE;}
virtual int GetWeaponRTypeID () { if(m_pWeaponR) return m_pWeaponR->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetWeaponLTypeID () { if(m_pWeaponL) return m_pWeaponL->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetNecklaceTypeID () { if(m_pNecklace) return m_pNecklace->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetRingRTypeID () { if(m_pRingR) return m_pRingR->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetRingLTypeID () { if(m_pRingL) return m_pRingL->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetShoesTypeID () { if(m_pShoes) return m_pShoes->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetMountTypeID () { if(m_pMount) return m_pMount->GetInt(ITEMDATA_TYPE); return ID_NONE; }
//virtual int GetSpriteTypeID () { if(m_pSprite) return m_pSprite->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual int GetMantleTypeID () { if(m_pMantle) return m_pMantle->GetInt(ITEMDATA_TYPE); return ID_NONE; }
virtual CItem* GetWeaponR () { return m_pWeaponR; }
virtual CItem* GetWeaponL () { return m_pWeaponL; }
virtual char* GetMedal () { return m_data.m_Info.setMedal; }
virtual DWORD GetMedalSelect () { return m_data.m_Info.dwMedal_select; }
// virtual void SetMedalSelect (int nData) {m_data.SetMedalSelect(nData);}
virtual char* GetTitle () { return m_data.m_Info.setTitle; }
// virtual DWORD GetTitleSelect () { return m_data.m_Info.dwTitle_select; }
// virtual void SetTitleSelect (int nData) {m_data.SetTitleSelect(nData);}
virtual DWORD GetPotential () { return m_data.m_Info.nPotential; } // 取得潜能值
virtual DWORD GetMetempsychosis () { return m_data.m_Info.ucMetempsychosis; }
virtual bool IsSimpleMagicAtk ();
virtual int GetSimpleMagicHitRate();
virtual int GetTutorExp () { return m_data.m_Info.nTutorExp; }
virtual UCHAR GetTutorLevel () { return m_data.m_Info.ucTutorLevel; }
virtual UCHAR GetMercenaryRank () { return m_data.m_Info.ucMercenaryRank; }
virtual DWORD GetMercenaryExp () { return m_data.m_Info.dwMercenaryExp; }
virtual DWORD GetExploit () { return m_data.m_Info.dwExploit; }
virtual DWORD GetAllTutorLevel ();
virtual bool IsAlive ();
virtual bool IsTalkEnable () { return true; } // not over
virtual bool IsGM () { return (strstr(GetName(), "[GM]") || strstr(GetName(), "[PM]")); }
virtual bool IsPM () { return (strstr(GetName(), "[PM]") != NULL); }
virtual bool IsMonster () { return false; }
// virtual bool IsScene () { return false; }
virtual bool IsDelThis () { return false; }
virtual bool IsVirtuous() { return GetPk() < PKVALUE_REDNAME && !QueryStatus(STATUS_CRIME); }
virtual bool IsEvil() { return GetPk() >= PKVALUE_REDNAME || QueryStatus(STATUS_CRIME); }
virtual bool IsBowman () { return m_pWeaponR && m_pWeaponR->IsBowSort(); }
virtual bool IsShieldEquip () { return m_pWeaponL && m_pWeaponL->IsShield(); }
virtual bool IsWing () { return NULL; } //QueryStatus(STATUS_WING) != NULL; }
virtual bool IsSendBlockInfo () { return true; }
virtual bool IsAutoAllot (void) { return (m_data.m_Info.ucAuto_allot != 0); }
virtual bool IsNewbie () { return GetLev() < NEWBIE_LEVEL; }
virtual bool SendMsg (CNetMsg* pMsg);
virtual void BroadcastRoomMsg (CNetMsg* pMsg, bool bSendSelf);
virtual void BroadcastRoomMsg (LPCTSTR szMsg, bool bSendSelf);
virtual void BroadcastMapMsg (CNetMsg* pMsg, bool bSendSelf);
virtual void BroadcastMapMsg (LPCTSTR szMsg, bool bSendSelf);
virtual bool SendSysMsg (const char* fmt, ...);
virtual bool SendSysMsg (int nChannel, const char* fmt, ...);
virtual DWORD GetSynID () { return QuerySynAttr()->GetSynID(); }
virtual DWORD GetMasterSynID () { if(QuerySynAttr()->GetSynID()==ID_NONE) return ID_NONE; return this->GetSyndicate()->GetMasterSynID(); }
virtual DWORD GetSynRank () { if(QuerySynAttr()->GetSynID()==ID_NONE) return RANK_NONE; return QuerySynAttr()->GetInt(SYNATTRDATA_RANK); }
virtual DWORD GetSynRankShow () { if(QuerySynAttr()->GetSynID()==ID_NONE) return RANK_NONE; return QuerySynAttr()->GetSynRankShow(); }
virtual UCHAR GetNobilityRank () { return m_data.GetNobilityRank(); } //add huang 2003.12.29
virtual void SetNobilityRank (DWORD dwNobilityRank, bool bUpdate = true) { m_data.SetNobilityRank(dwNobilityRank, bUpdate); }
public: // game card system -------------------
bool CheckInCard (void);
bool CheckOutCard(void);
int CountCard (void);
bool CheckInCard2 (void);
bool CheckOutCard2 (void);
int CountCard2 (void);
public: // mining -------------------
void Mine (IRole* pRole);
void StopMine(void);
private:
void ProcessMineTimer(void);
int m_nMineCount;
CTimeOutMS m_tMine;
CNpc* m_pMineTarget;
public: // equipment improve -------------------
OBJID ChkUpEqQuality (CItem* pItem, bool bSendHint=false);
OBJID ChkUpEqLevel (CItem* pItem, bool bSendHint=false);
bool GetUpEpQualityInfo (CItem* pItem, int& nChance, OBJID& idNewType, bool bSendHint=false);
bool GetUpEpLevelInfo (CItem* pItem, int& nChance, OBJID& idNewType, bool bSendHint=false);
int GetChanceUpEpQuality (int nPosition, bool bSendHint=false);
int GetChanceUpEpLevel (int nPosition, bool bSendHint=false);
bool UpEquipmentQuality (int nPosition); // for action use
bool UpEquipmentLevel (int nPosition); // for action use
bool DownEquipmentLevel (int nPosition, int nUserLevel); // for action use
void UpEquipmentQuality (OBJID idEquipment, OBJID idTreasure);
void UpEquipmentLevel (OBJID idEquipment, OBJID idTreasure);
void EmbedGem (OBJID idItem, OBJID idGem, int nPos);
void TakeOutGem (OBJID idItem, int nPos);
bool RecoverEquipmentDur (int nPos);
bool IsAllNonsuchEquip (void);
public: // gem effect -------------------
int GetGemMgcExpEffect (void);
int GetGemWpnExpEffect (void);
int GetGemExpEffect (void);
int GetGemAtkEffect (void);
int GetGemMgcAtkEffect (void);
void SendGemEffect (void);
public: // sprite -- add by zlong 2003-12-05
int GetSpriteFace () { if(m_pSprite) return (m_pSprite->GetSpriteLevel()*5 + m_pSprite->GetSpriteType()); return 0xFF; }
public: // lock key ------------------------------
bool SetLock(DWORD dwKey);
bool OpenLock(DWORD dwKey);
bool ClearLock(DWORD dwKey);
bool CheckLock(bool bSynchro=true);
public: // move
// virtual void TransPos (int nPosX, int nPosY); // 传送,完全的新坐标
// virtual void JumpPos (int nPosX, int nPosY); // 跳,半屏以内
// virtual bool MoveToward (int nDir);
// virtual bool SyncTrackTo (int nPosX, int nPosY, int nDir, DWORD dwAction);
void SetSynchro (bool bSynchro) { if(bSynchro) m_tSynchro.Clear(); else m_tSynchro.Startup(SYNCHRO_SECS); }
bool IsSynchro () { return !(m_tSynchro.IsActive() && !m_tSynchro.TimeOver()); }
bool SynPosition (int nPosX, int nPosY, int nMaxDislocation = 8);
void ProcessOnAttack ();
void ProcessOnMove (int nMoveMode);
void ProcessAfterMove ();
void GetFootPrint (int& nPosX, int& nPosY);
bool KickBack();
bool Synchro();
void StandTurnon() { ASSERT(!m_bStand); m_tStand.Clear(); m_bStand = true; /*GetMap()->IncRole(GetPosX(), GetPosY());*/ }
void StandTurnoff() { m_tStand.Clear(); if(m_bStand){ m_bStand = false; /*GetMap()->DecRole(GetPosX(), GetPosY());*/ }}
void StandRestart() { StandTurnoff(); m_tStand.Update(); }
protected:
CTimeOut m_tSynchro; // invalid: wait for client actionSynchro.
DWORD m_tFootPrint;
POINT m_posFootPrint;
auto_long m_bRun;
CTimeOutMS m_tStand;
auto_long m_bStand;
CTimeOut m_tAutoReborn; // 复活宝石使用定时器
public: // map ----------------------
OBJID GetMapID ();
OBJID GetRecordMapID ();
bool ChangeMap ();
// enum { FLYMAP_ERROR=-1, FLYMAP_NORMAL, FLYMAP_MAPGROUP };
int FlyMap (OBJID idMap, int nPosX, int nPosY); // return false: can't fly
void GotoJail (void);
virtual bool SendSelfToBlock ();
public: // main -------------------------------------
SOCKET_ID GetSocketID () { return m_idSocket; }
virtual bool IsAgent () { return false; } // agent overload
virtual CAgent* QueryAgent () { ASSERT(!"QueryAgent"); return NULL; } // agent overload
void SaveInfo (); // save all info
void RemoteCall (REMOTE_CALL0* pInfo);
OBJID GetAccountID () { return m_data.m_Info.idAccount; }
public: // const -------------------------------------
public: // leave word ---------------------------------------
bool IsMoreLeaveWord() { return m_bHaveLeaveWord; }
void SetLeaveWord(bool nFlag) { m_bHaveLeaveWord = nFlag; }
bool AddLeaveWord(LPCTSTR szRecv, LPCTSTR szWords);
protected:
bool m_bHaveLeaveWord;
// CTimeOut m_tLeaveWord;
public: // bonus
bool DoBonus (void);
void SendBonusInfo (void);
public: // common -------------------------------------
// static int AdjustData (int nData, int nAdjust, int nMaxData=0);
static int GetLook(DWORD dwLookFace) { return dwLookFace%1000; }
static int GetFace(DWORD dwLookFace) { return (dwLookFace/10000)%1000; }
// static int GetSex(DWORD dwLookFace) { return (m_pInfo->dwLookFace/1000)%10; }
static int GetTransFormLook(DWORD dwLookFace) { return dwLookFace/10000000; }
public: // IUserStorage ---------------------------------------------------
IUserStorage* QueryStorage() { return (IUserStorage*)this; }
protected:
virtual bool SendStorageInfo(OBJID idNpc, int nPosition = ITEMPOSITION_STORAGE);
virtual bool CheckIn(OBJID idNpc, CItem* pItem, bool bUpdate = true, int nPosition = ITEMPOSITION_STORAGE);
virtual CItem* CheckOut(OBJID idNpc, OBJID idItem, bool bUpdate, int nPosition = ITEMPOSITION_STORAGE);
virtual int GetStorageCount() { IF_OK(m_pStorage) return m_pStorage->GetAmount(); return 1234567890; }
virtual int GetWeight(OBJID idItem) { IF_OK(m_pStorage) return m_pStorage->GetWeight(idItem); return ERROR_WEIGHT; }
virtual OBJID GetItemType(OBJID idItem) { IF_OK(m_pStorage) return m_pStorage->GetItemTypeByID(idItem); return ID_NONE; }
virtual DWORD GetAmountLimit(OBJID idItem) { IF_OK(m_pStorage) return m_pStorage->GetItemAmountLimitByID(idItem); return 0; }
protected:
CPackage* m_pStorage;
//LW 拍买相关-----------------------------------------------------------------
public:
int GetAuctionPackageAmount(OBJID idNpc,int nPosition = ITEMPOSITION_AUCTION_STORAGE);
bool AuctionGoodsBackOff(CItem * pItem, int nPosition = ITEMPOSITION_AUCTION_STORAGE);
//----------------------------------------------------------------------------
public: // modify attrib ------------------------------
int GetAddPoint ();
int GetAutoAllot () {return m_data.GetAutoAllot();}
void SetAutoAllot (int nAutoAllot) {m_data.SetAutoAllot(nAutoAllot);}
// int GetMetempsychosis () {return m_data.GetMetempsychosis();}
void SetMetempsychosis (int nMetempsychosis) {m_data.SetMetempsychosis(nMetempsychosis);}
void SetMaxLifePercent (int nPercent, BOOL bUpdate = TRUE);
//checked ok
bool AddAttrib (int idxAttr, __int64 i64Data, int nSynchro);
void SetAttrib (int idxAttr, __int64 i64Data, int nSynchro);
public: // marriage ------------------------------
void UpdateMate (const char* pszName, bool bUpdate = true);
bool IsMarried (void);
bool IsMate (CUser* pUser);
bool Court (OBJID idTarget);
bool Marry (OBJID idTarget);
bool Divorce (void);
public: // master & Prentic ----------------------------------
bool IsMasterPrentice (CUser* pUser) { return false; }
public: // mount
protected:
CTimeOut m_tMount;
public: // sprite -- add by zlong 2003-11-28
protected:
CTimeOut m_tSprite;
public: // cheat --------------------------------------------------------
enum { _TYPE_MAGIC=0, _TYPE_WS=1, _TYPE_FY=2, _TYPE_USE_LIFE=3, _TYPE_USE_MANA=4, }; // 无双// 风云 // 用红药// 用蓝药
bool SetCheatLevel(int nLevel);
void KickoutCheat(OBJID idKind);
int GetCheatLevel() { return m_nCheatLevel; }
bool IsCheater(OBJID idKind);
bool IsMagicAtkCheat (OBJID idTarget, int nTargetX, int nTargetY, DWORD dwTimeStamp);
void SetCheatMark(OBJID idCheatKind, DWORD dwCheatMark);
void DoCheaterPunish (int nData = 0);
DWORD m_dwLastJump;
DWORD m_dwMsgCount;
bool CheckTimeStamp(DWORD dwTimeStamp) { if(dwTimeStamp-m_dwLastTimeStamp>50) { m_dwLastTimeStamp=dwTimeStamp; return true; } return false; }
protected:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -