forked from mirror/openmw-tes3mp
[Server] Add script functions for setting container item info
This commit is contained in:
parent
941d6269c1
commit
c01ab63239
2 changed files with 68 additions and 29 deletions
|
@ -11,6 +11,7 @@ using namespace mwmp;
|
|||
|
||||
static BaseEvent *baseEvent = nullptr;
|
||||
static WorldObject tempWorldObject;
|
||||
static ContainerItem tempContainerItem;
|
||||
|
||||
std::regex exteriorCellPattern("^(-?\\d+), (-?\\d+)$");
|
||||
|
||||
|
@ -143,22 +144,6 @@ const char *WorldFunctions::GetContainerItemOwner(unsigned int objectIndex, unsi
|
|||
.containerChanges.items.at(itemIndex).owner.c_str();
|
||||
}
|
||||
|
||||
void WorldFunctions::AddWorldObject() noexcept
|
||||
{
|
||||
WorldObject worldObject;
|
||||
worldObject.refId = tempWorldObject.refId;
|
||||
worldObject.refNumIndex = tempWorldObject.refNumIndex;
|
||||
worldObject.charge = tempWorldObject.charge;
|
||||
worldObject.count = tempWorldObject.count;
|
||||
worldObject.goldValue = tempWorldObject.goldValue;
|
||||
worldObject.scale = tempWorldObject.scale;
|
||||
worldObject.doorState = tempWorldObject.doorState;
|
||||
worldObject.lockLevel = tempWorldObject.lockLevel;
|
||||
worldObject.pos = tempWorldObject.pos;
|
||||
|
||||
baseEvent->objectChanges.objects.push_back(worldObject);
|
||||
}
|
||||
|
||||
void WorldFunctions::SetBaseEventCell(const char* cellDescription) noexcept
|
||||
{
|
||||
std::string description = cellDescription;
|
||||
|
@ -197,16 +182,16 @@ void WorldFunctions::SetObjectRefNumIndex(int refNumIndex) noexcept
|
|||
tempWorldObject.refNumIndex = refNumIndex;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetObjectCharge(int charge) noexcept
|
||||
{
|
||||
tempWorldObject.charge = charge;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetObjectCount(int count) noexcept
|
||||
{
|
||||
tempWorldObject.count = count;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetObjectCharge(int charge) noexcept
|
||||
{
|
||||
tempWorldObject.charge = charge;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetObjectGoldValue(int goldValue) noexcept
|
||||
{
|
||||
tempWorldObject.goldValue = goldValue;
|
||||
|
@ -241,9 +226,48 @@ void WorldFunctions::SetObjectRotation(double x, double y, double z) noexcept
|
|||
tempWorldObject.pos.rot[2] = z;
|
||||
}
|
||||
|
||||
void WorldFunctions::SendContainer() noexcept
|
||||
void WorldFunctions::SetContainerItemRefId(const char* refId) noexcept
|
||||
{
|
||||
mwmp::Networking::get().getWorldController()->GetPacket(ID_CONTAINER)->Send(baseEvent, baseEvent->guid);
|
||||
tempContainerItem.refId = refId;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetContainerItemCount(int count) noexcept
|
||||
{
|
||||
tempContainerItem.count = count;
|
||||
}
|
||||
|
||||
void WorldFunctions::SetContainerItemCharge(int charge) noexcept
|
||||
{
|
||||
tempContainerItem.charge = charge;
|
||||
}
|
||||
|
||||
void WorldFunctions::AddWorldObject() noexcept
|
||||
{
|
||||
WorldObject worldObject;
|
||||
worldObject.refId = tempWorldObject.refId;
|
||||
worldObject.refNumIndex = tempWorldObject.refNumIndex;
|
||||
worldObject.count = tempWorldObject.count;
|
||||
worldObject.charge = tempWorldObject.charge;
|
||||
worldObject.goldValue = tempWorldObject.goldValue;
|
||||
worldObject.scale = tempWorldObject.scale;
|
||||
worldObject.doorState = tempWorldObject.doorState;
|
||||
worldObject.lockLevel = tempWorldObject.lockLevel;
|
||||
worldObject.pos = tempWorldObject.pos;
|
||||
worldObject.containerChanges.items = tempWorldObject.containerChanges.items;
|
||||
|
||||
baseEvent->objectChanges.objects.push_back(worldObject);
|
||||
|
||||
tempWorldObject.containerChanges.items.clear();
|
||||
}
|
||||
|
||||
void WorldFunctions::AddContainerItem() noexcept
|
||||
{
|
||||
ContainerItem containerItem;
|
||||
containerItem.refId = tempContainerItem.refId;
|
||||
containerItem.count = tempContainerItem.count;
|
||||
containerItem.charge = tempContainerItem.charge;
|
||||
|
||||
tempWorldObject.containerChanges.items.push_back(containerItem);
|
||||
}
|
||||
|
||||
void WorldFunctions::SendObjectDelete() noexcept
|
||||
|
@ -276,6 +300,11 @@ void WorldFunctions::SendDoorState() noexcept
|
|||
mwmp::Networking::get().getWorldController()->GetPacket(ID_DOOR_STATE)->Send(baseEvent, baseEvent->guid);
|
||||
}
|
||||
|
||||
void WorldFunctions::SendContainer() noexcept
|
||||
{
|
||||
mwmp::Networking::get().getWorldController()->GetPacket(ID_CONTAINER)->Send(baseEvent, baseEvent->guid);
|
||||
}
|
||||
|
||||
void WorldFunctions::SetHour(unsigned short pid, double hour) noexcept
|
||||
{
|
||||
Player *player;
|
||||
|
|
|
@ -29,14 +29,13 @@
|
|||
{"GetContainerItemGoldValue", WorldFunctions::GetContainerItemGoldValue},\
|
||||
{"GetContainerItemOwner", WorldFunctions::GetContainerItemOwner},\
|
||||
\
|
||||
{"AddWorldObject", WorldFunctions::AddWorldObject},\
|
||||
{"SetBaseEventCell", WorldFunctions::SetBaseEventCell},\
|
||||
{"SetBaseEventAction", WorldFunctions::SetBaseEventAction},\
|
||||
\
|
||||
{"SetObjectRefId", WorldFunctions::SetObjectRefId},\
|
||||
{"SetObjectRefNumIndex", WorldFunctions::SetObjectRefNumIndex},\
|
||||
{"SetObjectCharge", WorldFunctions::SetObjectCharge},\
|
||||
{"SetObjectCount", WorldFunctions::SetObjectCount},\
|
||||
{"SetObjectCharge", WorldFunctions::SetObjectCharge},\
|
||||
{"SetObjectGoldValue", WorldFunctions::SetObjectGoldValue},\
|
||||
{"SetObjectScale", WorldFunctions::SetObjectScale},\
|
||||
{"SetObjectDoorState", WorldFunctions::SetObjectDoorState},\
|
||||
|
@ -44,7 +43,12 @@
|
|||
{"SetObjectPosition", WorldFunctions::SetObjectPosition},\
|
||||
{"SetObjectRotation", WorldFunctions::SetObjectRotation},\
|
||||
\
|
||||
{"SendContainer", WorldFunctions::SendContainer},\
|
||||
{"SetContainerItemRefId", WorldFunctions::SetContainerItemRefId},\
|
||||
{"SetContainerItemCount", WorldFunctions::SetContainerItemCount},\
|
||||
{"SetContainerItemCharge", WorldFunctions::SetContainerItemCharge},\
|
||||
\
|
||||
{"AddWorldObject", WorldFunctions::AddWorldObject},\
|
||||
{"AddContainerItem", WorldFunctions::AddContainerItem},\
|
||||
\
|
||||
{"SendObjectDelete", WorldFunctions::SendObjectDelete},\
|
||||
{"SendObjectPlace", WorldFunctions::SendObjectPlace},\
|
||||
|
@ -52,6 +56,7 @@
|
|||
{"SendObjectLock", WorldFunctions::SendObjectLock},\
|
||||
{"SendObjectUnlock", WorldFunctions::SendObjectUnlock},\
|
||||
{"SendDoorState", WorldFunctions::SendDoorState},\
|
||||
{"SendContainer", WorldFunctions::SendContainer},\
|
||||
\
|
||||
{"SetHour", WorldFunctions::SetHour},\
|
||||
{"SetMonth", WorldFunctions::SetMonth},\
|
||||
|
@ -88,14 +93,13 @@ public:
|
|||
static int GetContainerItemGoldValue(unsigned int objectIndex, unsigned int itemIndex) noexcept;
|
||||
static const char *GetContainerItemOwner(unsigned int objectIndex, unsigned int itemIndex) noexcept;
|
||||
|
||||
static void AddWorldObject() noexcept;
|
||||
static void SetBaseEventCell(const char* cellDescription) noexcept;
|
||||
static void SetBaseEventAction(int action) noexcept;
|
||||
|
||||
static void SetObjectRefId(const char* refId) noexcept;
|
||||
static void SetObjectRefNumIndex(int refNumIndex) noexcept;
|
||||
static void SetObjectCharge(int charge) noexcept;
|
||||
static void SetObjectCount(int count) noexcept;
|
||||
static void SetObjectCharge(int charge) noexcept;
|
||||
static void SetObjectGoldValue(int goldValue) noexcept;
|
||||
static void SetObjectScale(double scale) noexcept;
|
||||
static void SetObjectDoorState(int doorState) noexcept;
|
||||
|
@ -103,7 +107,12 @@ public:
|
|||
static void SetObjectPosition(double x, double y, double z) noexcept;
|
||||
static void SetObjectRotation(double x, double y, double z) noexcept;
|
||||
|
||||
static void SendContainer() noexcept;
|
||||
static void SetContainerItemRefId(const char* refId) noexcept;
|
||||
static void SetContainerItemCount(int count) noexcept;
|
||||
static void SetContainerItemCharge(int charge) noexcept;
|
||||
|
||||
static void AddWorldObject() noexcept;
|
||||
static void AddContainerItem() noexcept;
|
||||
|
||||
static void SendObjectDelete() noexcept;
|
||||
static void SendObjectPlace() noexcept;
|
||||
|
@ -111,6 +120,7 @@ public:
|
|||
static void SendObjectLock() noexcept;
|
||||
static void SendObjectUnlock() noexcept;
|
||||
static void SendDoorState() noexcept;
|
||||
static void SendContainer() noexcept;
|
||||
|
||||
static void SetHour(unsigned short pid, double hour) noexcept;
|
||||
static void SetMonth(unsigned short pid, int month) noexcept;
|
||||
|
|
Loading…
Reference in a new issue