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

📄 commonstruct.h

📁 墨香最新私服
💻 H
📖 第 1 页 / 共 5 页
字号:

struct MOVE_ONETARGETPOS_FROMSERVER : public MSGBASE
{
	COMPRESSEDPOS	sPos;
	COMPRESSEDPOS	tPos;

	void SetStartPos( VECTOR3 * pos )
	{
		sPos.Compress(pos);
	}
	void GetStartPos( VECTOR3 * pos )
	{
		sPos.Decompress( pos );
	}
	void SetTargetPos( VECTOR3* pos )
	{
		tPos.Compress( pos );
	}
	void GetTargetInfo(MOVE_INFO * pMoveInfo)
	{
		pMoveInfo->SetCurTargetPosIdx(0);
		pMoveInfo->SetMaxTargetPosIdx(1);
		tPos.Decompress(pMoveInfo->GetTargetPosition(0));
	}
	int GetSize()
	{
		return sizeof(MOVE_ONETARGETPOS_FROMSERVER);
	}
};

struct MOVE_TARGETPOS : public MSGBASE
{
	DWORD dwMoverID;
	COMPRESSEDPOS spos;
	COMPRESSEDTARGETPOS tpos;
	void Init()
	{
		tpos.Init();
	}
	void SetStartPos(VECTOR3 * pos)
	{
		spos.Compress(pos);
	}
	void AddTargetPos(VECTOR3 * pos)
	{
		tpos.AddTargetPos(pos);
	}
	void GetStartPos(VECTOR3 * pos)
	{
		spos.Decompress(pos);
	}
	void GetTargetInfo(MOVE_INFO * pMoveInfo)
	{
		pMoveInfo->SetCurTargetPosIdx(0);//CurTargetPositionIdx = 0;
		pMoveInfo->SetMaxTargetPosIdx(tpos.PosNum);//pMoveInfo->MaxTargetPositionIdx = tpos.PosNum;
		ASSERT( tpos.PosNum <= MAX_CHARTARGETPOSBUF_SIZE );
		for(int i = 0 ; i < tpos.PosNum ; ++i)
			tpos.pos[i].Decompress(pMoveInfo->GetTargetPosition(i));//&pMoveInfo->TargetPositions[i]);
	}
	int GetSize()
	{
		return sizeof(MOVE_TARGETPOS) - tpos.GetSurplusSize();
	}
};


struct MOVE_POS : public MSGBASE
{
	DWORD dwMoverID;
	COMPRESSEDPOS cpos;
};


struct MOVE_POS_USER : public MSGBASE
{
	char	Name[MAX_NAME_LENGTH+1];
	COMPRESSEDPOS cpos;
};


struct MSG_WHERE_INFO : public MSGBASE
{
	WORD	wMapNum;		//甘锅龋
	BYTE	bChannel;		//盲澄锅龋
	COMPRESSEDPOS cpos;		//困摹
};


struct BASEOBJECT_INFO
{
	BASEOBJECT_INFO()
	{
		BattleID = 0;
		BattleTeam = 0;
	}
	DWORD dwObjectID;
	DWORD dwUserID;
	char ObjectName[MAX_NAME_LENGTH+1];
	DWORD BattleID;
	BYTE BattleTeam;
	BYTE ObjectState;
};

struct CHARACTER_TOTALINFO
{
	DWORD	Life;							// 积疙仿			//?
	DWORD	MaxLife;						// 弥措 积疙仿		//?
	
	DWORD	Shield;							// 龋脚碍扁			//?
	DWORD	MaxShield;						// 弥措 龋脚碍扁	//?

	BYTE	Gender;							// 己喊
	BYTE	FaceType;						// 倔奔锅龋
	BYTE	HairType;						// 赣府葛剧 锅龋

	WORD	WearedItemIdx[eWearedItem_Max];	// 馒侩茄 酒捞牌甸狼 辆幅

	BYTE	Stage;							// 版瘤
	LEVELTYPE	Level;						// 饭骇				//?
	MAPTYPE	CurMapNum;						// 泅犁甘			//?
	MAPTYPE	LoginMapNum;					// 肺弊牢甘			//?

