EnglishGermanFrenchRussianItalianSpanish
Log inRegister
 
<codearray> ou les mystères du script
Post new topic Reply to topic
View previous topic :: View next topic
Author Message
Serial Kicked





Joined: 12 Aug 2005
Posts: 3493 on topic
Location: France
Thank you for registering your game
PostPosted: Sun, 28. Aug 05, 15:50    Post subject: <codearray> ou les mystères du script Reply with quote Print

Note préliminaire : Ce texte n'a pas grand intérêt pour le scripteur lambda, et vous pouvez parfaitement continuer à scripter sans comprendre un traitre mot de ce qui va suivre. il s'adresse aux gens voulant savoir comment fonctionne exactement le moteur de script de X² et X³. Une bonne connaissance du xml et du moteur de script sont requis.

------

Voici donc la traduction de ce que l'on sait actuellement sur la partie <codearray> des scripts. Partie réellement utilisée par le moteur de script de X².

Arrow Niveau 0

-> Entrée 0 : Racine du <codearray>.
Type Table de taille 10.

Arrow Niveau 1

-> Entrée 1 : Nom du script
Type Chaine

-> Entrée 2 : Version du moteur de script
Type Entier
Valeur 25 pour X², on peut supposer que ce sera 30 pour X³

-> Entrée 3 : Description du script
Type Chaine

-> Entrée 4 : Version du script
Type Entier
Valeur Par défaut, 0

-> Entrée 5 : [inconnu] probablement un caractère séparateur.
Type Entier
Valeur 0

-> Entrée 6 : Declaration des variables utilisées par le script.
Type Tableau, dont la taille dépend du nombre de variables.

Chaque sous entrée de ce tableau est de type "string" (chaine) et correspond à une variable utilisée par le script. Si on utilise par exemple dans le script la variable I, on trouvera une entrée de valeur "I" et de type string.

-> Entrée 7 : Le script en lui même. Le premier niveau est un tableau dont la taille correspond au nombre de lignes utiles du script. Dans ce tableau chaque commande est elle même définie par un sous tableau dont la taille dépend du nombre de paramêtres pour la commande en question.
Chaque sous-tableau se compose ainsi :
- La première valeur correspond à la commande elle même. C'est un entier et sa valeur est récupérée dans le fichier de langue du jeu. (exemple pour un INC (incrémente) c'est 142).
- Les valeurs suivantes sont les paramêtres passés à la commande. C'est aussi un entier dont la valeur correspond à la sous entrée correspondante dans la liste des variables (voir l'entrée 6). La première variable declarée étant la numero 0.

-> Entrée 8 : Liste des parametres passés au script. Si aucun c'est un simple entier de valeur 0. Sinon c'est un tableau dont la taille correspond au nombre de paramêtres. Les sous entrées de ce tableau sont alors présentées ainsi :
- Un entier pour représenter le type du parametre (ex : var/station), dont le numero est déterminé depuis le fichier de langue correspondant.
- Une chaine contenant la description du parametre.
Le nom de la variable sera celui se trouvant au même niveau dans la declaration des variables (voir entrée 6)

-> Entrée 9 : Commandes "décoratives" comme les commentaires, les "end" etc.. Si vide, sa valeur c'est un simple entier de valeur 0. Sinon c'est un tableau de la taille du nombre de commandes de ce type.
[il me manque quelques détails à ce sujet pour une explication détaillée]

-> Entrée 10 : C'est la description qui sera utilisée si ce script est utilisée sur un navire. Elle peut etre de type String (avec comme contenu la description elle même) ou de type Entier (avec comme contenu la référence dans un fichier langue). Si ce script n'est pas destiné à être utilisé sur un navire c'est un entier de valeur 0.


Voilà pour l'instant. C'est surement excessivement indigeste pour la plupart d'entre vous Mr. Green mais je rajouterai des exemples pour eclairer votre lanterne quand j'aurais un peu plus de temps libre.

------

Sinon en réponse à Redeclipse dans un autre topic qui commençait à devenir pas mal hors sujet et dont la réponse se trouvera beaucoup mieux ici :

RedEclipse wrote:
Je voulais dire qu'en modifiant un script tapé sur le script editor (on va se la jouer vieux routard et taper "se", hein) par un bloc-note, le vieux titre du script aparaissait tjrs la liste de script du se, mais pas le nouveau texte. Il m'a fallu copier le script (avec c je crois) et le renommer pour tomber sur le bon texte. Du coup,dans si d'autres script appelait celui-la, je l'aurais eu dans le baba.


Oki c'est bien ce que je pensais, donc CQFD un bloc note peut pas remplacer un SE, à la limite comme script viewer ça passouille. Razz

Quote:
Sinon, pour moi la vision du code arrayque je me fais est qu'il bien utilisé à l'appel de script.


Yep, <codearray>, lu par l'interpréteur de script, chargé et utilisé par X². Et <scriptarray>, version humainement lisible, probablement utilisée pour afficher les lignes plus rapidement dans le SE sans que X² ai a tripatouiller le fichier de langue à chaque chargement dans le SE.


Quote:
Je ne connais pas les commandes exactes, mais si tu tapes un truc du style $toto = appel du script machin, je pense que l'initialisation du type de $toto est faite avant l'appel du script. C'est plus rapide si c'est pas dynamique. (il faut analyser tout les return sinon et c'est un truc qui peut être fait avant l'execution d'un script, tu comprend ce que je veux dire ?)


Yep, l'initialisation de toutes les variables du script est faite à ce que j'en ai lu dans la partie 6 du codearray. Une fois ces variables chargées en mémoire par X², il passe à la 7 qui contient les commandes elles même avec les réferences aux variables declarées dans la partie 6.

Quote:
De plus, je doute que le code array soit juste là pour faire joli, avec ses résumés de variable d'entrée. Pour moi il est lu et utilisé à l'appel.


Vi vi, t'as du mal me lire, j'ai dit que je doutais de l'utilité du <scriptarray>. Et qu'en fait on pourrait y ecrire joyeusement n'importe quoi sans que ça n'influence réellement le script. Enfin supposition, je n'ai pas testé.

Quote:
[edit] au fait, ca ne me dérange pas de travailler en anglais (bon... en allemand, chui une taupe mais en anglais ca va)


Pour être honnète ça m'arrangerait follement de discuter de l'éditeur de script en priorité dans le forum anglais. D'une part parce qu'on y retrouve les gens (de toutes les langues) qui s'y connaissent le mieux dans ce domaine (doubleshadow,moggy2, moonraven, et j'en passe) et d'autre part parce qu'on y a déjà un topic dédié au sujet Smile

Voilou voilou.


_________________
X3:TC/AP Pirate Guild 3 - Yaki Armada 2 - Anarkis Defense System

Anarkis Gaming HQ
Independent Game Development
X3 Scripting and Modding Station
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
RedEclipse





Joined: 11 Sep 2004
Posts: 1238 on topic
Location: Topic
Thank you for registering your game
PostPosted: Sun, 28. Aug 05, 18:34    Post subject: Reply with quote Print

Pas de problèmes pour l'anglais, mais on est bien en opposition de phase sur l'utilité du code-array. Si tu dit que tu peut écrire n'importe quoi dedans sans changer le fonctionement d'un script, moi je dis que si tu en change une seule valeur ton script ne marche plus. Wink

Enfin, moi si j'avais été programmeur, j'aurais mis mon type de retour tout près des variables d'entrée, cad en numéro 5.

Il faudrait essayer de lire les code-array de plusieurs scripts differents, tout cons du style :
- return TRUE
- return null
- return $var

(ou var est une variable donnée en entrée du script).

Mmm... Le code-array, tu peut le lire au début du xml, c'est ça ? (edit : non à la fin. Je passe sur le forum anglais)

Back to top
View user's profile Send private message
Serial Kicked





Joined: 12 Aug 2005
Posts: 3493 on topic
Location: France
Thank you for registering your game
PostPosted: Sun, 28. Aug 05, 18:47    Post subject: Reply with quote Print

Moi je dis que tu as trop bu hier soir Very Happy

<SCRIPTarray> = inutile, lisible mais parfaitement décoratif.
<CODEarray> = indispensable et illisible.

Donc nous sommes d'accords Smile

Et pour le test de Return, je suis d'accord faut tester de toute façon (et pas que pour lui d'ailleurs).


edit : moi je retourne sous battlefield 2, je repasserai ce soir ou demaing sur le board.


_________________
X3:TC/AP Pirate Guild 3 - Yaki Armada 2 - Anarkis Defense System

Anarkis Gaming HQ
Independent Game Development
X3 Scripting and Modding Station
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Display posts from previous:   
Post new topic Reply to topic
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum
Control Panel
Login Data
The time now is Sun, 19. Aug 18, 11:26

All times are GMT + 2 Hours

[ Disclaimer / Impressum ] | [ Privacy Policy / Datenschutz ]

Board Security

Copyright © EGOSOFT 1989-2018
Powered by phpBB © 2001, 2005 phpBB Group
Template created by Avatar & BurnIt!
Debug: page generation = 0.11786 seconds, sql queries = 18