Previously, there was a confusing separation between script functions that had a "broadcast" argument and script functions that had a "toOthers" argument.
Those with broadcast sent the packet to all players on the server when broadcast was true. Those with toOthers sent the packet to all players other than the packet's attached player.
The former was based on the pattern of the original SendMessage() script function. The latter more closely resembled RakNet's own broadcast argument as seen here:
https://github.com/TES3MP/CrabNet/blob/master/include/raknet/RakPeer.h#L219
This commit makes it so all sending functions have a sendToOtherPlayers argument that is false by default and a sendToAttachedPlayer that is true by default. This should simultaneously allow sending to be more intuitive, while not breaking previous existing scripts to a significant degree.
Additionally, this commit also reduces some code repetition for all instances of packet-fetching in script functions.
Add new initialization script functions to allow clearing all player changes vectors in a manner consistent with Actor and World functions
Add toOthers boolean to all methods that send packets with player changes vectors
This avoids confusion when either of those is used to store and send a single item, and no longer requires coming up with confusing variable names like realSpellbook or realInventory for actual full spellbooks and inventories.
Up to this commit, the following commands in a Lua script led to the target player receiving all three items, as expected:
tes3mp.AddItem(self.pid, "common_shirt_01", 1, -1)
tes3mp.AddItem(self.pid, "common_pants_01", 1, -1)
tes3mp.AddItem(self.pid, "common_shoes_01", 1, -1)
tes3mp.SendInventory(self.pid)
This, on the other hand, only led to the removal of the last item specified (in this case, the shoes):
tes3mp.RemoveItem(self.pid, "common_shirt_01", 1)
tes3mp.RemoveItem(self.pid, "common_pants_01", 1)
tes3mp.RemoveItem(self.pid, "common_shoes_01", 1)
tes3mp.SendInventory(self.pid)
Inventory functions are bound to remain confusing, but they should at least be consistent in their behavior.