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

📄 define.h

📁 骑士游戏部分源代码。
💻 H
字号:
#ifndef _DEFINE_H
#define _DEFINE_H

#define MAX_USER			3000
#define MAX_ID_SIZE			20
#define MAX_PW_SIZE			12
#define MAX_ITEM			28

////////////////////////////////////////////////////////////
// Socket Define
////////////////////////////////////////////////////////////
#define SOCKET_BUFF_SIZE	(1024*8)
#define MAX_PACKET_SIZE		(1024*2)

#define PACKET_START1				0XAA
#define PACKET_START2				0X55
#define PACKET_END1					0X55
#define PACKET_END2					0XAA
//#define PROTOCOL_VER				0X01

// status
#define STATE_CONNECTED			0X01
#define STATE_DISCONNECTED		0X02
#define STATE_GAMESTART			0x03

/////////////////////////////////////////////////////
// ITEM_SLOT DEFINE
#define RIGHTEAR			0
#define HEAD				1
#define LEFTEAR				2
#define NECK				3
#define BREAST				4
#define SHOULDER			5
#define RIGHTHAND			6
#define WAIST				7
#define LEFTHAND			8
#define RIGHTRING			9
#define LEG					10
#define LEFTRING			11
#define GLOVE				12
#define FOOT				13
/////////////////////////////////////////////////////

////////////////////////////////////////////////////////////

typedef union{
	short int	i;
	BYTE		b[2];
} MYSHORT;

typedef union{
	int			i;
	BYTE		b[4];
} MYINT;

typedef union{
	DWORD		w;
	BYTE		b[4];
} MYDWORD;


// DEFINE MACRO PART...
#define BufInc(x) (x)++;(x) %= SOCKET_BUF_SIZE;

// DEFINE Shared Memory Queue Flag

#define E	0x00
#define R	0x01
#define W	0x02
#define WR	0x03

// DEFINE Shared Memory Queue Return VALUE

#define SMQ_BROKEN		10000
#define SMQ_FULL		10001
#define SMQ_EMPTY		10002
#define SMQ_PKTSIZEOVER	10003
#define SMQ_WRITING		10004
#define SMQ_READING		10005

// DEFINE Shared Memory Costumizing

#define MAX_PKTSIZE		512
#define MAX_COUNT		4096
#define SMQ_LOGGERSEND	"KNIGHT_SEND"
#define SMQ_LOGGERRECV	"KNIGHT_RECV"

// Packet Define...
#define WIZ_LOGIN				0x01	// Account Login
#define WIZ_NEW_CHAR			0x02	// Create Character DB
#define WIZ_DEL_CHAR			0x03	// Delete Character DB
#define WIZ_SEL_CHAR			0x04	// Select Character
#define WIZ_SEL_NATION			0x05	// Select Nation
#define WIZ_ALLCHAR_INFO_REQ	0x0C	// Account All Character Info Request
#define WIZ_LOGOUT				0x0F	// Request Logout
#define WIZ_DATASAVE			0x37	// User GameData DB Save Request
#define WIZ_KNIGHTS_PROCESS		0x3C	// Knights Related Packet..
#define WIZ_CLAN_PROCESS		0x4E	// Clans Related Packet..
#define WIZ_LOGIN_INFO			0x50	// define for DBAgent Communication
#define WIZ_KICKOUT				0x51	// Account ID forbid duplicate connection
#define WIZ_BATTLE_EVENT		0x57	// Battle Event Result

#define DB_COUPON_EVENT			0x10	// coupon event
		#define CHECK_COUPON_EVENT		0x01
		#define UPDATE_COUPON_EVENT		0x02

