📄 objectengine.h
字号:
#pragma once
#include "../def/_orzex/queue.h"
#define DEFSPEED 14
#define _CHAT_COLOR1 0 //RGB( 0, 0, 0); // 捧苞祸.
#define _CHAT_COLOR2 1 //RGB( 10, 10, 10); // 八沥祸.
#define _CHAT_COLOR3 2 //RGB(255, 255, 255); // 闰祸.
#define _CHAT_COLOR4 3 //RGB(255, 0, 0); // 弧碍.
#define _CHAT_COLOR5 4 //RGB( 0, 255, 0); // 踌祸.
#define _CHAT_COLOR6 5 //RGB( 0, 0, 255); // 仟弗祸
#define _CHAT_COLOR7 6 //RGB(255, 255, 0); // 畴尔祸.
#define _CHAT_COLOR8 7 //RGB(255, 128, 0); // 林炔祸
#define DR_UP 0
#define DR_UPRIGHT 1
#define DR_RIGHT 2
#define DR_DOWNRIGHT 3
#define DR_DOWN 4
#define DR_DOWNLEFT 5
#define DR_LEFT 6
#define DR_UPLEFT 7
#define _DOOR_NOT 0
#define _DOOR_OPEN 1
#define _DOOR_MAPMOVE_FRONT 2
#define _DOOR_MAPMOVE_BACK 3
// Status
#define MAX_STATUS_ATTRIBUTE 12
#define POISON_DECHEALTH 0
#define POISON_DAMAGEARMOR 1
#define POISON_LOCKSPELL 2
#define POISON_DONTMOVE 4
#define POISON_STONE 5
#define STATE_TRANSPARENT 8
#define STATE_DEFENCEUP 9
#define STATE_MAGDEFENCEUP 10
#define STATE_BUBBLEDEFENCEUP 11
#define STATE_STONE_MODE 0x00000001;
#define STATE_OPENHEATH 0x00000002; //眉仿 傍俺惑怕
class CCharObject;
class CMirMap;
class CUserInfo;
typedef struct tag_TPROCESSMSG
{
WORD wIdent;
WORD wParam;
DWORD lParam1;
DWORD lParam2;
DWORD lParam3;
DWORD dwDeliveryTime;
CCharObject* pCharObject;
char *pszData;
} _TPROCESSMSG, *_LPTPROCESSMSG;
/*
*/
#define _OBJECT_HUMAN 1
#define _OBJECT_MONSTER 2
#define _OBJECT_ANIMAL 6
#define _OBJECT_NPC 8
typedef struct tag_TOBJECTFEATURE
{
BYTE btGender;
BYTE btWear;
BYTE btHair;
BYTE btWeapon;
} _TOBJECTFEATURE, _LPTOBJECTFEATURE;
typedef struct tag_TOBJECTFEATUREEX
{
BYTE btHorse;
WORD dwHairColor;
WORD dwWearColor;
} _TOBJECTFEATUREEX, _LPTOBJECTFEATUREEX;
class CVisibleObject
{
public:
int nVisibleFlag;
CCharObject* pObject;
};
class CVisibleEvent
{
public:
int nVisibleFlag;
CEvent* pEvent;
};
class CVisibleMapItem
{
public:
int nVisibleFlag;
WORD wX;
WORD wY;
CMapItem* pMapItem;
};
#pragma pack(1)
class CObjectAbility
{
public:
BYTE Level;
WORD HP;
WORD MP;
WORD MaxHP;
WORD MaxMP;
WORD Weight;
WORD MaxWeight;
DWORD Exp;
DWORD MaxExp;
BYTE WearWeight;
BYTE MaxWearWeight;
BYTE HandWeight;
BYTE MaxHandWeight;
WORD DC;
WORD MC;
WORD SC;
WORD AC;
WORD MAC;
WORD m_wWater;
WORD m_wFire;
WORD m_wWind;
WORD m_wLight;
WORD m_wEarth;
};
class CObjectAddAbility // 酒捞袍 馒侩栏肺 疵绢唱绰 瓷仿摹
{
public:
WORD HP;
WORD MP;
WORD HIT;
WORD SPEED;
WORD AC;
WORD MAC;
WORD DC;
WORD MC;
WORD SC;
WORD AntiPoison;
WORD PoisonRecover;
WORD HealthRecover;
WORD SpellRecover;
WORD AntiMagic; //付过 雀乔啦
BYTE Luck; //青款 器牢飘
BYTE UnLuck; //阂青 器牢飘
BYTE WeaponStrong;
short HitSpeed;
};
#pragma pack(8)
class CCharObject
{
public:
CUserInfo* m_pUserInfo;
CWHQueue m_ProcessQ;
CWHQueue m_DelayProcessQ;
int m_nCurrX;
int m_nCurrY;
int m_nDirection;
int m_nEvent;
BYTE m_btLight;
_TOBJECTFEATURE m_tFeature;
_TOBJECTFEATUREEX m_tFeatureEx;
CMirMap* m_pMap;
WORD m_wObjectType;
CWHList<CVisibleObject*> m_xVisibleObjectList;
CWHList<CVisibleMapItem*> m_xVisibleItemList;
CWHList<CVisibleEvent*> m_xVisibleEventList;
CWHList<CCharObject*> m_xCacheObjectList;
DWORD m_dwCacheTick;
int m_nViewRange;
DWORD m_dwSearchTime;
DWORD m_dwSearchTick;
DWORD m_dwLatestHitTime;
UINT m_nHitTimeOverCount;
char m_szName[14];
CObjectAbility m_Ability;
CObjectAbility m_WAbility;
CObjectAddAbility m_AddAbility;
UINT m_nCharStatusEx;
UINT m_nCharStatus;
short m_sHitSpeed;
int m_nHitDouble;
DWORD m_dwWalkTime;
WORD m_wStatusArr[MAX_STATUS_ATTRIBUTE];
DWORD m_dwStatusTime[MAX_STATUS_ATTRIBUTE];
BYTE m_btHitPlus;
BYTE m_btAntiMagic;
BYTE m_btHitPoint;
BYTE m_btSpeedPoint;
BYTE m_btAntiPoison;
BYTE m_btPoisonRecover;
BYTE m_btHealthRecover;
BYTE m_btSpellRecover;
BOOL m_fIsDead;
DWORD m_dwDeathTime;
BOOL m_fIsGhost;
DWORD m_dwGhostTime;
BOOL m_fOpenHealth;
DWORD m_dwOpenHealthStart;
DWORD m_dwOpenHealthTime;
DWORD m_dwIncHealthSpellTime;
DWORD m_dwHealthTick;
DWORD m_dwSpellTick;
DWORD m_dwTickSec;
WORD m_IncHealing;
BYTE m_btPerHealing;
WORD m_IncHealth;
BYTE m_btPerHealth;
WORD m_IncSpell;
BYTE m_btPerSpell;
BOOL m_fAbilMagBubbleDefence;
BYTE m_btMagBubbleDefenceLevel;
BOOL m_fInspector;
BOOL m_fFastTrain;
BOOL m_fHideMode;
BOOL m_fIsNeverDie;
BOOL m_fStoneMode;
BOOL m_fStickMode;
CCharObject* m_pMasterObject;
CCharObject* m_pTargetObject;
CCharObject* m_pLastHitterObject;
CCharObject* m_pExpHitterObject;
DWORD m_dwTargetFocusTime;
BOOL m_fHumHideMode;
BOOL m_fFixedHideMode;
public:
CCharObject(CUserInfo* pUserInfo);
virtual ~CCharObject();
BOOL GetBackPosition(int &nX, int &nY);
int GetBack(int nDirection);
void GetFrontPosition(int &nX, int &nY);
void UpdateDelayProcessCheckParam1(CCharObject* pCharObject, WORD wIdent, WORD wParam, DWORD lParam1, DWORD lParam2, DWORD lParam3, char *pszData, int nDelay);
void UpdateProcess(CCharObject* pCharObject, WORD wIdent, WORD wParam, DWORD lParam1, DWORD lParam2, DWORD lParam3, char *pszData);
void AddProcess(CCharObject* pCharObject, WORD wIdent, WORD wParam, DWORD lParam1, DWORD lParam2, DWORD lParam3, char *pszData = NULL);
void AddDelayProcess(CCharObject* pCharObject, WORD wIdent, WORD wParam, DWORD lParam1, DWORD lParam2, DWORD lParam3, char *pszData, int nDelay);
void AddRefMsg(WORD wIdent, WORD wParam, DWORD lParam1, DWORD lParam2, DWORD lParam3, char *pszData);
BOOL GetNextPosition(int nSX, int nSY, int nDir, int nDistance, int& nX, int& nY);
__inline BOOL GetNextPosition(int nDir, int nDistance, int& nX, int& nY)
{ return GetNextPosition(m_nCurrX, m_nCurrY, nDir, nDistance, nX, nY); }
int GetNextDirection(int nStartX, int nStartY, int nTargetX, int nTargetY);
__inline int GetNextDirection(int nTargetX, int nTargetY)
{ return GetNextDirection(m_nCurrX, m_nCurrY, nTargetX, nTargetY); }
void UpdateVisibleObject(CCharObject* pCharObject);
void UpdateVisibleItem(int nX, int nY, CMapItem* pMapItem);
void UpdateVisibleEvent(CEvent* pEvent);
void SelectTarget(CCharObject* pTargetObject);
void IncHealthSpell(int nHP, int nMP);
void DamageSpell(int nVal);
void DamageHealth(int nDamage);
int GetMagStruckDamage(int nDamage);
void StruckDamage(int nDamage);
int GetHitStruckDamage(int nDamage);
int GetAttackPower(int nDamage, int nVal);
BOOL _Attack(WORD wHitMode, CCharObject* pObject);
void WalkNextPos(int nDir, int& nX, int& nY);
void TurnTo(int nDir);
BOOL TurnXY(int nX, int nY, int nDir);
virtual BOOL WalkTo(int nDir);
BOOL WalkXY(int nX, int nY, int nDir);
BOOL RunTo(int nDir);
BOOL RunXY(int nX, int nY, int nDir);
BOOL HitXY(WORD wIdent, int nX, int nY, int nDir, int nHitStyle);
void DoDamageWeapon(int nDamage);
void Disappear();
void MakeGhost();
BOOL DropItemDown(_LPTUSERITEMRCD lpTItemRcd, int nRange, BOOL fIsGenItem);
CCharObject* AddCreatureSysop(int nX, int nY, CMonRaceInfo* pMonRaceInfo, BOOL fSearch);
void DoPushed(int nDirection);
void DoMotaebo();
int CharPushed(int nDir, int nPushCount);
BOOL DoShowHP(CCharObject* pObject, CMagicInfo* pMagicInfo, int nLevel);
void MakeOpenHealth();
void BreakOpenHealth();
int MagPushArround(int nPushLevel);
int MagPassThroughMagic(int nStartX, int nStartY, int nTargetX, int nTargetY, int nDir, int nPwr, BOOL fUndeadAttack);
BOOL MagBubbleDefenceUp(int nLevel, int nSec);
void DamageBubbleDefence();
int MagMakeFireCross(int nDamage, int nHTime, int nX, int nY);
BOOL DirectAttack(CCharObject* pTargetObject, int nDamage);
BOOL SwordLongAttack(int nDamage);
BOOL SwordWideAttack(int nDamage);
BOOL MagBigExplosion(int nPower, int nX, int nY, int nWide);
BOOL MagBigHealing(int nPower, int nX, int nY);
BOOL MagDefenceUp(int nState, int nSec);
BOOL MagMakeDefenceArea(int nX, int nY, int nRange, int nSec, int nState);
BOOL MagElecBlizzard(int nPower);
BOOL MagMakePrivateTransparent(int nHTime);
int MagMakeHolyCurtain(int nHTime, int nX, int nY);
BOOL MagMakeGroupTransparent(int nX, int nY, int nHTime);
BOOL MagTurnUndead(CCharObject* pTargetObject, int nX, int nY, int nLevel);
virtual BOOL IsProperTarget(CCharObject* pCharObject);
BOOL IsFriend(CCharObject* pCharObject);
BOOL IsProperFriend(CCharObject* pCharObject);
void SpaceMove(int nX, int nY, CMirMap* pMirMap);
void GoldChanged();
void HealthSpellChanged();
BOOL GetAvailablePosition(CMirMap* pMap, int &nX, int &nY, int nRange);
void GetQueryUserName(CCharObject* pObject, int nX, int nY);
void SendSocket(_LPTDEFAULTMESSAGE lpDefMsg, char *pszPacket);
void Die();
BOOL RestoreHealSpell();
UINT GetCharStatus();
virtual WORD GetThisCharColor() = 0;
virtual void GetCharName(char *pszCharName) = 0;
virtual void Run();
virtual void SearchViewRange();
CCharObject* GetFrontObject();
__inline SysMsg(char *pszMsg, int nMode)
{ ( nMode == 1 ? AddProcess(this, RM_SYSMESSAGE2, 0, 0, 0, 0, pszMsg) : AddProcess(this, RM_SYSMESSAGE, 0, 0, 0, 0, pszMsg)); }
__inline LONG GetFeatureToLong()
{ return (LONG) MAKELONG(MAKEWORD(m_tFeature.btGender, m_tFeature.btWear), MAKEWORD(m_tFeature.btHair, m_tFeature.btWeapon)); }
__inline BYTE GetRPow(WORD wPower)
{ if (HIBYTE(wPower) > LOBYTE(wPower)) return LOBYTE(wPower) + (rand() % (HIBYTE(wPower) - LOBYTE(wPower) + 1)); else return LOBYTE(wPower); }
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -