📄 gmcmdmanager.cpp
字号:
int m_iRange;
Player * m_pAttackPlayer;
public:
DestroyMonsterAroundEx( WzVector &vOriginPos, int iRange, Player * pPlayer ):m_pAttackPlayer(pPlayer) { m_vOriginPos = vOriginPos; m_iRange = iRange; }
~DestroyMonsterAroundEx(){}
void operator() ( NPC * pNPC)
{
Field *pField = pNPC->GetField();
if( !pField ) return;
WzVector vNPCPos;
pNPC->GetPos( &vNPCPos );
float fDist = VectorLength( &(vNPCPos - m_vOriginPos) );
if( fDist <= m_iRange )
{
DAMAGETYPE wDamage = (DAMAGETYPE)pNPC->GetMaxHP();
// 单固瘤 贸府
// pNPC->Damaged( m_pAttackPlayer, eATTACK_TYPE_MELEE, wDamage );
// 阁胶磐 力芭甫 荤侩秦辑 飘府芭甫 柳青窍扁 困秦 bIsDrop阑 TRUE肺 悸泼茄促.
pField->KillNPC( m_pAttackPlayer, pNPC, TRUE );
// 磊脚阑 器窃茄 牢立 敲饭捞绢俊霸 宏肺靛 某胶飘
MSG_CG_BATTLE_PLAYER_ATTACK_BRD sendMsg;
sendMsg.dwClientSerial = 0;
sendMsg.wvCurPos = m_vOriginPos;
sendMsg.wvDestPos = vNPCPos;
sendMsg.dwAttackerKey = m_pAttackPlayer->GetObjectKey();
sendMsg.byAttackType = eATTACK_SEQUENCE_FIRST;
sendMsg.dwTargetKey = pNPC->GetObjectKey();
sendMsg.wDamage = wDamage;
sendMsg.dwTargetHP = pNPC->GetHP();
sendMsg.byEffect = 0; // GM疙飞绢肺 磷捞绰 巴捞瘤父 捞 蔼俊 措茄 技泼阑 秦林绢具 窃!!(20060115)
m_pAttackPlayer->SendPacketAround( (MSG_BASE_FORWARD*)&sendMsg, sizeof(sendMsg) );
}
}
};
//阁胶磐 力芭
bool GMCmdManager::ProcessRemovalMonster( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 1 )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
Field* pField = pPlayer->GetField();
if( !pField )
return false;
WzVector vPlayerPos;
pPlayer->GetPos( &vPlayerPos );
// 馆版 15m 郴狼 阁胶磐甸阑 昏力茄促.
DestroyMonsterAroundEx DestroyMonsterOpr( vPlayerPos, 15, pPlayer );
pField->ForeachNeighborNPCAt( pPlayer->GetSectorIndex(), DestroyMonsterOpr );
return true;
}
//力芭
//荤侩过 : //力芭 [措惑阁胶磐虐]
bool GMCmdManager::ProcessRemoval( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 2 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
DWORD dwMonsterKey = atoi( vecCmd[1].c_str() );
//2. User Check
Field* pField = pPlayer->GetField();
if( !pField )
return false;
NPC* pMonster = (NPC*)pField->FindCharacter( dwMonsterKey );
if( !pMonster )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
//Field 俊 npc 窍唱父 瘤快绰 纳腐磐 父甸巴...
pField->KillNPC(pPlayer, pMonster, FALSE);
return true;
}
//懦
bool GMCmdManager::ProcessKill( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 2 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
//2. User Check
Field* pField = pPlayer->GetField();
if( !pField )
return false;
DWORD dwMonsterKey = atoi( vecCmd[1].c_str() );
NPC* pMonster = (NPC*)pField->FindCharacter( dwMonsterKey );
if( !pMonster )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
//Field 俊 npc 窍唱父 瘤快绰 纳腐磐 父甸巴...
pField->KillNPC(pPlayer, pMonster, TRUE);
return true;
}
//酒捞袍 积己
bool GMCmdManager::ProcessCreateItem( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
Field* pField = pPlayer->GetField();
if( !pField )
return false;
if( vecCmd.size() != 3 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
int nItemCode = atoi( vecCmd[1].c_str() );
int nItemCount = atoi( vecCmd[2].c_str() );
if( nItemCount > GM_MAX_CREATE_ITEM_NUM || nItemCount <= 0 )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
if( !ItemInfoParser::Instance()->GetItemInfo( nItemCode ) )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
// 俺荐父怒 酒捞袍阑 鞘靛俊 冻绢哆赴促.
for( int i = 0; i < nItemCount; ++i )
{
WzVector vDropPos = pPlayer->GetRandomPosInAround(2);
SCItemSlot slot;
slot.SetCode( nItemCode );
g_DropManager.DropItemToField( pField, &vDropPos, NULL, 0, slot );
}
return true;
}
//窍烙 积己
bool GMCmdManager::ProcessCreateHime( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
Field* pField = pPlayer->GetField();
if( !pField )
return false;
if( vecCmd.size() != 2 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
int nMoney = atoi( vecCmd[1].c_str() );
if( nMoney > GM_MAX_CREATE_MONEY || nMoney <= 0 )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
// 冻绢哆副 困摹甫 茫绰促.
WzVector vDropPos = pPlayer->GetRandomPosInAround(2);
// 捣阑 冻绢哆赴促.
MONEY money = (MONEY)nMoney;
g_DropManager.DropMoneyToField( pField, &vDropPos, NULL, 0, money );
return true;
}
//饭骇诀
bool GMCmdManager::ProcessLevelUp( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 2 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
int nPlusLevel = atoi( vecCmd[1].c_str() );
int nLevel = pPlayer->GetLevel() + nPlusLevel;
if( nLevel > MAX_LEVEL || nLevel < 0 )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
pPlayer->LevelUp( nPlusLevel );
return true;
}
//立加辆丰
bool GMCmdManager::ProcessDisConnect( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 1 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
//2. User Check
Field* pField = pPlayer->GetField();
if( !pField )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
if( vecCmd.size() > 2 || vecCmd.size() <= 0 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
DWORD dwUserKey = atoi( vecCmd[1].c_str() );
Player* pUser = (Player*)pField->FindCharacter( dwUserKey );
if( !pUser )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
//碍力辆丰
pUser->ForceDisconnect(GM_FORCE_DISCONNECT);
return true;
}
//何劝
bool GMCmdManager::ProcessRebirth( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 1 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
if( pPlayer->OnResurrection( 0, 1.0f, 1.0f ) )
{
// 林困俊 何劝阑 舅妨林磊.
WzVector curPos;
pPlayer->GetPos(&curPos);
MSG_CG_GM_RESURRECTION_BRD sendMsg;
sendMsg.m_dwObjectKey = pPlayer->GetObjectKey();
sendMsg.m_dwHP = pPlayer->GetHP();
sendMsg.m_dwMP = pPlayer->GetMP();
sendMsg.m_wvCurPos = curPos;
pPlayer->SendPacketAround( &sendMsg, sizeof(sendMsg) );
}
else
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_CANNOT_RESURRECTION; //何劝且荐 绝澜..
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
return true;
}
//雀汗
bool GMCmdManager::ProcessRecovery( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 1 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
DWORD dwMaxHP = pPlayer->GetMaxHP();
DWORD dwMaxMP = pPlayer->GetMaxMP();
if( !pPlayer->OnRecover( dwMaxHP, dwMaxMP ) ) //Recover窃荐 郴何俊 BRD 菩哦捞 乐促.. 蝶肺 焊尘 鞘夸 绝促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_CANNOT_RESURRECTION; // 雀汗 角菩
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
return true;
}
//阁胶磐 家券
bool GMCmdManager::ProcessCreateMonster( DWORD dwPlayerKey, vector<string>& vecCmd )
{
Player* pPlayer = GetGMPlayer( dwPlayerKey );
if( !pPlayer )
return false;
if( vecCmd.size() != 3 ) //牢磊 炼扒捞 嘎瘤 臼嚼聪促.
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
Field* pField = pPlayer->GetField();
if( NULL == pField )
{
// GM篮 霸烙郴 鞘靛救俊 甸绢客辑 疙飞阑 且 版快父 阁胶磐甫 积己秦临 抗沥!!
return false;
}
int nMonsterCode = atoi( vecCmd[1].c_str() );
int nMonsterCount = atoi( vecCmd[2].c_str() );
if( nMonsterCount <= 0 )
return false;
WzVector vPlayerPos;
pPlayer->GetPos( &vPlayerPos );
// 敲饭捞绢啊 困摹茄 鸥老困俊辑 罚待茄 困摹俊 阁胶磐 积己(20050624)
int iTileIdx = pPlayer->GetPathExplorer()->GetTile();
if( -1 == iTileIdx )
{
//DISPMSG( "[OnCG_GM_MONSTER_CREATE_SYN] Player Position : TileIdx -1 !!!");
return false;
}
vPlayerPos = pField->GetFieldInfo()->GetWorldBase()->GetRandomPosInTile(iTileIdx);
if( !pField->CreateNPC( MONSTER_OBJECT, nMonsterCode, nMonsterCount, &vPlayerPos) )
{
MSG_CG_GM_STRING_CMD_NAK NakMsg;
NakMsg.m_byErrorCode = RC::RC_GM_INVALID_ARGUMENT; // 牢磊啊 嘎瘤 臼嚼聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return false;
}
return true;
}
// 林函 鞘靛 酒捞袍甸阑 昏力
class DestroyItemAroundEx
{
WzVector m_vOriginPos;
int m_iRange;
public:
DestroyItemAroundEx( WzVector &vOriginPos, int iRange ) { m_vOriginPos = vOriginPos; m_iRange = iRange; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -