forked from teamnwah/openmw-tes3coop
Send WorldPackets with script values from MWScript::InterpreterContext
This commit is contained in:
parent
97468980af
commit
749c6db49e
1 changed files with 54 additions and 2 deletions
|
@ -10,6 +10,9 @@
|
|||
|
||||
#include <components/esm/cellid.hpp>
|
||||
|
||||
#include <components/openmw-mp/Base/WorldEvent.hpp>
|
||||
#include "../mwmp/Main.hpp"
|
||||
|
||||
#include "../mwworld/esmstore.hpp"
|
||||
|
||||
#include "../mwbase/environment.hpp"
|
||||
|
@ -178,9 +181,24 @@ namespace MWScript
|
|||
|
||||
mLocals->mShorts.at (index) = value;
|
||||
|
||||
// Added by tes3mp
|
||||
if (sendPackets)
|
||||
printf("Sending ID_SCRIPT_LOCAL_SHORT for %s\n",
|
||||
this->mReference.getClass().getScript(mReference));
|
||||
{
|
||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||
event->cell = *mReference.getCell()->getCell();
|
||||
event->cellRef.mRefID = mReference.getCellRef().getRefId();
|
||||
event->cellRef.mRefNum = mReference.getCellRef().getRefNum();
|
||||
event->index = index;
|
||||
event->shortVal = value;
|
||||
mwmp::Main::get().getNetworking()->GetWorldPacket(ID_SCRIPT_LOCAL_SHORT)->Send(event);
|
||||
|
||||
printf("Sending ID_SCRIPT_LOCAL_SHORT\n- cellRef: %s, %i\n- cell: %s\n- index: %i\n- shortVal: %i\n",
|
||||
event->cellRef.mRefID.c_str(),
|
||||
event->cellRef.mRefNum.mIndex,
|
||||
event->cell.getDescription().c_str(),
|
||||
event->index,
|
||||
event->shortVal);
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterContext::setLocalLong (int index, int value)
|
||||
|
@ -197,6 +215,27 @@ namespace MWScript
|
|||
throw std::runtime_error ("local variables not available in this context");
|
||||
|
||||
mLocals->mFloats.at (index) = value;
|
||||
|
||||
// Added by tes3mp
|
||||
//
|
||||
// Only send a packet if this float has no decimals (to avoid spam)
|
||||
if (sendPackets && value == (int) value)
|
||||
{
|
||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||
event->cell = *mReference.getCell()->getCell();
|
||||
event->cellRef.mRefID = mReference.getCellRef().getRefId();
|
||||
event->cellRef.mRefNum = mReference.getCellRef().getRefNum();
|
||||
event->index = index;
|
||||
event->floatVal = value;
|
||||
mwmp::Main::get().getNetworking()->GetWorldPacket(ID_SCRIPT_LOCAL_FLOAT)->Send(event);
|
||||
|
||||
printf("Sending ID_SCRIPT_LOCAL_FLOAT\n- cellRef: %s, %i\n- cell: %s\n- index: %i\n- floatVal: %f\n",
|
||||
event->cellRef.mRefID.c_str(),
|
||||
event->cellRef.mRefNum.mIndex,
|
||||
event->cell.getDescription().c_str(),
|
||||
event->index,
|
||||
event->floatVal);
|
||||
}
|
||||
}
|
||||
|
||||
void InterpreterContext::messageBox (const std::string& message,
|
||||
|
@ -240,6 +279,19 @@ namespace MWScript
|
|||
|
||||
void InterpreterContext::setGlobalShort (const std::string& name, int value)
|
||||
{
|
||||
// Added by tes3mp
|
||||
if (sendPackets)
|
||||
{
|
||||
mwmp::WorldEvent *event = mwmp::Main::get().getNetworking()->createWorldEvent();
|
||||
event->globalName = name;
|
||||
event->shortVal = value;
|
||||
mwmp::Main::get().getNetworking()->GetWorldPacket(ID_SCRIPT_GLOBAL_SHORT)->Send(event);
|
||||
|
||||
printf("Sending ID_SCRIPT_GLOBAL_SHORT\n- globalName: %s\n- shortVal: %i\n",
|
||||
event->globalName.c_str(),
|
||||
event->shortVal);
|
||||
}
|
||||
|
||||
MWBase::Environment::get().getWorld()->setGlobalInt (name, value);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue