L'atelier des scripto-rameurs
Moderator: Modérateurs pour les forum Français
-
- Posts: 1269
- Joined: Sat, 11. Sep 04, 16:43
Ah oui, aussi, évite le while (1), c'est bourrin. Tente le while ($Nouvelle.Campagne.Pas.Terminé), avec l'initialisation de cette variable à vrai avant le while et a FALSE après que la dernière mission est lançée (comme avec ton $evenement.deja.fait.numero.dernier, une ligne en dessous)
Note que le while ralentira le jeu souvent, car la plupart du temps, il tourne dans le vide pour rien faire. Le meilleur truc a faire est d'essayer de s'en passer en utilisant des signaux d'interruption...
Note que le while ralentira le jeu souvent, car la plupart du temps, il tourne dans le vide pour rien faire. Le meilleur truc a faire est d'essayer de s'en passer en utilisant des signaux d'interruption...
-
- Posts: 2351
- Joined: Sun, 28. Mar 04, 15:56
Concernant le problème que tu as posé dans le forum anglais RedEclipse, je te propose l'utilisation d'un variable globale de "contact". De toute facon tu ne pourras pas faire que l'editeur de script appelle le joueur et lui demande directement des données, alors la solution que j'utilise est en gros la suivante :
Pour le premier script, celui qui tourne et qui a besoin de l'information :
Pour le moment c'est la meilleur méthode que je connaisse pour demander des paramètre au joueur à partir d'un script une fois qu'il est lancé.
PrizzZ
Pour le premier script, celui qui tourne et qui a besoin de l'information :
- script 1 : Définie une variable globale, que tu appelles comme tu veux, ici "YourScript_Contact" pour moi, à null. Ceci nous permettra de savoir si le joueur a répondu quelque chose, et eventuellement effacer une ancienne réponse.
- script 1 : Relie la commande de ton choix a un deuxième script qui servira a récupé les données, décrit ci-dessous.
- script 1 : Envoie un message au player du genre "Voilà ya ca a définir, vous pouvez donner votre réponse avec la commande machin, et vous devez le faire dans la mizura impérativement"
- script 1 : Attend une minute, une mizura ( enfin ca peut être plus long au plus court
- script 1 : Déli la commande du deuxième script
- script 1 : Lis la variable globale "YourScript_Contact" ou ce que tu veux dans laquelle est la réponse
- Ce second script a comme argument ce que tu cherches récupé comme informations, et les enregistrent dans "YourScript_Contact" ( je te laisse le choix de la maniète, c'est surtout le principe qui est important ), mais surtout sous autre chose que null, ca permet de savoir que le joueur a quand même essayer de répondre pour un message d'erreur par exemple.
Pour le moment c'est la meilleur méthode que je connaisse pour demander des paramètre au joueur à partir d'un script une fois qu'il est lancé.
PrizzZ
-
- Posts: 1269
- Joined: Sat, 11. Sep 04, 16:43
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Je me permet de déterrer ce topic puisqu'il est indexé, et au vu de son objectif, je pense qu'il vaut mieux que je poste ici plutôt que de créer un nouveau topic (si je me trompe je m'excuse d'avance)
Voilà, je voulais améliorer le script de ramassage d'Egosoft des marchandises relâchées dans l'espace.
Raison de ma démarche:
Vous allez me dire il y a déjà un script pour ça. Ben oui et non.
Le script de Wischmermill (un truc comme ça lol) lui même tiré d'un autre script, est une commande vaisseau secondaire. Il ne dirige pas les vaisseaux vers les contenaires.
Et bien qu'il fasse un tri des marchandises qu'il collecte, pour que la collecte se fasse, on doit lancer la commande D'Egosoft pour diriger le vaisseau vers les dites caisses.
Or si le vaisseau cible un contenaire par la commande d'ES et que vous ne souhaitez pas ramasser cette marchandise comme stipulé dans le script de Wisch, la marchandise sera ramassée quand même.
Ce que j'ai fait:
Déjà des recherches sur le forum car ça s'annonce pas simple.
J'avais remarqué que les scripts marqués d'un "!" dans le dossiers script n'étaient pas listés dans l'éditeur.
Après avoir juste changé l'extension pck en xml, (dérisoire mais on sais jamais), téléchargé après avoir cherché assez longtemps où il se trouvais le MSCIHandbook et où figure -alléluia!- un lien permettant de décompresser les pck en xml, après avoir réussi à faire fonctionner ce X2Tool.exe du X2modder kit... je bloque.
Pour le faire apparaitre InGame, je l'ai renommé (AAA.ship.cmd.collectflyingwares.pl.xml au lieu de !ship.cmd.collectflyingwares.pl.xml). Mais il reste absent lors de l'ouverture de L'éditeur.
J'ai ensuite ouvert avec le bloc note et ai remarqué que le nom du script figure également dans le script lui même. Rebelote...
Mais toujours pas de script existant dans l'éditeur.
Je précise que pour la dernière action j'avais lu qu'il fallait enregistrer en UTF8, mais pas mieux...
Une idée?
Dans le même ordre d'idée et pour le fun, j'aurais bien voulu modifier les script de positionnement des vaisseaux en formation pour qu'il soit pas que à une position donnée mais également avec le même cap et horizon (relatif) que leur leader...
Voilà, je voulais améliorer le script de ramassage d'Egosoft des marchandises relâchées dans l'espace.
Raison de ma démarche:
Vous allez me dire il y a déjà un script pour ça. Ben oui et non.
Le script de Wischmermill (un truc comme ça lol) lui même tiré d'un autre script, est une commande vaisseau secondaire. Il ne dirige pas les vaisseaux vers les contenaires.
Et bien qu'il fasse un tri des marchandises qu'il collecte, pour que la collecte se fasse, on doit lancer la commande D'Egosoft pour diriger le vaisseau vers les dites caisses.
Or si le vaisseau cible un contenaire par la commande d'ES et que vous ne souhaitez pas ramasser cette marchandise comme stipulé dans le script de Wisch, la marchandise sera ramassée quand même.
Ce que j'ai fait:
Déjà des recherches sur le forum car ça s'annonce pas simple.
J'avais remarqué que les scripts marqués d'un "!" dans le dossiers script n'étaient pas listés dans l'éditeur.
Après avoir juste changé l'extension pck en xml, (dérisoire mais on sais jamais), téléchargé après avoir cherché assez longtemps où il se trouvais le MSCIHandbook et où figure -alléluia!- un lien permettant de décompresser les pck en xml, après avoir réussi à faire fonctionner ce X2Tool.exe du X2modder kit... je bloque.
Pour le faire apparaitre InGame, je l'ai renommé (AAA.ship.cmd.collectflyingwares.pl.xml au lieu de !ship.cmd.collectflyingwares.pl.xml). Mais il reste absent lors de l'ouverture de L'éditeur.
J'ai ensuite ouvert avec le bloc note et ai remarqué que le nom du script figure également dans le script lui même. Rebelote...
Mais toujours pas de script existant dans l'éditeur.
Je précise que pour la dernière action j'avais lu qu'il fallait enregistrer en UTF8, mais pas mieux...
Une idée?
Dans le même ordre d'idée et pour le fun, j'aurais bien voulu modifier les script de positionnement des vaisseaux en formation pour qu'il soit pas que à une position donnée mais également avec le même cap et horizon (relatif) que leur leader...
[ 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
"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
-
- Posts: 2351
- Joined: Sun, 28. Mar 04, 15:56
Généralement, toute tentative de modifier un script hors de l'éditeur de script du jeu est voué à l'échec. En effet, le script est encodé sous la forme d'un XML avec des commandes lisibles, mais aussi une grosse matrice en dessous, qui contient les données du script. Changé le XML ne suffit généralement pas.
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Donc il n'y a aucun moyen de pouvoir faire afficher ce script dans le ScriptEditor ingame?
En fait, je me souviens que Azz avait fait une modif de Script d'ES concernant les patrouilles. Mais ceux-ci ne sont pas affublé d'un "!".
Il y a aussi une signature en bas du xml. Qui ressemble a un gros code. La supprimer résoudrait le problème? (Ce qui semblerais normal puisque ça ne serait plus certifié ES).
En fait, je me souviens que Azz avait fait une modif de Script d'ES concernant les patrouilles. Mais ceux-ci ne sont pas affublé d'un "!".
Il y a aussi une signature en bas du xml. Qui ressemble a un gros code. La supprimer résoudrait le problème? (Ce qui semblerais normal puisque ça ne serait plus certifié ES).
[ 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
"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
-
- Posts: 1031
- Joined: Tue, 18. May 04, 20:14
salut peroxyde
courage tu as presque tout bon
il reste une dernière étape : si tu regarde bien, tu dois normalement voir le nom du script également au début du code contenu dans le code array, (qui contient le code proprement dit du script). Il faut que tu le renomme là aussi de la même façon (enlever le '!' ).
Enfin n'oublie pas d'enlever la version pck du dossier script, car c'est toujours elle qui aurait priorité sur la version xml à l'exécution.
un outils très pratique pour décompresser les pck : X2 Archiver , ici :
http://themadgoner.com/TMG/X2/Scripts_M ... es001.html
courage tu as presque tout bon

il reste une dernière étape : si tu regarde bien, tu dois normalement voir le nom du script également au début du code contenu dans le code array, (qui contient le code proprement dit du script). Il faut que tu le renomme là aussi de la même façon (enlever le '!' ).
Enfin n'oublie pas d'enlever la version pck du dossier script, car c'est toujours elle qui aurait priorité sur la version xml à l'exécution.
un outils très pratique pour décompresser les pck : X2 Archiver , ici :
http://themadgoner.com/TMG/X2/Scripts_M ... es001.html
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Azz je t'aime! Euh... enfin toute proportion gardée hein...
Effectivement, je sais pas pourquoi j'ai pas pensé à regarder s'il y avait d'autre occurrence du nom dans le fichier. Mais c'était juste ça!
Dire que j'ai galéré juste pour un seul point d'exclamation...
Bon maintenant reste à scripter ce que je veux. Mais à peine ai-je regardé dans leur script que j'ai vu qu'il pouvait être optimisé (c'est rien, juste une ligne en moins mais c'est quand même amusant...)
Encore merci!
Et la signature? Je l'ai pas supprimée mais je suppose qu'il faut que je le fasse?
Effectivement, je sais pas pourquoi j'ai pas pensé à regarder s'il y avait d'autre occurrence du nom dans le fichier. Mais c'était juste ça!
Dire que j'ai galéré juste pour un seul point d'exclamation...
Bon maintenant reste à scripter ce que je veux. Mais à peine ai-je regardé dans leur script que j'ai vu qu'il pouvait être optimisé (c'est rien, juste une ligne en moins mais c'est quand même amusant...)
Encore merci!
Et la signature? Je l'ai pas supprimée mais je suppose qu'il faut que je le fasse?
[ 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
"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
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Juste une petite question au passage, pour le triturage de méninges, mais surtout car j'aime la précision et le fignolage...
J'envoie une question au joueur où il dispose de trois réponses:
1- Oui
2- Non
3- Abandon
Je voie bien l'intérêt du "else if" si il y a plusieurs commande à executer pour chaque condition mais si je n'ai qu'une commande, est-ce que:
n'est pas moins bien en terme de rapidité d'exécution (ou autre que je ne saurais pas) que :
J'envoie une question au joueur où il dispose de trois réponses:
1- Oui
2- Non
3- Abandon
Je voie bien l'intérêt du "else if" si il y a plusieurs commande à executer pour chaque condition mais si je n'ai qu'une commande, est-ce que:
Code: Select all
If reponse==3
return null
else if reponse==1
perte = [true]
else if reponse==2
perte = [false]
end
Code: Select all
Skip if reponse!=3
return null
perte=[true]
skip if reponse==1
perte=[false]
[ 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
"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
-
- Moderator (Français)
- Posts: 4638
- Joined: Fri, 17. Sep 04, 10:38
En terme de rapidité, c'est la même chose, avec peut être même un léger ralentissement dû au Skip + test contre test. En fait, dans des langages aussi "simples", le if-then-else se traduit derrière, bien souvent, par le code que tu as mis ensuite. La différence va résider dans le fait que l'user peut entrer une réponse fausse, 4 par exemple, que ton test va considérer comme si elle était 2.
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Si effectivement, j'avais pas pris en compte le fait de rentrer une valeur fausse (quoique dans mon cas ce n'est pas une fenêtre input mais un incoming msg, donc pas de valeur fausse), j'avoue ne pas saisir ce que tu m'a dit juste avant.
Si le If-then-else est traduit en code que j'ai mis après, le second devrait être plus rapide puisque pas à "traduire"?
Je te remercie tout de même. Si c'est équivalent, en tout cas, ça prend moins de place et c'est plus rapide à rentrer que dans le premier cas!
Si le If-then-else est traduit en code que j'ai mis après, le second devrait être plus rapide puisque pas à "traduire"?
Je te remercie tout de même. Si c'est équivalent, en tout cas, ça prend moins de place et c'est plus rapide à rentrer que dans le premier cas!
[ 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
"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
-
- Posts: 1644
- Joined: Tue, 20. Sep 05, 20:20
Il vaut mieux que le code que tu rédiges soit capable de faire face à toutes les situations possibles et imaginables. C'est pour cela que la première boucle que tu décris (la plus longue) est la plus avantageuse puisqu'elle réduit le risque de plantage suite à une utilisation erronée par le joueur.
En tout cas c'est mon avis de programmeur qui a appris la programmation à la dure sur une calculatrice programmable avant de passer au C. Et les astuces valables pour un langage le sont souvent pour beaucoup d'autres aussi
En tout cas c'est mon avis de programmeur qui a appris la programmation à la dure sur une calculatrice programmable avant de passer au C. Et les astuces valables pour un langage le sont souvent pour beaucoup d'autres aussi

Les humains n'ont jamais pu résister à la tentation d'utiliser une nouvelle arme.
Michael Liberty
Ne réveillez pas le volcan qui dort...
Michael Liberty
Ne réveillez pas le volcan qui dort...
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
Note que les deux sont identique puisque dans mon cas il ne peux pas rentrer de valeur fausse.
En réalité la première question que je me posais, comme j'essayais de compter en temps machine, c'est si un temps de comparaison était aussi rapide qu'un temps execution
J'ai jamais réussi a me lancer dans le C, mais j'ai créé plein de chose sur la TI-82 dont un labyrinthe 3D sur base matricielle parce que celui existant ne fonctionnait pas. *nostalgie*
Bon et pis un peu de cracking en dasm (jamais réussi à utiliser S-I) aussi fut un temps...
En réalité la première question que je me posais, comme j'essayais de compter en temps machine, c'est si un temps de comparaison était aussi rapide qu'un temps execution
J'ai jamais réussi a me lancer dans le C, mais j'ai créé plein de chose sur la TI-82 dont un labyrinthe 3D sur base matricielle parce que celui existant ne fonctionnait pas. *nostalgie*
Bon et pis un peu de cracking en dasm (jamais réussi à utiliser S-I) aussi fut un temps...
[ 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
"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
-
- Posts: 1031
- Joined: Tue, 18. May 04, 20:14
moi j'ai tendance à privilègier (fortement) la lisibilité du code plutôt que la concision.
Donc la 1ere solution est pour moi dix-mille fois préférable.
De plus je vais même jusqu'à rajouter des choses à priori inutile (enfin j'essaie d'y penser) pour que le code prenne en compte même ce qui ne doit pas arriver, par exemple ici rajouter un dernier test :
ça permet d'éviter de planter si plus tard on modifie ailleurs le script sans penser à toutes les consèquences
de toute façon en terme de temps machine je doute que l'on sente la moindre différence entre la version 1 et 2
Donc la 1ere solution est pour moi dix-mille fois préférable.
De plus je vais même jusqu'à rajouter des choses à priori inutile (enfin j'essaie d'y penser) pour que le code prenne en compte même ce qui ne doit pas arriver, par exemple ici rajouter un dernier test :
Code: Select all
else
perte = [false]
endif
de toute façon en terme de temps machine je doute que l'on sente la moindre différence entre la version 1 et 2
-
- Posts: 1644
- Joined: Tue, 20. Sep 05, 20:20
-
- Posts: 2230
- Joined: Sun, 2. Apr 06, 00:12
lol, ça c'est la mauvaise excuses pour programmer n'importe comment...Volcanosf wrote:D'autant plus que le temps machine se compte en millisecondes, non ? Du coup pour l'utilisateur ça ne fait pas de différence mesurable.
si ce contrôle avait été obligé de se retrouver dans une boucle, ben la milliseconde perdu un millier de fois ça fait une seconde... visible par le joueur (d'autant plus que là ce n'est que pour un script, alors si il y en a plusieurs...)
Je comprends, Azz.
Mais je ne pense pas que mon code soit illisible, au vu du nombre de REM qui s'y trouvent et de la compartimentation (fan de sub, moi, lol)
[ 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
"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
-
- Posts: 12
- Joined: Fri, 11. Apr 08, 22:09
Bonjour
En cours de jeux, j'utilise la commande : add default equipment du cheats1.4 qui me permet d'installer les améliorations sur mes vaisseaux..
Je désirerais lors de l'utilisation de cette commande, charger le modèle (No1dans ce cas) de la liste de ravitaillement (de AzzPiloteIAIII) sur mon vaisseau le Buster Avant-garde.
J'ai essayé ce-ci dans install.systems.xml du cheats1.4:
083 end
084 if $ship -> is of type Buster Avant-garde
085 $cpy.prod = $list.modele.prod[1]
086 $cpy.qte = $list.modele.qte[1]
087 $i.size = size of array $cpy.prod
088 $list.prod = array alloc: size=$i.size
089 $list.qte = array alloc: size=$i.size
090 copy array $cpy.prod index 1 ... $i.size into array $list.prod at index 1
091 copy array $cpy.qte index 1 ... $i.size into array $list.qte at index 1
092 [THIS] -> set local variable: name='azz.ravitail.prod' value=$list.prod
093 [THIS] -> set local variable: name='azz.ravitail.qte' value=$list.qte
094 end
095 return null
Comme je n'ai jamais scripté, j'ai copiées dans azz.gr.ravitail.modele.charge. les lignes que je pensais indispensable et je les ai intégré dans install.systems.xml, puis j'ai tenté plusieurs modifications sans succès.
Je signale avoir 5 modèles de liste (de 0 à 4) et que si je les charges par la voie normale avec la commande communication avec le piloteIA cela fonctionne parfaitement.
J'espère avoir été suffisamment clair dans l'explication de mon problème et j'apprécierai bien volontier de l'aide.
En cours de jeux, j'utilise la commande : add default equipment du cheats1.4 qui me permet d'installer les améliorations sur mes vaisseaux..
Je désirerais lors de l'utilisation de cette commande, charger le modèle (No1dans ce cas) de la liste de ravitaillement (de AzzPiloteIAIII) sur mon vaisseau le Buster Avant-garde.
J'ai essayé ce-ci dans install.systems.xml du cheats1.4:
083 end
084 if $ship -> is of type Buster Avant-garde
085 $cpy.prod = $list.modele.prod[1]
086 $cpy.qte = $list.modele.qte[1]
087 $i.size = size of array $cpy.prod
088 $list.prod = array alloc: size=$i.size
089 $list.qte = array alloc: size=$i.size
090 copy array $cpy.prod index 1 ... $i.size into array $list.prod at index 1
091 copy array $cpy.qte index 1 ... $i.size into array $list.qte at index 1
092 [THIS] -> set local variable: name='azz.ravitail.prod' value=$list.prod
093 [THIS] -> set local variable: name='azz.ravitail.qte' value=$list.qte
094 end
095 return null
Comme je n'ai jamais scripté, j'ai copiées dans azz.gr.ravitail.modele.charge. les lignes que je pensais indispensable et je les ai intégré dans install.systems.xml, puis j'ai tenté plusieurs modifications sans succès.
Je signale avoir 5 modèles de liste (de 0 à 4) et que si je les charges par la voie normale avec la commande communication avec le piloteIA cela fonctionne parfaitement.
J'espère avoir été suffisamment clair dans l'explication de mon problème et j'apprécierai bien volontier de l'aide.
-
- Posts: 2351
- Joined: Sun, 28. Mar 04, 15:56
-
- Posts: 12
- Joined: Fri, 11. Apr 08, 22:09
Bonjour PrizzZ
Merci de ton aide
Oui le cheat1.4, c'est bien celui de LV et voici le dossier complet :
Puis le dossier complet du script (un parmi les nombreux de AzzPiloteIAIII )dans lequel j'ai copié les quelque lignes.
Je serais de retour seulement vers 23h, je ne pourrais répondre avant.
Cordialement fangamer
Merci de ton aide
Oui le cheat1.4, c'est bien celui de LV et voici le dossier complet :
Code: Select all
Script install.systems
Version: 0
for Script Engine Version: 33
Description
install default items to ships
Arguments
1: ship , Var/Ship , 'ship'
Source Text
001 = $ship -> add 1 units of Licence de chasseurs de prime Argon
002 = $ship -> add 1 units of Analyseur de prix d'achat
003 = $ship -> add 1 units of Analyseur de prix de vente
004 = $ship -> add 1 units of Licence de chasseurs de tête Boron
005 = $ship -> add 1 units of Booster
006 = $ship -> add 1 units of Système de survie de soute
007 = $ship -> add 1 units of Ordinateur d'Amarrage
008 = $ship -> add 1 units of Projecteur écliptique
009 = $ship -> add 1 units of Analyseur de vaisseau
010 = $ship -> add 1 units of Logiciel de Commandes de Combat MK1
011 = $ship -> add 1 units of Logiciel de Commandes de Combat MK2
012 = $ship -> add 1 units of Moteur de saut
013 = $ship -> add 1 units of Analyseur d'astéroïde
014 = $ship -> add 1 units of Pilote automatique de combat
015 = $ship -> add 1 units of Logiciel de Commandes de Navigation MK1
016 = $ship -> add 1 units of Collecteur de Minerai
017 = $ship -> add 1 units of Licence de chasseur de prime Paranid
018 = $ship -> add 1 units of Logiciel de commandes spéciales MK1
019 = $ship -> add 1 units of Booster MATS
020 = $ship -> add 5 units of Assurance de recouvrement
021 = $ship -> add 1 units of Moteur d'Accélération Temporelle à Singularité
022 = $ship -> add 1 units of Licence de chasseurs de prime Split
023 = $ship -> add 1 units of Téléporteur
024 = $ship -> add 1 units of Logiciel de Commandes Commerciales MK1
025 = $ship -> add 1 units of Logiciel de Commandes Commerciales MK2
026 = $ship -> add 1 units of Système Commercial Distant
027 = $ship -> add 1 units of Scanner Triplex
028 = $ship -> add 1 units of Licence de chasseurs de tête Teladi
029 = $ship -> add 1 units of Système Commercial Distant
030 *= $ship -> add 1 units of
031 *= $ship -> add 1 units of SS_WARE_SW_NEW19
032 *= $ship -> add 1 units of SS_WARE_SW_NEW10
033 *= $ship -> add 5 units of Invalide
034 *= $ship -> add 1 units of
035 *= $ship -> add 1 units of
036 *= $ship -> add 1 units of
037 = $ship -> add 1 units of Kit de Mise à niveau BPH Mk1
038 = $ship -> add 1 units of Moteur de manoeuvre
039 = $ship -> add 1 units of Jumelles Numériques
040 = $ship -> add 1 units of Logiciel de Logistique de Produit MK1
041 = $ship -> add 1 units of Logiciel de Logistique de Produit MK2
042 = $ship -> add 1 units of Scanner Duplexe
043 = $ship -> add 1 units of Logiciel de Ravitaillement de Flotte
044 if $ship -> is of type Discoverer Avant-garde
045 = $ship -> install 210 units of Extension de capacité de soute
046 = $ship -> install 47 units of Optimisation de moteur
047 = $ship -> install 19 units of Optimisation de la direction
048 $ship -> set local variable: name='azz.level.combat' value=15
049 end
050 if $ship -> is of type Buster Avant-garde
051 = $ship -> install 390 units of Extension de capacité de soute
052 = $ship -> install 34 units of Optimisation de moteur
053 = $ship -> install 23 units of Optimisation de la direction
054 $ship -> set local variable: name='azz.level.combat' value=15
055 $ship -> set local variable: name='$list.modele.prod' value=1
056 $ship -> set local variable: name='$list.modele.qte' value=1
057 end
058 if $ship -> is of type Eclipse
059 = $ship -> install 650 units of Extension de capacité de soute
060 = $ship -> install 25 units of Optimisation de moteur
061 = $ship -> install 22 units of Optimisation de la direction
062 $ship -> set local variable: name='azz.level.combat' value=15
063 end
064 if $ship -> is of type Mammouth
065 = $ship -> add 1 units of Rayon tracteur
066 = $ship -> install 770000 units of Extension de capacité de soute
067 = $ship -> install 19 units of Optimisation de moteur
068 = $ship -> install 40 units of Optimisation de la direction
069 $ship -> set local variable: name='azz.level.combat' value=25
070 $ship -> set local variable: name='experience' value=25
071 end
072 if $ship -> is of type Déméter Super Transporteur
073 = $ship -> add 1800 units of Photopile
074 = $ship -> add 75 units of Missile Moustique
075 = $ship -> add 36 units of Drone de combat
076 = $ship -> install 5 units of Bouclier 25 MJ
077 = $ship -> install 1 units of Canon à Accélérateur de Particules Beta
078 = $ship -> install 9000 units of Extension de capacité de soute
079 = $ship -> install 21 units of Optimisation de moteur
080 = $ship -> install 24 units of Optimisation de la direction
081 = $ship -> add 1 units of Logiciel de commandes commerciales MK3
082 $ship -> set local variable: name='experience' value=22
083 end
084 if $ship -> is of type Buster Avant-garde
085 $cpy.prod = $list.modele.prod[1]
086 $cpy.qte = $list.modele.qte[1]
087 $i.size = size of array $cpy.prod
088 $list.prod = array alloc: size=$i.size
089 $list.qte = array alloc: size=$i.size
090 copy array $cpy.prod index 1 ... $i.size into array $list.prod at index 1
091 copy array $cpy.qte index 1 ... $i.size into array $list.qte at index 1
092 [THIS] -> set local variable: name='azz.ravitail.prod' value=$list.prod
093 [THIS] -> set local variable: name='azz.ravitail.qte' value=$list.qte
094 end
095 return null
Code: Select all
Script azz.gr.ravitail.modele.charge
Version: 0
for Script Engine Version: 32
Description
Chargement d un modele de liste reappro
Arguments
Source Text
001 * **** Preparation des donnees ***
002
003 @ $tab.IA = $dummy -> call script 'Azz.prime.Rech.IA' : Select ship=[THIS]
004 $pilote.name = $tab.IA[0]
005 $level.combat = $tab.IA[1]
006 $pname = get player name
007 $anull = null
008
009 @ = wait randomly from 100 to 500 ms
010
011 $list.modele.prod = get global variable: name='azz.ravitail.modele.prod'
012 $list.modele.qte = get global variable: name='azz.ravitail.modele.qte'
013
014 if $list.modele.prod == null
015 $msg = sprintf: pageid=7163 textid=38, $pilote.name, $pname, $anull, null, null
016 send incoming message $msg to player: display it=[TRUE]
017 return null
018 end
019
020
021 * Message de bienvenue
022 $msg = sprintf: pageid=7163 textid=1197, $pilote.name, $pname, $anull, null, null
023 send incoming message $msg to player: display it=[TRUE]
024
025 * Affichage liste des modeles
026 $question = sprintf: pageid=7163 textid=1199, $pilote.name, null, null, null, null
027
028
029
030
031 $no.quest = 0
032 while $no.quest < 10
033
034
035 $libel = ' '
036 $i.nb = 30
037 * Constitution du libel
038 while $i.nb
039 dec $i.nb =
040 $i.prod = $list.modele.prod[$no.quest][$i.nb]
041 $i.qte = $list.modele.qte[$no.quest][$i.nb]
042 if $i.prod != null
043 $msg = sprintf: pageid=7163 textid=40, $i.prod, $i.qte, null, null, null
044 $libel = $libel + $msg
045 end
046 end
047
048 * Affichage de la ligne
049 $msg.id = 1200 + $no.quest
050 $msg = sprintf: pageid=7163 textid=$msg.id, $anull, $no.quest, $libel, null, null
051 $question = $question + $msg
052 @ = wait 5 ms
053 fin.quest:
054 inc $no.quest =
055 end
056 $msg = sprintf: pageid=7163 textid=1120, $anull, $anull, $anull, null, null
057 $question = $question + $msg
058
059
060 gosub Pose.Quest
061
062 if $reponse < 99
063 * Memoristaon de la liste
064 $cpy.prod = $list.modele.prod[$reponse]
065 $cpy.qte = $list.modele.qte[$reponse]
066 $i.size = size of array $cpy.prod
067 $list.prod = array alloc: size=$i.size
068 $list.qte = array alloc: size=$i.size
069 copy array $cpy.prod index 0 ... $i.size into array $list.prod at index 0
070 copy array $cpy.qte index 0 ... $i.size into array $list.qte at index 0
071
072 [THIS] -> set local variable: name='azz.ravitail.prod' value=$list.prod
073 [THIS] -> set local variable: name='azz.ravitail.qte' value=$list.qte
074
075 $msg = sprintf: pageid=7163 textid=39, $pilote.name, $pname, $anull, null, null
076 send incoming message $msg to player: display it=[TRUE]
077
078 end
079
080 return null
081
082 * ========Sous Programmes=======
083
084 Pose.Quest:
085 $reponse = null
086 set global variable: name='azz.prime.reponse' value=null
087 send incoming question $question to player: callback='azz.prime.sais.reponse'
088 $rnd = 0
089 while $reponse == null
090 $reponse = get global variable: name='azz.prime.reponse'
091 @ = wait 1000 ms
092 inc $rnd =
093 skip if $rnd < 50
094 $reponse = 'trop tard'
095 end
096 if $reponse == 'trop tard'
097 play sample 992
098 @ = wait 500 ms
099 $msg = sprintf: pageid=7161 textid=1229, $pilote.name, $pname, null, null, null
100 send incoming message $msg to player: display it=[TRUE]
101 return null
102 end
103 endsub
104
105 return null
Cordialement fangamer
-
- Posts: 2351
- Joined: Sun, 28. Mar 04, 15:56
Les variables $list.modele.prod et $list.modele.qte ne sont pas initialisées. Essaye en remplaçant :
par
Code: Select all
084 if $ship -> is of type Buster Avant-garde
[...]
094 end
095 return null
Code: Select all
084 if $ship -> is of type Buster Avant-garde
085 $list.modele.prod = get global variable: name='azz.ravitail.modele.prod'
086 $list.modele.qte = get global variable: name='azz.ravitail.modele.qte'
087 $cpy.prod = $list.modele.prod[1]
088 $cpy.qte = $list.modele.qte[1]
089 $i.size = size of array $cpy.prod
090 $list.prod = array alloc: size=$i.size
091 $list.qte = array alloc: size=$i.size
092 copy array $cpy.prod index 1 ... $i.size into array $list.prod at index 1
093 copy array $cpy.qte index 1 ... $i.size into array $list.qte at index 1
094 $ship -> set local variable: name='azz.ravitail.prod' value=$list.prod
095 $ship -> set local variable: name='azz.ravitail.qte' value=$list.qte
096 end
097 return null