	bool	bPeace;							// 傈/乞拳葛靛 FALSE 搁 傈捧 TRUE 搁 乞拳	//?
	WORD	MapChangePoint_Index;			// 甘傈券矫 荤侩	//?
	WORD	LoginPoint_Index;				// 肺弊牢矫 荤侩	//?

	DWORD	MunpaID;						// 巩颇 牢郸胶
	BYTE	PositionInMunpa;				// 巩颇 流困 
	
	bool	bVisible;						// 墨皋扼 葛靛甫 困茄 函荐
	bool	bPKMode;						//PK葛靛 咯何
	
	FAMETYPE	BadFame;					//厩疙(PK荐摹)

	float	Height;							// 虐
	float	Width;							// 眉拜
};

struct SEND_MONSTER_TOTALINFO	:	public MSGBASE
{
	BASEOBJECT_INFO BaseObjectInfo;
	MONSTER_TOTALINFO TotalInfo;
	SEND_MOVEINFO MoveInfo;

	BYTE bLogin;
	
	CAddableInfoList AddableInfo;

	WORD GetMsgLength()	{	return sizeof(SEND_MONSTER_TOTALINFO) - sizeof(CAddableInfoList) + AddableInfo.GetInfoLength();	}
};

struct SEND_NPC_TOTALINFO	:	public MSGBASE
{
	BASEOBJECT_INFO BaseObjectInfo;
	NPC_TOTALINFO TotalInfo;
	SEND_MOVEINFO MoveInfo;
	
	float Angle;
	BYTE bLogin;

	CAddableInfoList AddableInfo;

	WORD GetMsgLength()	{	return sizeof(SEND_NPC_TOTALINFO) - sizeof(CAddableInfoList) + AddableInfo.GetInfoLength();	}
};

struct SEND_CHARACTER_TOTALINFO : public MSGBASE
{
	BASEOBJECT_INFO BaseObjectInfo;
	CHARACTER_TOTALINFO TotalInfo;	
	SEND_MOVEINFO MoveInfo;

	BYTE bLogin;
	
	CAddableInfoList AddableInfo;

	WORD GetMsgLength()	{	return sizeof(SEND_CHARACTER_TOTALINFO) - sizeof(CAddableInfoList) + AddableInfo.GetInfoLength();	}
};

struct ABILITY_TOTALINFO
{
	char AbilityDataArray[eAGK_Max][MAX_ABILITY_NUM_PER_GROUP+1];
	char AbilityQuickPositionArray[eAGK_Max][MAX_ABILITY_NUM_PER_GROUP+1];
};

struct SEND_HERO_TOTALINFO : public MSGBASE
{
	BASEOBJECT_INFO BaseObjectInfo;
	CHARACTER_TOTALINFO ChrTotalInfo;
	HERO_TOTALINFO HeroTotalInfo;
	SEND_MOVEINFO SendMoveInfo;
	DWORD UniqueIDinAgent;

	MUGONG_TOTALINFO MugongTotalInfo;
	ABILITY_TOTALINFO AbilityInfo;
	ITEM_TOTALINFO ItemTotalInfo;
	WORD	OptionNum;
	ITEM_OPTION_INFO OptionInfo[MAX_ITEM_OPTION_NUM];

	WORD GetMsgLength()
	{
		return sizeof(SEND_HERO_TOTALINFO) - (MAX_ITEM_OPTION_NUM - OptionNum)*sizeof(ITEM_OPTION_INFO);
	}

	void InitOptionInfo()
	{
		OptionNum = 0;
	}
	void AddOptionInfo(ITEM_OPTION_INFO * pInfo)
	{
		memcpy(&OptionInfo[OptionNum], pInfo, sizeof(ITEM_OPTION_INFO));
		++OptionNum;
	}
};

struct SEND_CHARSELECT_INFO : public MSGBASE
{
#ifdef _CRYPTCHECK_ 
	HselInit eninit;
	HselInit deinit;
#endif
	int CharNum;
	WORD StandingArrayNum[MAX_CHARACTER_NUM];				// pjs 纳腐磐狼 困摹 鉴辑 [5/22/2003]
	BASEOBJECT_INFO BaseObjectInfo[MAX_CHARACTER_NUM];
	CHARACTER_TOTALINFO ChrTotalInfo[MAX_CHARACTER_NUM];
};

