Nom du tutoriel : Avoir plus de 4 interrupteurs locaux
Notre objectif : Utiliser un nombre illimité d'interrupteurs locaux pour des conditions à l'intérieur des events. (Ne peut être utilisé comme condition d'affichage d'une page d'event)
Description du tutoriel : Vous allez avoir besoin de ce script au dessus de main. Si vous avez déjà le script des variables locales, présenté
ICI, vous n'en avez pas besoin car vous l'avez déjà.
- Spoiler:
- Code:
-
class Game_Event < Game_Character
def get_id
return @id
end
def get_map
return @map_id
end
end
Les autres ressources nécessaires sont déjà toutes présentes dans le kit de base de RMVX. Par contre, vous aurez besoin de vous faire un event et d'y mettre un peu de script.
Tutoriel : Bien qu'on ne peux malheureusement pas mettre ces interrupteurs comme condition d'affichage d'une page d'événement, on peut néanmoins s'en servir pour des conditions internes. Je prends l'exemple de possession d'event de Gothor où il utilisait déjà les 4 interrupteurs locaux pour le fonctionnement d'une seule page. Et bien maintenant, il pourra se servir de ses interrupteurs locaux comme condition pour les pages et utiliser d'autre interrupteurs locaux pour sa gestion interne.
Un peu de connaissances générales. Les interrupteurs locaux (que je nomerai self switches à partir de maintenant) sont en fait des éléments d'un tableau
hash permanant du jeu. Ainsi, tous les self switches sont enregistrés dans la variables $game_self_switches (vous comprenez pourquoi je tennais à vous donner l'appellation anglaise
) Les tableaux de
hash ont besoin d'une clé et d'une valeur. La clé est simplement l'adresse et le nom complet de l'élément du tableau, un peu comme votre adresse postale. Si on veut ajouter une valeur, on a qu'a donner une adresse qui n'existe pas et de lui donner une valeur. Cette valeur sera alors ajoutée au tableau. Pour modifier une valeur, on donne une adresse existante et on affecte une valeur, ce qui met à jour la valeur.
Donc, si on veut des self switches de plus, bien on invente une nouvelle adresse. Les adresse sont très strictes par contre. Elles sont constituées d'un tableau d'index à trois valeur. C'est valeur respecte un format et un ordre précis. L'ID de la carte où se trouve l'événement, l'ID de l'événement et le nom du self switch. C'est un peu à l'envers de nos adresse postal. Voyez ça comme si on écrivait la ville, la rue puis le numéro de porte
. Donc disons que nous voulons créer le self switch G dans l'événement 72 de la carte 25 (on se dit que nous avons des cartes immenses pour un projet immense
), et bien la clé (ou l'adresse) du self switch sera [25,72,"G"]. Si on veut créer le self switch 134 dans l'événement 34 de la carte 199, et bien la clé sera [199,34,134]. Vous voyez le principe?
Les selfs switches peuvent avoir seulement 2 valeur, ON ou OFF. Par contre, nous ne les activons pas par l'interface, mais par un script. ON et OFF se traduisent en script respectivement par
true et
false. Donc, si on veut mettre notre self switch G à ON, on doit faire ceci :
$game_self_switches[25,72,"G"]=true. Ah c'est cool, on peut activer les self switches d'un autre event alors. Oui. Pour les détail sur ce phénomène, allez voir un tuto fait exprès pour ça
ICI.
Oui mais si je fais une erreur, ça ne marchera pas. En effet. Pour éviter de faire des erreurs (un copier coller, on oublie de modifier le script, c'est l'horreur), on va utiliser le même principe que l'interface, c'est-à-dire, prendre la carte courante de l'événement courant pour la clé. Il faut savoir que les pages des events font partie de l'interpréteur du jeu, ce qui nous permet d'utiliser les fonctions de l'interpréteur directement dans le code des events (ce qui n'est pas possible directement dans les scripts de jeu). Donc pour avoir les informations sur l'événement courant, la fonction get_character(0) est tout indiquer puisque c'est déjà celle qu'utilise les événements pour retrouver les informations des events lors du déplacements et autre. Ensuite, puisque nous avons en main un event, son numéro de carte et son identifiant sont disponible par les fonction get_map et get_id (ces fonctions ont été rajoutées par votre humble Hikari dans le script présenté au début du tutoriel). Ensuite vous devez lui donner un nom. Continuons avec G. Avec ces informations, ont peut construire la clé
@cle qui nous servira beaucoup. Donc voici le script de création de la clé.
- Code:
-
event = get_character(0)
map = event.get_map
id = event.get_id
@cleG = [map,id,"G"]
Donc pour tous les événements qui auront besoin des selfswitches, chaque page devra commencer par ce code. Si vous voulez encore plus de clé, vous pouvez les créer d'un seul coup en modifiant le nom de la variables. Exemple, si vous voulez créer les switches E,F,G,H,1,2,3, vous pouvez faire ainsi :
- Code:
-
event = get_character(0)
map = event.get_map
id = event.get_id
@cleE = [map,id,"E"]
@cleF = [map,id,"F"]
@cleG = [map,id,"G"]
@cleH = [map,id,"H"]
@cle1 = [map,id,1]
@cle2 = [map,id,2]
@cle3 = [map,id,3]
Remaquez que les clés numériques ne prennent pas les apostrophes mais que celles-ci sont obligatoires pour les clés alphabétiques. Remarquez également les noms des variables. Vous devez prendres des noms différents et faciles à vous rappeler. Ainsi, vous éviterez d'effacer vos variables par accidents. Ensuite, c'est simple. Pour affecter le ON ou OFF, vous n'avez qu'à appeler $game_self_switches[@cleG]=true ou peut importe le nom de votre clé pour l'activer. Ensuite, dans les condition, vous utilisez l'option script et vous écrivez simplement $game_self_switches[@cleG]. Voilà c'est aussi simple que ça.
Donc voilà un exemple d'event avec toutes les possibilités. Cet event tel que présenté ne servirait à rien puisqu'il ne fait rien. C'est juste pour vous montrer comment utiliser les self switches. Je laisse libre cours à votre imagination pour faire quelque chose d'utile avec ça.
Un monde de possibilité s'ouvre à vous maintenant
.
Auteur : Hmm... Moi. Hikari