-
Notifications
You must be signed in to change notification settings - Fork 446
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)-
packettable - Table containing packet information -
dirstring - Direction, onlyincomingandoutgoingare valid arguments -
datastring - 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)-
packettable - Table containing packet information -
dirstring - Direction, onlyincomingandoutgoingare valid arguments -
datatable [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)-
packettable - Table containing packet information (as returned bypackets.neworpackets.parse) -
datastring - 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)-
packettable - Table containing packet information (as returned bypackets.neworpackets.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.