/*
struct SEND_CHARMAKE_INFO : public MSGBASE
{
	DWORD	UserID;
	char	Name[MAX_NAME_LENGTH+1];
	BYTE	Job;
	BYTE	FaceType;
	BYTE	HeadType;
	MAPTYPE	Map;
	BYTE	Gender;
	
	char Name[MAX_NAME_LENGTH+1];			// 某腐磐 捞抚
	DWORD	UserID;
	BYTE	JobType;
	BYTE	SexType;
	BYTE	BodyType;
	BYTE	HairType;
	BYTE	FaceType;
	BYTE	StartArea;
	BOOL	bDuplCheck;
};
*/

struct MSG_NAME : public MSGBASE
{
	char Name[MAX_NAME_LENGTH+1];
};

struct MSG_NAME2 : public MSGBASE
{
	char str1[MAX_NAME_LENGTH+1];
	char str2[MAX_NAME_LENGTH+1];
};

struct MSG_NAME_DWORD : public MSGBASE
{
	char Name[MAX_NAME_LENGTH+1];
	DWORD dwData;
};

struct MSG_NAME_WORD : public MSGBASE
{
	char Name[MAX_NAME_LENGTH+1];
	WORD wData;
};

struct MSG_NAME_DWORD2 : public MSGBASE
{
	char Name[MAX_NAME_LENGTH+1];
	DWORD dwData1;
	DWORD dwData2;
};

//蒲 单捞磐 苞访 ////////////////////////////////////////////////
struct SEND_PACKED_DATA : public MSGBASE
{
	WORD wRealDataSize;
	WORD wReceiverNum;
	char Data[MAX_PACKEDDATA_SIZE];
};
struct SEND_PACKED_TOMAPSERVER_DATA : public MSGBASE
{
	MAPTYPE ToMapNum;
	WORD wRealDataSize;
	char Data[MAX_PACKEDDATA_SIZE];
	WORD GetMsgLength()
	{
		return sizeof(SEND_PACKED_TOMAPSERVER_DATA) - MAX_PACKEDDATA_SIZE + wRealDataSize;
	}
};
// 酒捞袍 包访 匙飘焢 皋矫瘤 ////////////////////////////////////

struct MSG_ITEM : public MSGBASE
{
	ITEMBASE ItemInfo;
};

//货肺 累诀
struct ITEMOBTAINARRAY : public MSGBASE
{
	ITEMOBTAINARRAY()
	{
		ItemNum = 0;
	}
	void Init( BYTE cg, BYTE pt, DWORD dwID )
	{
		Category	= cg;
		Protocol	= pt;
		dwObjectID	= dwID;
	}
	void AddItem( DWORD DBIdx, WORD ItemIdx, DURTYPE Durability, POSTYPE bPosition, POSTYPE QuickPosition )
	{
		ItemInfo[ItemNum].dwDBIdx		= DBIdx;
		ItemInfo[ItemNum].wIconIdx		= ItemIdx;
		ItemInfo[ItemNum].Durability	= Durability;
		ItemInfo[ItemNum].Position		= bPosition;
		ItemInfo[ItemNum].QuickPosition	= QuickPosition;
		ItemNum++;
	}
	void AddItem( WORD idx, ITEMBASE * item)
	{
		memcpy( &ItemInfo[idx], item, sizeof( ITEMBASE ) );
		ItemNum++;
	}
	ITEMBASE * GetItem( WORD idx ) { return &ItemInfo[idx]; }
	int GetSize()
	{
		return ( sizeof( ITEMOBTAINARRAY ) - ( sizeof( ITEMBASE ) * ( SLOT_INVENTORY_NUM - ItemNum ) ) );
	}
	void Clear()
	{
		memset( this, 0, sizeof( ITEMOBTAINARRAY ) );
		ItemNum = 0;
	}
	BYTE		ItemNum;
	WORD		wObtainCount;
	ITEMBASE	ItemInfo[SLOT_INVENTORY_NUM];
};

typedef void (*DBResult)(void * pPlayer, WORD ArrayID);
struct ITEMOBTAINARRAYINFO
{
	WORD			wObtainArrayID;
	DBResult		CallBack;
	DWORD			dwFurnisherIdx;
	WORD			wType;

