[X3]Ajouter une variable à la fin du nom du pilote

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

Moderator: Modérateurs pour les forum Français

Nemeo
Posts: 106
Joined: Mon, 27. Sep 04, 14:16
x3ap

[X3]Ajouter une variable à la fin du nom du pilote

Post by Nemeo »

Bonjour!

Je veux que le jeu génère un nom pour un vaisseau, stocke le nom de base du pilote en variable locale et renomme le vaisseau à partir de ce nom et ajoute un variable à la fin. Voici le code que j'ai tapé:

Code: Select all

049     $nempilotname = get random name: race=null
050     $nemlevelingship -> set local variable: name=$nem.pilot.name value=$nempilotname
... (la valeur nemincrement est définie)
065    $nempilotname = $nemlevelingship -> get local variable: name=$nem.pilot.name
066    $nemupdatedname = sprintf: fmt='%s (%s)', $nempilotname, $nemincrement, null, null, null
067    $nemlevelingship -> set pilot name to $nemupdatedname
En jeu, le nom du pilote est correctement généré mais une série de chiffre se colle juste après (entre le nom du pilote et le '(%s)'). Quelqu'un pourrait-il m'aider à comprendre ce qui se passe?
User avatar
Serial Kicked
Posts: 3823
Joined: Fri, 12. Aug 05, 20:46
x3tc

Post by Serial Kicked »

Bon je t'en ai expliqué un bout par Meusseuneuh mais on va faire un petit topo pour les gens qui pourraient tomber sur cet attroce bout de code :D

Code: Select all

$nempilotname = get random name: race=null
Ca ça va :)

---

Code: Select all

$nemlevelingship -> set local variable: name=$nem.pilot.name value=$nempilotname
Aïe Aïe Aïe ! Le nom / name d'une variable locale est exprimée par une chaine de caractères (string) et pas par une variable. Enfin on peut aussi le faire avec une variable, mais dans ce cas ta locale aura pour nom le contenu de cette variable (ce qui serait très bordélique comme methode) :

Faut donc remplacer celà par le code :

Code: Select all

$nemlevelingship -> set local variable: name='nem.pilot.name' value=$nempilotname
---

Code: Select all

$nempilotname = $nemlevelingship -> get local variable: name=$nem.pilot.name
Même remarque que précedemment. Vais pas refaire l'explication. Par contre ce qui m'étonne c'est que tu ai besoin de récupérer le contenu de cette local si tot. T'es sur que $nempilotname ne contient plus le nom du pilote ?


---

Code: Select all

$nemupdatedname = sprintf: fmt='%s (%s)', $nempilotname, $nemincrement, null, null, null
Pourquoi faire simple quand on peut faire compliqué ? ^^ Bien qu'à priori ça doit marcher tu peux simplement taper le code :

Code: Select all

$nemupdatedname = $nempilotname + ' (' + $nemincrement + ')'
---

La dernière ligne est correcte. 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
PrizzZ
Posts: 2352
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

A vrai dire, je ne vois aucune erreur sur la partie présenté.
Peux-tu publier l'ensemble du script ?
Nemeo
Posts: 106
Joined: Mon, 27. Sep 04, 14:16
x3ap

Post by Nemeo »

Serial Kicked a trouvé le problème. C'est le nom de ma variable locale. il faut toujours mettre un string. Avec un $, ça le fait pas.
PrizzZ
Posts: 2352
Joined: Sun, 28. Mar 04, 15:56
x3tc

Post by PrizzZ »

En effet si $nem.pilot.name n'est pas paramétré ca le fait pas.
Je crois que c'était fait ailleurs dans le code.
Nemeo
Posts: 106
Joined: Mon, 27. Sep 04, 14:16
x3ap

Post by Nemeo »

Remplacer les name de toutes mes variables locales par des string (au lieu de variable) a résolu le problème. Je ne comprends toujours pas pourquoi j'obtenais des chiffres correspondant à l'expérience gagnée après le nom du pilote sachant que ce n'était qu'une variable éphemère qui n'intervenait pas dans la modification du pilot name. Enfin bon, le principal est que seul le mystère perdure, pas le problème. Meurt! Topic!

Return to “Script et Modding pour la Trilogie X”