[X3 Tutorial] Création de raccourcis clavier (07.03.06)

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
User avatar
Serial Kicked
Posts: 3823
Joined: Fri, 12. Aug 05, 20:46
x3tc

[X3 Tutorial] Création de raccourcis clavier (07.03.06)

Post by Serial Kicked » Tue, 7. Mar 06, 10:15

======================================
X3 TUTORIAL: GESTION DES RACCOURCIS CLAVIER
======================================

[Anarkis Federation - X2, X3 Script and Modding Station]
======================================

Ce tutorial qui devrait être facile d'accés aux débutants a pour but de vous apprendre à créer de nouveaux raccourcis claviers claviers pour le joueur. Nous allons créer ici un nouveau raccourcis qui aura pour but de faire apparaitre par magie 20 e.cells (photopiles) dans la soute de votre navire.


:arrow: Préambule

Ce tutorial va utiliser une variable globale, pour ceux qui savent déjà ce que sont les variables globales et locales vous pouvez passer ce paragraphe. Le moteur de script permet d'enregistrer dans le jeu de façon permanente des variables qui peuvent être récupérées par n'importe quel script du jeu et qui sont sauvegardées quand on sauve sa partie.

Les variables locales: Ce sont des variables que l'on peut associer à un objet particulier du jeu (vaisseau ou station). La syntaxe est la suivante:

Code: Select all

$objet -> set local variable: name='ma.variable' value=$valeur
Sert à définir une variable locale appelée 'ma.variable' sur le vaisseau ou la station $objet, et on lui attribuera la valeur contenue dans $valeur. (ma.variable est une chaine de caractères, string)

Code: Select all

$valeur = $objet -> get local variable: name='ma.variable'
Sert à récupérer dans $valeur la variable locale qui porte le nom 'ma.variable' stockée sur le vaisseau ou la station $objet. S'il n'y a aucune variable portant ce nom sur l'objet en question, la valeur de retour sera 'null'.

Les variables globales: Ce sont celles ci dont nous allons avoir besoin ici. Fonctionne comme les variables locales dans le principe, sauf qu'elles ne sont pas spécifiques à un objet particulier. La syntaxe est la suivante.

Code: Select all

set global variable: name='ma.globale' value=$valeur
Assigne à la variable appelée 'ma.globale' la valeur contenu dans $valeur

Code: Select all

$valeur = get global variable: name='ma.globale'
Récupère dans $valeur le contenu de la variable appelée 'ma.globale'. Si il n'y a pas de telle variable, la valeur de retour sera 'null'.


:arrow: 1. Le script pour récupérer les photopiles

C'est un script excessivement simple qui tient en une seule ligne (comme beaucoup de cheats d'ailleurs). Donc, créez un nouveau script appelé 'tutorial.get.ecells'.

Code: Select all

= [PLAYERSHIP] -> add '20' units of 'Energy Cells'
Ligne assez explicite je pense pour se passer d'explication approfondie. :)


:arrow: 2. Le script de setup

Le script de setup est lancé à chaque chargement de partie. C'est donc ici l'endroit ou nous allons créer notre raccourcis clavier. Ce script va devoir déterminé si c'est la première fois qu'on lance une partie avec ce script, et si c'est le cas, il devra créer le raccourcis clavier pour le joueur.

Créez un nouveau script appelé 'setup.tutorial.shortcuts'. Son contenu devra ressembler à ceci :

Code: Select all

$hotkey.id = get global variable: name='tutorial.hotkey'
if $hotkey.id == null
  $description = 'Faire le plein d'énergie'
  $hotkey.id =  register hotkey $description to call script 'tutorial.get.ecells'
  set global variable: name='tutorial.hotkey' value=$hotkey.id
end
Voici l'explication de ce code

Code: Select all

$hotkey.id = get global variable: name='tutorial.hotkey'
On va vérifier s'il existe une variable globale 'tutorial.hotkey' et stock sa valeur dans $hotkey.id.

Code: Select all

if $hotkey.id == null
On vérifie ce que vaut $hotkey.id, s'il n'y a pas de variable globale (que sa valeur est 'null') on exécute le code qui suit ensuite jusqu'au 'end'.

Code: Select all

 $hotkey.id =  register hotkey $description to call script 'tutorial.get.ecells'
C'est ici que l'on va associer le script que l'on a créé tout à l'heure à une nouvelle entrée dans le menu de X3 qui sert à configurer les touches. Le texte correspondant à cette entrée sera celui donné dans la variable $description. Cette fonction renvoie une valeur très importante à sauvegarder. C'est le numéro unique du raccourcis créé, et cette valeur est importante car vous en avez besoin quand vous voulez supprimer le raccourcis. On le met ici dans $hotkey.id.

Code: Select all

set global variable: name='tutorial.hotkey' value=$hotkey.id
On va donc stocker la valeur de $hotkey.id dans la variable globale 'tutorial.hotkey' afin d'une part la stocker dans un endroit facile à récupérer et d'autre part de faire le test "if" du début du script.


:arrow: 3. Le script de désinstallation

Maintenant faut quand même prévoir que l'utilisateur risque d'en avoir marre de voir 40 hotkeys de scripts qu'il a supprimé depuis longtemps dans son menu de reglage des controles. Pour celà on va lui fournir un joli script qu'il devra lancer manuellement après avoir supprimé les autres fichiers utilisés par notre cheat. Appelons le 'tutorial.uninstall.hotkey'. Son contenu sera le suivant

