From d2a8e5dc165e07a7bb95e8dd98b7c7646cead699 Mon Sep 17 00:00:00 2001 From: JeidoUran Date: Sat, 5 Jan 2019 14:50:16 +0100 Subject: [PATCH] Several GM Commands no longer crashes world.exe if used while a bnpc or an eobj is in range --- .../Network/Handlers/GMCommandHandlers.cpp | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/world/Network/Handlers/GMCommandHandlers.cpp b/src/world/Network/Handlers/GMCommandHandlers.cpp index 2cbb3543..d2c07be3 100644 --- a/src/world/Network/Handlers/GMCommandHandlers.cpp +++ b/src/world/Network/Handlers/GMCommandHandlers.cpp @@ -143,9 +143,11 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, auto inRange = targetPlayer->getInRangeActors(); for( auto actor : inRange ) { - targetPlayer->despawn( actor->getAsPlayer() ); - targetPlayer->spawn( actor->getAsPlayer() ); - } + if( actor->isPlayer() ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } break; } case GmCommand::Tribe: @@ -156,8 +158,11 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, auto inRange = targetPlayer->getInRangeActors(); for( auto actor : inRange ) { - targetPlayer->despawn( actor->getAsPlayer() ); - targetPlayer->spawn( actor->getAsPlayer() ); + if( actor->isPlayer() ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } } break; } @@ -169,8 +174,11 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, auto inRange = targetActor->getInRangeActors(); for( auto actor : inRange ) { - targetPlayer->despawn( actor->getAsPlayer() ); - targetPlayer->spawn( actor->getAsPlayer() ); + if( actor->isPlayer() ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } } break; } @@ -223,8 +231,11 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, for( auto actor : player.getInRangeActors() ) { - player.despawn( actor->getAsPlayer() ); - player.spawn( actor->getAsPlayer() ); + if( actor->isPlayer() ) + { + targetPlayer->despawn( actor->getAsPlayer() ); + targetPlayer->spawn( actor->getAsPlayer() ); + } } break; }