📄 commonstruct.h
字号:
#ifndef __COMMONSTRUCT_H__
#define __COMMONSTRUCT_H__
#include "..\[CC]Ability\AbilityCommonHeader.h"
#include "AddableInfo.h"
#pragma pack(push,1)
/**********************************************************************************/
/* 酒贰狼 努贰胶俊父 荤侩登绰 DEFINE */
/**********************************************************************************/
#define MAX_NETWORK_MSG 256
typedef WORD MAPTYPE;
typedef DWORD EXPTYPE;
typedef WORD LEVELTYPE;
typedef WORD DURTYPE;
typedef WORD POSTYPE;
typedef int FAMETYPE;
typedef WORD WANTEDTYPE;
typedef DWORD MONEYTYPE;
#define MAXMONEY MAXULONG_PTR // 0xffffffff(4294967295)
struct MSGROOT
{
BYTE CheckSum;
#ifdef _CRYPTCHECK_
MSGROOT():Code(0){}
char Code;
#endif
BYTE Category;
BYTE Protocol;
};
struct MSGBASE :public MSGROOT
{
DWORD dwObjectID;
};
struct MAPSERVER_TRANSDATAONOFF : public MSGROOT // ON/OFF 傈价 菩哦
{
int MapServerGroupNum;
int MapServerNum;
int HardNum;
};
struct MAPSERVER_TRANSDATA : public MSGROOT // 老馆 傈价 菩哦
{
int MapServerGroupNum;
int MapServerNum;
int HardNum;
};
struct MSGBASEDATA :public MSGROOT //皋矫瘤 傈价侩
{
int MapServerGroupNum;
int MapServerNum;
char Messagebuff[1028];
};
struct MSGCRYPTDATA : public MSGROOT
{
#ifdef _CRYPTCHECK_
HselInit eninit;
HselInit deinit;
#endif
};
struct COMPRESSEDPOS
{
WORD wx;
WORD wz;
void Compress(VECTOR3* pPos)
{
wx = WORD(pPos->x);
wz = WORD(pPos->z);
}
void Decompress(VECTOR3* pRtPos)
{
pRtPos->x = wx;
pRtPos->z = wz;
pRtPos->y = 0;
}
};
struct COMPRESSEDTARGETPOS
{
void Init()
{
PosNum = 0;
}
void AddTargetPos(VECTOR3 * pPos)
{
pos[PosNum++].Compress(pPos);
}
int GetSize()
{
return sizeof(COMPRESSEDTARGETPOS) - sizeof(COMPRESSEDPOS)*(MAX_CHARTARGETPOSBUF_SIZE-PosNum);
}
int GetSurplusSize()
{
return sizeof(COMPRESSEDPOS)*(MAX_CHARTARGETPOSBUF_SIZE-PosNum);
}
BYTE PosNum;
COMPRESSEDPOS pos[MAX_CHARTARGETPOSBUF_SIZE];
};
struct SEND_MOVEINFO
{
COMPRESSEDPOS CurPos;
bool MoveMode;
WORD KyungGongIdx;
};
struct BASEMOVE_INFO
{
VECTOR3 CurPosition;
private:
BYTE CurTargetPositionIdx;
BYTE MaxTargetPositionIdx;
VECTOR3 TargetPositions[MAX_CHARTARGETPOSBUF_SIZE];
public:
bool bMoving;
bool MoveMode; // 0:顿扁 1:叭扁
WORD KyungGongIdx; // 版傍Idx 0: 版傍吝捞 酒聪促 !0: 荤侩吝牢 版傍锅龋
void SetFrom(SEND_MOVEINFO* pInfo)
{
bMoving = FALSE;
pInfo->CurPos.Decompress(&CurPosition);
MoveMode = pInfo->MoveMode;
KyungGongIdx = pInfo->KyungGongIdx;
}
BYTE GetCurTargetPosIdx() { return CurTargetPositionIdx; }
BYTE GetMaxTargetPosIdx() { return MaxTargetPositionIdx; }
BYTE & GetMaxTargetPosIdxRef() { return MaxTargetPositionIdx; }
void SetCurTargetPosIdx(BYTE idx) { CurTargetPositionIdx=idx; }
void SetMaxTargetPosIdx(BYTE idx) { MaxTargetPositionIdx=idx; }
VECTOR3 * GetTargetPosition(BYTE idx) { return &TargetPositions[idx]; }
VECTOR3 * GetTargetPositionArray() { return TargetPositions; }
void InitTargetPosition()
{
CurTargetPositionIdx = 0;
MaxTargetPositionIdx = 0;
memset( TargetPositions, 0, sizeof( VECTOR3 ) * MAX_CHARTARGETPOSBUF_SIZE );
}
};
struct MOVE_INFO : public BASEMOVE_INFO
{
BOOL m_bLastMoving; // 努扼捞攫飘俊辑父 静烙
BOOL m_bEffectMoving;
DWORD m_dwMoveCalculateTime;
BOOL m_bMoveCalculateTime;
// 付瘤阜栏肺 拌魂茄 矫埃.
// 付瘤阜栏肺 拌魂茄 矫埃捞 倔付登瘤 臼疽栏搁 肚促矫 拌魂窍瘤 臼绰促
DWORD Move_LastCalcTime;
DWORD Move_StartTime;
VECTOR3 Move_StartPosition;
VECTOR3 Move_Direction;
float Move_EstimateMoveTime;
};
struct STATE_INFO
{
int State_Start_Motion;
int State_Ing_Motion;
int State_End_Motion;
DWORD State_End_MotionTime;
DWORD State_End_Time;
DWORD State_Start_Time;
BYTE BeforeState;
BYTE bEndState;
};
struct HERO_TOTALINFO
{
WORD wGenGol; // 辟榜
WORD wMinChub; // 刮酶
WORD wCheRyuk; // 眉仿
WORD wSimMek; // 缴钙
DWORD wNaeRyuk; // 郴仿
DWORD wMaxNaeRyuk; // 弥措 郴仿
FAMETYPE Fame; // 疙己
WORD wKarma; // 急厩档(啊摹包)
EXPTYPE ExpPoint; // 版氰摹
LEVELTYPE LevelUpPoint; // 饭骇诀器牢飘 //??????
MONEYTYPE Money; // 捣
DWORD PartyID; // 颇萍 牢郸胶
char MunpaName[MAX_MUNPA_NAME+1]; // 巩颇 捞抚
WORD KyungGongGrade; // 版傍 版瘤
DWORD AbilityExp; // 漂扁摹
DWORD Playtime; // Play Time
DWORD LastPKModeEndTime; // 付瘤阜 混扁葛靛 off矫埃
LEVELTYPE MaxLevel; // 棵耳菌带 弥绊 饭骇
};
struct MONSTER_TOTALINFO
{
DWORD Life;
DWORD Shield;
WORD MonsterKind;
WORD Group;
MAPTYPE MapNum;
//char Name; //捞芭 吝汗凳..BASEOBJECT_INFO客 taiyo
};
struct NPC_TOTALINFO
{
WORD NpcKind;
WORD Group;
MAPTYPE MapNum;
WORD NpcUniqueIdx;
WORD NpcJob; // NPC_ROLE肺 官层具 窃! : taiyo
};
struct QUESTNPCINFO
{
DWORD dwObjIdx;
MAPTYPE wMapNum;
WORD wNpcKind;
char sName[17];
WORD wNpcIdx;
VECTOR3 vPos;
float fDir;
};
//////////////////////////////////////////////////////////////////////////
// taiyo : ITEMBASE客 MUGONGBASE狼 惑困 努贰胶甫 积己
struct ICONBASE
{
DWORD dwDBIdx;
WORD wIconIdx; // 酒捞袍->itemIdx, 公傍->mugongIdx
POSTYPE Position; //
};
struct QUICKBASE
{
POSTYPE Position;
};
class ITEM_OPTION_INFO
{
public:
DWORD dwOptionIdx;
DWORD dwItemDBIdx;
WORD GenGol; // 辟榜+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
WORD MinChub; // 刮酶+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
WORD CheRyuk; // 眉仿+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
WORD SimMek; // 缴钙+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
DWORD Life; // 积疙仿+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
WORD NaeRyuk; // 积疙仿+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
DWORD Shield; // 龋脚碍扁+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
ATTRIBUTEREGIST AttrRegist; // 拳 加己 历亲仿+(康备) 康距苞 厘馒 酒捞袍俊 傍烹荤侩
WORD PhyAttack;
WORD CriticalPercent;
ATTRIBUTEATTACK AttrAttack; // 拳加己傍拜仿+%
WORD PhyDefense; // 拱府 规绢仿+
};
//////////////////////////////////////////////////////////////////////////
struct MUGONGBASE : public ICONBASE
{
EXPTYPE ExpPoint; // 公傍版氰摹
BYTE Sung; // 公傍饭骇
BYTE bWear; // 诀单捞飘 秦具 窍绰瘤狼 咯何
POSTYPE QuickPosition; // 窜绵 酒捞能俊 厘馒等 困摹
};
struct MUGONG_TOTALINFO
{
MUGONGBASE mugong[SLOT_MUGONGTOTAL_NUM]; // 公傍+柳过
};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
struct ITEMBASE : public ICONBASE
{
// DWORD DBIdx;
// WORD ItemIdx;
DURTYPE Durability;
// POSTYPE bPosition;
POSTYPE QuickPosition; // 窜绵 酒捞能俊 厘馒等 困摹
//BYTE MapNum;
};
struct SLOTINFO
{
BOOL bLock;
WORD wPassword;
WORD wState;
};
struct ITEM_TOTALINFO
{
ITEMBASE Inventory[SLOT_INVENTORY_NUM];
ITEMBASE WearedItem[eWearedItem_Max];
//WORD QuickItem[MAX_QUICKITEM_NUM]; // 窜绵酒捞袍 4
};
struct PYOGUK_ITEM
{
ITEMBASE Pyoguk[SLOT_PYOGUK_NUM];
};
//////////////////////////////////////////////////////////////////////////
//------ 颇萍俊辑 荤侩窍绰 备炼眉 -------------------------------
struct SEND_PARTY_GAUGE : public MSGBASE
{
DWORD PlayerID;
float GaugePercent;
};
struct PARTY_MEMBER
{
DWORD dwMemberID;
BOOL bLogged;
BYTE LifePercent;
BYTE ShieldPercent;
BYTE NaeRyukPercent;
char Name[MAX_NAME_LENGTH+1];
LEVELTYPE Level;
WORD posX;
WORD posZ;
};
struct PARTY_INFO : public MSGBASE
{
DWORD PartyDBIdx;
BYTE Option;
PARTY_MEMBER Member[MAX_PARTY_LISTNUM];
};
struct SEND_PARTY_MEMBER_POS : public MSGBASE
{
DWORD dwMemberID;
WORD posX;
WORD posZ;
};
struct SEND_PARTY_MEMBER_INFO : public MSGBASE
{
PARTY_MEMBER MemberInfo;
DWORD PartyID;
};
struct SEND_CHANGE_PARTY_MEMBER_INFO : public MSGBASE
{
DWORD PartyID;
char Name[MAX_NAME_LENGTH+1];
LEVELTYPE Level;
};
//------ 颇萍俊辑 荤侩窍绰 备炼眉 -------------------------------
//////////////////////////////////////////////////////////////////////////
struct MAPSELECT_PARAM // 纳腐磐 父甸锭 郴何俊辑 静捞绰 备炼眉
{
/*
MAPSELECT_PARAM()
{
*Name=0;
JobType = 0;
SexType = 0;
BodyType = 0;
HairType = 0;
FaceType = 0;
StartArea = 0;
bDuplCheck=FALSE;
}
*/
char Name[MAX_NAME_LENGTH+1]; // 某腐磐 捞抚
BYTE JobType;
BYTE SexType;
BYTE BodyType;
BYTE HairType;
BYTE FaceType;
BYTE StartArea;
BOOL bDuplCheck;
};
struct CHARACTERMAKEINFO : public MSGBASE
{
char Name[MAX_NAME_LENGTH+1]; // 某腐磐 捞抚
DWORD UserID;
BYTE SexType;
BYTE BodyType;
BYTE HairType;
BYTE FaceType;
BYTE StartArea;
BOOL bDuplCheck;
WORD WearedItemIdx[eWearedItem_Max]; // 馒侩茄 酒捞牌甸狼 辆幅
BYTE StandingArrayNum; // pjs 纳腐磐狼 困摹 鉴辑 [5/22/2003]
float Height;
float Width;
};
//////////////////////////////////////////////////////////////////////////
// taiyo : 辑滚俊辑父 荤侩窍唱?
struct CALCCHARACTER
{
WORD wAttack;
WORD wDefense;
WORD wHit;
WORD wDisengage;
WORD wMove;
WORD wLife;
WORD wInner;
WORD wHwa;
WORD wSu;
WORD wMok;
WORD wKum;
WORD wTo;
WORD wDok;
};
//////////////////////////////////////////////////////////////////////////
// 霸矫魄 包访
struct AUCTION_BOARDTITLE
{
DWORD BidIdx; // 版概锅龋(甘辑滚俊辑 包府窍绰 PrimaryKey)
WORD ItemIdx;
WORD ItemNum;
DWORD EndDate;
DWORD EndTime;
DWORD CurrentPrice;
DWORD ImmediatePrice;
};
//////////////////////////////////////////////////////////////////////////
struct MSG_INT : public MSGBASE
{
int nData;
};
struct MSG_DWORD : public MSGBASE
{
DWORD dwData;
};
struct MSG_DWORD2 : public MSGBASE
{
DWORD dwData1;
DWORD dwData2;
};
struct MSG_DWORDBYTE : public MSGBASE
{
DWORD dwData;
BYTE bData;
};
struct MSG_DWORD2BYTE : public MSGBASE
{
DWORD dwData1;
DWORD dwData2;
BYTE bData;
};
struct MSG_DWORD3 : public MSGBASE
{
DWORD dwData1;
DWORD dwData2;
DWORD dwData3;
};
struct MSG_WORD : public MSGBASE
{
WORD wData;
};
struct MSG_WORD2 : public MSGBASE
{
WORD wData1;
WORD wData2;
};
struct MSG_WORD3 : public MSGBASE
{
WORD wData1;
WORD wData2;
WORD wData3;
};
struct MSG_WORD4 : public MSGBASE
{
WORD wData1;
WORD wData2;
WORD wData3;
WORD wData4;
};
struct MSG_DWORD_WORD : public MSGBASE
{
DWORD dwData;
WORD wData;
};
struct MSG_BYTE : public MSGBASE
{
BYTE bData;
};
struct TESTMSG : public MSGBASE
{
char Msg[MAX_CHAT_LENGTH+1];
int GetMsgLength() { return sizeof(TESTMSG) - MAX_CHAT_LENGTH + strlen(Msg); }
};
struct TESTMSGID : public MSGBASE
{
DWORD dwSenderID;
char Msg[MAX_CHAT_LENGTH+1];
int GetMsgLength() { return sizeof(TESTMSGID) - MAX_CHAT_LENGTH + strlen(Msg); }
};
//struct MSG_STR : public MSGBASE
//{
// char Data[256];
//};
struct MSG_EVENT_MONSTERREGEN : public MSGBASE
{
WORD MonsterKind;
BYTE cbMobCount; //mob count
WORD wMap; //map
BYTE cbChannel; //channel = 0:all
VECTOR3 Pos;
WORD wRadius;
WORD ItemID;
DWORD dwDropRatio; //item drop ratio
// BYTE bBoss; //鞘夸茄啊?
};
struct MSG_FAME : public MSGBASE
{
FAMETYPE Fame;
};
struct MSG_LOGIN_SYN : public MSGBASE
{
DWORD AuthKey;
char id[MAX_NAME_LENGTH+1];
char pw[MAX_NAME_LENGTH+1];
char Version[16];
};
struct MSG_LOGIN_ACK : public MSGBASE
{
char agentip[16];
WORD agentport;
DWORD userIdx;
BYTE cbUserLevel;
};
struct MOVE_ONETARGETPOS : public MSGBASE
{
DWORD dwMoverID;
COMPRESSEDPOS sPos;
COMPRESSEDPOS tPos;
void SetStartPos( VECTOR3 * pos )
{
sPos.Compress(pos);
}
void SetTargetPos( VECTOR3* pos )
{
tPos.Compress( pos );
}
void GetStartPos( VECTOR3 * pos )
{
sPos.Decompress( pos );
}
void GetTargetInfo(MOVE_INFO * pMoveInfo)
{
pMoveInfo->SetCurTargetPosIdx(0);
pMoveInfo->SetMaxTargetPosIdx(1);
tPos.Decompress(pMoveInfo->GetTargetPosition(0));
}
int GetSize()
{
return sizeof(MOVE_ONETARGETPOS);
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -