From 476da891e3bec25872a9557d0c7d0fd3eee33b4e Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Mon, 29 Jul 2019 20:41:28 +0200 Subject: 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 --- DTUtility.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'DTUtility.c') 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); -- cgit v1.2.3-54-g00ecf