From 02487dce130094260d617dbc8ed2c5500239e5a9 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Mon, 27 Feb 2017 01:45:27 +0200 Subject: [PATCH] [Client] Prevent invalid race used by other player from freezing client --- apps/openmw/mwmp/DedicatedPlayer.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwmp/DedicatedPlayer.cpp b/apps/openmw/mwmp/DedicatedPlayer.cpp index ddaa08315..ff3476931 100644 --- a/apps/openmw/mwmp/DedicatedPlayer.cpp +++ b/apps/openmw/mwmp/DedicatedPlayer.cpp @@ -53,7 +53,7 @@ MWWorld::Ptr DedicatedPlayer::getPtr() void Players::createPlayer(RakNet::RakNetGUID guid) { - LOG_APPEND(Log::LOG_INFO, "%s", "- Setting up character info"); + LOG_APPEND(Log::LOG_INFO, "- Setting up character info"); MWBase::World *world = MWBase::Environment::get().getWorld(); MWWorld::Ptr player = world->getPlayerPtr(); @@ -61,7 +61,11 @@ void Players::createPlayer(RakNet::RakNetGUID guid) ESM::NPC npc = *player.get()->mBase; DedicatedPlayer *dedicPlayer = players[guid]; - npc.mRace = dedicPlayer->npc.mRace; + // To avoid freezes caused by invalid races, only set race if we find it + // on our client + if (world->getStore().get().search(dedicPlayer->npc.mRace) != 0) + npc.mRace = dedicPlayer->npc.mRace; + npc.mHead = dedicPlayer->npc.mHead; npc.mHair = dedicPlayer->npc.mHair; npc.mClass = dedicPlayer->npc.mClass;