Playerbots : opcodes manquants sur les paquets de sortie de champ de bataille
ProcessLeaveBG et ProcessLeaveAA construisaient BattlefieldLeave a partir dun WorldPacket() par defaut (opcode 65535), et ProcessInAAQueue passait CMSG_BATTLEMASTER_JOIN_SKIRMISH a BattlemasterJoinArena. Le constructeur de ClientPacket asserte GetOpcode() == expectedOpcode : le thread monde mourait des quun bot devait quitter un champ de bataille (fin de match ou depart dun vrai joueur), laissant le processus fige et les joueurs bloques a lecran de chargement. Signale sur le Discord avec une pile gdb par un utilisateur du core. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -545,7 +545,8 @@ bool PlayerBotSession::ProcessLeaveBG(BotGlobleSchedule& schedule)
|
|||||||
|
|
||||||
PlayerBotMgr::SwitchPlayerBotAI(player, PlayerBotAIType::PBAIT_FIELD, true);
|
PlayerBotMgr::SwitchPlayerBotAI(player, PlayerBotAIType::PBAIT_FIELD, true);
|
||||||
|
|
||||||
WorldPackets::Battleground::BattlefieldLeave leave(std::move(WorldPacket()));
|
WorldPacket opcode(CMSG_BATTLEFIELD_LEAVE);
|
||||||
|
WorldPackets::Battleground::BattlefieldLeave leave(std::move(opcode));
|
||||||
HandleBattlefieldLeaveOpcode(leave);
|
HandleBattlefieldLeaveOpcode(leave);
|
||||||
//HandleWorldPortAck();
|
//HandleWorldPortAck();
|
||||||
return false;
|
return false;
|
||||||
@@ -571,7 +572,7 @@ bool PlayerBotSession::ProcessInAAQueue(BotGlobleSchedule& schedule)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldPacket packet(CMSG_BATTLEMASTER_JOIN_SKIRMISH);
|
WorldPacket packet(CMSG_BATTLEMASTER_JOIN_ARENA);
|
||||||
WorldPackets::Battleground::BattlemasterJoinArena cmd(std::move(packet));
|
WorldPackets::Battleground::BattlemasterJoinArena cmd(std::move(packet));
|
||||||
//cmd.RolesMask = schedule.parameter1;
|
//cmd.RolesMask = schedule.parameter1;
|
||||||
//cmd.Bracket = schedule.parameter2;
|
//cmd.Bracket = schedule.parameter2;
|
||||||
@@ -688,7 +689,8 @@ bool PlayerBotSession::ProcessLeaveAA(BotGlobleSchedule& schedule)
|
|||||||
//opcode << un16;
|
//opcode << un16;
|
||||||
//HandleBattlefieldLeaveOpcode(opcode);
|
//HandleBattlefieldLeaveOpcode(opcode);
|
||||||
//HandleMoveWorldportAckOpcode();
|
//HandleMoveWorldportAckOpcode();
|
||||||
WorldPackets::Battleground::BattlefieldLeave leave(std::move(WorldPacket()));
|
WorldPacket opcode(CMSG_BATTLEFIELD_LEAVE);
|
||||||
|
WorldPackets::Battleground::BattlefieldLeave leave(std::move(opcode));
|
||||||
HandleBattlefieldLeaveOpcode(leave);
|
HandleBattlefieldLeaveOpcode(leave);
|
||||||
//HandleWorldPortAck();
|
//HandleWorldPortAck();
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user