[solved][scripting] pied à l'étrier pour nouveau scripteur

Tout sur les scripts et les mods pour X², X³, X³TC et X³AP.

Moderator: Modérateurs pour les forum Français

Post Reply
The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

[solved][scripting] pied à l'étrier pour nouveau scripteur

Post by The s0rc3r » Fri, 17. Aug 12, 14:27

Bonjours messieurs les scripteurs,
je cherche de la doc pour commencer à scripter sous X3. J'ai un bon (très?) niveau en programmation itérative, objet, fonctionnel et tout pleins d'autres paradigmes. Mais vous comprendrez surement que si on ne connait pas la syntaxe et surtout "les API de base" on arrive généralement à pas grand chose.

Je demande pas un long cours de scripting, juste quelques liens vers de la documentation ou tutos que je n'ai pas réussi à trouver. La syntaxe je me débrouillerai au fil des examples :)

Mon objectif est d'automatiser l'extraction des informations relatives au gameplay (puissance des missiles, vitesse maximale des vaisseaux, etc) au sein d'un BDD relationnelle (cf. http://forum.egosoft.com/viewtopic.php? ... 83#3934783)

Merci par avance
Last edited by The s0rc3r on Sun, 19. Aug 12, 01:12, edited 1 time in total.

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Fri, 17. Aug 12, 15:13

Merci pour ta réponse.
Le sujet Post-it: [X3CT] Guide, FAQ, Index, Références et Tutoriels propose surtout une sélection de scripts.
Post-it: A l'attention des nouveaux utilisateurs du forum - A LIRE IMPERATIVEMENT est un simple rappel aux règles.
Post-it: [X², X³R, X³CT ] Index Scripts et Mods, Tutoriaux, Outils, que j'avais lu, est le plus proche de ce que je cherche. Il propose plusieurs liens qui permettent de traduire les scripts, de connaitre la structure de certains XML, une initiation aux slots de commande, des sélection de scripts et un micro-tuto de scripting qui permet de réaliser... une affectation.

Côté forum anglais j'ai bien trouvé ce post (http://forum.egosoft.com/viewtopic.php?t=45978) mais le guide n'est plus en ligne. De plus, je ne sais pas si le scripting de X2 et X3 sont fondamentalement identique. Je pourrais ainsi lire ce début de tuto par exemple : http://forum.egosoft.com/viewtopic.php?t=22519

Ce tuto est-il valable par exemple? : http://cycrow.thexuniverse.us/scripts/help/

User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde » Fri, 17. Aug 12, 16:06

