📄 gamemir.cpp
字号:
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 + -