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

📄 gamemir.cpp

📁 是一个基于热血战国协议的网络游戏。现在脱机客户端先放出来给大家研究
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		ROUTINE_MM_ENTRY(SM_WHISPER);
		ROUTINE_MM_ENTRY(SM_HEAR);
		ROUTINE_MM_ENTRY(SM_GUILDMESSAGE);
		ROUTINE_MM_ENTRY(SM_TURN);
		ROUTINE_MM_ENTRY(SM_WALK);
		ROUTINE_MM_ENTRY(SM_RUN);
		ROUTINE_MM_ENTRY(SM_DISAPPEAR);
		ROUTINE_MM_ENTRY(SM_ABILITY);
		ROUTINE_MM_ENTRY(SM_NEWMAP);
		ROUTINE_MM_ENTRY(SM_LOGON);
		ROUTINE_MM_ENTRY(SM_HIT);
		ROUTINE_MM_ENTRY(SM_BACKSTEP);
		ROUTINE_MM_ENTRY(SM_MERCHANTSAY);
		ROUTINE_MM_ENTRY(SM_HEAVYHIT);
		ROUTINE_MM_ENTRY(SM_POWERHIT);
		ROUTINE_MM_ENTRY(SM_LONGHIT);
		ROUTINE_MM_ENTRY(SM_WIDEHIT);
		ROUTINE_MM_ENTRY(SM_FIREHIT);
		ROUTINE_MM_ENTRY(SM_BIGHIT);
		ROUTINE_MM_ENTRY(SM_USERNAME);
		ROUTINE_MM_ENTRY(SM_WINEXP);
		ROUTINE_MM_ENTRY(SM_MAPDESCRIPTION);
		ROUTINE_MM_ENTRY(SM_BAGITEMS);
		ROUTINE_MM_ENTRY(SM_SENDUSEITEMS);
		ROUTINE_MM_ENTRY(SM_CLEAROBJECTS);
		ROUTINE_MM_ENTRY(SM_CHANGEMAP);
		ROUTINE_MM_ENTRY(SM_HEALTHSPELLCHANGED);
		ROUTINE_MM_ENTRY(SM_NOWDEATH);
		ROUTINE_MM_ENTRY(SM_DEATH);
		ROUTINE_MM_ENTRY(SM_SENDMYMAGIC);
		ROUTINE_MM_ENTRY(SM_STRUCK);
		ROUTINE_MM_ENTRY(SM_DURACHANGE);
		ROUTINE_MM_ENTRY(SM_ADDITEM);
		ROUTINE_MM_ENTRY(SM_FEATURECHANGED);
		ROUTINE_MM_ENTRY(SM_CHANGELIGHT);
		ROUTINE_MM_ENTRY(SM_AREASTATE);
		ROUTINE_MM_ENTRY(SM_GOLDCHANGED);
		ROUTINE_MM_ENTRY(SM_READMINIMAP_OK);
		ROUTINE_MM_ENTRY(SM_READMINIMAP_FAIL);
		ROUTINE_MM_ENTRY(SM_ALIVE);
		ROUTINE_MM_ENTRY(SM_EAT_OK);
		ROUTINE_MM_ENTRY(SM_EAT_FAIL);
		ROUTINE_MM_ENTRY(SM_ITEMSHOW);
		ROUTINE_MM_ENTRY(SM_ITEMHIDE);
		ROUTINE_MM_ENTRY(SM_SENDGOODSLIST);
		ROUTINE_MM_ENTRY(SM_MERCHANTDLGCLOSE);
		ROUTINE_MM_ENTRY(SM_BUYITEM_SUCCESS);
		ROUTINE_MM_ENTRY(SM_WEIGHTCHANGED);
		ROUTINE_MM_ENTRY(SM_SENDDETAILGOODSLIST);
		ROUTINE_MM_ENTRY(SM_BUYITEM_FAIL);

		//
		ROUTINE_MM_ENTRY(SM_CHANGENAMECOLOR);
		ROUTINE_MM_ENTRY(SM_CHARSTATUSCHANGED);
		ROUTINE_MM_ENTRY(SM_SHOWEVENT);
		ROUTINE_MM_ENTRY(SM_HIDEEVENT);
		ROUTINE_MM_ENTRY(SM_DAYCHANGING);
		ROUTINE_MM_ENTRY(SM_CHECK_CLIENTVALID);
		ROUTINE_MM_ENTRY(SM_SUBABILITY);
		ROUTINE_MM_ENTRY(SM_ADJUST_BONUS);

		//忽略消息使用例子
		//IGNORE_MM_ENTRY(SM_CHANGENAMECOLOR);
