-
Notifications
You must be signed in to change notification settings - Fork 430
Packets Library
This library adds an interface for working with packets. It allows accessing and modifying packets in a table-like structure based on the information in the fields file (Windower/addons/libs/packets/fields.lua
).
packets = require('packets')
packet = packets.parse(dir, data)
-
packet
table - Table containing packet information -
dir
string - Direction, onlyincoming
andoutgoing
are valid arguments -
data
string - Binary string containing the packet data (including the header)
These functions parse an incoming/outgoing packet (usually from the respective incoming chunk
and outgoing chunk
events). They return a table populated with everything found about the particular packet in the fields file.
packet = packets.new(dir, id, data)
-
packet
table - Table containing packet information -
dir
string - Direction, onlyincoming
andoutgoing
are valid arguments -
data
table [optional] - Table containing data to populate the resulting table with
Creates a new packet table with every field in the fields file populated with a default value (0
or ""
). If the data
argument was provided, the fields in there will overwrite the default values in the created packet.
data = packets.build(packet)
-
packet
table - Table containing packet information (as returned bypackets.new
orpackets.parse
) -
data
string - Binary string containing the full packet payload (including the header)
Creates a binary string that can be injected in the incoming or outgoing packet facilities. It only fully works with packets that are defined in the fields file, otherwise it won't know which values to populate and how. It also only fully works with packets that contain only a single definition and not multiple definitions which have to be disambiguated based on the provided data, since the data doesn't exist here yet.
packets.inject(packet)
-
packet
table - Table containing packet information (as returned bypackets.new
orpackets.parse
)
Injects the packet that was passed to it. It first builds the packet (using packets.build
) and then injects the resulting string in either the incoming or outgoing packet handler. This does not have to be specified, as it's included in the packet
table when it's created with either packets.new
or packets.parse
, both of which require a direction argument.