From 7f98cddfdf7ca26186859176fcc3f056e7fb38b8 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Thu, 27 Oct 2016 17:41:48 +0300 Subject: [PATCH] Don't send animation packets from blacklisted scripts --- apps/openmw/engine.cpp | 2 +- apps/openmw/mwscript/animationextensions.cpp | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 14821c219..b6c9ae8a1 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -78,7 +78,7 @@ void OMW::Engine::executeLocalScripts() MWScript::InterpreterContext interpreterContext ( &script.second.getRefData().getLocals(), script.second); - // Added by tes3mp + // Added by tes3mp to check and set whether packets should be sent about this script if (mwmp::Main::isValidPacketScript(script.first)) { interpreterContext.sendPackets = true; diff --git a/apps/openmw/mwscript/animationextensions.cpp b/apps/openmw/mwscript/animationextensions.cpp index 3a800bed6..b8ea6b248 100644 --- a/apps/openmw/mwscript/animationextensions.cpp +++ b/apps/openmw/mwscript/animationextensions.cpp @@ -6,6 +6,7 @@ #include #include "../mwmp/Main.hpp" #include "../mwworld/cellstore.hpp" +#include "../mwworld/class.hpp" #include #include @@ -60,14 +61,17 @@ namespace MWScript throw std::runtime_error ("animation mode out of range"); } - // Added by tes3mp - mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent(); - event->cell = *ptr.getCell()->getCell(); - event->cellRef.mRefID = ptr.getCellRef().getRefId(); - event->cellRef.mRefNum = ptr.getCellRef().getRefNum(); - event->animGroup = group; - event->animMode = mode; - mwmp::Main::get().getNetworking()->GetWorldPacket(ID_OBJECT_ANIM_PLAY)->Send(event); + // Added by tes3mp to check and set whether packets should be sent about this script + if (mwmp::Main::isValidPacketScript(ptr.getClass().getScript(ptr))) + { + mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent(); + event->cell = *ptr.getCell()->getCell(); + event->cellRef.mRefID = ptr.getCellRef().getRefId(); + event->cellRef.mRefNum = ptr.getCellRef().getRefNum(); + event->animGroup = group; + event->animMode = mode; + mwmp::Main::get().getNetworking()->GetWorldPacket(ID_OBJECT_ANIM_PLAY)->Send(event); + } MWBase::Environment::get().getMechanicsManager()->playAnimationGroup (ptr, group, mode, std::numeric_limits::max(), true); }