////////////////////////////////////////////////////////////////
// Knights Packet sub define 
////////////////////////////////////////////////////////////////
#define KNIGHTS_CREATE			0x11		// 积己
#define KNIGHTS_JOIN			0x12		// 啊涝
#define KNIGHTS_WITHDRAW		0x13		// 呕硼
#define KNIGHTS_REMOVE			0x14		// 糕滚 昏力
#define KNIGHTS_DESTROY			0x15		// 磺俺扁
#define KNIGHTS_ADMIT			0x16		// 糕滚 啊涝 倾啊
#define KNIGHTS_REJECT			0x17		// 糕滚 啊涝 芭例
#define KNIGHTS_PUNISH			0x18		// 糕滚 隆拌
#define KNIGHTS_CHIEF			0x19		// 窜厘 烙疙
#define KNIGHTS_VICECHIEF		0x1A		// 何窜厘 烙疙
#define KNIGHTS_OFFICER			0x1B		// 厘背烙疙
#define KNIGHTS_ALLLIST_REQ		0x1C		// 府胶飘甫 10俺 窜困肺 Page 夸没
#define KNIGHTS_MEMBER_REQ		0x1D		// 葛电 糕滚 夸没
#define KNIGHTS_CURRENT_REQ		0x1E		// 泅犁 立加 府胶飘
#define KNIGHTS_STASH			0x1F		// 扁荤窜 芒绊
#define KNIGHTS_MODIFY_FAME		0x20		// 糕滚狼 流困 函版.. 秦寸 糕滚俊霸 埃促
#define KNIGHTS_JOIN_REQ		0x21		// 秦寸糕滚俊霸 啊涝夸没阑 茄促
#define KNIGHTS_LIST_REQ		0x22		// 扁荤窜 府胶飘甫  夸没 ( index 八祸 )

////////////////////////////////////////////////////////////////
// Clan Packet sub define
////////////////////////////////////////////////////////////////
#define CLAN_CREATE				0x01
#define CLAN_JOIN				0x02

////////////////////////////////////////////////////////////////
// Update User Data type define
////////////////////////////////////////////////////////////////
#define UPDATE_LOGOUT			0x01
#define UPDATE_ALL_SAVE			0x02
#define UPDATE_PACKET_SAVE		0x03


// Reply packet define...

#define SEND_ME					0x01
#define SEND_REGION				0x02
#define SEND_ALL				0x03

#define SLOT_MAX			14		// 馒侩 酒袍 MAX
#define HAVE_MAX			28		// 家蜡 酒袍 MAX (牢亥配府芒)	
#define ITEMCOUNT_MAX		9999	// 家葛 酒捞袍 家蜡 茄拌蔼
#define WAREHOUSE_MAX		196		// 芒绊 酒捞袍 MAX
/////////////////////////////////////////////////////////////////////////////////
// Structure Define
/////////////////////////////////////////////////////////////////////////////////
struct	_ITEM_DATA
{
	int		nNum;		// item 锅龋
	short	sDuration;	// item 郴备仿
	short	sCount;		// item 肮荐 or item 绵汗 加己俊 秦寸 蔼
	__int64	nSerialNum;	// item serial code
};

struct _ITEM_TABLE
{
	int   m_iNum;				// item num
	char  m_strName[50];		// item Name
	BYTE  m_bKind;				// item 辆幅
	BYTE  m_bSlot;				// 厘馒困摹
	BYTE  m_bRace;				// 荤侩 啊瓷茄 辆练
	BYTE  m_bClass;				// 荤侩 啊瓷茄 Class
	short m_sDamage;			// 弥措 鸥拜摹
	short m_sDelay;				// 傍拜矫埃
	short m_sRange;				// 裹困(蜡瓤芭府)
	short m_sWeight;			// 公霸
	short m_sDuration;			// 郴备己
	int	  m_iBuyPrice;			// 蜡历啊 荤绰啊拜
	int	  m_iSellPrice;			// 蜡历啊 颇绰啊拜
	short m_sAc;				// 规绢仿
	BYTE  m_bCountable;			// 俺荐 俺充 酒捞袍
	int	  m_iEffect1;			// 概流 捞棋飘1
	int	  m_iEffect2;			// 概流 捞棋飘2
	BYTE  m_bReqLevel;			// 夸备 饭骇
	BYTE  m_bReqRank;			// 夸备 累困
	BYTE  m_bReqTitle;			// 夸备 瘤困
	BYTE  m_bReqStr;			// 夸备 塞
	BYTE  m_bReqSta;			// 夸备 眉仿
	BYTE  m_bReqDex;			// 夸备 刮酶
	BYTE  m_bReqIntel;			// 夸备 瘤瓷
	BYTE  m_bReqCha;			// 夸备 概仿
	BYTE  m_bSellingGroup;		// 惑牢 秒鞭 拱前
	BYTE  m_ItemType;			// 概流酒捞袍 肚绰 饭绢酒捞袍
	short m_sHitrate;			// 鸥拜伏
	short m_sEvarate;			// 雀乔啦
	short m_sDaggerAc;			// 规绢仿1
	short m_sSwordAc;			// 规绢仿2
	short m_sMaceAc;			// 规绢仿3
	short m_sAxeAc;				// 规绢仿4
	short m_sSpearAc;			// 规绢仿5
	short m_sBowAc;				// 规绢仿6
	BYTE  m_bFireDamage;		// 阂 加己
	BYTE  m_bIceDamage;			// 趁扁 加己
	BYTE  m_bLightningDamage;	// 傈拜 加己
	BYTE  m_bPoisonDamage;		// 刀 加己
	BYTE  m_bHPDrain;			// HP 软荐
	BYTE  m_bMPDamage;			// MP 鸥拜
	BYTE  m_bMPDrain;			// MP 软荐
	BYTE  m_bMirrorDamage;		// 馆荤 鸥拜
	BYTE  m_bDroprate;			// 靛酚 厚啦
	BYTE  m_bStrB;				// 塞 焊呈胶
	BYTE  m_bStaB;				// 眉仿 焊呈胶
	BYTE  m_bDexB;				// 刮酶己 焊呈胶
	BYTE  m_bIntelB;			// 瘤瓷 焊呈胶
	BYTE  m_bChaB;				// 概仿 焊呈胶
	short m_MaxHpB;				// MaxHP add
	short m_MaxMpB;				// MaxMP add
	BYTE  m_bFireR;				// 阂 付过 历亲仿
	BYTE  m_bColdR;				// 倔澜 付过 历亲仿
	BYTE  m_bLightningR;		// 傈扁 付过 历亲仿
	BYTE  m_bMagicR;			// 扁鸥 付过 历亲仿
	BYTE  m_bPoisonR;			// 刀 付过 历亲仿
	BYTE  m_bCurseR;			// 历林 付过 历亲仿
};

