📄 mapnetworkmsgparser.cpp
字号:
ICONMNGR->MoveIconToPyoguk(pPlayer, pmsg);
}
break;
case MP_ITEM_PYOGUK_INFO_SYN:
{
MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
CPlayer * pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(pPlayer == NULL)
return;
ICONMNGR->SendPyogukItemInfo(pmsg->bData, pPlayer);
}
break;
default:
break;
} */
}
void MP_MUGONGMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
MSGBASE* pTempMsg = (MSGBASE*)pMsg;
MUGONGMNGR->NetworkMsgParse(pTempMsg->Protocol, pMsg);
/*
MSGBASE* pTempMsg = (MSGBASE*)pMsg;
switch(pTempMsg->Protocol)
{
case MP_MUGONG_MOVE_SYN:
{
MSG_MUGONG_MOVEINFO * msg = (MSG_MUGONG_MOVEINFO *)pMsg;
CPlayer * player = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
MUGONGMGR_OBJ->MoveMugong(player, msg);
}
break;
case MP_MUGONG_ADD_SYN:
{
MSG_MUGONG_ADD * msg = (MSG_MUGONG_ADD *)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pPlayer == NULL)
return;
MUGONGMGR_OBJ->AddMugong(pPlayer, msg);
}
break;
case MP_MUGONG_REM_SYN:
{
MSG_MUGONG_REM_SYN * msg = (MSG_MUGONG_REM_SYN *)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pPlayer == NULL)
return;
MUGONGMGR_OBJ->RemMugong(pPlayer, msg);
}
break;
case MP_MUGONG_DELETEGROUNDADD_SYN:
{
}
break;
case MP_MUGONG_DELETEINVENTORYADD_SYN:
{
MSG_MUGONG_DELINVADD_SYN * msg = (MSG_MUGONG_DELINVADD_SYN *)pMsg;
// MUGONG DEL
// INVENTORY ADD
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(msg->dwObjectID);
if(pPlayer == NULL)
return;
MUGONGMGR_OBJ->AddMugongInInventory(pPlayer, msg); // include DB
}
break;
default:
break;
} */
}
void MP_CHEATMsgParser(DWORD dwConnectionIndex, char* pMsg, DWORD dwLength)
{
MSGBASE* pTempMsg = (MSGBASE*)pMsg;
CPlayer* pSender = (CPlayer*)g_pUserTable->FindUser( pTempMsg->dwObjectID );
if(pSender)
{
if( pSender->GetUserLevel() > 5 )
{
char buf[64];
sprintf(buf, "User Lvl Chk! Character_idx : %d", pTempMsg->dwObjectID);
ASSERTMSG(0, buf);
return;
}
}
switch(pTempMsg->Protocol)
{
case MP_CHEAT_WHEREIS_SYN:
{
MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
CPlayer* pSearcher = (CPlayer*)g_pUserTable->FindUser( pmsg->dwObjectID );
CPlayer* pTarget = (CPlayer*)g_pUserTable->FindUser( pmsg->dwData );
if( !pTarget )
{
MSG_BYTE msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_WHEREIS_NACK;
msg.dwObjectID = pmsg->dwObjectID;
msg.bData = CHATERR_ERROR;
if( pSearcher )
pSearcher->SendMsg( &msg, sizeof( msg ) );
else
g_Network.Send2Server( dwConnectionIndex, (char*)&msg, sizeof(msg) );
return;
}
MSG_WHERE_INFO msgWhere;
msgWhere.Category = MP_CHEAT;
msgWhere.Protocol = MP_CHEAT_WHEREIS_MAPSERVER_ACK;
msgWhere.dwObjectID = pmsg->dwObjectID;
msgWhere.wMapNum = g_pServerSystem->GetMapNum();
msgWhere.bChannel = pTarget->GetGridID();
VECTOR3 TargetPos = *CCharMove::GetPosition(pTarget);
msgWhere.cpos.Compress(&TargetPos);
if( pSearcher )
pSearcher->SendMsg( &msgWhere, sizeof( msgWhere ) );
else
g_Network.Send2Server( dwConnectionIndex, (char*)&msgWhere, sizeof( msgWhere ) );
}
break;
case MP_CHEAT_HIDE_SYN:
{
MSG_NAME_DWORD* pmsg = (MSG_NAME_DWORD*)pMsg;
// CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
// if(pPlayer == NULL)
// return;
CPlayer* pPlayer;
if( pmsg->Name[0] == 0 ) //hero
pPlayer = (CPlayer*)g_pUserTable->FindUser( pmsg->dwObjectID );
else
pPlayer = (CPlayer*)g_pUserTable->FindUserForName( pmsg->Name );
if( !pPlayer ) return;
if( pmsg->dwData == 1 )
pPlayer->SetVisible(FALSE);
else
pPlayer->SetVisible(TRUE);
MSG_DWORD2 msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_HIDE_ACK;
msg.dwObjectID = pPlayer->GetID();
msg.dwData1 = pPlayer->GetID();
msg.dwData2 = pmsg->dwData;
PACKEDDATA_OBJ->QuickSend( pPlayer, &msg, sizeof(MSG_DWORD2) );
}
break;
// case MP_CHEAT_BANCHARACTER_SYN:
// {
// MSG_NAME* pmsg = (MSG_NAME*)pMsg;
// CPlayer* pPlayer = g_pUserTable->FindUser(pmsg->dwObjectID);
// if(!pPlayer) break;
// CPlayer* pBanPlayer =
// }
// break;
case MP_CHEAT_PKALLOW_SYN:
{
MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
BOOL bAllow = (BOOL)pmsg->wData2;
PKMGR->SetPKAllowWithMsg( bAllow );
}
break;
case MP_CHEAT_MOVETOCHAR_SYN:
{
MSG_NAME_DWORD* pmsg = (MSG_NAME_DWORD*)pMsg;
CObject* pPlayer = g_pUserTable->FindUser( pmsg->dwObjectID );
if( !pPlayer ) return;
CObject* pTarget = g_pUserTable->FindUserForName( pmsg->Name );
if( !pTarget ) return;
VECTOR3 TargetPos;
MOVE_POS msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_MOVE_ACK;
if( pmsg->dwData == 0 )
{
TargetPos = *CCharMove::GetPosition(pTarget);
CCharMove::SetPosition( pPlayer,&TargetPos);
msg.cpos.Compress(&TargetPos);
((CPlayer*)pPlayer)->SendMsg( &msg, sizeof(msg) );
}
else
{
TargetPos = *CCharMove::GetPosition(pPlayer);
CCharMove::SetPosition( pTarget,&TargetPos);
msg.cpos.Compress(&TargetPos);
((CPlayer*)pTarget)->SendMsg( &msg, sizeof(msg) );
//弊府靛俊父 焊郴搁 登绰啊?
}
/*
MOVE_POS* pmsg = (MOVE_POS*)pMsg;
VECTOR3 pos;
CObject* pObject = g_pUserTable->FindUser(pmsg->dwObjectID);
if(pObject == NULL)
return;
CObject* pTargetObject = g_pUserTable->FindUser(pmsg->dwMoverID); // targetID
if(pTargetObject == NULL)
return;
VECTOR3 TargetPos = *CCharMove::GetPosition(pTargetObject);
CCharMove::SetPosition(pObject,&TargetPos);
pmsg->cpos.Compress(&TargetPos);
pmsg->Protocol = MP_CHEAT_MOVE_ACK;
((CPlayer*)pObject)->SendMsg(pmsg,sizeof(MOVE_POS));
*/
}
break;
case MP_CHEAT_MOVE_SYN:
{
MOVE_POS* pmsg = (MOVE_POS*)pMsg;
CObject* pObject = g_pUserTable->FindUser(pmsg->dwMoverID);
if(pObject == NULL)
return;
VECTOR3 pos;
pmsg->cpos.Decompress(&pos);
ASSERTVALID_POSITION(pos);
if(CheckValidPosition(pos) == FALSE)
{
return;
}
CCharMove::SetPosition(pObject,&pos);
pmsg->Protocol = MP_CHEAT_MOVE_ACK;
((CPlayer*)pObject)->SendMsg(pmsg,sizeof(MOVE_POS));
}
break;
case MP_CHEAT_MOVEUSER_SYN:
{
MOVE_POS_USER* pmsg = (MOVE_POS_USER*)pMsg;
CObject* pObject = g_pUserTable->FindUserForName(pmsg->Name);
if(pObject == NULL)
return;
VECTOR3 pos;
pmsg->cpos.Decompress(&pos);
CCharMove::SetPosition(pObject,&pos);
MOVE_POS posMsg;
posMsg.Category = MP_CHEAT;
posMsg.Protocol = MP_CHEAT_MOVE_ACK;
posMsg.cpos.Compress(&pos);
((CPlayer*)pObject)->SendMsg(&posMsg,sizeof(posMsg));
//郴 弊府靛俊父 焊辰促?
}
break;
case MP_CHEAT_CHANGEMAP_SYN:
{
/* MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
pmsg->Protocol = MP_CHEAT_CHANGEMAP_ACK;
pPlayer->SendMsg(pmsg,sizeof(MSG_WORD));
*/
MSG_NAME_DWORD2* pmsg = (MSG_NAME_DWORD2*)pMsg;
CPlayer* pPlayer;
if( pmsg->Name[0] == 0 )
pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
else
pPlayer = (CPlayer*)g_pUserTable->FindUserForName(pmsg->Name);
if(pPlayer == NULL)
return;
if( CHANNELSYSTEM->GetChannelID( pmsg->dwData2 ) == 0 )
{
MSG_DWORD msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_CHANGEMAP_NACK;
msg.dwData = pPlayer->GetGridID() - 1;
pPlayer->SendMsg( &msg, sizeof( msg ) );
return;
}
MAPCHANGE_INFO* ChangeInfo = GAMERESRCMNGR->GetMapChangeInfoForDestMapNum( (WORD)pmsg->dwData1 );
if( !ChangeInfo ) return; //nackif( !ChangeInfo ) return; //nack
SaveMapChangePointUpdate( pPlayer->GetID(), ChangeInfo->Kind );
g_pServerSystem->RemovePlayer( pPlayer->GetID() );
MSG_DWORD msg;
msg.Category = MP_USERCONN;
msg.Protocol = MP_USERCONN_MAP_OUT_WITHMAPNUM;
msg.dwObjectID = pPlayer->GetID();
msg.dwData = pmsg->dwData1;
g_Network.Broadcast2AgentServer( (char*)&msg, sizeof(msg));
}
break;
case MP_CHEAT_LIFE_SYN:
{
}
break;
case MP_CHEAT_MP_SYN:
{
}
break;
case MP_CHEAT_ITEM_SYN:
{
MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer) return;
if(ITEMMGR->GetItemInfo(pmsg->wData1))
ITEMMGR->CheatObtainItem( pPlayer, pmsg->wData1, pmsg->wData2 );
// if(ITEMMGR->MonsterObtainItem(pPlayer, pmsg->wData1, 0) == 0)
// {
//if(pPlayer->GetPartyIdx())
//{
// PARTYMGR->SendObtainItemMsg(pPlayer, pmsg->wData);
//}
// }
}
break;
case MP_CHEAT_MANA_SYN:
{
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer) return;
int tmp = pPlayer->GetMaxNaeRyuk() - (pPlayer->GetNaeRyuk()+pmsg->wData);
if(tmp < 0)
pPlayer->SetNaeRyuk(pPlayer->GetMaxNaeRyuk());
else
pPlayer->SetNaeRyuk(pPlayer->GetNaeRyuk()+pmsg->wData);
}
break;
case MP_CHEAT_ADDMUGONG_SYN:
{
MSG_WORD3* pmsg = (MSG_WORD3*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer) return;
MUGONGBASE* info = pPlayer->GetMugongBaseByMugongIdx(pmsg->wData1);
if(info != NULL)
return;
MSGBASE msg;
msg.Category = MP_CHEAT;
if( MUGONGMNGR->AddMugong(pPlayer, pmsg->wData1, pmsg->wData2) )
{
msg.Protocol = MP_CHEAT_ADDMUGONG_ACK;
LogCheat(pPlayer->GetID(),eCHT_AddMugong,pmsg->wData2,pmsg->wData1,0);
}
else
{
msg.Protocol = MP_CHEAT_ADDMUGONG_NACK;
}
pPlayer->SendMsg( &msg, sizeof(msg) );
}
break;
case MP_CHEAT_MUGONGSUNG_SYN:
{
MSG_WORD2* pmsg = (MSG_WORD2*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer) return;
MUGONGBASE* info = pPlayer->GetMugongBaseByMugongIdx(pmsg->wData1);
if(info == NULL)
return;
pPlayer->SetPlayerMugongSung(info->Position,(BYTE)pmsg->wData2,eLog_MugongCheatLevelup);
LogCheat(pPlayer->GetID(),eCHT_MugongSung,pmsg->wData2,pmsg->wData1,0);
info->ExpPoint = 0;
MSG_MUGONGEXP msg;
msg.Category = MP_MUGONG;
msg.Protocol = MP_MUGONG_EXPPOINT_NOTIFY;
msg.absPos = info->Position;
msg.ExpPoint = info->ExpPoint;
pPlayer->SendMsg(&msg,sizeof(msg));
if(info->Sung == 6 || info->Sung == 11)
{
CSkillInfo* pSkillInfo = SKILLMGR->GetSkillInfo(info->wIconIdx);
if(pSkillInfo == NULL)
return;
pPlayer->AddExpPointToMugong(info->wIconIdx,pSkillInfo->GetNeedExp(info->Sung),FALSE);
}
}
break;
case MP_CHEAT_MONEY_SYN:
{
MSG_DWORD* pmsg = (MSG_DWORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer) return;
if( pPlayer->GetMoney() > pmsg->dwData )
pPlayer->SetMoney(pPlayer->GetMoney() - pmsg->dwData, MONEY_SUBTRACTION, 0, eItemTable_Inventory, eMoneyLog_GetCheatMoney, 0);
else if( pPlayer->GetMoney() < pmsg->dwData )
pPlayer->SetMoney(pmsg->dwData - pPlayer->GetMoney(), MONEY_ADDITION, 0, eItemTable_Inventory, eMoneyLog_GetCheatMoney, 0);
LogCheat(pPlayer->GetID(),eCHT_Money,pmsg->dwData,0,0);
}
break;
case MP_CHEAT_RELOADING:
{
g_pServerSystem->ReloadResourceData();
}
break;
case MP_CHEAT_LEVELUP_SYN:
{
MSG_WORD* pmsg = (MSG_WORD*)pMsg;
CPlayer* pPlayer = (CPlayer *)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
EXPTYPE pointForLevel=0;
LEVELTYPE curlvl = pPlayer->GetLevel();
if(curlvl > pmsg->wData)
return;
else
{
LEVELTYPE diff = pmsg->wData - curlvl;
for(LEVELTYPE i=0; i<diff; ++i)
{
pointForLevel = pointForLevel + GAMERESRCMNGR->GetMaxExpPoint(pPlayer->GetLevel()+i);
}
pPlayer->SetLevel(pmsg->wData-1);
pPlayer->SetPlayerExpPoint(pointForLevel);
pPlayer->SetPlayerExpPoint(1);
// YH
CharacterHeroInfoUpdate(pPlayer);
CharacterTotalInfoUpdate(pPlayer);
LogCheat(pPlayer->GetID(),eCHT_LevelUp,pmsg->wData,0,0);
}
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -