From d82ed65f99fa78a29879bcb33f4988041e9a4301 Mon Sep 17 00:00:00 2001 From: YoloWingPixie <83574853+YoloWingPixie@users.noreply.github.com> Date: Fri, 16 May 2025 11:55:20 -0700 Subject: [PATCH 1/2] #11 Add Disposition table to DCS api dump script --- tools/dcs_api_extract.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/dcs_api_extract.lua b/tools/dcs_api_extract.lua index a81b19b..18295b1 100644 --- a/tools/dcs_api_extract.lua +++ b/tools/dcs_api_extract.lua @@ -21,11 +21,12 @@ local targets={ world=true, Airbase=true, Controller=true, - CoalitionObject=true, + CoalitionObject=true, -- Non-final class. Not actually accessible via API. AI=true, country=false, Beacons=true, - Formation=true + Formation=true, + Disposition=true, } local esc={}for i=0,31 do esc[i]=string.format("\\u%04x",i)end esc[34]="\\\"" esc[92]="\\\\" local function js(s)return"\""..s:gsub(".",function(c)return esc[c:byte()]or c end).."\""end From be2b7ca3b26c3a94238c014acc2903bd2601cc50 Mon Sep 17 00:00:00 2001 From: YoloWingPixie <83574853+YoloWingPixie@users.noreply.github.com> Date: Fri, 16 May 2025 12:47:31 -0700 Subject: [PATCH 2/2] #11 Added Disposition table --- VERSION | 2 +- .../globals/Disposition.singleton.yaml | 150 ++ reference_data/dcs_world_api_dump_latest.json | 2192 +++++++++-------- tools/dcs_api_extract.lua | 2 + 4 files changed, 1278 insertions(+), 1068 deletions(-) create mode 100644 dcs-world-schema/globals/Disposition.singleton.yaml diff --git a/VERSION b/VERSION index 9325c3c..a2268e2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.0 \ No newline at end of file +0.3.1 \ No newline at end of file diff --git a/dcs-world-schema/globals/Disposition.singleton.yaml b/dcs-world-schema/globals/Disposition.singleton.yaml new file mode 100644 index 0000000..703bfea --- /dev/null +++ b/dcs-world-schema/globals/Disposition.singleton.yaml @@ -0,0 +1,150 @@ +globals: + # Github Issue: #11 + # Descriptions and Parameters provided by @WirtLegs + Disposition: + kind: singleton + description: "Provides functions for manipulating positions, terrain queries, and random number generation within the DCS World. **Warning:** This class is not formally documented by ED and descriptions and params may be incorrect." + environment: ["MissionScripting"] + addedVersion: "0.0.0" #Unknown + static: + DriftRoute: + description: "Unknown use case, possibly related to route drift or movement." + addedVersion: "0.0.0" #Unknown + params: + - name: pos1 + type: Vec3 + description: "First position vector." + - name: pos2 + type: Vec3 + description: "Second position vector." + - name: coalitionId + type: coalition.side + description: "Coalition side enumeration value." + returns: table + getElipsSideZones: + description: "Returns zones around runway strips in an elliptical pattern." + addedVersion: "0.0.0" #Unknown + params: + - name: numAreas + type: number + description: "Unknown" + - name: numPositions + type: number + description: "Unknown" + - name: perim + type: table + description: "Unknown" + - name: degrees + type: number + description: "Unknown" + - name: radiusRatio + type: number + description: "Unknown" + returns: table + getPointHeight: + description: "Returns the terrain height at the specified position in the DCS World coordinate system? See: land.getHeight()" + addedVersion: "0.0.0" #Unknown + params: + - name: pos + type: Vec3 + description: "Position vector in the DCS World coordinate system." + returns: number + getPointWater: + description: "Checks if water exists at the specified position within given parameters? See: land.getSurfaceType()" + addedVersion: "0.0.0" #Unknown + params: + - name: pos + type: Vec3 + description: "3D Position" + - name: a + type: number + description: "Unknown" + - name: b + type: number + description: "Unknown" + returns: boolean + getRandom: + description: "Generates a random number within the specified range." + addedVersion: "0.0.0" #Unknown + params: + - name: isFloat + type: boolean + description: "If true, returns a floating-point number; otherwise, returns an integer." + - name: min + type: number + description: "Minimum value of the random range." + - name: max + type: number + description: "Maximum value of the random range." + returns: number + getRandomIn: + description: "Unknown function, likely related to random selection within a specified range or container." + addedVersion: "0.0.0" #Unknown + params: [] + returns: any + getRandomSort: + description: "Randomly shuffles the elements of the input table." + addedVersion: "0.0.0" #Unknown + params: + - name: t + type: table + description: "Table to be randomly shuffled." + returns: table + getRouteAwayWater: + description: "Unknown function" + addedVersion: "0.0.0" #Unknown + params: + - name: thresholdPos + type: Vec3 + description: "Unknown" + - name: pos + type: Vec3 + description: "Unknown" + - name: a + type: number + description: "Unknown" + - name: b + type: number + description: "Unknown" + returns: boolean + getRunwayPerimetr: + description: "Returns the perimeter of a runway defined by runway data? See: airbase.getRunways()" + addedVersion: "0.0.0" #Unknown + params: + - name: runway + type: table + description: "Runway data table obtained from airbase:getRunways()." + returns: table + getSimpleZones: + description: "Finds clear positions within an area for placing units. Assumed behavior." + addedVersion: "0.0.0" #Unknown + params: + - name: pos + type: Vec3 + description: "Center position vector for the search area." + - name: radius + type: number + description: "Radius of the search area." + - name: posRadius + type: number + description: "Required clear radius around each position." + - name: numPositions + type: number + description: "Number of positions to find." + returns: table + getThresholdFourZones: + description: "Returns zones along runway edges based on the provided perimeter." + addedVersion: "0.0.0" #Unknown + params: + - name: numPositions + type: number + description: "Number of positions to generate." + - name: perim + type: table + description: "Perimeter table defining the runway edges." + returns: table + setMarkerPoint: + description: "Unknown function, likely related to setting a marker at a specific point. May be related to world and trigger functions." + addedVersion: "0.0.0" #Unknown + params: [] + returns: any diff --git a/reference_data/dcs_world_api_dump_latest.json b/reference_data/dcs_world_api_dump_latest.json index 76e9b8e..4667860 100644 --- a/reference_data/dcs_world_api_dump_latest.json +++ b/reference_data/dcs_world_api_dump_latest.json @@ -2608,210 +2608,143 @@ ], "kind": "table" }, - "SceneryObject": { + "world": { "members": [ - { - "name": "getLife", - "type": "function" - }, - { - "name": "__eq", - "type": "function" - }, - { - "name": "getDesc", - "type": "function" - }, - { - "value": "SceneryObject", - "type": "string", - "name": "className_" - }, { "sub": { "members": [ { - "name": "isExist", - "type": "function" - }, - { - "value": "Object", - "type": "string", - "name": "className_" - }, - { - "sub": { - "members": [ - { - "value": "void", - "type": "string", - "name": "className_" - } - ], - "kind": "table" - }, - "type": "table", - "name": "parentClass_" - }, - { - "name": "getCategory", - "type": "function" - }, - { - "name": "cancelChoosingCargo", - "type": "function" - }, - { - "sub": { - "members": [ - { - "name": "getCategoryEx", - "type": "function" - } - ], - "kind": "table" - }, - "type": "table", - "name": "database_" - }, - { - "sub": { - "members": [ - { - "value": 0, - "type": "number", - "name": "VOID" - }, - { - "value": 5, - "type": "number", - "name": "SCENERY" - }, - { - "value": 4, - "type": "number", - "name": "BASE" - }, - { - "value": 6, - "type": "number", - "name": "CARGO" - }, - { - "value": 1, - "type": "number", - "name": "UNIT" - }, - { - "value": 3, - "type": "number", - "name": "STATIC" - }, - { - "value": 2, - "type": "number", - "name": "WEAPON" - } - ], - "kind": "table" - }, - "type": "table", - "name": "Category" + "value": 5, + "type": "number", + "name": "wsBirthPlace_Park" }, { - "name": "hasAttribute", - "type": "function" + "value": 11, + "type": "number", + "name": "wsBirthPlace_Heliport_Cold" }, { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "__index" + "value": 3, + "type": "number", + "name": "wsBirthPlace_Ship" }, { - "name": "destroy", - "type": "function" + "value": 4, + "type": "number", + "name": "wsBirthPlace_RunWay" }, { - "name": "getAttributes", - "type": "function" + "value": 12, + "type": "number", + "name": "wsBirthPlace_Ship_Cold" }, { - "name": "tonumber", - "type": "function" + "value": 10, + "type": "number", + "name": "wsBirthPlace_Heliport_Hot" }, { - "name": "__le", - "type": "function" + "value": 1, + "type": "number", + "name": "wsBirthPlace_Air" }, { - "name": "getName", - "type": "function" - }, + "value": 13, + "type": "number", + "name": "wsBirthPlace_Ship_Hot" + } + ], + "kind": "table" + }, + "type": "table", + "name": "BirthPlace" + }, + { + "name": "removeJunk", + "type": "function" + }, + { + "sub": { + "members": [ { - "name": "__tonumber", - "type": "function" + "value": 3, + "type": "number", + "name": "PYRAMID" }, { - "name": "__lt", - "type": "function" + "value": 1, + "type": "number", + "name": "BOX" }, { - "name": "__eq", - "type": "function" + "value": 0, + "type": "number", + "name": "SEGMENT" }, { - "name": "getPoint", - "type": "function" - }, + "value": 2, + "type": "number", + "name": "SPHERE" + } + ], + "kind": "table" + }, + "type": "table", + "name": "VolumeType" + }, + { + "sub": { + "members": [ + + ], + "kind": "table" + }, + "type": "table", + "name": "persistenceHandlers" + }, + { + "sub": { + "members": [ { - "name": "__newindex", + "name": "setFogThickness", "type": "function" }, { - "name": "getPosition", + "name": "getFogVisibilityDistance", "type": "function" }, { - "name": "getVelocity", + "name": "getFogThickness", "type": "function" }, { - "name": "inAir", + "name": "setFogVisibilityDistance", "type": "function" }, { - "name": "getTypeName", + "name": "setFogAnimation", "type": "function" } ], "kind": "table" }, "type": "table", - "name": "parentClass_" - }, - { - "name": "__tonumber", - "type": "function" + "name": "weather" }, { - "name": "__lt", + "name": "setPersistenceHandler", "type": "function" }, { - "name": "tonumber", + "name": "getAirbases", "type": "function" }, { - "name": "__le", + "name": "searchObjects", "type": "function" }, { - "name": "__newindex", + "name": "onEvent", "type": "function" }, { @@ -2822,753 +2755,558 @@ "kind": "table" }, "type": "table", - "name": "__index" + "name": "eventHandlers" }, { - "name": "getDescByName", - "type": "function" - } - ], - "kind": "table" - }, - "Controller": { - "members": [ - { - "name": "isTargetDetected", + "name": "getPlayer", "type": "function" }, { - "name": "pushTask", + "name": "runPersistenceHandlers", "type": "function" }, { - "name": "__eq", + "name": "getPersistenceData", "type": "function" }, { - "name": "popTask", + "name": "getMarkPanels", "type": "function" }, { - "value": "Controller", - "type": "string", - "name": "className_" - }, - { - "name": "getDetectedTargets", - "type": "function" - }, - { - "name": "setAltitude", - "type": "function" - }, - { - "name": "setTask", - "type": "function" - }, - { - "name": "resetTask", - "type": "function" - }, - { - "name": "setOption", - "type": "function" - }, - { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "__index" - }, - { - "name": "setCommand", - "type": "function" - }, - { - "name": "setSpeed", + "name": "removeEventHandler", "type": "function" }, { "sub": { "members": [ { - "value": "void", - "type": "string", - "name": "className_" - } - ], - "kind": "table" - }, - "type": "table", - "name": "parentClass_" - }, - { - "name": "__tonumber", - "type": "function" - }, - { - "name": "__lt", - "type": "function" - }, - { - "name": "tonumber", - "type": "function" - }, - { - "name": "__le", - "type": "function" - }, - { - "name": "__newindex", - "type": "function" - }, - { - "name": "hasTask", - "type": "function" - }, - { - "name": "setOnOff", - "type": "function" - }, - { - "sub": { - "members": [ + "value": 59, + "type": "number", + "name": "S_EVENT_HUMAN_AIRCRAFT_REPAIR_START" + }, + { + "value": 12, + "type": "number", + "name": "S_EVENT_MISSION_END" + }, + { + "value": 39, + "type": "number", + "name": "S_EVENT_DAYNIGHT" + }, { "value": 1, "type": "number", - "name": "VISUAL" + "name": "S_EVENT_SHOT" }, { - "value": 32, + "value": 28, "type": "number", - "name": "DLINK" + "name": "S_EVENT_KILL" }, { - "value": 2, + "value": 25, "type": "number", - "name": "OPTIC" + "name": "S_EVENT_MARK_ADDED" }, { - "value": 16, + "value": 47, "type": "number", - "name": "RWR" + "name": "S_EVENT_WEAPON_REARM" + }, + { + "value": 60, + "type": "number", + "name": "S_EVENT_HUMAN_AIRCRAFT_REPAIR_FINISH" + }, + { + "value": 49, + "type": "number", + "name": "S_EVENT_UNIT_TASK_COMPLETE" + }, + { + "value": 24, + "type": "number", + "name": "S_EVENT_SHOOTING_END" + }, + { + "value": 10, + "type": "number", + "name": "S_EVENT_BASE_CAPTURED" + }, + { + "value": 58, + "type": "number", + "name": "S_EVENT_SIMULATION_UNFREEZE" }, { "value": 8, "type": "number", - "name": "IRST" + "name": "S_EVENT_DEAD" }, { - "value": 4, + "value": 35, "type": "number", - "name": "RADAR" - } - ], - "kind": "table" - }, - "type": "table", - "name": "Detection" - }, - { - "name": "knowTarget", - "type": "function" - } - ], - "kind": "table" - }, - "timer": { - "members": [ - { - "name": "getAbsTime", - "type": "function" - }, - { - "name": "setFunctionTime", - "type": "function" - }, - { - "name": "getTime0", - "type": "function" - }, - { - "name": "removeFunction", - "type": "function" - }, - { - "name": "scheduleFunction", - "type": "function" - }, - { - "name": "getTime", - "type": "function" - }, - { - "name": "getPause", - "type": "function" - } - ], - "kind": "table" - }, - "StaticObject": { - "members": [ - { - "name": "getDrawArgumentValue", - "type": "function" - }, - { - "name": "__eq", - "type": "function" - }, - { - "name": "getDesc", - "type": "function" - }, - { - "value": "StaticObject", - "type": "string", - "name": "className_" - }, - { - "sub": { - "members": [ + "name": "S_EVENT_TRIGGER_ZONE" + }, { - "name": "isExist", - "type": "function" + "value": 57, + "type": "number", + "name": "S_EVENT_SIMULATION_FREEZE" }, { - "value": "Object", - "type": "string", - "name": "className_" + "value": 56, + "type": "number", + "name": "S_EVENT_MAC_LMS_RESTART" }, { - "sub": { - "members": [ - { - "value": "void", - "type": "string", - "name": "className_" - } - ], - "kind": "table" - }, - "type": "table", - "name": "parentClass_" + "value": 55, + "type": "number", + "name": "S_EVENT_RUNWAY_TOUCH" }, { - "name": "getCategory", - "type": "function" + "value": 6, + "type": "number", + "name": "S_EVENT_EJECTION" }, { - "name": "cancelChoosingCargo", - "type": "function" + "value": 54, + "type": "number", + "name": "S_EVENT_RUNWAY_TAKEOFF" }, { - "sub": { - "members": [ - { - "name": "getCategoryEx", - "type": "function" - } - ], - "kind": "table" - }, - "type": "table", - "name": "database_" + "value": 34, + "type": "number", + "name": "S_EVENT_WEAPON_ADD" }, { - "sub": { - "members": [ - { - "value": 0, - "type": "number", - "name": "VOID" - }, - { - "value": 5, - "type": "number", - "name": "SCENERY" - }, - { - "value": 4, - "type": "number", - "name": "BASE" - }, - { - "value": 6, - "type": "number", - "name": "CARGO" - }, - { - "value": 1, - "type": "number", - "name": "UNIT" - }, - { - "value": 3, - "type": "number", - "name": "STATIC" - }, - { - "value": 2, - "type": "number", - "name": "WEAPON" - } - ], - "kind": "table" - }, - "type": "table", - "name": "Category" + "value": 53, + "type": "number", + "name": "S_EVENT_MISSION_WINNER" + }, + { + "value": 23, + "type": "number", + "name": "S_EVENT_SHOOTING_START" + }, + { + "value": 52, + "type": "number", + "name": "S_EVENT_MISSION_RESTART" + }, + { + "value": 30, + "type": "number", + "name": "S_EVENT_UNIT_LOST" + }, + { + "value": 0, + "type": "number", + "name": "S_EVENT_INVALID" + }, + { + "value": 20, + "type": "number", + "name": "S_EVENT_PLAYER_ENTER_UNIT" + }, + { + "value": 43, + "type": "number", + "name": "S_EVENT_EMERGENCY_LANDING" + }, + { + "value": 51, + "type": "number", + "name": "S_EVENT_MAC_EXTRA_SCORE" + }, + { + "value": 5, + "type": "number", + "name": "S_EVENT_CRASH" + }, + { + "value": 50, + "type": "number", + "name": "S_EVENT_UNIT_TASK_STAGE" + }, + { + "value": 48, + "type": "number", + "name": "S_EVENT_WEAPON_DROP" + }, + { + "value": 61, + "type": "number", + "name": "S_EVENT_MAX" + }, + { + "value": 31, + "type": "number", + "name": "S_EVENT_LANDING_AFTER_EJECTION" + }, + { + "value": 21, + "type": "number", + "name": "S_EVENT_PLAYER_LEAVE_UNIT" + }, + { + "value": 26, + "type": "number", + "name": "S_EVENT_MARK_CHANGE" + }, + { + "value": 45, + "type": "number", + "name": "S_EVENT_UNIT_DELETE_TASK" + }, + { + "value": 44, + "type": "number", + "name": "S_EVENT_UNIT_CREATE_TASK" + }, + { + "value": 9, + "type": "number", + "name": "S_EVENT_PILOT_DEAD" }, { - "name": "hasAttribute", - "type": "function" + "value": 18, + "type": "number", + "name": "S_EVENT_ENGINE_STARTUP" }, { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "__index" + "value": 36, + "type": "number", + "name": "S_EVENT_LANDING_QUALITY_MARK" }, { - "name": "destroy", - "type": "function" + "value": 14, + "type": "number", + "name": "S_EVENT_REFUELING_STOP" }, { - "name": "getAttributes", - "type": "function" + "value": 41, + "type": "number", + "name": "S_EVENT_PLAYER_SELF_KILL_PILOT" }, { - "name": "tonumber", - "type": "function" + "value": 37, + "type": "number", + "name": "S_EVENT_BDA" }, { - "name": "__le", - "type": "function" + "value": 38, + "type": "number", + "name": "S_EVENT_AI_ABORT_MISSION" }, { - "name": "getName", - "type": "function" + "value": 4, + "type": "number", + "name": "S_EVENT_LAND" }, { - "name": "__tonumber", - "type": "function" + "value": 40, + "type": "number", + "name": "S_EVENT_FLIGHT_TIME" }, { - "name": "__lt", - "type": "function" + "value": 33, + "type": "number", + "name": "S_EVENT_DISCARD_CHAIR_AFTER_EJECTION" }, { - "name": "__eq", - "type": "function" + "value": 3, + "type": "number", + "name": "S_EVENT_TAKEOFF" }, { - "name": "getPoint", - "type": "function" + "value": 7, + "type": "number", + "name": "S_EVENT_REFUELING" }, { - "name": "__newindex", - "type": "function" + "value": 42, + "type": "number", + "name": "S_EVENT_PLAYER_CAPTURE_AIRFIELD" }, { - "name": "getPosition", - "type": "function" + "value": 22, + "type": "number", + "name": "S_EVENT_PLAYER_COMMENT" }, { - "name": "getVelocity", - "type": "function" + "value": 29, + "type": "number", + "name": "S_EVENT_SCORE" }, { - "name": "inAir", - "type": "function" + "value": 11, + "type": "number", + "name": "S_EVENT_MISSION_START" }, { - "name": "getTypeName", - "type": "function" - } - ], - "kind": "table" - }, - "type": "table", - "name": "parentClass_" - }, - { - "name": "getByName", - "type": "function" - }, - { - "name": "getForcesName", - "type": "function" - }, - { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "__index" - }, - { - "name": "chooseCargo", - "type": "function" - }, - { - "name": "tonumber", - "type": "function" - }, - { - "name": "__newindex", - "type": "function" - }, - { - "name": "getLife", - "type": "function" - }, - { - "name": "__le", - "type": "function" - }, - { - "name": "getName", - "type": "function" - }, - { - "name": "__tonumber", - "type": "function" - }, - { - "name": "__lt", - "type": "function" - }, - { - "name": "getID", - "type": "function" - }, - { - "name": "getCoalition", - "type": "function" - }, - { - "name": "getDescByName", - "type": "function" - }, - { - "name": "getTypeName", - "type": "function" - }, - { - "name": "getCargoWeight", - "type": "function" - }, - { - "name": "getCargoDisplayName", - "type": "function" - }, - { - "name": "getCountry", - "type": "function" - } - ], - "kind": "table" - }, - "coord": { - "members": [ - { - "name": "MGRStoLL", - "type": "function" - }, - { - "name": "LOtoLL", - "type": "function" - }, - { - "name": "LLtoLO", - "type": "function" - }, - { - "name": "LLtoMGRS", - "type": "function" - } - ], - "kind": "table" - }, - "coalition": { - "members": [ - { - "sub": { - "members": [ + "value": 13, + "type": "number", + "name": "S_EVENT_TOOK_CONTROL" + }, { - "value": 1, + "value": 32, "type": "number", - "name": "AWACS" + "name": "S_EVENT_PARATROOPER_LENDING" }, { - "value": 3, + "value": 15, "type": "number", - "name": "FAC" + "name": "S_EVENT_BIRTH" }, { - "value": 0, + "value": 46, "type": "number", - "name": "ATC" + "name": "S_EVENT_SIMULATION_START" }, { - "value": 4, + "value": 27, "type": "number", - "name": "MAX" + "name": "S_EVENT_MARK_REMOVED" }, { "value": 2, "type": "number", - "name": "TANKER" - } - ], - "kind": "table" - }, - "type": "table", - "name": "service" - }, - { - "name": "getServiceProviders", - "type": "function" - }, - { - "name": "remove_dyn_group", - "type": "function" - }, - { - "name": "getCountryCoalition", - "type": "function" - }, - { - "name": "getMainRefPoint", - "type": "function" - }, - { - "name": "getAirbases", - "type": "function" - }, - { - "name": "getRefPoints", - "type": "function" - }, - { - "sub": { - "members": [ + "name": "S_EVENT_HIT" + }, { - "value": 0, + "value": 17, "type": "number", - "name": "NEUTRAL" + "name": "S_EVENT_DETAILED_FAILURE" }, { - "value": 2, + "value": 19, "type": "number", - "name": "BLUE" + "name": "S_EVENT_ENGINE_SHUTDOWN" }, { - "value": 1, + "value": 16, "type": "number", - "name": "RED" + "name": "S_EVENT_HUMAN_FAILURE" } ], "kind": "table" }, "type": "table", - "name": "side" - }, - { - "name": "add_dyn_group", - "type": "function" - }, - { - "name": "getDescentsOnBoard", - "type": "function" - }, - { - "name": "addRefPoint", - "type": "function" - }, - { - "name": "addGroup", - "type": "function" - }, - { - "name": "getGroups", - "type": "function" + "name": "event" }, { - "name": "checkDescent", + "name": "addEventHandler", "type": "function" - }, + } + ], + "kind": "table" + }, + "SceneryObject": { + "members": [ { - "name": "getAllDescents", + "name": "getLife", "type": "function" }, { - "name": "addStaticObject", + "name": "__eq", "type": "function" }, { - "name": "checkChooseCargo", + "name": "getDesc", "type": "function" }, { - "name": "getStaticObjects", - "type": "function" + "value": "SceneryObject", + "type": "string", + "name": "className_" }, - { - "name": "getPlayers", - "type": "function" - } - ], - "kind": "table" - }, - "world": { - "members": [ { "sub": { "members": [ { - "value": 5, - "type": "number", - "name": "wsBirthPlace_Park" + "name": "isExist", + "type": "function" }, { - "value": 11, - "type": "number", - "name": "wsBirthPlace_Heliport_Cold" + "value": "Object", + "type": "string", + "name": "className_" }, { - "value": 3, - "type": "number", - "name": "wsBirthPlace_Ship" + "sub": { + "members": [ + { + "value": "void", + "type": "string", + "name": "className_" + } + ], + "kind": "table" + }, + "type": "table", + "name": "parentClass_" }, { - "value": 4, - "type": "number", - "name": "wsBirthPlace_RunWay" + "name": "getCategory", + "type": "function" }, { - "value": 12, - "type": "number", - "name": "wsBirthPlace_Ship_Cold" + "name": "cancelChoosingCargo", + "type": "function" }, { - "value": 10, - "type": "number", - "name": "wsBirthPlace_Heliport_Hot" + "sub": { + "members": [ + { + "name": "getCategoryEx", + "type": "function" + } + ], + "kind": "table" + }, + "type": "table", + "name": "database_" }, { - "value": 1, - "type": "number", - "name": "wsBirthPlace_Air" + "sub": { + "members": [ + { + "value": 0, + "type": "number", + "name": "VOID" + }, + { + "value": 5, + "type": "number", + "name": "SCENERY" + }, + { + "value": 4, + "type": "number", + "name": "BASE" + }, + { + "value": 6, + "type": "number", + "name": "CARGO" + }, + { + "value": 1, + "type": "number", + "name": "UNIT" + }, + { + "value": 3, + "type": "number", + "name": "STATIC" + }, + { + "value": 2, + "type": "number", + "name": "WEAPON" + } + ], + "kind": "table" + }, + "type": "table", + "name": "Category" }, { - "value": 13, - "type": "number", - "name": "wsBirthPlace_Ship_Hot" - } - ], - "kind": "table" - }, - "type": "table", - "name": "BirthPlace" - }, - { - "name": "removeJunk", - "type": "function" - }, - { - "sub": { - "members": [ + "name": "hasAttribute", + "type": "function" + }, { - "value": 3, - "type": "number", - "name": "PYRAMID" + "sub": { + "members": [ + + ], + "kind": "table" + }, + "type": "table", + "name": "__index" }, { - "value": 1, - "type": "number", - "name": "BOX" + "name": "destroy", + "type": "function" }, { - "value": 0, - "type": "number", - "name": "SEGMENT" + "name": "getAttributes", + "type": "function" }, { - "value": 2, - "type": "number", - "name": "SPHERE" - } - ], - "kind": "table" - }, - "type": "table", - "name": "VolumeType" - }, - { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "persistenceHandlers" - }, - { - "sub": { - "members": [ + "name": "tonumber", + "type": "function" + }, { - "name": "setFogThickness", + "name": "__le", "type": "function" }, { - "name": "getFogVisibilityDistance", + "name": "getName", "type": "function" }, { - "name": "getFogThickness", + "name": "__tonumber", + "type": "function" + }, + { + "name": "__lt", + "type": "function" + }, + { + "name": "__eq", + "type": "function" + }, + { + "name": "getPoint", + "type": "function" + }, + { + "name": "__newindex", + "type": "function" + }, + { + "name": "getPosition", + "type": "function" + }, + { + "name": "getVelocity", "type": "function" }, { - "name": "setFogVisibilityDistance", + "name": "inAir", "type": "function" }, { - "name": "setFogAnimation", + "name": "getTypeName", "type": "function" } ], "kind": "table" }, "type": "table", - "name": "weather" + "name": "parentClass_" }, { - "name": "setPersistenceHandler", + "name": "__tonumber", "type": "function" }, { - "name": "getAirbases", + "name": "__lt", "type": "function" }, { - "name": "searchObjects", + "name": "tonumber", "type": "function" }, { - "name": "onEvent", + "name": "__le", + "type": "function" + }, + { + "name": "__newindex", "type": "function" }, { @@ -3579,512 +3317,611 @@ "kind": "table" }, "type": "table", - "name": "eventHandlers" + "name": "__index" }, { - "name": "getPlayer", + "name": "getDescByName", + "type": "function" + } + ], + "kind": "table" + }, + "Controller": { + "members": [ + { + "name": "isTargetDetected", "type": "function" }, { - "name": "runPersistenceHandlers", + "name": "pushTask", "type": "function" }, { - "name": "getPersistenceData", + "name": "__eq", "type": "function" }, { - "name": "getMarkPanels", + "name": "popTask", "type": "function" }, { - "name": "removeEventHandler", + "value": "Controller", + "type": "string", + "name": "className_" + }, + { + "name": "getDetectedTargets", + "type": "function" + }, + { + "name": "setAltitude", + "type": "function" + }, + { + "name": "setTask", + "type": "function" + }, + { + "name": "resetTask", + "type": "function" + }, + { + "name": "setOption", + "type": "function" + }, + { + "sub": { + "members": [ + + ], + "kind": "table" + }, + "type": "table", + "name": "__index" + }, + { + "name": "setCommand", + "type": "function" + }, + { + "name": "setSpeed", "type": "function" }, { "sub": { "members": [ { - "value": 59, - "type": "number", - "name": "S_EVENT_HUMAN_AIRCRAFT_REPAIR_START" - }, - { - "value": 12, - "type": "number", - "name": "S_EVENT_MISSION_END" - }, - { - "value": 39, - "type": "number", - "name": "S_EVENT_DAYNIGHT" - }, - { - "value": 1, - "type": "number", - "name": "S_EVENT_SHOT" - }, - { - "value": 28, - "type": "number", - "name": "S_EVENT_KILL" - }, - { - "value": 25, - "type": "number", - "name": "S_EVENT_MARK_ADDED" - }, - { - "value": 47, - "type": "number", - "name": "S_EVENT_WEAPON_REARM" - }, - { - "value": 60, - "type": "number", - "name": "S_EVENT_HUMAN_AIRCRAFT_REPAIR_FINISH" - }, - { - "value": 49, - "type": "number", - "name": "S_EVENT_UNIT_TASK_COMPLETE" - }, - { - "value": 24, - "type": "number", - "name": "S_EVENT_SHOOTING_END" - }, - { - "value": 10, - "type": "number", - "name": "S_EVENT_BASE_CAPTURED" - }, - { - "value": 58, - "type": "number", - "name": "S_EVENT_SIMULATION_UNFREEZE" - }, - { - "value": 8, - "type": "number", - "name": "S_EVENT_DEAD" - }, - { - "value": 35, - "type": "number", - "name": "S_EVENT_TRIGGER_ZONE" - }, - { - "value": 57, - "type": "number", - "name": "S_EVENT_SIMULATION_FREEZE" - }, - { - "value": 56, - "type": "number", - "name": "S_EVENT_MAC_LMS_RESTART" - }, - { - "value": 55, - "type": "number", - "name": "S_EVENT_RUNWAY_TOUCH" - }, - { - "value": 6, - "type": "number", - "name": "S_EVENT_EJECTION" - }, - { - "value": 54, - "type": "number", - "name": "S_EVENT_RUNWAY_TAKEOFF" - }, - { - "value": 34, - "type": "number", - "name": "S_EVENT_WEAPON_ADD" - }, - { - "value": 53, - "type": "number", - "name": "S_EVENT_MISSION_WINNER" - }, - { - "value": 23, - "type": "number", - "name": "S_EVENT_SHOOTING_START" - }, - { - "value": 52, - "type": "number", - "name": "S_EVENT_MISSION_RESTART" - }, - { - "value": 30, - "type": "number", - "name": "S_EVENT_UNIT_LOST" - }, - { - "value": 0, - "type": "number", - "name": "S_EVENT_INVALID" - }, - { - "value": 20, - "type": "number", - "name": "S_EVENT_PLAYER_ENTER_UNIT" - }, - { - "value": 43, - "type": "number", - "name": "S_EVENT_EMERGENCY_LANDING" - }, - { - "value": 51, - "type": "number", - "name": "S_EVENT_MAC_EXTRA_SCORE" - }, - { - "value": 5, - "type": "number", - "name": "S_EVENT_CRASH" - }, - { - "value": 50, - "type": "number", - "name": "S_EVENT_UNIT_TASK_STAGE" - }, - { - "value": 48, - "type": "number", - "name": "S_EVENT_WEAPON_DROP" - }, - { - "value": 61, - "type": "number", - "name": "S_EVENT_MAX" - }, - { - "value": 31, - "type": "number", - "name": "S_EVENT_LANDING_AFTER_EJECTION" - }, + "value": "void", + "type": "string", + "name": "className_" + } + ], + "kind": "table" + }, + "type": "table", + "name": "parentClass_" + }, + { + "name": "__tonumber", + "type": "function" + }, + { + "name": "__lt", + "type": "function" + }, + { + "name": "tonumber", + "type": "function" + }, + { + "name": "__le", + "type": "function" + }, + { + "name": "__newindex", + "type": "function" + }, + { + "name": "hasTask", + "type": "function" + }, + { + "name": "setOnOff", + "type": "function" + }, + { + "sub": { + "members": [ { - "value": 21, + "value": 1, "type": "number", - "name": "S_EVENT_PLAYER_LEAVE_UNIT" + "name": "VISUAL" }, { - "value": 26, + "value": 32, "type": "number", - "name": "S_EVENT_MARK_CHANGE" + "name": "DLINK" }, { - "value": 45, + "value": 2, "type": "number", - "name": "S_EVENT_UNIT_DELETE_TASK" + "name": "OPTIC" }, { - "value": 44, + "value": 16, "type": "number", - "name": "S_EVENT_UNIT_CREATE_TASK" + "name": "RWR" }, { - "value": 9, + "value": 8, "type": "number", - "name": "S_EVENT_PILOT_DEAD" + "name": "IRST" }, { - "value": 18, + "value": 4, "type": "number", - "name": "S_EVENT_ENGINE_STARTUP" - }, + "name": "RADAR" + } + ], + "kind": "table" + }, + "type": "table", + "name": "Detection" + }, + { + "name": "knowTarget", + "type": "function" + } + ], + "kind": "table" + }, + "timer": { + "members": [ + { + "name": "getAbsTime", + "type": "function" + }, + { + "name": "setFunctionTime", + "type": "function" + }, + { + "name": "getTime0", + "type": "function" + }, + { + "name": "removeFunction", + "type": "function" + }, + { + "name": "scheduleFunction", + "type": "function" + }, + { + "name": "getTime", + "type": "function" + }, + { + "name": "getPause", + "type": "function" + } + ], + "kind": "table" + }, + "StaticObject": { + "members": [ + { + "name": "getDrawArgumentValue", + "type": "function" + }, + { + "name": "__eq", + "type": "function" + }, + { + "name": "getDesc", + "type": "function" + }, + { + "value": "StaticObject", + "type": "string", + "name": "className_" + }, + { + "sub": { + "members": [ { - "value": 36, - "type": "number", - "name": "S_EVENT_LANDING_QUALITY_MARK" + "name": "isExist", + "type": "function" }, { - "value": 14, - "type": "number", - "name": "S_EVENT_REFUELING_STOP" + "value": "Object", + "type": "string", + "name": "className_" }, { - "value": 41, - "type": "number", - "name": "S_EVENT_PLAYER_SELF_KILL_PILOT" + "sub": { + "members": [ + { + "value": "void", + "type": "string", + "name": "className_" + } + ], + "kind": "table" + }, + "type": "table", + "name": "parentClass_" }, { - "value": 37, - "type": "number", - "name": "S_EVENT_BDA" + "name": "getCategory", + "type": "function" }, { - "value": 38, - "type": "number", - "name": "S_EVENT_AI_ABORT_MISSION" + "name": "cancelChoosingCargo", + "type": "function" }, { - "value": 4, - "type": "number", - "name": "S_EVENT_LAND" + "sub": { + "members": [ + { + "name": "getCategoryEx", + "type": "function" + } + ], + "kind": "table" + }, + "type": "table", + "name": "database_" }, { - "value": 40, - "type": "number", - "name": "S_EVENT_FLIGHT_TIME" + "sub": { + "members": [ + { + "value": 0, + "type": "number", + "name": "VOID" + }, + { + "value": 5, + "type": "number", + "name": "SCENERY" + }, + { + "value": 4, + "type": "number", + "name": "BASE" + }, + { + "value": 6, + "type": "number", + "name": "CARGO" + }, + { + "value": 1, + "type": "number", + "name": "UNIT" + }, + { + "value": 3, + "type": "number", + "name": "STATIC" + }, + { + "value": 2, + "type": "number", + "name": "WEAPON" + } + ], + "kind": "table" + }, + "type": "table", + "name": "Category" }, { - "value": 33, - "type": "number", - "name": "S_EVENT_DISCARD_CHAIR_AFTER_EJECTION" + "name": "hasAttribute", + "type": "function" }, { - "value": 3, - "type": "number", - "name": "S_EVENT_TAKEOFF" + "sub": { + "members": [ + + ], + "kind": "table" + }, + "type": "table", + "name": "__index" }, { - "value": 7, - "type": "number", - "name": "S_EVENT_REFUELING" + "name": "destroy", + "type": "function" }, { - "value": 42, - "type": "number", - "name": "S_EVENT_PLAYER_CAPTURE_AIRFIELD" + "name": "getAttributes", + "type": "function" }, { - "value": 22, - "type": "number", - "name": "S_EVENT_PLAYER_COMMENT" + "name": "tonumber", + "type": "function" }, { - "value": 29, - "type": "number", - "name": "S_EVENT_SCORE" + "name": "__le", + "type": "function" }, { - "value": 11, - "type": "number", - "name": "S_EVENT_MISSION_START" + "name": "getName", + "type": "function" }, { - "value": 13, - "type": "number", - "name": "S_EVENT_TOOK_CONTROL" + "name": "__tonumber", + "type": "function" }, { - "value": 32, - "type": "number", - "name": "S_EVENT_PARATROOPER_LENDING" + "name": "__lt", + "type": "function" }, { - "value": 15, - "type": "number", - "name": "S_EVENT_BIRTH" + "name": "__eq", + "type": "function" }, { - "value": 46, - "type": "number", - "name": "S_EVENT_SIMULATION_START" + "name": "getPoint", + "type": "function" }, { - "value": 27, - "type": "number", - "name": "S_EVENT_MARK_REMOVED" + "name": "__newindex", + "type": "function" }, { - "value": 2, - "type": "number", - "name": "S_EVENT_HIT" + "name": "getPosition", + "type": "function" }, { - "value": 17, - "type": "number", - "name": "S_EVENT_DETAILED_FAILURE" + "name": "getVelocity", + "type": "function" }, { - "value": 19, - "type": "number", - "name": "S_EVENT_ENGINE_SHUTDOWN" + "name": "inAir", + "type": "function" }, { - "value": 16, - "type": "number", - "name": "S_EVENT_HUMAN_FAILURE" + "name": "getTypeName", + "type": "function" } ], "kind": "table" }, "type": "table", - "name": "event" + "name": "parentClass_" }, { - "name": "addEventHandler", - "type": "function" - } - ], - "kind": "table" - }, - "Object": { - "members": [ - { - "name": "isExist", + "name": "getByName", "type": "function" }, { - "value": "Object", - "type": "string", - "name": "className_" + "name": "getForcesName", + "type": "function" }, { "sub": { "members": [ - { - "value": "void", - "type": "string", - "name": "className_" - } + ], "kind": "table" }, "type": "table", - "name": "parentClass_" + "name": "__index" }, { - "name": "getCategory", + "name": "chooseCargo", "type": "function" }, { - "name": "cancelChoosingCargo", + "name": "tonumber", "type": "function" }, { - "sub": { - "members": [ - { - "name": "getCategoryEx", - "type": "function" - } - ], - "kind": "table" - }, - "type": "table", - "name": "database_" + "name": "__newindex", + "type": "function" + }, + { + "name": "getLife", + "type": "function" + }, + { + "name": "__le", + "type": "function" + }, + { + "name": "getName", + "type": "function" + }, + { + "name": "__tonumber", + "type": "function" + }, + { + "name": "__lt", + "type": "function" + }, + { + "name": "getID", + "type": "function" + }, + { + "name": "getCoalition", + "type": "function" + }, + { + "name": "getDescByName", + "type": "function" + }, + { + "name": "getTypeName", + "type": "function" + }, + { + "name": "getCargoWeight", + "type": "function" + }, + { + "name": "getCargoDisplayName", + "type": "function" + }, + { + "name": "getCountry", + "type": "function" + } + ], + "kind": "table" + }, + "coord": { + "members": [ + { + "name": "MGRStoLL", + "type": "function" + }, + { + "name": "LOtoLL", + "type": "function" + }, + { + "name": "LLtoLO", + "type": "function" }, + { + "name": "LLtoMGRS", + "type": "function" + } + ], + "kind": "table" + }, + "coalition": { + "members": [ { "sub": { "members": [ { - "value": 0, - "type": "number", - "name": "VOID" - }, - { - "value": 5, - "type": "number", - "name": "SCENERY" - }, - { - "value": 4, + "value": 1, "type": "number", - "name": "BASE" + "name": "AWACS" }, { - "value": 6, + "value": 3, "type": "number", - "name": "CARGO" + "name": "FAC" }, { - "value": 1, + "value": 0, "type": "number", - "name": "UNIT" + "name": "ATC" }, { - "value": 3, + "value": 4, "type": "number", - "name": "STATIC" + "name": "MAX" }, { "value": 2, "type": "number", - "name": "WEAPON" + "name": "TANKER" } ], "kind": "table" }, "type": "table", - "name": "Category" + "name": "service" }, { - "name": "hasAttribute", + "name": "getServiceProviders", "type": "function" }, { - "sub": { - "members": [ - - ], - "kind": "table" - }, - "type": "table", - "name": "__index" + "name": "remove_dyn_group", + "type": "function" }, { - "name": "destroy", + "name": "getCountryCoalition", "type": "function" }, { - "name": "getAttributes", + "name": "getMainRefPoint", "type": "function" }, { - "name": "tonumber", + "name": "getAirbases", "type": "function" }, { - "name": "__le", + "name": "getRefPoints", "type": "function" }, { - "name": "getName", + "sub": { + "members": [ + { + "value": 0, + "type": "number", + "name": "NEUTRAL" + }, + { + "value": 2, + "type": "number", + "name": "BLUE" + }, + { + "value": 1, + "type": "number", + "name": "RED" + } + ], + "kind": "table" + }, + "type": "table", + "name": "side" + }, + { + "name": "add_dyn_group", "type": "function" }, { - "name": "__tonumber", + "name": "getDescentsOnBoard", "type": "function" }, { - "name": "__lt", + "name": "addRefPoint", "type": "function" }, { - "name": "__eq", + "name": "addGroup", "type": "function" }, { - "name": "getPoint", + "name": "getGroups", "type": "function" }, { - "name": "__newindex", + "name": "checkDescent", "type": "function" }, { - "name": "getPosition", + "name": "getAllDescents", "type": "function" }, { - "name": "getVelocity", + "name": "addStaticObject", + "type": "function" + }, + { + "name": "checkChooseCargo", "type": "function" }, { - "name": "inAir", + "name": "getStaticObjects", "type": "function" }, { - "name": "getTypeName", + "name": "getPlayers", "type": "function" } ], @@ -4417,6 +4254,186 @@ ], "kind": "table" }, + "Object": { + "members": [ + { + "name": "isExist", + "type": "function" + }, + { + "value": "Object", + "type": "string", + "name": "className_" + }, + { + "sub": { + "members": [ + { + "value": "void", + "type": "string", + "name": "className_" + } + ], + "kind": "table" + }, + "type": "table", + "name": "parentClass_" + }, + { + "name": "getCategory", + "type": "function" + }, + { + "name": "cancelChoosingCargo", + "type": "function" + }, + { + "sub": { + "members": [ + { + "name": "getCategoryEx", + "type": "function" + } + ], + "kind": "table" + }, + "type": "table", + "name": "database_" + }, + { + "sub": { + "members": [ + { + "value": 0, + "type": "number", + "name": "VOID" + }, + { + "value": 5, + "type": "number", + "name": "SCENERY" + }, + { + "value": 4, + "type": "number", + "name": "BASE" + }, + { + "value": 6, + "type": "number", + "name": "CARGO" + }, + { + "value": 1, + "type": "number", + "name": "UNIT" + }, + { + "value": 3, + "type": "number", + "name": "STATIC" + }, + { + "value": 2, + "type": "number", + "name": "WEAPON" + } + ], + "kind": "table" + }, + "type": "table", + "name": "Category" + }, + { + "name": "hasAttribute", + "type": "function" + }, + { + "sub": { + "members": [ + + ], + "kind": "table" + }, + "type": "table", + "name": "__index" + }, + { + "name": "destroy", + "type": "function" + }, + { + "name": "getAttributes", + "type": "function" + }, + { + "name": "tonumber", + "type": "function" + }, + { + "name": "__le", + "type": "function" + }, + { + "name": "getName", + "type": "function" + }, + { + "name": "__tonumber", + "type": "function" + }, + { + "name": "__lt", + "type": "function" + }, + { + "name": "__eq", + "type": "function" + }, + { + "name": "getPoint", + "type": "function" + }, + { + "name": "__newindex", + "type": "function" + }, + { + "name": "getPosition", + "type": "function" + }, + { + "name": "getVelocity", + "type": "function" + }, + { + "name": "inAir", + "type": "function" + }, + { + "name": "getTypeName", + "type": "function" + } + ], + "kind": "table" + }, + "atmosphere": { + "members": [ + { + "name": "getWindWithTurbulence", + "type": "function" + }, + { + "name": "getTemperatureAndPressure", + "type": "function" + }, + { + "name": "getWind", + "type": "function" + } + ], + "kind": "table" + }, "env": { "members": [ { @@ -7943,7 +7960,7 @@ "name": "failures" }, { - "value": 150, + "value": 176, "type": "number", "name": "currentKey" }, @@ -9292,11 +9309,6 @@ "type": "string", "name": "comment" }, - { - "value": "triggerOnce", - "type": "string", - "name": "predicate" - }, { "sub": { "members": [ @@ -9309,7 +9321,7 @@ "name": "predicate" }, { - "value": "local targets={\u000a Unit=true,\u000a Group=true,\u000a Object=true,\u000a SceneryObject=true,\u000a Spot=true,\u000a StaticObject=true,\u000a Warehouse=true,\u000a Weapon=true,\u000a atmosphere=true,\u000a coalition=true,\u000a coord=true,\u000a dcs=true,\u000a env=true,\u000a land=true,\u000a missionCommands=true,\u000a net=true,\u000a timer=true,\u000a trigger=true,\u000a VoiceChat=true,\u000a world=true,\u000a Airbase=true,\u000a Controller=true,\u000a CoalitionObject=true,\u000a AI=true,\u000a country=false,\u000a Beacons=true,\u000a Formation=true\u000a }\u000alocal esc={}for i=0,31 do esc[i]=string.format(\"\\\\u%04x\",i)end esc[34]=\"\\\\\\\"\" esc[92]=\"\\\\\\\\\"\u000alocal function js(s)return\"\\\"\"..s:gsub(\".\",function(c)return esc[c:byte()]or c end)..\"\\\"\"end\u000alocal function encode(x,seen,lv)\u000a local t=type(x)\u000a if t==\"number\"or t==\"boolean\"then return tostring(x)end\u000a if t==\"string\"then return js(x)end\u000a if t~=\"table\"then return js(\"<\"..t..\">\")end\u000a if seen[x]then return js(\"\")end\u000a seen[x]=true\u000a local indent=string.rep(\" \",lv)\u000a local indent2=indent..\" \"\u000a local arr=true local i=1\u000a for k in pairs(x)do if k~=i then arr=false break end i=i+1 end\u000a local r={}\u000a if arr then\u000a for _,v in ipairs(x)do r[#r+1]=indent2..encode(v,seen,lv+1)end\u000a return \"[\\n\"..table.concat(r,\",\\n\")..\"\\n\"..indent..\"]\"\u000a else\u000a for k,v in pairs(x)do r[#r+1]=indent2..encode(k,seen,lv+1)..\": \"..encode(v,seen,lv+1)end\u000a return \"{\\n\"..table.concat(r,\",\\n\")..\"\\n\"..indent..\"}\"\u000a end\u000aend\u000alocal function snap(tbl,depth,seen)\u000a if depth==0 or seen[tbl]then return{kind=\"table\",members={}}end\u000a seen[tbl]=true\u000a local mem={}\u000a for k,v in pairs(tbl)do\u000a local ok,tp=pcall(function()return type(v)end)\u000a if ok then\u000a local m={name=tostring(k),type=tp}\u000a if tp==\"table\"then m.sub=snap(v,depth-1,seen)end\u000a if tp==\"number\"or tp==\"string\"or tp==\"boolean\"then m.value=v end\u000a mem[#mem+1]=m\u000a end\u000a end\u000a return{kind=\"table\",members=mem}\u000aend\u000alocal root={}\u000afor k,v in pairs(_G)do\u000a if targets[k]then\u000a local tp=type(v)\u000a if tp==\"table\"then root[k]=snap(v,10,{})else root[k]={kind=tp}end\u000a end\u000aend\u000alocal f=io.open(lfs.writedir()..\"/DCS_API.json\",\"w\")\u000af:write(encode(root,{},0))\u000af:close()\u000a", + "value": "local targets={\u000a Unit=true,\u000a Group=true,\u000a Object=true,\u000a SceneryObject=true,\u000a Spot=true,\u000a StaticObject=true,\u000a Warehouse=true,\u000a Weapon=true,\u000a atmosphere=true,\u000a coalition=true,\u000a coord=true,\u000a dcs=true,\u000a env=true,\u000a land=true,\u000a missionCommands=true,\u000a net=true,\u000a timer=true,\u000a trigger=true,\u000a VoiceChat=true,\u000a world=true,\u000a Airbase=true,\u000a Controller=true,\u000a CoalitionObject=true, -- Non-final class. Not actually accessible via API.\u000a AI=true,\u000a country=false,\u000a Beacons=true,\u000a Formation=true,\u000a Disposition=true,\u000a }\u000alocal esc={}for i=0,31 do esc[i]=string.format(\"\\\\u%04x\",i)end esc[34]=\"\\\\\\\"\" esc[92]=\"\\\\\\\\\"\u000alocal function js(s)return\"\\\"\"..s:gsub(\".\",function(c)return esc[c:byte()]or c end)..\"\\\"\"end\u000alocal function encode(x,seen,lv)\u000a local t=type(x)\u000a if t==\"number\"or t==\"boolean\"then return tostring(x)end\u000a if t==\"string\"then return js(x)end\u000a if t~=\"table\"then return js(\"<\"..t..\">\")end\u000a if seen[x]then return js(\"\")end\u000a seen[x]=true\u000a local indent=string.rep(\" \",lv)\u000a local indent2=indent..\" \"\u000a local arr=true local i=1\u000a for k in pairs(x)do if k~=i then arr=false break end i=i+1 end\u000a local r={}\u000a if arr then\u000a for _,v in ipairs(x)do r[#r+1]=indent2..encode(v,seen,lv+1)end\u000a return \"[\\n\"..table.concat(r,\",\\n\")..\"\\n\"..indent..\"]\"\u000a else\u000a for k,v in pairs(x)do r[#r+1]=indent2..encode(k,seen,lv+1)..\": \"..encode(v,seen,lv+1)end\u000a return \"{\\n\"..table.concat(r,\",\\n\")..\"\\n\"..indent..\"}\"\u000a end\u000aend\u000alocal function snap(tbl,depth,seen)\u000a if depth==0 or seen[tbl]then return{kind=\"table\",members={}}end\u000a seen[tbl]=true\u000a local mem={}\u000a for k,v in pairs(tbl)do\u000a local ok,tp=pcall(function()return type(v)end)\u000a if ok then\u000a local m={name=tostring(k),type=tp}\u000a if tp==\"table\"then m.sub=snap(v,depth-1,seen)end\u000a if tp==\"number\"or tp==\"string\"or tp==\"boolean\"then m.value=v end\u000a mem[#mem+1]=m\u000a end\u000a end\u000a return{kind=\"table\",members=mem}\u000aend\u000alocal root={}\u000afor k,v in pairs(_G)do\u000a if targets[k]then\u000a local tp=type(v)\u000a if tp==\"table\"then root[k]=snap(v,10,{})else root[k]={kind=tp}end\u000a end\u000aend\u000alocal f=io.open(lfs.writedir()..\"/DCS_API.json\",\"w\")\u000af:write(encode(root,{},0))\u000af:close()\u000a\u000aenv.info(\"Dumped DCS World global tables to \" .. lfs.writedir() .. \"/DCS_API.json\")", "type": "string", "name": "text" } @@ -9324,6 +9336,11 @@ }, "type": "table", "name": "actions" + }, + { + "value": "triggerOnce", + "type": "string", + "name": "predicate" } ], "kind": "table" @@ -9426,7 +9443,7 @@ "sub": { "members": [ { - "value": "a_do_script(\"local targets={\\\u000a Unit=true,\\\u000a Group=true,\\\u000a Object=true,\\\u000a SceneryObject=true,\\\u000a Spot=true,\\\u000a StaticObject=true,\\\u000a Warehouse=true,\\\u000a Weapon=true,\\\u000a atmosphere=true,\\\u000a coalition=true,\\\u000a coord=true,\\\u000a dcs=true,\\\u000a env=true,\\\u000a land=true,\\\u000a missionCommands=true,\\\u000a net=true,\\\u000a timer=true,\\\u000a trigger=true,\\\u000a VoiceChat=true,\\\u000a world=true,\\\u000a Airbase=true,\\\u000a Controller=true,\\\u000a CoalitionObject=true,\\\u000a AI=true,\\\u000a country=false,\\\u000a Beacons=true,\\\u000a Formation=true\\\u000a }\\\u000alocal esc={}for i=0,31 do esc[i]=string.format(\\\"\\\\\\\\u%04x\\\",i)end esc[34]=\\\"\\\\\\\\\\\\\\\"\\\" esc[92]=\\\"\\\\\\\\\\\\\\\\\\\"\\\u000alocal function js(s)return\\\"\\\\\\\"\\\"..s:gsub(\\\".\\\",function(c)return esc[c:byte()]or c end)..\\\"\\\\\\\"\\\"end\\\u000alocal function encode(x,seen,lv)\\\u000a local t=type(x)\\\u000a if t==\\\"number\\\"or t==\\\"boolean\\\"then return tostring(x)end\\\u000a if t==\\\"string\\\"then return js(x)end\\\u000a if t~=\\\"table\\\"then return js(\\\"<\\\"..t..\\\">\\\")end\\\u000a if seen[x]then return js(\\\"\\\")end\\\u000a seen[x]=true\\\u000a local indent=string.rep(\\\" \\\",lv)\\\u000a local indent2=indent..\\\" \\\"\\\u000a local arr=true local i=1\\\u000a for k in pairs(x)do if k~=i then arr=false break end i=i+1 end\\\u000a local r={}\\\u000a if arr then\\\u000a for _,v in ipairs(x)do r[#r+1]=indent2..encode(v,seen,lv+1)end\\\u000a return \\\"[\\\\n\\\"..table.concat(r,\\\",\\\\n\\\")..\\\"\\\\n\\\"..indent..\\\"]\\\"\\\u000a else\\\u000a for k,v in pairs(x)do r[#r+1]=indent2..encode(k,seen,lv+1)..\\\": \\\"..encode(v,seen,lv+1)end\\\u000a return \\\"{\\\\n\\\"..table.concat(r,\\\",\\\\n\\\")..\\\"\\\\n\\\"..indent..\\\"}\\\"\\\u000a end\\\u000aend\\\u000alocal function snap(tbl,depth,seen)\\\u000a if depth==0 or seen[tbl]then return{kind=\\\"table\\\",members={}}end\\\u000a seen[tbl]=true\\\u000a local mem={}\\\u000a for k,v in pairs(tbl)do\\\u000a local ok,tp=pcall(function()return type(v)end)\\\u000a if ok then\\\u000a local m={name=tostring(k),type=tp}\\\u000a if tp==\\\"table\\\"then m.sub=snap(v,depth-1,seen)end\\\u000a if tp==\\\"number\\\"or tp==\\\"string\\\"or tp==\\\"boolean\\\"then m.value=v end\\\u000a mem[#mem+1]=m\\\u000a end\\\u000a end\\\u000a return{kind=\\\"table\\\",members=mem}\\\u000aend\\\u000alocal root={}\\\u000afor k,v in pairs(_G)do\\\u000a if targets[k]then\\\u000a local tp=type(v)\\\u000a if tp==\\\"table\\\"then root[k]=snap(v,10,{})else root[k]={kind=tp}end\\\u000a end\\\u000aend\\\u000alocal f=io.open(lfs.writedir()..\\\"/DCS_API.json\\\",\\\"w\\\")\\\u000af:write(encode(root,{},0))\\\u000af:close()\\\u000a\"); mission.trig.func[1]=nil;", + "value": "a_do_script(\"local targets={\\\u000a Unit=true,\\\u000a Group=true,\\\u000a Object=true,\\\u000a SceneryObject=true,\\\u000a Spot=true,\\\u000a StaticObject=true,\\\u000a Warehouse=true,\\\u000a Weapon=true,\\\u000a atmosphere=true,\\\u000a coalition=true,\\\u000a coord=true,\\\u000a dcs=true,\\\u000a env=true,\\\u000a land=true,\\\u000a missionCommands=true,\\\u000a net=true,\\\u000a timer=true,\\\u000a trigger=true,\\\u000a VoiceChat=true,\\\u000a world=true,\\\u000a Airbase=true,\\\u000a Controller=true,\\\u000a CoalitionObject=true, -- Non-final class. Not actually accessible via API.\\\u000a AI=true,\\\u000a country=false,\\\u000a Beacons=true,\\\u000a Formation=true,\\\u000a Disposition=true,\\\u000a }\\\u000alocal esc={}for i=0,31 do esc[i]=string.format(\\\"\\\\\\\\u%04x\\\",i)end esc[34]=\\\"\\\\\\\\\\\\\\\"\\\" esc[92]=\\\"\\\\\\\\\\\\\\\\\\\"\\\u000alocal function js(s)return\\\"\\\\\\\"\\\"..s:gsub(\\\".\\\",function(c)return esc[c:byte()]or c end)..\\\"\\\\\\\"\\\"end\\\u000alocal function encode(x,seen,lv)\\\u000a local t=type(x)\\\u000a if t==\\\"number\\\"or t==\\\"boolean\\\"then return tostring(x)end\\\u000a if t==\\\"string\\\"then return js(x)end\\\u000a if t~=\\\"table\\\"then return js(\\\"<\\\"..t..\\\">\\\")end\\\u000a if seen[x]then return js(\\\"\\\")end\\\u000a seen[x]=true\\\u000a local indent=string.rep(\\\" \\\",lv)\\\u000a local indent2=indent..\\\" \\\"\\\u000a local arr=true local i=1\\\u000a for k in pairs(x)do if k~=i then arr=false break end i=i+1 end\\\u000a local r={}\\\u000a if arr then\\\u000a for _,v in ipairs(x)do r[#r+1]=indent2..encode(v,seen,lv+1)end\\\u000a return \\\"[\\\\n\\\"..table.concat(r,\\\",\\\\n\\\")..\\\"\\\\n\\\"..indent..\\\"]\\\"\\\u000a else\\\u000a for k,v in pairs(x)do r[#r+1]=indent2..encode(k,seen,lv+1)..\\\": \\\"..encode(v,seen,lv+1)end\\\u000a return \\\"{\\\\n\\\"..table.concat(r,\\\",\\\\n\\\")..\\\"\\\\n\\\"..indent..\\\"}\\\"\\\u000a end\\\u000aend\\\u000alocal function snap(tbl,depth,seen)\\\u000a if depth==0 or seen[tbl]then return{kind=\\\"table\\\",members={}}end\\\u000a seen[tbl]=true\\\u000a local mem={}\\\u000a for k,v in pairs(tbl)do\\\u000a local ok,tp=pcall(function()return type(v)end)\\\u000a if ok then\\\u000a local m={name=tostring(k),type=tp}\\\u000a if tp==\\\"table\\\"then m.sub=snap(v,depth-1,seen)end\\\u000a if tp==\\\"number\\\"or tp==\\\"string\\\"or tp==\\\"boolean\\\"then m.value=v end\\\u000a mem[#mem+1]=m\\\u000a end\\\u000a end\\\u000a return{kind=\\\"table\\\",members=mem}\\\u000aend\\\u000alocal root={}\\\u000afor k,v in pairs(_G)do\\\u000a if targets[k]then\\\u000a local tp=type(v)\\\u000a if tp==\\\"table\\\"then root[k]=snap(v,10,{})else root[k]={kind=tp}end\\\u000a end\\\u000aend\\\u000alocal f=io.open(lfs.writedir()..\\\"/DCS_API.json\\\",\\\"w\\\")\\\u000af:write(encode(root,{},0))\\\u000af:close()\\\u000a\\\u000aenv.info(\\\"Dumped DCS World global tables to \\\" .. lfs.writedir() .. \\\"/DCS_API.json\\\")\"); mission.trig.func[1]=nil;", "type": "string", "name": "1" } @@ -9461,23 +9478,6 @@ ], "kind": "table" }, - "atmosphere": { - "members": [ - { - "name": "getWindWithTurbulence", - "type": "function" - }, - { - "name": "getTemperatureAndPressure", - "type": "function" - }, - { - "name": "getWind", - "type": "function" - } - ], - "kind": "table" - }, "net": { "members": [ { @@ -9781,6 +9781,64 @@ ], "kind": "table" }, + "Disposition": { + "members": [ + { + "name": "getSimpleZones", + "type": "function" + }, + { + "name": "getRunwayPerimetr", + "type": "function" + }, + { + "name": "setMarkerPoint", + "type": "function" + }, + { + "value": "Disposition", + "type": "string", + "name": "className_" + }, + { + "name": "getPointWater", + "type": "function" + }, + { + "name": "getPointHeight", + "type": "function" + }, + { + "name": "DriftRoute", + "type": "function" + }, + { + "name": "getRandomSort", + "type": "function" + }, + { + "name": "getElipsSideZones", + "type": "function" + }, + { + "name": "getRandom", + "type": "function" + }, + { + "name": "getRouteAwayWater", + "type": "function" + }, + { + "name": "getRandomIn", + "type": "function" + }, + { + "name": "getThresholdFourZones", + "type": "function" + } + ], + "kind": "table" + }, "Weapon": { "members": [ { diff --git a/tools/dcs_api_extract.lua b/tools/dcs_api_extract.lua index 18295b1..8f7d825 100644 --- a/tools/dcs_api_extract.lua +++ b/tools/dcs_api_extract.lua @@ -75,3 +75,5 @@ end local f=io.open(lfs.writedir().."/DCS_API.json","w") f:write(encode(root,{},0)) f:close() + +env.info("Dumped DCS World global tables to " .. lfs.writedir() .. "/DCS_API.json") \ No newline at end of file