Xplane Scripting House · X-Plane 12 Sort en premier
Le scripting visuel et Lua pour X-Plane
Scriptez X-Plane avec des graphes, du Lua, ou les deux.
- Gratuit
- Open source · MIT
- X-Plane 12
- Windows 10/11
-- chaque graphe peut s'en servir comme nœud
xsh.export("distance_to_aircraft", {
inputs = { "pos:vec3" },
outputs = { "metres:float" },
pure = true,
}, function(pos)
return pos:distance(xsh.aircraft().position)
end)
Deux façons de scripter, une seule extension
À égalité : l'un, l'autre ou les deux, pour tout.
Des graphes, sans code
Scripting visuel
Par exemple
- Véhicules sur des trajets
- Zones où entre l'avion
- Séquences pas à pas
- Scènes vivantes, sans code
- …et tout ce que vous imaginerez
Du code, aussi loin que vous voulez
Scripting Lua
Par exemple
- Logique lourde ou mathématique
- Vos propres datarefs et commandes
- Fichiers, JSON, tables
- De nouveaux nœuds pour les graphes
- …et tout ce que vous imaginerez
Encore mieux ensemble
Lua
- Nouveaux nœuds
xsh.export - Variables partagées
xsh.graph.get / set - Événements, dans les deux sens
xsh.events.send / on - Erreurs Lua dans le journal de l'éditeur
Graphes
local xsh = require("xsh")
-- un nœud Call Lua : le graphe attend pendant que la voiturette suit le trajet
xsh.export("demo.tow_to", {
inputs = { "role:string", "speed:float" },
outputs = { "spline:string", "seconds:float" },
}, function(role, speed)
local ref = assert(xsh.spline.find({ role = role }))
local cart = assert(xsh.object.create("crew/golf_cart.obj"))
local t0 = xsh.time.sim()
local m = assert(cart:follow(ref, { speed = speed }))
xsh.wait_until(function() return m.done end)
return ref, xsh.time.sim() - t0
end)
-- changer une variable que le graphe partage
xsh.graph.set("tow.cmgraph", "carts", 2)
-- lancer le On Event "tow_ready" des graphes
xsh.events.send("tow_ready")
graph_bridge.lua fourni avec XSH.Scripting visuel : l'éditeur de graphes
Les événements à gauche, les actions à droite. Proche des Blueprints d'Unreal.
Lancé dans le simulateur
F5 le lance, F6 le débogue en direct.
Une bibliothèque de nœuds
Tab pour ajouter, glisser pour relier.
Global, par scène ou par avion
Chaque vol, près d'un aéroport, ou dans un avion.
Ils connaissent le monde
Suit les trajets, réagit aux volumes.
Fonctions et graphes rangés
Fonctions et rangement automatique.
Traduits
Messages dans la langue du pilote.
Scripting Lua
- LuaJIT 2.1
- sandbox
- VS Code
- Événements, minuteries, attente
- Rechargement à l'enregistrement
- Fichier et ligne des erreurs, chien de garde
- Isolé, sans conflit avec XLua ou FlyWithLua
- Complétion dans VS Code
-- scripts/hello.lua: tourne à chaque vol,
-- et se recharge dès que vous l'enregistrez
local xsh = require("xsh")
local agl = xsh.dataref("sim/flightmodel/position/y_agl")
xsh.on("start", function(info)
xsh.state.runs = (xsh.state.runs or 0) + 1
xsh.notice("Hello from Lua (" .. xsh.state.runs .. ")", 0, 4)
end)
xsh.events.on("tow_coming", function()
xsh.log("tow coming, " .. math.floor(agl.value) .. " m AGL")
end)
Où il en est
- La VM
- L'API
- Graphes + Lua
- 4En coursSystèmes avion
- 5Écrans de cockpit
Télécharger
Pas encore publié
Sort en premier.
Code source
- C++17 core
- LuaJIT (no FFI)
- Qt 6 editor
- X-Plane plugin
Code source sur GitHub : bientôt