Il n'y a pas d'API ici.
L'interface de programmation est très simple.
Et oui avec le lien de cycrow tu peux déjà largement faire tes premiers pas.
Au pire, il y a quelques scripteurs -dont moi- qui pourront t'aider dans tes débuts.
Le plus dur en réalité va être l'export de X3 vers ta bdd. Parce que là il n'y a rien.
Collecter oui, exporter en txt oui, html oui (avec une préparation spécifique, j'y suis arrivé) mais le format que tu souhaite j'en sais rien.

Entre X2 et X3 j'en sais rien, mais entre X3R et X3TC (et à fortiori X3AP) il y a des fonctions supplémentaires et/ou différentes donc la compatibilité n'est plus assurée lors de gros scripts.
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Fri, 17. Aug 12, 17:33

peroxyde wrote:Il n'y a pas d'API ici.
L'interface de programmation est très simple.
Et oui avec le lien de cycrow tu peux déjà largement faire tes premiers pas.
Au pire, il y a quelques scripteurs -dont moi- qui pourront t'aider dans tes débuts.
Ok. Pour le pied à l'étrier j'ai maintenant de quoi faire. Merci pour ta proposition?
Le plus dur en réalité va être l'export de X3 vers ta bdd. Parce que là il n'y a rien.
Collecter oui, exporter en txt oui, html oui (avec une préparation spécifique, j'y suis arrivé) mais le format que tu souhaite j'en sais rien.
Comme je dis souvent, du moment que y'a un passage alors on peut faire passer n'importe quoi. Je peux exporter les données CSV ou même en commande SQL si je suis chaud.
Entre X2 et X3 j'en sais rien, mais entre X3R et X3TC (et à fortiori X3AP) il y a des fonctions supplémentaires et/ou différentes donc la compatibilité n'est plus assurée lors de gros scripts.
Le tuto de Cyrow se base sur X2, donc à priori c'est ok. Une petite confirmation, le langage est interprété n'est ce pas? Il fourni des mécanismes réflexifs (pour vérifier qu'une fonctionne existe bien, ou pour lister toutes les fonctions d'une classe par exemple)?

User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde » Sat, 18. Aug 12, 14:49

Oui le Csv c'est tranquille. (je sais pas ce que ça donne le SQL)

Quand au langage... Je dirais que c'est de l'interprété par deux fois.
parceque les commandes sont déjà existantes et ne sont pas modifiable.
Quand j'écris un script en javascript ou une macro, je peux créer des fonction de façon très libre.
Ici c'est beaucoup plus fermé. Ce qui m'amène à penser (mis j'ai peut-être tord) que le script est lu et traduit par le moteur du jeu (et lui je sais pas s'il est interprété ou compilé, même si j'opterais pour la seconde option)
M'enfin, n'étant pas doué dans ce champs lexical, je met une réserve à tout ça.
Il fourni des mécanismes réflexifs (pour vérifier qu'une fonctionne existe bien, ou pour lister toutes les fonctions d'une classe par exemple)
Là pour moi c'est du charabia.
Lister les fonctions d'une classe? Si tu entends par là voir toute les fonction d'un même domaine (commerçant , armement etc) elles sont déjà rangée/classé par genre.
Mais même comme ça tu vas vite te rendre compte que des fois il y a certaine fonction qu'on aurait rangé ailleurs, l'accès rapide au fonction n'existe pas dans l'éditeur puisqu'on ne tape aucune commande on les sélectionne juste.
Une fonction (script à part entière) ne peux être appelé (et donc écrit) dans un autre script s'il n'a pas été créé avant (même vide).
Je ne fait jamais de vérif sur l'existence ou non de mes fonctions, donc de tête je ne me souviens pas si il y en a une. probable.
Au cas où le script A aura été créé, référencé dans un autre script B puis supprimé, la référence dans le script B efface le nom du script A (et plante si on lance le script B)
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Sat, 18. Aug 12, 15:48

Donc on ne peut pas créer un script avec bloc-note par exemple?

Le SQL c'est du texte (INSERT INTO truc ...), quasi aussi simple que le CSV. Je commençais justement à lire le tuto de Cycrow.

Le Javascrip est un langage de prototypage, c'est assez particulier mais ça reste un langage interprété ; càd que les erreurs se manifeste à l'execution. Je vais trouver les réponses au fur et à mesure.

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Sat, 18. Aug 12, 18:58

Ok, ch'ui pret pour faire mes premiers scripts. J'ai trouvé cette liste de commandes : http://cycrow.thexuniverse.us/scripts/help/cmds.html

C'est ce dont je parlais quand je parlais d'API. Vous avez pas une version actualisé pour X3TC?

En l'état, je ne trouve pas de commande qui permettent de liste les armes disponibles dans le jeu mais je peux lister les armes d'un vaisseau et récupérer les stats de chacune.

User avatar
Emerson d'Anite
Posts: 1262
Joined: Tue, 7. Mar 06, 20:24
x4

Post by Emerson d'Anite » Sat, 18. Aug 12, 19:11

The s0rc3r wrote:Donc on ne peut pas créer un script avec bloc-note par exemple?
Dans la partie anglaise du forum tu vas trouver ça : Exscriptor - new external script editor
Un peu plus souple (multi-édition), mais pour tester, il faut être dans le jeu.
Et je sais qu'un autre a débuter un autre éditeur, style X-Studio, mais cela fait longtemps que rien n'a été posté là-dessus.
« Il suivait son idée. C'était une idée fixe et il était surpris de ne pas avancer. » :)
Jacques Prévert

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Sat, 18. Aug 12, 19:24

Mmmh ton lien m'a donné une autre idée. Je vais p'tet unpacker X3 plutôt que de passer par les scripts.

User avatar
peroxyde
Posts: 2230
Joined: Sun, 2. Apr 06, 00:12
x3tc

Post by peroxyde » Sat, 18. Aug 12, 20:41

The s0rc3r wrote:En l'état, je ne trouve pas de commande qui permettent de liste les armes disponibles dans le jeu mais je peux lister les armes d'un vaisseau et récupérer les stats de chacune.
Y'n a pas.Tu peux en faire une, en listant les maintype et subtype, mais tu t'en sortiras pas.

A côté de ça...
Je vais p'tet unpacker X3 plutôt que de passer par les scripts.
Ça ça sera beaucoup plus simple!
Tu récupères le fichier "Tlaser" et ils sont tous listés dedans, avec leur caractéristiques. (à récupérer dans le .CAT le plus élevé)
Bon après, j'avoue que comprendre à quoi correspond quel chiffre c'est plus compliqué, mais une ligne = une arme.

Et pour les missiles, Tmissile (compliqué hein ^^)

Sinon non effectivement pas de script avec le bloc note. Exscriptor comme mentionné ci-avant est excellent (je l'utilise beaucoup car parfois il permet de récupérer des scripts qui font planter le jeu au démarrage)

Pour ta liste "d'API" le forum est également là pour ça:
http://forum.egosoft.com/viewforum.php?f=105
[ external image ]
"On apprend en faisant des erreurs, mais le problème c'est qu'en explosifs, l'erreur est fatale." Aldébaran v10
[ external image ]<-- Clef Des Toilettes Privées Du Forum Français décernée par Thoto le 23/06/07

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Post by The s0rc3r » Sun, 19. Aug 12, 01:11

peroxyde wrote:
The s0rc3r wrote:En l'état, je ne trouve pas de commande qui permettent de liste les armes disponibles dans le jeu mais je peux lister les armes d'un vaisseau et récupérer les stats de chacune.
Y'n a pas.Tu peux en faire une, en listant les maintype et subtype, mais tu t'en sortiras pas.

A côté de ça...
Je vais p'tet unpacker X3 plutôt que de passer par les scripts.
Ça ça sera beaucoup plus simple!
Tu récupères le fichier "Tlaser" et ils sont tous listés dedans, avec leur caractéristiques. (à récupérer dans le .CAT le plus élevé)
Bon après, j'avoue que comprendre à quoi correspond quel chiffre c'est plus compliqué, mais une ligne = une arme.

Et pour les missiles, Tmissile (compliqué hein ^^)
ça y est, j'ai les fichier de stats des vaisseaux, missiles et armes.
Je verrai un autre jour pour les parser mais le plus gros est fait :)
Pour ta liste "d'API" le forum est également là pour ça:
http://forum.egosoft.com/viewforum.php?f=105
:o Tu vois les milliers d'étoiles dans mes yeux?

Je pense que tes réponses ont achevé de répondre à la question initiale du topic. Très sincèrement, merci à tous pour votre implication!

User avatar
RedEclipse
Posts: 1269
Joined: Sat, 11. Sep 04, 16:43
x4

Re: [solved][scripting] pied à l'étrier pour nouveau scripteur

Post by RedEclipse » Sun, 19. Aug 12, 02:46

The s0rc3r wrote:(...) si on ne connait pas (...) surtout "les API de base" on arrive généralement à pas grand chose.
Il n'y a pas d'APIs (càd pas de bibliotheques pour que tout le monde puisse suivre) en tant que tel. Certaines personne ont mis en place des bibliotheques de script qui présentent le défaut de devoir être intégré à un mod pour les utiliser, ce qui présente des risque de doublonnage avec les autre mod s'ils utilisent les même bibliotheque que toi (IHMO).
The s0rc3r wrote:Je demande (...) juste quelques liens vers de la documentation
Thread utlime
La meilleures source d'info
"Joli" menus 1
"Joli" menus 2
"Joli" menu 3
The s0rc3r wrote:Mon objectif est d'automatiser l'extraction des informations relatives au gameplay (puissance des missiles, vitesse maximale des vaisseaux, etc) au sein d'un BDD relationnelle (cf. http://forum.egosoft.com/viewtopic.php? ... 83#3934783)
En CSV, déja fait plus ou moins partiellement pour certains gros sites (http://roguey.co.uk/) ou gros mods (XRM : http://www.strikingsoftware.com/xrmstats.html)...

En quoi un format CSV est du relationel ? C'est juste tomber les tables pour excell ou autre, ce qui en soit n'est pas le plus dur, le plus dur c'est de trouver les clefs et relier le tout !
The s0rc3r wrote:Une petite confirmation, le langage est interprété n'est ce pas? Il fourni des mécanismes réflexifs (pour vérifier qu'une fonctionne existe bien, ou pour lister toutes les fonctions d'une classe par exemple)?
Part pas trop loin, c'est du script. Donc interprété. Tu peut éventiuellement le voir comme du javascript, sans la création/gestion d'objet : il sait référencer de l'objet et lire leur propriétés mais à ma connaissance ne sait pas en construire ni en instancier (à part des pauv' variables ou des tableaux, si on peut appeler ça des "objets").
"AaaAaaAah ! They're everywhere...", Jane Doe, Freedom Force.

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Re: [solved][scripting] pied à l'étrier pour nouveau scripteur

Post by The s0rc3r » Sun, 19. Aug 12, 11:43

RedEclipse wrote:
The s0rc3r wrote:Mon objectif est d'automatiser l'extraction des informations relatives au gameplay (puissance des missiles, vitesse maximale des vaisseaux, etc) au sein d'un BDD relationnelle (cf. http://forum.egosoft.com/viewtopic.php? ... 83#3934783)
En CSV, déja fait plus ou moins partiellement pour certains gros sites (http://roguey.co.uk/) ou gros mods (XRM : http://www.strikingsoftware.com/xrmstats.html)...
Les données sont pas facilement extractible (je trouve pas de CSV) et les informations sur les tourelles ne sont pas aussi précises que je le souhaite.
En quoi un format CSV est du relationel ? C'est juste tomber les tables pour excell ou autre, ce qui en soit n'est pas le plus dur, le plus dur c'est de trouver les clefs et relier le tout !
Je fais des "tables relationnelles", si j'ai les tables je serai très content. Le relationnel ce n'est (1) absolument pas difficiles et (2) c'est déjà réalise (cf. 1er post).
J'ai besoin des données brutes et de la version de jeu exact (m'a BDD doit pouvoir fournir des stats pour plusieurs version de jeu en même temps). Les données disponible sur les wiki, excel et cie ne précisent jamais la version de jeu exacte.
The s0rc3r wrote:Une petite confirmation, le langage est interprété n'est ce pas? Il fourni des mécanismes réflexifs (pour vérifier qu'une fonctionne existe bien, ou pour lister toutes les fonctions d'une classe par exemple)?
Part pas trop loin, c'est du script. Donc interprété. Tu peut éventiuellement le voir comme du javascript, sans la création/gestion d'objet : il sait référencer de l'objet et lire leur propriétés mais à ma connaissance ne sait pas en construire ni en instancier (à part des pauv' variables ou des tableaux, si on peut appeler ça des "objets").
ACK. Je vais mettre le scripting de côté de toute façon (je pensais, à tort, que c'était la solution à mon problème)

User avatar
RedEclipse
Posts: 1269
Joined: Sat, 11. Sep 04, 16:43
x4

Re: [solved][scripting] pied à l'étrier pour nouveau scripteur

Post by RedEclipse » Sun, 19. Aug 12, 12:45

The s0rc3r wrote:Je fais des "tables relationnelles", si j'ai les tables je serai très content. Le relationnel ce n'est (1) absolument pas difficiles
Bah tu dois être bon... Je suis désolé d'avoir le reflexe de me poser quand même la question parce que des mecs qui se disent doués et qui plantent une db, j'en voit beaucoup dans mon métier : je bosse en IS depuis 6-7 ans en info de gestion et pour ma part je trouve toujours autant de gens qui se gaufrent entre leur idées de l'organisation d'un modèle relationnel ou de ce qu'il implique réellement (la norme dans le métier c'est beaucoup de ratés dès qu'on parle d'intégrité fonctionnelle, référentielle, de corruption de base ou d'analyse d'impact : les gens ne sont jamais assez prudents avec les dbs en s'imaginant assez bizarrement avoir les mêmes méthodes que pour un modèle hiérarchique).
Du coup quand le gars arrive en disant "coucou, je déboite en database", mon premier réflexe c'est méfiance :)
En même temps, là on s'en fiche un peu, il n'y a pas d'argent en jeu :)
The s0rc3r wrote:J'ai besoin des données brutes et de la version de jeu exact (m'a BDD doit pouvoir fournir des stats pour plusieurs version de jeu en même temps). Les données disponible sur les wiki, excel et cie ne précisent jamais la version de jeu exacte.
Bah... Tu va galérer parce qu'il te faudra rétropatcher le jeu.

Techniquement, c'est censé être facile : c'est possible en débranchant les updates auto de Steam et en coupant-collant les patchs ailleurs mais il faut avoir avant des infos sur ce qui a été livré à chaque version du jeu et je ne sais pas si ça existe.
D'autre part, je trouve personnellement que l’intérêt n'est pas forcément flagrant : le jeu se met à jour tout seul et les gens qui jouent à la V1 d'Albion Prelude ne courent pas les rues...
The s0rc3r wrote:ACK. Je vais mettre le scripting de côté de toute façon (je pensais, à tort, que c'était la solution à mon problème)
Pour moi, je trouve plus facile de tomber les tables depuis le moteur de script plutôt que d'aller lire des infos directement dans les CAT. Mais je sais qu'il y a des mecs comme toi qui pensent le contraire : les deux méthodes sont possibles, la tienne présente l'énorme intérêt d'être automatisable alors que dans mon cas, je devrais balancer le jeu, balancer le script et renommer les fichiers en .csv. Si tu te sens plus à l'aise avec la tienne, fait toi plais' :)
"AaaAaaAah ! They're everywhere...", Jane Doe, Freedom Force.

The s0rc3r
Posts: 16
Joined: Fri, 29. Dec 06, 18:09

Re: [solved][scripting] pied à l'étrier pour nouveau scripteur

Post by The s0rc3r » Sun, 19. Aug 12, 23:04

RedEclipse wrote:Bah tu dois être bon... Je suis désolé d'avoir le reflexe de me poser quand même la question parce que des mecs qui se disent doués et qui plantent une db, j'en voit beaucoup dans mon métier : je bosse en IS depuis 6-7 ans en info de gestion et pour ma part je trouve toujours autant de gens qui se gaufrent entre leur idées de l'organisation d'un modèle relationnel ou de ce qu'il implique réellement (la norme dans le métier c'est beaucoup de ratés dès qu'on parle d'intégrité fonctionnelle, référentielle, de corruption de base ou d'analyse d'impact : les gens ne sont jamais assez prudents avec les dbs en s'imaginant assez bizarrement avoir les mêmes méthodes que pour un modèle hiérarchique).
Du coup quand le gars arrive en disant "coucou, je déboite en database", mon premier réflexe c'est méfiance :)
En même temps, là on s'en fiche un peu, il n'y a pas d'argent en jeu :)
Oula que non je suis pas bon en BDD (je suis plutôt génie logicielle, tendance programmation défensive). Je m'amuse pas à faire la requête sur-optimisée pour DB10 ; je fais juste le relationnelle. Pas dur, y'a que l'unicité à comprendre ^^'

User avatar
RedEclipse
Posts: 1269
Joined: Sat, 11. Sep 04, 16:43
x4

Post by RedEclipse » Mon, 20. Aug 12, 00:01

Ah non, moi non plus enfin, plus maintenant en tout cas : j'ai fait 5 ans de mainframe avec db2, donc du bon gros sequentiel des familles, avec effet de bord bien maitrisable.
Je suis passé il y a environ 1 an et demi sur C#/Java avec Oracle, donc en micro + objet et j'y connais plus rien en effet de bord : j'essai de pas tout cassé,mais je me tape des à priori d'une fausseté... Y a pas mal de mes collègues qui se fichent de moi.

J'arrive pas à avoir la mentalité "ràf" en micro, ça fait que je suis lent.
"AaaAaaAah ! They're everywhere...", Jane Doe, Freedom Force.

Post Reply

Return to “Script et Modding pour la Trilogie X”