	ITEMOBTAINARRAY	ItemArray;
};

struct MSG_ITEM_ERROR : public MSGBASE
{
	int ECode;
};

struct MSG_ITEM_MOVE_SYN : public MSGBASE
{
	POSTYPE FromPos;
	WORD wFromItemIdx;
	POSTYPE ToPos;
	WORD wToItemIdx;
};

struct MSG_ITEM_MOVE_ACK : public MSG_ITEM_MOVE_SYN
{
};
struct MSG_ITEM_COMBINE_SYN : public MSGBASE
{
	WORD wItemIdx;
	POSTYPE FromPos;
	POSTYPE ToPos;
	DURTYPE FromDur;
	DURTYPE ToDur;
};
struct MSG_ITEM_COMBINE_ACK : public MSG_ITEM_COMBINE_SYN
{
};
struct MSG_ITEM_DIVIDE_SYN : public MSGBASE
{
	WORD wItemIdx;
	POSTYPE FromPos;
	POSTYPE ToPos;
	DURTYPE FromDur;
	DURTYPE ToDur;
};

struct MSG_ITEM_DISCARD_SYN : public MSGBASE
{
	POSTYPE TargetPos;
	WORD wItemIdx;
	WORD ItemNum;
};
struct MSG_ITEM_DISCARD_ACK : public MSG_ITEM_DISCARD_SYN
{
};

struct MSG_ITEM_BUY_SYN : public MSGBASE
{
	WORD wBuyItemIdx;
	WORD BuyItemNum;
	DWORD dwDealerIdx;
};

struct MSG_ITEM_SELL_SYN : public MSGBASE
{
	POSTYPE TargetPos;
	WORD	wSellItemIdx;
	WORD	SellItemNum;
	DWORD	dwDealerIdx;
};
struct MSG_ITEM_SELL_ACK : public MSG_ITEM_SELL_SYN
{
};
struct MSG_ITEM_UPGRADE_SYN : public MSGBASE
{
	POSTYPE ItemPos;
	WORD	wItemIdx;

	POSTYPE MaterialItemPos;
	WORD	wMaterialItemIdx;
};
struct MSG_ITEM_UPGRADE_ACK : public MSG_ITEM_UPGRADE_SYN
{
};