*/
#ifndef PUBLIC_EDTION		
	default://打印出还未知协议
		m_FrameWnd.DebugOut("cmd=% 5u flag=% 8X w1=% 4X w2=% 4X w3=% 4X data=【%s】\r\n",
			msg.wCmd, msg.dwFlag, msg.w1, msg.w2, msg.w3, body);
		if(m_Self.ServerId!=0 && m_Self.ServerId==msg.dwFlag)
			m_FrameWnd.AddLog(crDebug,"**** cmd=% 5u flag=% 8X w1=% 4X w2=% 4X w3=% 4X data=【%s】\r\n",
			msg.wCmd, msg.dwFlag, msg.w1, msg.w2, msg.w3, body);
		break;
#endif
	}
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : RecvPassOKSelectServer
// 功能描述 : 开始_选择服务器
// 参数     : void
// 返回值   : NULL
/////////////////////////////////////////////////////////////////////////////
void CGameMir::RecvPassOKSelectServer(MMSG& msg, char* body)
{
	char servername[256];
	ZeroMemory(servername,sizeof(servername));
	fnDecode6BitBufA(body,servername,sizeof(servername));
	m_FrameWnd.AddLog(crMessage,"验证通过\r\n");
	m_FrameWnd.AddLog(crMessage,"Servers:%s\r\n",servername);

	SendSelectServer(m_ServerName.c_str());	
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : RecvPassWDFail
// 功能描述 : 开始_密码_失败
// 参数     : const MMSG& msg,const char* body
// 返回值   : NULL
/////////////////////////////////////////////////////////////////////////////
void CGameMir::RecvPassWDFail(MMSG& msg, char* body)
{
	Close();
	if(msg.dwFlag==0xffffffff)
	{
		m_FrameWnd.AddLog(crError,"密码错误!\r\n");
	}
	if(msg.dwFlag==0)
	{
		m_FrameWnd.AddLog(crError,"此用户不存在!\r\n");
	}
	if(msg.dwFlag==0xfffffffe)
	{
		m_FrameWnd.AddLog(crError,"三次密码错误,服务器拒绝!\r\n");
	}
	if(msg.dwFlag==0xfffffffd)
	{
		m_FrameWnd.AddLog(crError,"该用户正在使用中,可能被踢出服务器。\r\n");
		Sleep(5000);
		Login(m_ServerAddress,m_ServerName,m_ServerPort,m_Account,m_Password);
	}
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : RecvSelectSreverOK
// 功能描述 : 开始_选择服务器_成功
// 参数     : void 
// 返回值   : NULL
/////////////////////////////////////////////////////////////////////////////
void CGameMir::RecvSelectSreverOK(MMSG& msg, char* body)
{
	char seladdress[256];
	char *pszIP = seladdress, *pszPort, *pszIdenty;
	std::string SelAddress,strTmp;
	UINT SelPort;
	ZeroMemory(seladdress,sizeof(seladdress));
	fnDecode6BitBufA(body,seladdress,sizeof(seladdress));

	if (pszPort = strchr(seladdress, '/'))
	{
		*pszPort = '\0';
		pszPort++;

		if (pszIdenty = strchr(pszPort, '/'))
		{
			*pszIdenty = '\0';
			pszIdenty++;

			//strcpy(g_szServerIP, pszIP);
			SelAddress = pszIP;        //服务器地址
			SelPort    = atoi(pszPort);//端口
			m_SID      = pszIdenty;    //服务器返回的检定证明

			//g_nCertifyCode = tdm.nRecog;
		}
	}
/*
    ////////////////////////////////
	std::vector<std::string> sl;
	SplitString(seladdress,"/",sl);
	if ( sl.size() < 3 )
	{
		m_FrameWnd.AddLog(crError,"返回选人网关地址错误!\r\n");
		Close();
	}
	std::string SelAddress,strTmp;
	UINT SelPort;
	SelAddress=sl[0];
	strTmp=sl[1];
	SelPort=boost::lexical_cast<UINT>(strTmp);
	m_SID=sl[2];
	////////////////////////////////
*/
	Close();
	m_GameStage=GS_SEL;
	Create();
	//连接角色服务器
	Connect(SelAddress.c_str(),SelPort);

	m_FrameWnd.AddLog(crMessage,"\r\n");
	m_FrameWnd.AddLog(crMessage,"开始连接 选人网关 !\r\n");
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : RecvQueryChr
// 功能描述 : 角色-请求角色列表-成功
// 参数     : void
// 返回值   : NULL
/////////////////////////////////////////////////////////////////////////////
void CGameMir::RecvQueryChr(MMSG& msg, char* body)
{
	char charlist[256];
	ZeroMemory(charlist,sizeof(charlist));
	fnDecode6BitBufA(body,charlist,sizeof(charlist));
	std::string strTmp;
	m_FrameWnd.AddLog(crMessage,"得到角色列表(%d)\r\n",msg.w2);
	std::vector<std::string> sl;
	SplitString(charlist,"/",sl);
	int c=sl.size();
	bool HasChar=false;
	for(int i=4;i<c;i+=5)
	{
		strTmp=sl[i-4];
		if(strTmp[0]=='*')
		{
			strTmp=strTmp.substr(1);
		}
		if(m_CharName==strTmp || msg.w2==1)
		{
			m_CharName = strTmp;
			g_CharName = strTmp;
			HasChar=true;
			break;
		}
	}
	if(HasChar)
	{
		m_FrameWnd.AddLog(crMessage,"使用[%s]登陆游戏.\r\n",m_CharName.c_str());
		MMSG smsg;
		ZeroMemory(&smsg,sizeof(smsg));
		smsg.wCmd=0x67;
		SendMsg(smsg,(m_Account+"/"+m_CharName).c_str());
	}
	else
	{
		AfxMessageBox("需要选择角色",0);
	}
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : RecvQueryChrFail
// 功能描述 : 角色-请求角色列表-失败
// 参数     : void
// 返回值   : NULL
/////////////////////////////////////////////////////////////////////////////
void CGameMir::RecvQueryChrFail(MMSG& msg, char* body)
{
	m_FrameWnd.AddLog(crMessage,"得到角色列表失败\r\n");
}

/////////////////////////////////////////////////////////////////////////////
//发送协议给服务器

/////////////////////////////////////////////////////////////////////////////
//1.账号服务器

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendLogin
// 功能描述 : 账号-登录账号服务器
// 参数     : std::string uid, std::string passwd
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendLogin(std::string uid, std::string passwd)
{
	MMSG msg;
	ZeroMemory(&msg,sizeof(msg));

	m_FrameWnd.AddLog(crMessage,"登陆服务器连接成功!\r\n");
	msg.wCmd=CM_IDPASSWORD;
	SendMsg(msg,(m_Account+"/"+m_Password).c_str());
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 账号-
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendNewAccount()//(ue: TUserEntry; ua: TUserEntryAdd);
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 账号-
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendUpdateAccount()//(ue: TUserEntry; ua: TUserEntryAdd);
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendSelectServer
// 功能描述 : 账号-选择角色服务器
// 参数     : std::string svname
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendSelectServer(std::string svname)
{
	SendMsg(CM_SELECTSERVER,0,0,0,0,svname.c_str());
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendChgPw
// 功能描述 : 账号-
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendChgPw(std::string id, std::string passwd, std::string newpasswd)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
//2.角色服务器

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendNewChr
// 功能描述 : 角色-创建角色
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendNewChr(std::string uid, std::string uname, std::string shair, std::string sjob, std::string ssex)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendQueryChr
// 功能描述 : 发送--分析角色
// 参数     : void
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendQueryChr(void)
{
	MMSG msg;
	ZeroMemory(&msg,sizeof(msg));

	m_FrameWnd.AddLog(crMessage,"选人网关连接成功! 请求角色列表...\r\n");
	msg.wCmd=CM_QUERYCHR;
	SendMsg(msg,(m_Account+"/"+m_SID).c_str());
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendDelChr
// 功能描述 : 角色-删除角色
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendDelChr(std::string chrname)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendSelChr
// 功能描述 : 角色-选择角色
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendSelChr(std::string chrname)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
//3.登录游戏

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : SendRunLogin
// 功能描述 : 
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendRunLogin(void)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendQueryUserName(int targetid, int x, int y)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
//4.基本行动

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 基本--角色的移动操作
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendActMsg(int ident, int x, int y, int dir)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendButchAnimal(int x, int y, int dir, int actorid)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
//5.战斗行动

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 战斗--使用技能操作
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendSpellMsg(int ident, int x, int y, int dir, int target)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
//6.角色状态

/////////////////////////////////////////////////////////////////////////////
//7.物品道具

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 
// 参数     : 
// 返回值   : void
/////////////////////////////////////////////////////////////////////////////
void CGameMir::SendDropItem(std::string name, int itemserverindex)
{
	//
}

/////////////////////////////////////////////////////////////////////////////
// 函数名字 : 
// 功能描述 : 
// 参数     : 

⌨️ 快捷键说明

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