ACE3/addons/common/functions/fnc_getStringFromMissionSQM.sqf
2015-01-12 19:22:58 +01:00

59 lines
1.5 KiB
Plaintext

/*
* Author: commy2
*
* Get a string from the mission.sqm file. Mission has to be saved in the Editor. The string cannot contain the ; character.
*
* Argument:
* 0: Path of the entry in the mission.sqm (Array)
*
* Return value:
* Value of the entry. Note: If the entry does not exist, it might return an empty string or an entry with the same name of another class! (String)
*/
#include "\z\ace\addons\common\script_component.hpp"
private ["_path", "_mission", "_a", "_class", "_index", "_array", "_b", "_entry"];
_path = _this;
if (missionName == "") exitWith {""};
_mission = toArray toLower loadFile "mission.sqm";
_mission resize 65536;
{
if (_x < 33) then {
_mission set [_forEachIndex, -1];
}
} forEach _mission;
_mission = toString (_mission - [-1]);
{_path set [_forEachIndex, toLower _x]} forEach _path;
for "_a" from 0 to (count _path - 2) do {
_class = format ["class%1{", _path select _a];
_index = _mission find _class;
_array = toArray _mission;
for "_b" from 0 to (_index + count toArray _class - 1) do {
_array set [_b, -1];
};
_array = _array - [-1];
_mission = toString _array;
};
_entry = format ["%1=", _path select (count _path - 1)];
_index = _mission find _entry;
if (_index == -1) exitWith {""};
_array = toArray _mission;
for "_b" from 0 to (_index + count toArray _entry - 1) do {
_array set [_b, -1];
};
_mission = toString (_array - [-1]);
_index = _mission find ";";
_mission = toArray _mission;
_mission resize _index;
format ["%1", toString _mission];