Vous n'êtes pas identifié(e).
Bonsoir,
En parcourant le SDK, je suis tombé sur la compilation de jauge en fichier SPB (Sim-Prop Binary), l'avantage d'avoir une jauge XML en binaire; voir ex. ci-dessous:
Creating an SPB file
XML gauges, Missions and some Autogen files can either be in XML or SPB (Sim-Prop Binary) format. If an XML version of a file is found in the same folder as an SPB file, the SPB file will be loaded in preference to the XML file as the binary format is faster to load that its XML equivalent. Because of this it makes sense to move an SPB file out of the folder where editing work is being done on its XML equivalent.
Source: http://msdn.microsoft.com/en-us/library/cc526953.aspx (Voir en bas de page)
Alors j'ai aucun problème à créer un fichier SPB en partant de fichier XML présent dans le répertoire "..SDK\Mission Creation Kit\Mission Samples\Tutorials" (fichier pour la création de Missions FSX) mais alors pour des jauges, j'ai cette erreur (Les chemins complets ont été volontairement supprimés):
>simpropcompiler 2spb -symbols "...\propdefs\*.xml" "...\gauge_test.xml" gauge_test.spb
Microsoft Corp. SimProp data file compiler and converter 10.0.61637.0 (FSX-Xpack.20070926-1421)
Copyright ® Microsoft Corporation. All rights reserved. Copyright ® Microsoft Corporation. All rights reserved.
...\gauge_test.xml(1) : error 83600FB7: AceXML Parser Error : 'Gauge' -
...\gauge_test.xml(0) : error 83600fb7 : Read failed.
Le code de la jauge:
<Gauge Name="test_1" Version="1.0">
<Image Name="gauge_test.bmp" />
<Element>
<Position X="2" Y="10"/>
<Text X="146" Y="24" Length="20" Font="Courier New" Adjust="Left" Color="Red" Bright="Yes">
<String>%((L:GTX_327_key_8, bool))%!d!</String>
</Text>
</Element>
</Gauge>
Puis j'ai vu qu'il y avait du "charset" j'ai donc rajouté ceci "<?xml version="1.0" encoding="UTF-8"?>" mais la encore rien n'y fait toujours la même erreur :(
Si quelqu'un a des idées, il est le bienvenue
Hors ligne
Bonsoir
voir réponse de "l'autre côté" ...
Cordialement ; Philippe
Les bibliothèques runtime C++ ... S O S ... Ctrl+Shift+Esc => gestionnaire de tâches !
Hors ligne
Je viens de comprendre le problème, j'utilise du code XML venant de FS9. Il est donc impossible de parser le document. Du coup, je dois revoir les codes XML créer pour qu'ils soient au standard FSX (Documentation SDK).
Maintenant, en réalisant la compilation sur ce bout de code:
<?xml version="1.0" encoding="UTF-8"?>
<SimBase.Document
Type="AceXML"
version="1,0"
id="Test_SPB">
<Descr>Testing compil SPB file</Descr>
<SimGauge.Gauge id="Gauge">
<FloatPosition>0.000,0.000</FloatPosition>
<Size>100,110</Size>
<Element id="Polygon_Test">
<FloatPosition>50.000,60.000</FloatPosition>
<Polygon id="Polygon">
<Axis>50.000,60.000</Axis>
<FillColor>red</FillColor>
<LineWidth>1</LineWidth>
<LineColor>red</LineColor>
<Point id="Point">
<FloatPosition>48.000,62.000</FloatPosition>
</Point>
<Point id="Point">
<FloatPosition>50.000,12.000</FloatPosition>
</Point>
<Point id="Point">
<FloatPosition>52.000,62.000</FloatPosition>
</Point>
</Polygon>
</Element>
</SimGauge.Gauge>
</SimBase.Document>
J'ouvre avec "Microsoft Aces Resource Editor" puis "File > Export Document..." en prenant soin de définir le fichier *.SPB
Je me retrouve avec ceci, c'est compilé et impossible à remanier:
Et ma jauge fonctionnel sous FSX:
Et Blop !
Vais pouvoir me garantir une petite protection du code XML en plus d'améliorer les performances de cette dernière :)
Hors ligne
Bonjour,
je n'ai pas bien compris dans ces posts certaines de choses dont vous parliez :
- qu'est-ce que "l'autre côté" ?
- quel est l'en-tête " normal" d'une gauge XML FSX, ou bien, et ce serait une réponse plus intéressante pour moi, où peut on-trouver un mode d'emploi ou une aide de ace.exe, l'éditeur de ressources ?
Merci de vos réponses. si vous vous en souvenez... c'est loin, 2012, et il y a eu la fin du monde depuis !
Jean, LFMP - ATIS 04 68 63 75 12
Hydravions, tagazous au raz-du-gazon, dans les gorges et sous les ponts,
Explorations lointaines, et Coups d'Etats
Hors ligne
Bonjour,
De l'autre côté signifie qu'à l'epoque David avait ouvert 2 post et l'autre côté désiganit le send post.
Ace Ressources Manager, me semble-t il est dans le SDK.
Pour ce qui est de l'entête XML, cela se rapporte à la ligne suivante:
<?xml version="1.0" encoding="UTF-8"?>
Néanmoins, la syntaxe XML utilisée pourdécrire une jauge FSX et une gauge FS9 sont différentes:
pour FS9:
<Gauge Name="test_1" Version="1.0">
<Image Name="gauge_test.bmp" />
<Element>
<Position X="2" Y="10"/>
<Text X="146" Y="24" Length="20" Font="Courier New" Adjust="Left" Color="Red" Bright="Yes">
<String>%((L:GTX_327_key_8, bool))%!d!</String>
</Text>
</Element>
</Gauge>
pour FSX:
<SimBase.Document
Type="AceXML"
version="1,0"
id="Test_SPB">
<Descr>Testing compil SPB file</Descr>
<SimGauge.Gauge id="Gauge">
<FloatPosition>0.000,0.000</FloatPosition>
<Size>100,110</Size>
<Element id="Polygon_Test">
<FloatPosition>50.000,60.000</FloatPosition>
<Polygon id="Polygon">
<Axis>50.000,60.000</Axis>
<FillColor>red</FillColor>
<LineWidth>1</LineWidth>
<LineColor>red</LineColor>
<Point id="Point">
<FloatPosition>48.000,62.000</FloatPosition>
</Point>
<Point id="Point">
<FloatPosition>50.000,12.000</FloatPosition>
</Point>
<Point id="Point">
<FloatPosition>52.000,62.000</FloatPosition>
</Point>
</Polygon>
</Element>
</SimGauge.Gauge>
</SimBase.Document>
@+ Didier
W10 Pro 64b Build 22H2 - Boitier HAF 932 - Z390 STRIX-F - 9900K - 2x16 Go - NVidia 3060 Ti 8 Go - Alim Corsair 800W - Ecran 34" - NVidia Studio ready 536.23
P3D v5.4 = http://www.pilote-virtuel.com/img/members/53/P3Dv5HF-Reglages-A.jpg - MSFS Deluxe/STORE - X-Plane 12B
En ligne
Si tu veux compiler en SPB pour proteger ta gauge, il me semble avoir lu quelque part que c'était peine perdue, car il existe des softs qui peuvent décompiler.
A vérifier, mais je pense que cela doit être vrai, sinon, beaucoup d'auteurs de gauges compileraient en SPB pour éviter de se faire copier...
[large]Edit :[/large]
Voilà , il s'appelle "spb2xml.exe"
Et pour la parfaite compatibilité de ton fichier XML, pense qu'il faut ajouter 3 caractères "invisibles" en entête de fichier pour qu'il soit un vrai fichier XML (header de la norme XML) :
les caractères 239, 187 et 191. (EF BB BF en héxadécimal si tu les rajoute avec un éditeur Hexa)
Dernière modification par Fdd_fr (02-06-2016 14:04:02)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
Hors ligne
L'autre côté c'était par ici.
Cordialement ; Philippe
Les bibliothèques runtime C++ ... S O S ... Ctrl+Shift+Esc => gestionnaire de tâches !
Hors ligne
A l'époque, la volonté de convertir une jauge XML était effectivement une manière de "protéger" mes créations. Nous sommes d'accord que cela devient vite obsolète à mesure que des logiciels peuvent "décompiler" les fichiers SPB.
A noter qu'il y a avait un avantage sur le temps de chargement de la jauge. Le format SPB étant du binaire, il n'y a pas de parser qui augmente le temps de chargement. La encore vous me direz qu'avec les machines d'aujourd'hui, c'est l'ordre de quelques millisecondes de gagnés. Cela se trouve ridicule, mais sur d'ancienne machine cela vaut peut-être le coups.
Et dernier point, j'aime avant tout fouiner les recoins du SDK. Et ainsi voir le résultat de cette conversion SPB
Sinon je n'avais pas connaissance des trois caractères dans les fichiers XML. Serais-tu m'en dire plus Fdd_fr à se propos ?
Hors ligne
Bien sur. Tu peux voir ici ces 3 caractères en entête de fichier :
Ouvre avec un éditeur hexadécimal un fichier Plan de vol de FSX ou une gauge XML fournit avec FSX et tu les verras.
La plupart des formats de fichiers possèdent un "header" qui permet leurs identification par les logiciels, sans avoir besoin pour cela de connaitre forcément l'extension du fichiers.
Ces headers sont constitués d'une suite de caractères toujours identique pour un format déterminés. C'est la carte d'identité du fichier.
Par exemple, un fichier JPG commence toujours par les 4 caractères suivants : ÿØÿÃ
Et bien un fihier XML doit toujours commencer par les 3 caractères  qui sont en fait les caractères 239, 187 et 191.
Ces caractères étant supérieur à 127, il ne sont pas afficher dans un éditeur de texte norme ASCII.
Si tu crée un fichier XML avec un logiciel dédié, alors celui-ci implémentera automatiquement ce header. Mais si comme moi tu écris tes gauges avec Notepad++, alors il faut les ajouter manuellement car un éditeur de texte ne les insère pas automatiquement.
Même si dans le cas de FS, cela ne sert probablement à rien, je préfère respecter la norme car cela ne coute rien et comme j'avais écris une gauge qui met à jour le fichier plan de vol de FSX quand on ajoute ou supprime des waypoints d'un plan de vol, je préferai respecter la norme, car déjà que FSX balance un message d'erreur bidon quand on modifie le fichier plan de vol...je voulais absolument faire du 100% conforme
Voici par exemple un exemple pour crée l'entête d'un fichier XML plan de vol avec une gauge :
(L:Make_Backup_FPLN,bool) 0 == if{
'Path_FSX_documents' (>C:XMLVARS:SearchVarName,string) (C:XMLVARS:StringValue,string) s0
'VarFlightPlanNameFile' (>C:XMLVARS:SearchVarName,string) (C:XMLVARS:StringValue,string) scat (>C:LOGGER:openWrite)
}
els{
'Path_FSX_documents' (>C:XMLVARS:SearchVarName,string) (C:XMLVARS:StringValue,string) s0
'VarFlightPlanNameFile' (>C:XMLVARS:SearchVarName,string) (C:XMLVARS:StringValue,string) scat
'.FD-FMC_Backup' scat (>C:LOGGER:openWrite)
}
239 chr 187 chr scat 191 chr scat '<?xml version="1.0" encoding="UTF-8"?>' scat (>C:LOGGER:String)
'' (>C:LOGGER:String)
'<SimBase.Document Type="AceXML" version="1,0">' (>C:LOGGER:String)
' <Descr>AceXML Document</Descr>' (>C:LOGGER:String)
' <FlightPlan.FlightPlan>' (>C:LOGGER:String)
' <Title>' (C:fs9gps:FlightPlanTitle,string) scat '</Title>' scat (>C:LOGGER:String)
(C:fs9gps:FlightPlanFlightPlanType,enum) 0 == if{ ' <FPType>NONE</FPType>' (>C:LOGGER:String) }
(C:fs9gps:FlightPlanFlightPlanType,enum) 1 == if{ ' <FPType>VFR</FPType>' (>C:LOGGER:String) }
(C:fs9gps:FlightPlanFlightPlanType,enum) 2 == if{ ' <FPType>IFR</FPType>' (>C:LOGGER:String) }
(C:fs9gps:FlightPlanRouteType,enum) 1 == if{ ' <RouteType>VOR</RouteType>' (>C:LOGGER:String) }
(C:fs9gps:FlightPlanRouteType,enum) 2 == if{ ' <RouteType>LowAlt</RouteType>' (>C:LOGGER:String) }
(C:fs9gps:FlightPlanRouteType,enum) 3 == if{ ' <RouteType>HighAlt</RouteType>' (>C:LOGGER:String) }
' <CruisingAlt>' (C:fs9gps:FlightPlanCruisingAltitude,Feet) scat '</CruisingAlt>' scat (>C:LOGGER:String)
' <DepartureID>' (C:fs9gps:FlightPlanDepartureAirportIdent,string) scat '</DepartureID>' scat (>C:LOGGER:String).../...
Dernière modification par Fdd_fr (03-06-2016 08:59:51)
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
Hors ligne
David W bien connu pour son obsession et phobie de se faire pirater !
La meilleure façon de protéger ses créations c'est de les garder pour soi
RBLeDoC =D=D
Dernière modification par RBLeDoC (04-06-2016 23:08:09)
Hors ligne
Il ne faut pas psychoser avec le piratage; Seules les gauges simples, généralement uniquement graphique peuvent être facilement copier.
Dès que tu as une gauge, avec des algorithmes faisant appel à pas mal de variables "L:" qui interagissent entre plusieurs fichiers XML, cela devient mission impossible pour quelqu'un de copier une partie du code, car il ne peut pas s'y retrouver dans les tenants et aboutissants.
OU cela demanderaient tellement de temps que la personne ira plus vite à écrire toute seule son propre code
Base de donnée SID/STAR FreeNav DB Group
Mon site photo
Win XP32 tweaké - I7 2700K@4,7Ghz - 4Go RAM - 3 SSD - 2 Velociraptors - 5 DD classiques - Nvidia 560 GTI - Ecran 26" 1920x1200 - FSX+ASE2012+pas mal de FTX et d'aéroports.
Hors ligne
Tout a fait sur la même ligne de pensée que Fdd_fr.
J'ajouterais que quelle que soit l’œuvre créée, c'est comme un gâteau mille-feuilles ou seule la dernière couche est vraiment sa propre création, les autres couches sont issues de la création d'autres auteurs. Cela est valable pour toutes les activités humaines, sciences ou arts. Imaginons un monde ou depuis sa création chaque humain serait resté isolé dans sa seule expérience et découverte....on serait probablement aujourd'hui encore dans l'ère préhistorique!
A+ =D=D
Hors ligne