
Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
Tarochi |
![]()
Message
#31
|
![]() Messages : 110 Inscrit : 31/12/06 Membre n° 1,234 ![]() |
|
Lynx |
![]()
Message
#32
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Indicatif : BS-05 Messages : 2,453 Inscrit : 23/03/05 Lieu : FONTENAY-SOUS-BOIS Membre n° 108 ![]() |
J' ai essayé, et tout fonctionne, mais bon, instrumentation limitée et pas de plein écran...
L'idée reste cependant excellente, et, ma foi, je suis bluffé par la fluidité du machin... ![]() Je le prend aussi comme une bonne approche du dialogue avec lua ![]() Merci pour le lien Tarochi. ![]() --------------------
3rdlynx.ddns.net Serveur Discord Perso/Mission Editor : 965280400698146836 The agnostic dislexic insomniac: lies awake in bed at night wondering if there really is a dog. Manche WARTHOG sur Virpil WAR BRD, Throttle et Palo Virpil, Pilotseat GameRacer Pro, HP reverb G2+ Simshaker JETPAD Toutes cartes sauf South Atlantic et WWII Config + CG MSI 6950XT 16 Go340W + be quiet! Pure Rock 2 + Mushkin Redline 64 Go 2 x 32 Go DDR4 3600 MHz + AMD Ryzen 7 5800X3D, 3,4 GHz (4,5 GHz Turbo Boost) + be quiet! Pure Power 11 FM 1000W, + SAMSUNG 980 PRO, 2 To, SSD + ASUS PRIME X570-P, + Sharkoon RGB LIT 100. ![]() |
Tarochi |
![]()
Message
#33
|
![]() Messages : 110 Inscrit : 31/12/06 Membre n° 1,234 ![]() |
Patience c'est une Beta
Regarde les forums, Mais il est une chose similaire a Gauge Composer, cette est encore plus eficiente, et tu peuves utilisser les bmp, pour designer tes instruments avec il. Et aussi tu peuves faire un coup de oeil a le functionament du LUA Ca marche....... Je pense que a la sortie du Black Shark le export.lua ajoutera plusiers variables , que nous pouvons utilisser en notres experiments. ![]() ![]() Patiente,patiente,patiente ![]() ![]() ![]() Tarochi |
Lecreole |
![]()
Message
#34
|
![]() ![]() Messages : 379 Inscrit : 13/04/05 Lieu : 74100 Annemasse Membre n° 125 ![]() |
Ce soir en fin de soirée je posterais des examples de communication entre LUA et SIOC.
A toute. |
Lecreole |
![]()
Message
#35
|
![]() ![]() Messages : 379 Inscrit : 13/04/05 Lieu : 74100 Annemasse Membre n° 125 ![]() |
Avant toute chose sauvegarder vos fichiers avant de tester quoi que ce soit
![]() Paramétres SIOC (sioc.ini) : .... [ Puerto del servidor IOCP ] [ IOCP port ] IOCP_port=8091 [ Tiempo de respuesta máximo de los paquetes IOCP ] [ IOCP Timeout ] IOCP_timeout=4000 .... [ Fichero de configuracion ] [ Configuration File ] CONFIG_FILE=.\tonfichier.ssi .... [************** IOCP CLIENT MODULE #0 ***************] [ Desactivar el módulo cliente IOCP ] [ Disable IOCP client module ] IOCPclient0_disable=no [ IP del servidor donde debe de conectar el cliente ] [ IOCP client host name ] IOCPclient0_host=127.0.0.1 [ Puerto de envio del protocolo IOCP cliente ] [ IOCP client port ] IOCPclient0_port=8092 .... examples paramétres ConfigSioc(tonfichier.ssi) : CITATION Var 0201, name FLAPS_SW, Link IOCARD_SW, Input 6 // INT_VOLETS { &FLAPS_STATE = &FLAPS_SW } Var 0202, name GEAR_SW, Link IOCARD_SW, Input 7 // INT_TRAINS { &AIRBREAK_STATE = &GEAR_SW } Var 0203, name WHEEL_SW, Link IOCARD_SW, Input 3 // INT_FREINS { &WHEEL_STATE = &WHEEL_SW } Var 0204, name AIRBREAK_SW, Link IOCARD_SW, Input 8 // INT_AEROFREINS { &AIRBREAK_STATE = &AIRBREAK_SW } Var 0205, name CANOPY_SW, Link IOCARD_SW, Input 14 // INT_VERRIERE { IF &CANOPY_SW = 1 { IF &CANOPY_STATE = 0 { &CANOPY_STATE = 1 } ELSE { &CANOPY_STATE = 0 } } } Var 0401, name FLAPS_OK, Link IOCARD_OUT, Output 11 // LED _VOLET_OK Var 0402, name FLAPS_NOOK, Link IOCARD_OUT, Output 12 // LED_VOLETS_NOOK Var 0403, name GEAR_OK, Link IOCARD_OUT, Output 13 // LED_TRAIN_OK Var 0404, name WHEEL_ON, Link IOCARD_OUT, Output 14 // LED_FREIN_ROUE_ON Var 0405, name AIRBRAKE_ON, Link IOCARD_OUT, Output 15 // LED_AEROFREINS_ON Var 0406, name CANOPY_ON, Link IOCARD_OUT, Output 16 // LED_VERRIERE_ON Var 0001, name FLAPS_STATE, Link IOCP, Offset 1, Value 0 // IOCP_ETAT_VOLETS Var 0002, name GEAR_STATE, Link IOCP, Offset 2, Value 0 // IOCP_ETAT_TRAINS Var 0003, name WHEEL_STATE, Link IOCP, Offset 3, Value 0 // IOCP_FREINS_ROUES Var 0004, name AIRBREAK_STATE, Link IOCP, Offset 4, Value 0 // IOCP_ETAT_AEROFREINS Var 0005, name CANOPY_STATE, Link IOCP, Offset 5, Value 0 // IOCP_ETAT_VERRIERE Example de codage LUA CITATION ---------------------------------------------------------------------------------- -- Liaisons des variables SIOC et commande Lockon -- ---------------------------------------------------------------------------------- t={} -- t[1]=variable/OFFSET 0001 ds SIOC, t[2]=variable 0002/OFFSET ds SIOC,t[n]=variable n ds SIOC,... t[1] = {LastState=146, Input_On=145, Input_Off=146, Output_Ok=401, Output_Nook=402} -- Cmd des Volets t[2] = {LastState=431, Input_On=431, Input_Off=430, Output_Ok=0, Output_Nook=0} -- Cmd des Trains t[3] = {LastState=74, Input_On=74, Input_Off=75, Output_Ok=405} -- Cmd des Freins Roues t[4] = {LastState=148, Input_On=147, Input_Off=148, Output_Ok=406} -- Cmd des aérofreins t[5] = {LastState=0, Input_On=71, Input_Off=71, Output_Ok=402} -- Cmd de la verriére function LuaExportStart() ------------------------------------------------------------------ -- Création du fichier LOG -- ------------------------------------------------------------------ dofile "lua.lua" local file = io.open("./Temp/Log.txt","w"); if file then io.output(file) end ------------------------------------------------------------------ -- Création du Serveur-client -- ------------------------------------------------------------------ -- Client - Port d'envoi socket = require("socket") host = "127.0.0.1" port = 8091 client = socket.try(socket.connect(host, port)) client:setoption("tcp-nodelay",true) if client then log("Connection client réussi sur "..host..":"..port) end -- Serveur - Port d'écoute socket = require("socket") host = "127.0.0.1" port = 8092 log("Demande de socket au " ..host.. ":" ..port) s = socket.try(socket.bind(host, port)) i, p = socket.try(s:getsockname()) log("Attente de connection pendant 5 secondes au " ..i.. ":" ..p) socket.try(s:settimeout(5)) serveur = socket.try(s:accept()) if serveur ~= nil then socket.try(serveur:settimeout(0)) log("Connection Serveur réussi sur "..i..":"..p) end end function log(event) io.write(os.date("%d/%m/%y-%H:%M:%S").." "..event.."\n") end function LuaExportBeforeNextFrame() if serveur then l, e = serveur:receive() if l then log("Reçoit:"..l) TraitementData(l) end end end function LuaExportAfterNextFrame() end function LuaExportStop() serveur:close() client:close() log("Connection fermer") io.close() end function LuaExportActivityNextEvent(t) end function TraitementData(_data) local cmd -- Commande local val -- Valeur local r = "" for v in string.gfind(_data,"%w+=%w+") do local i = 0 for d in string.gfind(v,"%w+") do if i==0 then cmd = tonumber(d) else val=tonumber(d) end i = i+1 end if t[cmd].Input_Off==t[cmd].Input_On then rval=val rcmd=t[cmd].Input_On else if val==0 then rval=t[cmd].Input_Off else rval=t[cmd].Input_On end rcmd=rval end socket.try(client:send(string.format("Val=%s rval=%s state=%s\n",val,rval,t[cmd].LastState))) if t[cmd].LastState == rval then -- Actualise l'état if t[cmd].Output_Ok then r = r..":"..t[cmd].Output_Ok.."="..val end if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end --socket.try(client:send(r.."\n")) else if EstPossible(cmd,rval) then socket.try(client:send("Possible\n")) LoSetCommand(tonumber(rcmd)) if t[cmd].Output_Ok then r = r..":"..t[cmd].Output_Ok.."="..val end if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end --if t[cmd].Output_OK then r = r..":"..t[cmd].Output_Ok.."="..val end --if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=0" end t[cmd].LastState = rval else socket.try(client:send("Impossible\n")) if t[cmd].Output_OK then r = r..":"..t[cmd].Output_Ok.."=0" end if t[cmd].Output_NooK then r = r..":"..t[cmd].Output_Nook.."=1" end end end end if r ~= "" then socket.try(client:send("Arn.Resp:"..r.."\n")) end end function EstPossible(c,v) return true end Désolé, si c'est un peu brute ![]() ![]() ![]() Ce message a été modifié par Lecreole - 11 Jan 2007, 10:32. |
Lecreole |
![]()
Message
#36
|
![]() ![]() Messages : 379 Inscrit : 13/04/05 Lieu : 74100 Annemasse Membre n° 125 ![]() |
J'ai modifié le code pour accepter les commandes uniques pour on et off
example : verriére = LoSetCommand(71) pour on et off CITATION if t[cmd].Input_Off==t[cmd].Input_On then rval=val rcmd=t[cmd].Input_On else if val==0 then rval=t[cmd].Input_Off else rval=t[cmd].Input_On end rcmd=rval end regarder l'example du changement d'état dans le SIOC avec un interrupteur poussoir : CITATION Var 0205, name CANOPY_SW, Link IOCARD_SW, Input 14 // INT_VERRIERE { IF &CANOPY_SW = 1 { IF &CANOPY_STATE = 0 { &CANOPY_STATE = 1 } ELSE { &CANOPY_STATE = 0 } } } Voila, on peut initialiser l'état, et commander l'ouverture ou fermeture avec le meme bouton. Pour l'instant toutes les commandes sont exécutées sans mesage d'erreur, mème si le jeu ne le permet pas. je travaille sur ce problème: CITATION function EstPossible(c,v) return true end a bientôt. |
Doug |
![]()
Message
#37
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Ladhouze pilot, eagle driver, amraams carrier, ... Indicatif : F-01 Messages : 2,446 Inscrit : 27/11/04 Lieu : London Membre n° 1 ![]() |
Lecreole, hésites pas a completer la liste des commandes que j'avais faite et mise sur le forum.
--------------------
|
Tarochi |
![]()
Message
#38
|
![]() Messages : 110 Inscrit : 31/12/06 Membre n° 1,234 ![]() |
C'est Magnifique Lecreole je suis
![]() Mais j'ai une puntualisation avec toi. Tu as faite la programation dirige a la utilisation des interrupteurs poissoirs, mais pour une bone realisme, a la construction de un cokcpit, il se emploie des interrupteur On-OFF, On-OFF-ON, etc. Pour un cockpit comme il de Marauder, Specnaz etc, ton programation est tres valide, mais nèst pas realiste. Pour quoi? je te comment. Dans le Su-27 le indicateur du train marque "On" Train Ouvert ( Lumiere Vert) "Off" Train Ferme (Aucune lumiere) Et aussi une lumiere indicateur du mauveux function. Avec une interrupteur poussoir tu as faite une bonne programation, tu indiques l'etat du train et le reseignes avec un led: vert extendu, rouje replegue. mais attendant au simulateur , et a le realisme, Ça n'existe pas. Dans une vole realiste nous somme obligue tooujour a partir en base, et en prevoir, nous somme obligues a la realisation d'un check list du les interrupteur avant de la initialisation du jeu. (Dans la realite aussi) Au memme temps c'est la memme cuestion si nous initialisons le vol en l'air. Pour la construccion dúne cockpit simple est perfect, et practique Pour une cockpit plus realiste aussi mais, on peut economisser une parte du programme. Mais comme je t'avais dit c'est un example magnifique pour montrer le metode du introduction de comandes in Lock On Felissitations ![]() ![]() Tarochi |
Maraudeur |
![]()
Message
#39
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Commandant de la 92nd Kodiak AF Indicatif : JR-22 Messages : 4,232 Inscrit : 4/12/04 Lieu : Monnaie Membre n° 17 ![]() |
Pour Lecréole:
![]() ![]() --------------------
![]() Cerbro Tvo Utere! Sin Minvs, Parietes Asperget... |
Lecreole |
![]()
Message
#40
|
![]() ![]() Messages : 379 Inscrit : 13/04/05 Lieu : 74100 Annemasse Membre n° 125 ![]() |
Tu as faite la programation dirige a la utilisation des interrupteurs poissoirs, mais pour une bone realisme, a la construction de un cokcpit, il se emploie des interrupteur On-OFF, On-OFF-ON, etc. Tarochi Non ![]() Le LUA met à jour Lockon en fonction des commandes du cokpit si bien sur c'est possible. sauf, justement pour les boutons poussoirs car ils seront tous à la valeur 0, ces boutons prendrons la valeur par défaut lors de la déclaration des variable ds le SIOC. tu as raison de dire de faire un check-list avant chaque vol, car justement si tu commence le jeu en vol et tes commandes des moteurs sont sur off, tes moteurs vont etres coupés dés que tu enlèvera la pause. Idem pour la verrière si tu mets un bouton ON/OFF, si il est sur ON, t'aura la bonne surprise de voire ta verrière disparaitre ds le vide ![]() ![]() l'example poster plus haut était juste pour montrer que c'est tout à fait possible de communiquer entre le SIOC et Lockon via LUA. Il ne reste plus qu'a exploiter au maximum cette posibilitée. Merci pour tes encouragements et à bientôt. Lecreole. |
![]() ![]() |
Haut de page · Retour à l'accueil · Contacter le Webmestre | Nous sommes le : 1/05/25 - 17:29 |