struct _USER_DATA
{
	char	m_id[MAX_ID_SIZE+1];			// 蜡历 ID
	char	m_Accountid[MAX_ID_SIZE+1];		// 拌沥 ID

	BYTE	m_bZone;						// 泅犁 Zone
	float	m_curx;							// 泅犁 X 谅钎
	float	m_curz;							// 泅犁 Z 谅钎
	float	m_cury;							// 泅犁 Y 谅钎

	BYTE	m_bNation;						// 家加惫啊
	BYTE	m_bRace;						// 辆练
	short	m_sClass;						// 流诀
	BYTE	m_bHairColor;					// 己喊
	BYTE	m_bRank;						// 累困
	BYTE	m_bTitle;						// 瘤困
	BYTE	m_bLevel;						// 饭骇
	int		m_iExp;							// 版氰摹
	int		m_iLoyalty;						// 肺凯萍
	BYTE	m_bFace;					// 辆背
	BYTE	m_bCity;						// 家加档矫
	short	m_bKnights;						// 家加 扁荤窜
	//short	m_sClan;						// 家加 Clan
	BYTE	m_bFame;						// 疙己
	short	m_sHp;							// HP
	short	m_sMp;							// MP
	short	m_sSp;							// SP
	BYTE	m_bStr;							// 塞
	BYTE	m_bSta;							// 积疙仿
	BYTE	m_bDex;							// 傍拜, 雀乔啦
	BYTE	m_bIntel;						// 瘤驱(?), 某腐磐 付过仿 搬沥
	BYTE	m_bCha;							// 付过 己傍伏, 拱扒 啊拜 搬沥(?)
	BYTE	m_bAuthority;					// 蜡历 鼻茄
	BYTE	m_bPoints;						// 焊呈胶 器牢飘
	int		m_iGold;						// 某腐捞 瘤囱 捣(21撅)
	short	m_sBind;						// Saved Bind Point
	int		m_iBank;						// 芒绊狼 捣(21撅)
	
	BYTE    m_bstrSkill[9];				// 流诀喊 胶懦
	_ITEM_DATA m_sItemArray[HAVE_MAX+SLOT_MAX];		// 42*8 bytes
	_ITEM_DATA m_sWarehouseArray[WAREHOUSE_MAX];	// 芒绊 酒捞袍	196*8 bytes

	BYTE	m_bLogout;						// 肺弊酒眶 敲贰弊
	BYTE	m_bWarehouse;					// 芒绊 芭贰 沁菌唱?
	DWORD	m_dwTime;						// 敲饭捞鸥烙...
};


//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//
//	Global Function Define
//

inline void GetString(char* tBuf, char* sBuf, int len, int& index)
{
	memcpy(tBuf, sBuf+index, len);
	index += len;
};

