diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2019-07-29 20:41:28 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2019-07-29 20:41:28 +0200 |
| commit | 476da891e3bec25872a9557d0c7d0fd3eee33b4e (patch) | |
| tree | a0565c349964a07d295cf1a55e5869ae1bdf34f4 /DTUtility.c | |
| parent | 4af9d50a92fcfb5ef8dd0aefd959a790bfe6655b (diff) | |
| download | System.c4g-476da891e3bec25872a9557d0c7d0fd3eee33b4e.tar.gz System.c4g-476da891e3bec25872a9557d0c7d0fd3eee33b4e.zip | |
Use PrivateCall for fast object callbacks to circumvent access restriction errors
Fix error in DTCallback when DTScopedVars is not present
Update DTMenuCompatibility
Add SetPlrExtraDataIntArray to DTUtility
Diffstat (limited to 'DTUtility.c')
| -rw-r--r-- | DTUtility.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/DTUtility.c b/DTUtility.c index 481ebe9..d491567 100644 --- a/DTUtility.c +++ b/DTUtility.c @@ -375,6 +375,53 @@ global func GetPlrExtraDataArray(int plr, string name) }
}
+global func SetPlrExtraDataIntArray(int plr, string name, array arr)
+{
+ var lengthName = Format("%sL", name);
+
+ var oldLength = CastInt(GetPlrExtraData(plr, lengthName));
+
+ var length = GetLength(arr);
+
+ for(var i = 0; i < length; ++i)
+ {
+ var partName = Format("%s%d", name, i);
+ if(arr[i] != 0)
+ {
+ SetPlrExtraData(plr, partName, arr[i]);
+ }
+ else if(GetPlrExtraData(plr, partName) != 0)
+ {
+ SetPlrExtraData(plr, partName, 0);
+ }
+ }
+
+ SetPlrExtraData(plr, lengthName, length);
+
+ for(var i = length; i < oldLength; ++i)
+ {
+ var partName = Format("%s%d", name, i);
+ if(GetPlrExtraData(plr, partName) != 0)
+ {
+ SetPlrExtraData(plr, partName, 0);
+ }
+ }
+}
+
+global func GetPlrExtraDataIntArray(int plr, string name)
+{
+ var length = CastInt(GetPlrExtraData(plr, Format("%sL", name)));
+
+ var ret = CreateArray(length);
+
+ for(var i = 0; i < length; ++i)
+ {
+ ret[i] = CastInt(GetPlrExtraData(plr, Format("%s%d", name, i)));
+ }
+
+ return ret;
+}
+
global func EnableScripting()
{
AddMsgBoardCmd("s", "ScriptingFunc(\"%s\", %player%)", C4MSGCMDR_Escaped);
|
