ACE3/addons/common/functions/fnc_getStringFromMissionSQM.sqf

67 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.
* If the entry does not exist, it might return an empty string or an entry with the same name of another class!
*
* Arguments:
* 0: Path of the entry in the mission.sqm <ARRAY>
*
* Return Value:
* Value of the entry. <STRING>
*
* Public: No
*/
#include "script_component.hpp"
[_this] params ["_path", [], [[]]];
if (missionName == "") exitWith {""};
private _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 {
private _class = format ["class%1{", _path select _a];
private _index = _mission find _class;
private _array = toArray _mission;
for "_b" from 0 to (_index + count toArray _class - 1) do {
_array set [_b, -1];
};
_array = _array - [-1];
_mission = toString _array;
};
private _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] // return