inline BYTE GetByte(char* sBuf, int& index)
{
	int t_index = index;
	index++;
	return (BYTE)(*(sBuf+t_index));
};

inline int GetShort(char* sBuf, int& index)
{
	index += 2;
	return *(short*)(sBuf+index-2);
};

inline DWORD GetDWORD(char* sBuf, int& index)
{
	index += 4;
	return *(DWORD*)(sBuf+index-4);
};

inline float Getfloat(char* sBuf, int& index)
{
	index += 4;
	return *(float*)(sBuf+index-4);
};

inline __int64 GetInt64(char* sBuf, int& index)
{
	index += 8;
	return *(__int64*)(sBuf+index-8);
};

inline void SetString(char* tBuf, char* sBuf, int len, int& index)
{
	memcpy(tBuf+index, sBuf, len);
	index += len;
};

inline void SetByte(char* tBuf, BYTE sByte, int& index)
{
	*(tBuf+index) = (char)sByte;
	index++;
};

inline void SetShort(char* tBuf, int sShort, int& index)
{
	short temp = (short)sShort;

	CopyMemory( tBuf+index, &temp, 2);
	index += 2;
};

inline void SetDWORD(char* tBuf, DWORD sDWORD, int& index)
{
	CopyMemory( tBuf+index, &sDWORD, 4);
	index += 4;
};

inline void Setfloat ( char* tBuf, float sFloat, int& index )
{
	CopyMemory( tBuf+index, &sFloat, 4);
	index += 4;
};

inline void SetInt64 ( char* tBuf, __int64 nInt64, int& index )
{
	CopyMemory( tBuf+index, &nInt64, 8);
	index += 8;
};
// sungyong 2001.11.06
inline int GetVarString(TCHAR* tBuf, TCHAR* sBuf, int nSize, int& index)
{
	int nLen = 0;
	
	if(nSize == sizeof(BYTE))	nLen = GetByte(sBuf, index);
	else nLen = GetShort(sBuf, index);

	GetString(tBuf, sBuf, nLen, index);
	*(tBuf + nLen) = 0;

	return nLen;
};

inline void SetVarString(TCHAR *tBuf, TCHAR* sBuf, int len, int &index)
{
	*(tBuf+index) = (BYTE)len;
	index ++;

	CopyMemory(tBuf+index, sBuf, len);
	index += len;
};
// ~sungyong 2001.11.06
inline int ParseSpace( char* tBuf, char* sBuf)
{
	int i = 0, index = 0;
	BOOL flag = FALSE;
	
	while(sBuf[index] == ' ' || sBuf[index] == '\t')index++;
	while(sBuf[index] !=' ' && sBuf[index] !='\t' && sBuf[index] !=(BYTE) 0){
		tBuf[i++] = sBuf[index++];
		flag = TRUE;
	}
	tBuf[i] = 0;

	while(sBuf[index] == ' ' || sBuf[index] == '\t')index++;
	if(!flag) return 0;	
	return index;
};

inline CString GetProgPath()
{
	char Buf[256], Path[256];
	char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];

	::GetModuleFileName(AfxGetApp()->m_hInstance, Buf, 256);
	_splitpath(Buf,drive,dir,fname,ext);
	strcpy(Path, drive);
	strcat(Path, dir);		
	CString _Path = Path;
	return _Path;
};

inline void LogFileWrite( LPCTSTR logstr )
{
	CString ProgPath, LogFileName;
	CFile file;
	int loglength;

	ProgPath = GetProgPath();
	loglength = strlen( logstr );

	LogFileName.Format("%s\\Aujard.log", ProgPath);
	
	file.Open( LogFileName, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite );

	file.SeekToEnd();
	file.Write(logstr, loglength);
	file.Close();
};

inline int DisplayErrorMsg(SQLHANDLE hstmt)
{
	SQLCHAR       SqlState[6], Msg[1024];
	SQLINTEGER    NativeError;
	SQLSMALLINT   i, MsgLen;
	SQLRETURN     rc2;
	char		  logstr[512];
	memset( logstr, NULL, 512 );

	i = 1;
	while ((rc2 = SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, i, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA)
	{
		sprintf( logstr, "*** %s, %d, %s, %d ***\r\n", SqlState,NativeError,Msg,MsgLen );
		LogFileWrite( logstr );

		i++;
	}

	if( strcmp((char *)SqlState, "08S01") == 0 )
		return -1;
	else
		return 0;
};

#endif

⌨️ 快捷键说明

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