L'atelier des scripto-rameurs

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

Moderator: Modérateurs pour les forum Français

User avatar
Bléral
Posts: 697
Joined: Wed, 31. Mar 04, 00:37
x2

Post by Bléral »

RefObj me paraît juste (enfin j'ai de sérieux doutes sur la crédibilité de mes avis sur la question ces temps ci :oops: ); pour le reste je suis pas sûr de bien comprendre ton script, mais je soupçonne un pb avec la double loop, dans la dernière partie: tu es bien sûr de son organisation? Si tu peux pas l'éviter (et ça a pas l'air), tu peux trouver un moyen de la tester séparément (avec un petit script séparé)?
Ah et j'ai moi aussi les yeux passablement explosés, mais je vois pas où tu définis $classe (pour la ligne 061): si ta condition n'est jamais réalisée, il serait logique que $cible ne contienne rien... (mais il devrait afficher dans le logbook null, qd même?)

Bonne chance, t'es pas tout seul à ramer si ça peut te consoler :wink:
L'hypertrophie de louveteau se palpe.
Tiens, mais ne serait-ce pas une fonction de Recherche ?
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

$classe c'est ligne 57 où je le sort du tableau. Si c'est les deux boucles superposées je suis pas dans la ...biiip... parce que comparer les données des tableaux autrement, c'est syndrome du scripteur assurer.
Sinon des opinions sur l'ordre des cibles prioritaires ?
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Bon pour le refobj ,je connaissait pas trop la fonction, c'etait plus une supposition ... désolé :oops: .
Sinon emboiter les loops ca marche tres bien pas de problème de ce coté la.
Sinon quelques autres questions :
Quand tu regardes dans les script qui tournent ( le menu Global script task, avant les scripts ) est-ce que le script est present ?
En tout cas je t'invite a reposter le script complet pour que l'on puisse comprendre.
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

Le script est complet là; son seul but la vie, c'est trouver, trier et renvoyer les résultat. Si sa vous interésse je peut vous le passer pour vos scripts de combat enfin quand il voudra bien marcher correctement.
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Bon ce qui nous manque ce sont de informations pour comprendre ce qui ne marche pas :
Je te propose la demarche suivante :
Dans le script rajoute les commandes suivantes :
Au debut du script ecrit dans le logbook [THIS] et [SECTOR]
Au milieu du script des que tu as le tableau $pos, inscrit le dans le logbook.
A la fin, écrit dans le logbook un texte a la con dans le genre c'est fini.
Lance le script.
Si ca marche toujours pas, reposte tout ce que te raconte le logbook.

euh ... oublie !

j'ai touvé la bourde :

Code: Select all

$prio =  array alloc: size=7 
remplace ca par

Code: Select all

 $prio =  array alloc: size=0 
parcequ'en fait ton "append" collait tes priorité en fin de tableau, c'est à dire les places 8, 9, ...

:D
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

De toute façon la sceance massive logbook était deja au programme de la soirée alors réponse ce soir.
Par contre si tu as raison pour "append" je vais avoir des corrections à faire sur la FAQ script de wiwi :oops: .
User avatar
KAHR-SIDIUS
Posts: 501
Joined: Fri, 2. Apr 04, 18:59
x3tc

Post by KAHR-SIDIUS »

Mon moi c'est bon, le script tourne parfaitement avec la recherche des enemies, mes chasseur font un appontement sur mes vaisseau ensuite ceux ci se deplace dans les autres secteurs, si enemie il y a ils y vont en fonctionde ce qu il y a devant eux, ensuite retour des chasseurs dans les appontement et on change de secteurs :)

plus qu'a verifier le ravitailllenment et le HRS :)
KAHR-SIDIUS

Salutations

_________________
Utilisez la fonction de Recherche....
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

Version modifier:

Code: Select all

001   set script priority to 20
002   $pos =  find ship: sector=[SECTOR] class or type=Vaisseau race=Argon flags=[Find.Multiple] refobj=[THIS] maxdist=100000 maxnum=20 refpos=null
003   $taille =  size of array $pos
004   $prio =  array alloc: size=1
005 @ = wait 50 ms
006   if [THIS] -> is of class Destroyer Lourd M1
007    goto label M1et2
008   else if [THIS] -> is of class Destroyer M2
009    goto label M1et2
010   else if [THIS] -> is of class Croiseur M6
011    goto label M6etM3
012   else if [THIS] -> is of class Chasseur Lourd M3
013    goto label M6etM3
014   else if [THIS] -> is of class Chasseur M4
015    goto label M4
016   else if [THIS] -> is of class Chasseur Léger M5
017    goto label M5
018   else
019    goto label fin
020   end
021   M1et2:
022 @ = wait 50 ms
023   $prio[0] = Destroyer M2
024   append Destroyer Lourd M1 to array $prio
025   append Croiseur M6 to array $prio
026   append Amas Khaak M3  to array $prio
027   append Chasseur Lourd M3 to array $prio
028   append Chasseur M4 to array $prio
029   append Chasseur Léger M5 to array $prio
030   goto label tri
031   M6etM3:
032 @ = wait 50 ms
033   $prio[0] = Croiseur M6
034   append Amas Khaak M3  to array $prio
035   append Chasseur Lourd M3 to array $prio
036   append Destroyer M2 to array $prio
037   append Chasseur M4 to array $prio
038   append Destroyer Lourd M1 to array $prio
039   append Chasseur Léger M5 to array $prio
040   goto label tri
041   M4:
042 @ = wait 50 ms
043   $prio[0] = Chasseur M4
044   append Chasseur Léger M5 to array $prio
045   append Amas Khaak M3  to array $prio
046   append Chasseur Lourd M3 to array $prio
047   append Destroyer Lourd M1 to array $prio
048   append Croiseur M6 to array $prio
049   append Destroyer M2 to array $prio
050   goto label tri
051   M5:
052 @ = wait 50 ms
053   $prio[0] = Chasseur Léger M5
054   append Chasseur M4 to array $prio
055   append Amas Khaak M3  to array $prio
056   append Chasseur Lourd M3 to array $prio
057   append Destroyer Lourd M1 to array $prio
058   append Destroyer M2 to array $prio
059   append Croiseur M6 to array $prio
060   tri:
061 @ = wait 50 ms
062   $prioligne = 0
063   $cibleligne = 0
064   $cibletaille = 1
065   $cible =  array alloc: size=1
066   while $prioligne < 7
067    $classe = $prio[$prioligne]
068    $ligne = 0
069    while $taille > $ligne
070     $tryship = $pos[$ligne]
071     if $tryship -> is of class $classe
072      resize array $cible to $cibletaille
073      $cible[$cibleligne] = $tryship
074 @    = wait 10 ms
075      skip if $cibleligne < 20
076       goto label fin
077      inc $cibleligne = 
078      inc $cibletaille = 
079 @    = wait 10 ms
080     end
081     inc $ligne = 
082 @   = wait 20 ms
083    end
084    inc $prioligne = 
085 @  = wait 10 ms
086   end
087   * Scripter  par Flo2K
088   fin:
089   write to player logbook $pos
090   write to player logbook $prio
091   write to player logbook $cible
092   return $cible
Reprizzz est notre nouveau gagnant (un discour!, un discour!,...) , c'est "append"qui déconnait.
Mais aussi les addition de flags.

Deux probleme encore, il se lance une fois sur deux et la derniere fois que je l'ai lancé sur argon buster, il lui choisit un M6 comme cible.
Les prio et wait son là pour ça mais l'efficacité n' est pas au rendez-vous.

La correction de FAQ sur les tableaux sera faite dès que Elminster arretera de faire joujou, je ne peut plus les edités.
User avatar
Bléral
Posts: 697
Joined: Wed, 31. Mar 04, 00:37
x2

Post by Bléral »

plus qu'a verifier le ravitailllenment et le HRS
évite de trifouiller le HRS dans l'immédiat, y'a qqs corrections à faire et j'ai dit que je m'en coccuperais - ça devrait pas être grand-chose, mais des fois que... allez promis, au plus tard pour lundi
L'hypertrophie de louveteau se palpe.
Tiens, mais ne serait-ce pas une fonction de Recherche ?
User avatar
KAHR-SIDIUS
Posts: 501
Joined: Fri, 2. Apr 04, 18:59
x3tc

Post by KAHR-SIDIUS »

Bléral wrote:
plus qu'a verifier le ravitailllenment et le HRS
évite de trifouiller le HRS dans l'immédiat, y'a qqs corrections à faire et j'ai dit que je m'en coccuperais - ça devrait pas être grand-chose, mais des fois que... allez promis, au plus tard pour lundi
Désolé j'y ai deja mit le nez, mais de toute façon j'y ait fait et doit encore y faire quelque modif afin qu il soit adapté à mon script principale, quand ce sera fait, on mettera en commun nos modif et on vera si on peut en sortir une idoine....

pour ma part j'ai dupliqué les fichier du HRS avec mon intitulé Amiral. devant afin eviter de modifier celui de base....


Petite question, vous utiliser quelle fonction pour savoir si un de vos vaisseau a bien abattu un enemie afin de pouvoir le comptabiliser....?

Cela m'eviterai de chercher pour rien...


merçi à plus
KAHR-SIDIUS

Salutations

_________________
Utilisez la fonction de Recherche....
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

Demande si la cible que tu lui as attribuer existe encore, si elle existe plus c'est qu'elle s'est fait déscendre.
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

J'avais eu quelque problème aussi avec l'existance. Ma methode actuelle ( qui fonctionne parfaitement, testified ! ) est de verifier si la cible est de la classe "ship" : si oui il existe, sinon il est mort.

@ Flo2K : pour le discour ... bah quelques remarques d'optimization pour ton script :) :

Code: Select all

$prio =  array alloc: size=1
$prio[0] = Destroyer M2
equivalent mais plus long à tapper que

Code: Select all

$prio =  array alloc: size=0
append Destroyer M2 to array $prio

Code: Select all

063   $cibleligne = 0 
064   $cibletaille = 1 
065   $cible =  array alloc: size=1 
(...)
072resize array $cible to $cibletaille 
073      $cible[$cibleligne] = $tryship 
074 @    = wait 10 ms 
075      skip if $cibleligne < 20 
076       goto label fin 
077      inc $cibleligne = 
078      inc $cibletaille =
pareil mais plus long ( economie d'une variable, pas de resize a faire c'est toutotomatic ) que

Code: Select all

$cibleligne = 0 
$cible =  array alloc: size=0 
(...)
append $tryship to array $cible 
= wait 10 ms 
skip if $cibleligne < 20 
goto label fin 
inc $cibleligne = 
Voila voila ...
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

J'ai deja tester et ça marche pas, tu demande au jeu de créer un tableau de zéro ligne et il digere pas (pas de tableau créer).
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Ca marche tres bien chez moi ... et pas qu'une fois. :D . Ou alors c'est que j'ai plein de truc qui marchent pas et je m'en suis jamais rendu compte :o ... va falloir verifier ça ... Bléral ? Khar-Sidius ? votre avis ?
User avatar
KAHR-SIDIUS
Posts: 501
Joined: Fri, 2. Apr 04, 18:59
x3tc

Post by KAHR-SIDIUS »

RePrizzZ wrote:Ca marche tres bien chez moi ... et pas qu'une fois. :D . Ou alors c'est que j'ai plein de truc qui marchent pas et je m'en suis jamais rendu compte :o ... va falloir verifier ça ... Bléral ? Khar-Sidius ? votre avis ?

Code: Select all

073      $cible[$cibleligne] = $tryship
Je ne sait pas si ça peut aider mais je n'utilise pas cette commande, car pour ma part elle a pars l'air de bien tourné enfin de mon point de vue

Je lui prefere

Code: Select all

073 append $tryship to array $$cible
Mais à adapté a ta boucle, (modifié un tableau est plus difficile que d'enr ecreer un nouveau) peut etre devrai tu changer d'approche

Code: Select all

069    while $taille > $ligne 
ensuite içi, tu utilise la variable $taille, mais elle n'est referencé nul par dans ton code, elle devrai à ce moment la etre à null

ne serait - ce pas plutot $cibletaille

Juste comme cela en passant, ca n'auras peut etre pas d'influence mais on ne sait jamais

@+
KAHR-SIDIUS

Salutations

_________________
Utilisez la fonction de Recherche....
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Je repond a la place de Flo, mais je crois qu'il l'a dejà dis en plus :

Code: Select all

003   $taille =  size of array $pos 
... :roll:
Par contre j'aimerai bien avoir ton avis sur les tableau de taille 0, si ca ne te derange pas. :)
User avatar
KAHR-SIDIUS
Posts: 501
Joined: Fri, 2. Apr 04, 18:59
x3tc

Post by KAHR-SIDIUS »

RePrizzZ wrote:Je repond a la place de Flo, mais je crois qu'il l'a dejà dis en plus :

Code: Select all

003   $taille =  size of array $pos 
... :roll:
Par contre j'aimerai bien avoir ton avis sur les tableau de taille 0, si ca ne te derange pas. :)
Désolé, ce Topic commence à être tres chargé :roll:


Sinon...

Les tableaux de taille zero fonctionnent parfaitement (enfait c'est l'initialisation du tableau)
il est preferable ensuite de le renseigner avec un

Code: Select all

append $Valeur to array $tableau
et non un

Code: Select all

$tableau[index]=$Valeur
J'ai remarqué que ceux ci semblaient mal fonctionner (ou pluton on les utilise mal), j'essaye de m'en servir le moins possible...

Selon moi, l'append permet en plus de renseigner le tableau avec un valeur, de l'agrandir automatiquement
alors que le $tableau[index]=$Valeur doit deja se situer dans un tableau deja creer de taille superieur ou egal à l'index utilisé +1
$tableau = array alloc: size=index maximal

Je recapitule

pour enregistrer une valeur à l'index 18 avec

Code: Select all

$tableau[18]=$Valeur
il faut que le tableau soit initialisé au minimum avec

Code: Select all

$tableau =  array alloc: size=19
attention 19 entrées representent les index 0 à 18 et pas 19

sinon si le la taille du tableau est inferieur, la valeur se perdera en cours de route (theoriquement)

Je conseillerai apres l'initialisation du tableau, de faire un boucle et de mettre à Zero le contenu de chaque index....

par contre à chaque utilisation de l'append le tableau grossira sans probleme avec la nouvelle valeur rentrée...

J'espere avoir repondu à ta question Reprizz :gruebel:


Voila @+


Je doit Rajouter autre chose Juste apres intervention de Reprizz juste en dessous
Creer un tableau plus grand que ce que l on a besoin, risque de poser des problemes surtout si on utilise

Code: Select all

$tableau[18]=$Valeur
car si une partie du tableau n'est pas exploiter au debut du processus mais le sera par la suite, le fait de
sur-dimensionner le tableau, le :

Code: Select all

$taille =  size of array $tableau 
renverra la taille du tableau creer et non la taille en fonction des valeurs renseigner dans le tableau, donc si l'on utilise une boucle While qui sera utilisé au debut pendant et apres l'evolution du tableau, au depart celle si renverra des vAleur Nul en plus des premieres referencer, je conseille donc avant le traitement de la boucle mettre des condition If (quelque chose) avec une fonction qui fera evoluer le tableau au fur et a mesur)

Cela peut parretre legerement confu mais quand vous pourrez examiner mon Script AMiral de flotte vous comprenderait, sachant que celui en evoluant dans le jeu, son experience lui permet d'effectuer des patrouilles dans plus de secteurs que le joueurs renseignera seulement au moment de l'evolution de l'amiral à ca demande personnel....

Ps ne me prennait pas l'idée merçi
Last edited by KAHR-SIDIUS on Sat, 18. Sep 04, 19:37, edited 2 times in total.
KAHR-SIDIUS

Salutations

_________________
Utilisez la fonction de Recherche....
PrizzZ
Posts: 2351
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

Parfaitement Kahr-Sidius, perfect !
Tu confirmes mes premières corrections, et tu les expliques ! Que demander de plus ?

:)

( une petit voie dans le fond de la salle : " 100 balles et un mars !" )

:D
User avatar
Bléral
Posts: 697
Joined: Wed, 31. Mar 04, 00:37
x2

Post by Bléral »

(c'était la mienne :D )
pour comptabiliser les 'frags', z'êtes sûrs que ça suffit? Je m'en suis pas encore occupé, mai sje craignais qu'avec cette méthode les ennemis abattus par d'autres soient comptabilisés... :?
L'hypertrophie de louveteau se palpe.
Tiens, mais ne serait-ce pas une fonction de Recherche ?
Flo2K
Posts: 77
Joined: Fri, 21. May 04, 20:01
x2

Post by Flo2K »

Avec cette methode tous les vaisseaux qui ont pour objectif cette cible la comptabiliseront. Tu peut aussi compliquer en faisant que soit seulement le vaisseau le plus proche qui soit compter comme vainqueur mais c'est beaucoup plus difficile.

Return to “Script et Modding pour la Trilogie X”