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

📄 mirgame.h

📁 传奇的脱机源代码 非常的好 供大家学习 谢谢
💻 H
字号:
// MirGame.h: interface for the CMirGame class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_)
#define AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_

#include "MirSocket.h"	// Added by ClassView

#include "MirMsg.h"
//#include "MirGameMap.h"

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define	MIRVERSION "<mir152>"
#define	BUFFERLENGTH 4096

enum _action
{
	ACTION_STAND,
	ACTION_WALK,
	ACTION_ATTACK,
	ACTION_RUN,
	ACTION_TRUN,
	ACTION_RUNTHROUGH,
};
typedef struct
{
	int x;
	int y;
	int dir;
	int action;
}ACTION_LAST;

typedef struct
{
	DWORD	dwGold;
	WORD	wCmd;
	BYTE	bProf;
	BYTE	bHair;
	BYTE	bSex;
	BYTE	bOO;
	WORD	wUnknow;
	BYTE	bLevel;
	BYTE	bunknow;
	BYTE	ACHi;
	BYTE	ACLow;
	BYTE	MACHi;
	BYTE	MACLow;
	BYTE	DCHi;
	BYTE	DCLow;
	BYTE	MCHi;
	BYTE	MCLow;
	BYTE	SCHi;
	BYTE	SCLow;
	WORD	Hp;
	WORD	Mp;
	WORD	MaxHp;
	WORD	MaxMp;
	DWORD	dwUnknow;
	DWORD	Exp;
	DWORD	MaxExp;
	WORD	BagWeight;
	WORD	MaxBagWeight;
	BYTE	BodyWeight;
	BYTE	MaxBodyWeight;
	BYTE	HandWeight;
	BYTE	MaxHandWeight;
}MMSGSETCHARINFO;

enum	__GAMESTATE
{
	MGS_NOCONNECTION,
	MGS_GATECONNECTED,
	MGS_WAITINGCHECKINFO,
	MGS_MAKECLIENTINFO,
	MGS_WAITINGCHECKPASS,
	MGS_CLIENTCHECKPASSED,
	MGS_MODIFYPASSWORDWAIT,
	MGS_REGNEWACCOUNTWAIT,
	MGS_LOGINWAITING,
	MGS_SELECTSERVER,
	MGS_WAITFORSELCHARADDRESS,
	MGS_GOTSELCHARADDRESS,
	MGS_SELCHARCONNECTED,
	MGS_WAITFORSELCHARVERIFY,
	MGS_WAITFORSELCHAR,
	MGS_WAITFORGAMESERVERADDRESS,
	MGS_GAMESERVERCONNECTED,
	MGS_WAITFORGAMESERVERVERIFY,
	MGS_WAITFORENTERGAME,
	MGS_ENTEREDGAME,
};

typedef struct
{
	char	Name[64];
	int		prof;
	int		sex;
	int		level;
	int		hair;
}CHARBASEINFO;

typedef struct
{
	CHARBASEINFO	Chars[2];
	int				CharCount;
	int				ActiveChar;
}SELCHARINFO;

typedef struct
{
	int min;
	int max;
}MAXMININFO;
typedef struct
{
	int low;
	int hi;
}LOWHIINFO;

typedef struct
{
	DWORD	dwServerId;
	char	Name[64];
	int		prof;
	int		sex;
	int		level;
	int		hair;
	int		pos_x;
	int		pos_y;
	LOWHIINFO	AC;
	LOWHIINFO	MAC;
	LOWHIINFO	DC;
	LOWHIINFO	MC;
	LOWHIINFO	SC;
	MAXMININFO	HandWeight;
	MAXMININFO	BodyWeight;
	MAXMININFO	BagWeight;
	MAXMININFO	Hp;
	MAXMININFO	Mp;
	MAXMININFO	Exp;
	int		Zhunque;
	int		Minjie;
	int		MagicAgainst;
	int		PoisonAgainst;
	int		PoisonRecover;
	int		HpRecover;
	int		MpRecover;
}CHARACTERINFO;

#define		MSGQUEUELEN		1024
typedef char	TMSGLINE[MSGLENGTH];
class CMsgQueue2
{
private:
	CCriticalSection*pCS;
public:
	CMsgQueue2()
	{
		pCS=new CCriticalSection();
		m_iGet = 0;
		m_iPut = 0;
		Clear();
	};
	virtual ~CMsgQueue2()
	{
		Clear();
	};
	int NextPos( int now )
	{
		now++;
		if( now >= MSGQUEUELEN )
			now = 0;
		return now;
	}
	int	PutMsg( char * pMsg )
	{
		//pCS->Lock();
		int iNext = NextPos( m_iPut );

		if(pMsg!=NULL)
			if(iNext!=m_iGet)
			{
				strcpy( m_Msgs[m_iPut], pMsg );
				m_iPut = iNext;
				//pCS->Unlock();
				return 1;
			}
		//pCS->Unlock();
		return 0;
	};

	int GetMsg( char * pMsg )
	{
		//pCS->Lock();
		if( m_iGet == m_iPut )
		{
			//pCS->Unlock();
			return 0;
		}
		strcpy( pMsg, m_Msgs[m_iGet] );
		m_iGet = NextPos( m_iGet );
		//pCS->Unlock();
		return 1;
	};
	int	Clear()
	{
		//pCS->Lock();
		memset( (void*)m_Msgs, 0, sizeof( TMSGLINE ) * MSGQUEUELEN );
		//pCS->Unlock();
		return 1;
	};
private:
	TMSGLINE	m_Msgs[MSGQUEUELEN];
	int			m_iGet;
	int			m_iPut;
};

class CMirGame  
{
public:
	void Walk(int dir);
	BOOL Say(CString s);
	void Run(int dir);
	BOOL m_bInWorld;
	DWORD GameLoop();
	friend DWORD MessageProc( PVOID * p );
	BOOL BeginGame(CString ServerName,CString ServerIP,CString Account,CString Password,int Character);
	BOOL Logout();
	CMirGame();
	virtual ~CMirGame();

protected:
	BOOL CanDoAction();
	void SetCharacterPos(int x, int y);
	void LogSystem(LPCTSTR line);
	BOOL m_bInGame;
	BOOL	CloseSelCharServer();
	BOOL	EnterGame(int CharIndex);
	int		GetString(char*string);
	BOOL	EnterServer(LPCTSTR ServerName);
	BOOL	EnterSelCharServer();
	BOOL	Login(LPCTSTR username,LPCTSTR password);
	BOOL	OpenGataServer(LPCTSTR ServerIP);
	BOOL	CloseGateServer();
	BOOL	StartGame();
	BOOL	GetMsg(MMSG*pMsg);
	void	ActionFail();
	void	ActionOk();

	CString	m_StringList[20];
	SOCKET	m_sGate;
	SOCKET	m_sSelChar;
	SOCKET	m_sGame;
	DWORD	m_dwGameState;
	CMirMsg	m_MirMsg;
	CMirSocket	m_MirSocket;

	CHARACTERINFO	m_CharSelf;
	SELCHARINFO	m_SelCharInfo;

	int		m_SelCharPort;
	CString	m_SelCharIP;
	int		m_Character;
	CString	m_ServerName;
	CString	m_ServerIP;
	CString	m_Account;
	CString	m_Password;
	CString	m_SID;
	ACTION_LAST	m_LastAction;

	CMsgQueue2	m_MsgQueue;
		
	//CMirGameMap m_GameMap;

	char*tmpBuffer;
	char*tmpBuffer2;
};

#endif // !defined(AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_)

⌨️ 快捷键说明

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