Bonjour, j'apporte une petite astuce pour vous aider à la programmation AGS. Avant toute chose, je tiens à dire que le script est beaucoup plus performant qu'on ne peut le penser. Vous le savez certainement je pense, AGS est très familier avec le langage C.
J'ai eu une idée, et en utilisant la fonction %ld à une variable, il est possible d'afficher sa valeur !!
Pourquoi ?Et bien par exemple : afficher le nombre de pièce qu'a récolté un aventurier, sous forme de message bien sûr
.
Vous ouvrez votre inventaire et puis vous voulez savoir combien de pièces vous possédez, donc clic droit ==> mode regarder, ensuite clic gauche sur le sac de pièce ==> Vous avez 38 pièces d'or !!
Au cours de l'aventure vous en ramassez d'autres, vous ouvrez votre inventaire, mode "look" puis clic sur le sac d'or ==> Vous avez 49 pièces d'or !!
Magique, et ceci sans se tracasser l'esprit à créer 50 items qui ont pour image un sac d'or puis de programmer tous les messages ==> Vous avez 1...2....3.....4...... etc... pièces d'or.
La théorie c'est bien, la pratique c'est mieux :: :Voilà, le moment le plus intéressant :dd:
En faite, si je garde cet exemple, la ligne de code serait :
- Code:
-
Display("Vous avez %ld pièces d'or !!", piece);
En faite, avant tout, vous devez créer une variable (piece en l'occurrence).
Alors attention car si les objets sont dans d'autres rooms, vous devrez créer une variable global, en utilisant la fonction :
- Code:
-
SetGlobalInt(1,0);
Pour plus d'infos ==>
Clic iciDès que l'aventurier gagne 35 pièces :
- Code:
-
SetGlobalInt(1, GetGlobalInt(1)+35);
Ce ligne veut dire : "Mettre à la variable 1 la valeur de la variable 1 + 35"
Attention il y a bien deux types de GlobalInt : le Get et le Set.En faite ce n'est pas compliqué, le Set permet de créer ou de modifier une variable (modifier = ajouter, soustraire, etc...)
Le Get permet d'afficher la valeur actuelle de la variable.
La méthode pour afficher les messages est la même.
- Code:
-
display("Vous avez %ld pièces d'or", GetGlobalInt(1));
Nous constatons donc qu'il y a deux types de variables :perplexe: :
Le choix est vite fait :
:
Si votre variable ne dépasse pas la room, va pour un int !
Si votre variable nécessite son utilisation sous plusieurs rooms, va pour un global !
Si vous n'êtes pas sûr de vous, va aussi pour un global, comme ça vous ne risquez rien...
N'oubliez pas que vous pouvez comparer les variables entres elles :surprise:
Toujours le même exemple :Vous avez deux sacs de pièces, l'un d'or, l'autre d'argent, imaginons que l'aventurier ne veuille pas les mélanger, par exemple, il ne peut acheter des armes qu'avec de l'or et des sorts qu'avec de l'argent, bref...
Bien sûr il faut deux items, l'un d'un sac d'or l'autre d'un sac d'argent.
Le problème est le suivant :Sac d'or = 50
Sac d'argent = 122
Clic sur sac d'or en mode "look", un message affiche ceci :
Vous avez 50 pièces d'or.
Vous avez 172 pièces en tout.Pareil pour sac d'argent :
Vous avez 122 pièces d'argent.
Vous avez 172 pièces en tout.Quel est ce script de fou ? =====> Celui de Alucard peut être ::XD:
Non plus sérieusement, c'est très très simple, voilà nos données :
- Code:
-
SetGlobalInt(1,50); // variable 1 (sac d'or) avec 50 pour valeur (pieces)
SetGlobalInt(2,122); // variable 2 (sac d'argent) avec 122 pour valeur (pieces).
C'est tout
, ces variables ce trouvent dans la section : "game_start" ; bon alors bien sûr imaginons que nous débutons le jeu avec ces sommes là dès le départ, en vrai vous mettriez 0 à chaque sac
Voilà, maintenant les scripts, alors celui-ci nous montre le nombre de pièces d'or si clic sur sac d'or en mode "look"
- Code:
-
// script for Inventory item 1 (sac d'or): Look at inventory item
Display("Vous avez %ld pieces d'or", GetGlobalInt(1));
Jusque là, pas de soucis.
Nous voulons indiquer l'or => variable 1.
Nous voulons indiquer ensuite le nombre total de pièce, qui est composé du nombre de pièce dans le sac d'or et le nombre de pièce dans le sac d'argent, il faut donc les additionner. Ajouter donc cette ligne de code :
- Code:
-
Display("Vous avez %ld pieces en tout", GetGlobalInt(1)+GetGlobalInt(2));
C'est mieux ?
Maintenant vous savez tout !!!
Si clic sur sac d'argent en mode "look" : Pareil
- Code:
-
// script for Inventory item 2 (sac d'argent): Look at inventory item
Display("Vous avez %ld pieces d'argent", GetGlobalInt(2));
Display("Vous avez %ld pieces en tout", GetGlobalInt(1)+GetGlobalInt(2));
La seule chose qui a changée c'est la 1ère ligne, la variable choisit est la 2 puisque nous voulons le nombre de pièce d'argent ; le message également a changé, remplacez "or" par "argent". Autrement dit vous n'avez qu'à copier/coller le 1er script et le modifier.
Eh ben, on en a appris des choses aujourd'hui
J'espère avoir été clair et surtout vous permettre d'améliorer vos projets.
Car un jeu sans variables, ce n'est pas un jeu
.
Sur ce je vous laisse et merci beaucoup d'avoir lu ce tuto.
Bye bye
See you again soon