Bohemia have recently added getObjectTextures command to the game, to complement setObjectTexture/setObjectTextureGlobal commands. Because I’m going to use this new command in a script, the script will work only with game v1.37+ or on DEV branch right now. The command returns array of textures set on object. The numbers on a kart are also textures, one for 1st digit, one for 2nd digit. Indices for them are 2 and 3 respectfully. So to get kart number one needs to get texture names and parse them to extract numbers.
KK_fnc_getKartNumber = {
private ["_tex1", "_tex2"];
_tex1 = (getObjectTextures _this) select 2;
_tex2 = (getObjectTextures _this) select 3;
format [
"%1%2",
_tex1 select [count _tex1 - 8, 1],
_tex2 select [count _tex2 - 8, 1]
]
};
This function takes 1 argument, which is the kart object and returns a string which contains kart number:
hint (kart call KK_fnc_getKartNumber); //27
If you need to get a SCALAR and not a STRING you can just parse the string into a number:
_number = parseNumber (kart call KK_fnc_getKartNumber);
To set different number on a kart, you can use this function:
KK_fnc_setKartNumber = {
private ["_kart", "_num", "_tex1", "_tex2"];
_kart = _this select 0;
_num = _this select 1;
if (_num < -1 || _num > 99) exitWith {false};
_tex1 = ""; _tex2 = "";
if (_num > -1) then {
_num = if (_num < 10) then [{"0" + str _num},{str _num}];
_tex1 = format [
"\A3\Soft_F_Kart\Kart_01\Data\Kart_num_%1_CA.paa",
_num select [0,1]
];
_tex2 = format [
"\A3\Soft_F_Kart\Kart_01\Data\Kart_num_%1_CA.paa",
_num select [1,1]
];
};
_kart setObjectTextureGlobal [2, _tex1];
_kart setObjectTextureGlobal [3, _tex2];
true
};
The function takes 2 arguments, kart object and desired number and returns true on success or false on failure:
hint str ([kart, 33] call KK_fnc_setKartNumber); //true
To reset the number simply use -1 for the number:
hint str ([kart, -1] call KK_fnc_setKartNumber); //true
Enjoy,
KK