struct MATERIAL_ARRAY
{
	WORD	wItemIdx;
	POSTYPE ItemPos;
	DURTYPE Dur;
};
struct MSG_ITEM_MIX_SYN : public MSGBASE
{
	WORD	wBasicItemIdx;
	POSTYPE BasicItemPos;
	WORD	wResultItemIdx;
	POSTYPE ResultIndex;
	WORD	wMaterialNum;
	MATERIAL_ARRAY Material[MAX_MIX_MATERIAL];
	void Init()
	{
		wMaterialNum = 0;
	}
	void AddMaterial(WORD wItemIdx, POSTYPE ItemPos, DURTYPE Dur)
	{
		Material[wMaterialNum].wItemIdx = wItemIdx;
		Material[wMaterialNum].ItemPos = ItemPos;
		Material[wMaterialNum++].Dur = Dur;
	}
	int GetSize()
	{
		return sizeof(MSG_ITEM_MIX_SYN) - (MAX_MIX_MATERIAL - wMaterialNum)*sizeof(MATERIAL_ARRAY);
	}
};
struct MSG_ITEM_MIX_ACK : public MSG_ITEM_MIX_SYN
{
};
struct MSG_ITEM_USE_SYN : public MSGBASE
{
	POSTYPE TargetPos;
	WORD	wItemIdx;
};
struct MSG_ITEM_USE_ACK : public MSG_ITEM_USE_SYN
{
};
/// 酒捞袍 可记 沥焊 //////////////////////////////////
struct ITEM_JEWEL_POS
{
	WORD	wItemIdx;
	POSTYPE pos;
};
struct ITEM_JEWEL_POS_EX
{
	WORD	wItemIdx;
	POSTYPE pos;
	DURTYPE Dur;
};
struct MSG_ITEM_DISSOLVE_SYN : public MSGBASE
{
	WORD	wTargetItemIdx;
	POSTYPE TargetPos;
	WORD	wOptionIdx;
};
struct MSG_ITEM_REINFORCE_SYN : public MSGBASE
{
	void Init( BYTE cg, BYTE pt, DWORD dwID )
	{
		Category	= cg;
		Protocol	= pt;
		dwObjectID	= dwID;
		wJewelUnit = 0;
	}
	void AddJewelInfo(WORD JewelItemIdx, POSTYPE Pos, DURTYPE Dur )
	{
		JewelWhich[wJewelUnit].wItemIdx = JewelItemIdx;
		JewelWhich[wJewelUnit].pos = Pos;
		JewelWhich[wJewelUnit].Dur = Dur;
		++wJewelUnit;
	}
	int GetSize()
	{
		return sizeof(MSG_ITEM_REINFORCE_SYN) - (MAX_ITEM_OPTION_NUM - wJewelUnit)*sizeof(ITEM_JEWEL_POS_EX);
	}
	WORD	wTargetItemIdx;
	POSTYPE TargetPos;
	WORD	wJewelUnit;
	ITEM_JEWEL_POS_EX	JewelWhich[MAX_ITEM_OPTION_NUM];
};
struct MSG_ITEM_REINFORCE_ACK : public MSGBASE
{
	WORD	wTargetItemIdx;
	POSTYPE TargetPos;
	ITEM_OPTION_INFO OptionInfo;
};
///////////////////////////////////////////////////////
// 窜绵芒
struct MSG_QUICK_ADD_SYN : public MSGBASE
{
	POSTYPE QuickPos;
	POSTYPE SrcPos;
	WORD	SrcItemIdx;
	POSTYPE OldSrcPos;
	WORD	OldSrcItemIdx;
};
struct MSG_QUICK_ADD_ACK : public MSG_QUICK_ADD_SYN
{
};
struct MSG_QUICK_REM_SYN : public MSGBASE
{
	POSTYPE SrcPos;
	POSTYPE SrcItemIdx;
};
struct MSG_QUICK_REM_ACK : public MSG_QUICK_REM_SYN
{
};
struct MSG_QUICK_MOVE_SYN : public MSGBASE
{
	POSTYPE FromSrcPos;
	WORD wFromSrcItemIdx;
	POSTYPE FromQuickPos;
	POSTYPE ToSrcPos;
	WORD wToSrcItemIdx;
	POSTYPE ToQuickPos;
};
struct MSG_QUICK_MOVE_ACK : public MSG_QUICK_MOVE_SYN
{
};
struct MSG_QUICK_ERROR : public MSGBASE
{
	int ECode;
};

//////////// 公傍 包访 匙飘焢 皋矫瘤 /////////////////////////////
//-------------- 公傍(胶懦) 捞悼 (in 公傍芒) ---------------------

struct MSG_MUGONG_MOVE_SYN : public MSGBASE
{
	POSTYPE FromPos;
	POSTYPE ToPos;
};
struct MSG_MUGONG_MOVE_ACK : public MSG_MUGONG_MOVE_SYN
{
};

struct MSG_MUGONG_REM_SYN : public MSGBASE
{
	WORD	wMugongIdx;
	POSTYPE TargetPos;
};
struct MSG_MUGONG_REM_ACK : public MSG_MUGONG_REM_SYN
{
};

struct MSG_MUGONG_ADD_ACK : public MSGBASE
{
	MUGONGBASE MugongBase;
};

/*

struct MSG_MUGONG_ADD_NACK : public MSGBASE
{
};
struct MSG_MUGONG_MOVEINFO : public MSGBASE
{
	DWORD		dwMugongDBIdx;
	POSTYPE		wToPosition;
	POSTYPE		wFromPosition;
};
struct MSG_MUGONG_DELINFO : public MSGBASE
{
	DWORD		dwMugongDBIdx;
	POSTYPE		wPosition;
};


struct MSG_MUGONG_ADDINVDEL_SYN : public MSGBASE
{
	BYTE	bMugongType;				// 0,1,2
	DWORD	dwItemDBIdx;				// 酒捞袍 db index
	POSTYPE	wItemPosition;				// 酒捞袍 pos
};
struct MSG_MUGONG_ADDINVDEL_ACK : public MSGBASE

⌨️ 快捷键说明

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