Code: Select all

$hotkey.id = get global variable: name='tutorial.hotkey'
if $hotkey.id != null
  unregister hotkey $hotkey.id
  set global variable: name='tutorial.hotkey' value=null
end
On récupère le numéro de la hotkey que l'on a stocké dans notre variable globale 'tutorial.hotkey', on vérifie qu'elle n'est pas nulle. Puis on supprime le raccourcis et enfin supprime la variable globale en la mettant à 'null' vu qu'elle ne sert plus à rien.


:arrow: Quelques conseils

Rien de bien spécial à rajouter ici, sinon de nommer vos variables globales et locales d'une façon clairement identifiable et qui ne risque pas d'être utilisées par un autre script. Un trés mauvais nom de variable serait 'hotkey' ou 'check'. Un bon nom de variable serait quelque chose qui donne des indications basiques et qui sera unique comme :
'pirate.guild.active' ou 'acc.carrier.tactics'.

Les raccourcis créés apparaitront dans la partie "Extension" de l'onglet "Interface" du menu de reglage des touches de clavier. Il ne semble pas possible à l'heure actuelle de définir une touche par défaut pour ceux ci.


________

Voilou, rien de bien compliqué ici, mais si vous avez une question relative à ce tutorial, be vous génez pas pour la poser dans ce topic :)

________

Edit : Correction de quelques oublis d'étourderie.
Last edited by Serial Kicked on Tue, 7. Mar 06, 11:59, edited 2 times in total.
X3:TC/AP Pirate Guild 3 - Yaki Armada 2 - Anarkis Defense System

Anarkis Gaming HQ
Independent Game Development
X3 Scripting and Modding Station

cirth
Posts: 93
Joined: Sat, 25. Feb 06, 20:56
x3

Post by cirth » Tue, 7. Mar 06, 11:42

= [PLAYERSHIP] -> add '20' units of 'Energy Cells'
Commençons par une question bête :roll: Dans l'entente du tutorial tu dis qu'on rajoute seulement 10 photopiles hors là dans cette ligne 20 apparait, j'en déduis que soit c'est 20 qu'il fallait lire dans l'entete (ou 10 dans la ligne) soit le contenu de la fonction add doit etre doublé pour en obtenir le nombre souhaité (j'espere que c'est pas ça :o )
'Faire le plein d'énergie'
Donc ca c'est la ligne qui suite à l'installation du script va apparaitre dans le menu de configuration de touches si j'ai bien suivit, mais dans quel onglet ? et par défaut le raccourcit clavier est vide ?

User avatar
Serial Kicked
Posts: 3823
Joined: Fri, 12. Aug 05, 20:46
x3tc

Post by Serial Kicked » Tue, 7. Mar 06, 11:44

Oups pour le 20 et 10, oui c'est la fatigue, je vais corriger ça et mettre tout à 20 :p
Donc ca c'est la ligne qui suite à l'installation du script va apparaitre dans le menu de configuration de touches si j'ai bien suivit, mais dans quel onglet ? et par défaut le raccourcit clavier est vide ?
Oui. Ca l'ajoute en bas de l'onglet appelé "Interface", dans la partie "Extensions". Du moins dans la VO. Et non hélas, il n'est pas possible d'assigner une touche par défaut, c'est à l'utilisateur de la donner.

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

Anarkis Gaming HQ
Independent Game Development
X3 Scripting and Modding Station

cirth
Posts: 93
Joined: Sat, 25. Feb 06, 20:56
x3

Post by cirth » Tue, 7. Mar 06, 11:53

ok :) donc la commande

Code: Select all

register hotkey 
correspond à l'assignation d'une nouvelle touche de raccourcit dans l'interface :) humm je trouve pas la liste des commandes x3 disponibles (pourtant je suis sûr de l'avoir vu quelque part mais je retrouve plus le lien ^^)

Encore une fois un très bon tuto de ta part :)

User avatar
Serial Kicked
Posts: 3823
Joined: Fri, 12. Aug 05, 20:46
x3tc

Post by Serial Kicked » Tue, 7. Mar 06, 11:57

correspond à l'assignation d'une nouvelle touche de raccourcit dans l'interface
Tout à fait :)
humm je trouve pas la liste des commandes x3 disponibles (pourtant je suis sûr de l'avoir vu quelque part mais je retrouve plus le lien ^^)
Il y a un .pdf, le MSCI Handbook dans les downloads du site qui fait ça , par contre je ne sais pas trop s'il a été mis à jour pour X3 je dois avouer.
Encore une fois un très bon tuto de ta part
Merci beaucoup :D
X3:TC/AP Pirate Guild 3 - Yaki Armada 2 - Anarkis Defense System

Anarkis Gaming HQ
Independent Game Development
X3 Scripting and Modding Station

User avatar
Whismerhill
Posts: 579
Joined: Wed, 20. Oct 04, 21:16
x3ap

Post by Whismerhill » Wed, 15. Mar 06, 10:52

non c'est toujours le MCSI de X2 et non X3
donc pas les nouvelles commandes
mais tout le reste est pareil apparemment

edit: merci pour le tuto
je vais pouvoir vérifier que j'ai pas fais de bêtises ;)
(j'avais copier la structure sur un script anglais jusqu'à présent )

Post Reply

Return to “Script et Modding pour la Trilogie X”