Difference between revisions of "DataPacks"
DaRk NiGhT (talk | contribs) (New page: DataPacks are a way to store and move around various types of data in SourceMod Scripting. Since some things are not possible in SourcePawn, such as a fun...) |
Joinedsenses (talk | contribs) m (Update highlighting) |
||
(8 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
DataPacks are a way to store and move around various types of data in [[:Category:SourceMod Scripting|SourceMod Scripting]]. Since some things are not possible in SourcePawn, such as a function consuming a String, DataPacks help us get these Strings and other items where they need to go. | DataPacks are a way to store and move around various types of data in [[:Category:SourceMod Scripting|SourceMod Scripting]]. Since some things are not possible in SourcePawn, such as a function consuming a String, DataPacks help us get these Strings and other items where they need to go. | ||
+ | |||
+ | =Example of using a DataPack= | ||
+ | Syntax: | ||
+ | <sourcepawn> | ||
+ | //writing | ||
+ | DataPack pack = new DataPack(); | ||
+ | pack.WriteCell(23); | ||
+ | pack.WriteString("I'm a little teapot."); | ||
+ | |||
+ | //reading | ||
+ | pack.Reset(); //resets the index to the beginning, necessary for read. | ||
+ | int cellValue = pack.ReadCell(); | ||
+ | char buffer[1024]; | ||
+ | pack.ReadString(buffer, 1024); | ||
+ | </sourcepawn> | ||
=Creating a DataPack= | =Creating a DataPack= | ||
Creating a DataPack is very simple; all you need is a Handle to write to. | Creating a DataPack is very simple; all you need is a Handle to write to. | ||
− | < | + | <sourcepawn>Datapack dataPackHandle = new DataPack();</sourcepawn> |
For more information on using Handles, see [[Handle API (SourceMod)]]. | For more information on using Handles, see [[Handle API (SourceMod)]]. | ||
Line 12: | Line 27: | ||
==WritePackCell== | ==WritePackCell== | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void WritePackCell(Handle pack, any cell); |
− | </ | + | </sourcepawn> |
==WritePackFloat== | ==WritePackFloat== | ||
Line 19: | Line 34: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void WritePackFloat(Handle pack, float val); |
− | </ | + | </sourcepawn> |
==WritePackString== | ==WritePackString== | ||
Line 26: | Line 41: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void WritePackString(Handle pack, const char[] str); |
− | </ | + | </sourcepawn> |
==ReadPackCell== | ==ReadPackCell== | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native any ReadPackCell(Handle pack); |
− | </ | + | </sourcepawn> |
==ReadPackFloat== | ==ReadPackFloat== | ||
Line 38: | Line 53: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native float ReadPackFloat(Handle pack); |
− | </ | + | </sourcepawn> |
==ReadPackString== | ==ReadPackString== | ||
Line 45: | Line 60: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void ReadPackString(Handle pack, char[] buffer, maxlen); |
− | </ | + | </sourcepawn> |
==ResetPack== | ==ResetPack== | ||
Line 52: | Line 67: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void ResetPack(Handle pack, bool clear=false); |
− | </ | + | </sourcepawn> |
==GetPackPosition== | ==GetPackPosition== | ||
Line 59: | Line 74: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native int GetPackPosition(Handle pack); |
− | </ | + | </sourcepawn> |
==SetPackPosition== | ==SetPackPosition== | ||
Line 66: | Line 81: | ||
Syntax: | Syntax: | ||
− | < | + | <sourcepawn>native void SetPackPosition(Handle pack, int position); |
− | </ | + | </sourcepawn> |
=Disposing of a DataPack= | =Disposing of a DataPack= | ||
Line 73: | Line 88: | ||
Example: | Example: | ||
− | < | + | <sourcepawn>CloseHandle(dataPackHandle); |
− | </ | + | </sourcepawn> |
[[Category:SourceMod Scripting]] | [[Category:SourceMod Scripting]] |
Latest revision as of 17:58, 29 March 2020
DataPacks are a way to store and move around various types of data in SourceMod Scripting. Since some things are not possible in SourcePawn, such as a function consuming a String, DataPacks help us get these Strings and other items where they need to go.
Contents
Example of using a DataPack
Syntax:
//writing DataPack pack = new DataPack(); pack.WriteCell(23); pack.WriteString("I'm a little teapot."); //reading pack.Reset(); //resets the index to the beginning, necessary for read. int cellValue = pack.ReadCell(); char buffer[1024]; pack.ReadString(buffer, 1024);
Creating a DataPack
Creating a DataPack is very simple; all you need is a Handle to write to.
Datapack dataPackHandle = new DataPack();
For more information on using Handles, see Handle API (SourceMod).
DataPack Functions
On you have created your DataPack, you can use a variety of functions to manage the DataPack.
WritePackCell
Syntax:
native void WritePackCell(Handle pack, any cell);
WritePackFloat
This function can be used to write a Float to a DataPack.
Syntax:
native void WritePackFloat(Handle pack, float val);
WritePackString
This function can be used to write a String to a DataPack.
Syntax:
native void WritePackString(Handle pack, const char[] str);
ReadPackCell
Syntax:
native any ReadPackCell(Handle pack);
ReadPackFloat
This function can be used to read a Float from a DataPack.
Syntax:
native float ReadPackFloat(Handle pack);
ReadPackString
This function can be used to read a String from a DataPack.
Syntax:
native void ReadPackString(Handle pack, char[] buffer, maxlen);
ResetPack
This function resets your position in the DataPack.
Syntax:
native void ResetPack(Handle pack, bool clear=false);
GetPackPosition
This function gets your current position in the DataPack.
Syntax:
native int GetPackPosition(Handle pack);
SetPackPosition
This function sets your current position in the DataPack.
Syntax:
native void SetPackPosition(Handle pack, int position);
Disposing of a DataPack
To dispose of a DataPack, all you have to do is close its Handle.
Example:
CloseHandle(dataPackHandle);