Information
TitreIntroduction au CMS : Menu d'actions
Objectif Crée un menu d'interaction pour avoir plus der possibilité lors du déclenchement de l'évent
connaissance Pré requiseLA plupart des commande événementielle de base
- Spoiler:
Rendu finalTable des matières Partie 1 : Le PNJPartie 2 : AffichagePartie 3 : GestionPartie 4 : EffacerAuteur Héos
RemerciementZangther
Autre tutoriel de la sériePas pour l'instant
Script utiliser
Auteur Zangther
Utilité Empêcher l'évènement de se tourner vers le héros lors de l'exécution par la touche actions si le commentaire PNJ se trouve dans l'évent
- Spoiler:
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# This class deals with events. It handles functions including event page
# switching via condition determinants, and running parallel process events.
# It's used within the Game_Map class.
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# * Start Event ( modifié pour ajouter le lock en cas de PNJ )
#--------------------------------------------------------------------------
def start
return if @list.size <= 1 # Execution content empty?
@starting = true
zang_test_PNJ
lock if @trigger < 3 if not $pnjs.include?(self.id) # if not $pnjs.include?(self.id) est ajouté
# Il sert a mettre direction fixe lorsque l'eévent est PNJ et qu'il est déclenché )
unless $game_map.interpreter.running?
$game_map.interpreter.setup_starting_event
end
end
#--------------------------------------------------------------------------
# * Test PNJ ( Teste si l'event est PNJ ou pas )
#--------------------------------------------------------------------------
def zang_test_PNJ
$pnjs = [] if $pnjs == nil # Création de l'array qui servira a rassembler les ID des events PNJ
zang_code_event = self.list
for i in 0...zang_code_event.size # Boucle pour récupérer les commandes d'events
if zang_code_event[i].code == 108 # Vérification que le code est bien un commentaire
commentaire = "" # Création de la variable commentaire
commentaire = zang_code_event[i].parameters.to_s # On met les commentaires dans la variable
if commentaire == "PNJ" # Si la variable vaut "PNJ"
$pnjs.push(self.id) # On ajoute l'ID de l'event au tableau $pnjs
end
end
end
end
end
Auteur ?
Utilité Permet d'afficher plus de 20 image
- Spoiler:
#==============================================================================
# Modification du nombre d'images affichable sur la map
#------------------------------------------------------------------------------
# Pour modifier ce nombre d'image, il vous faut remplacer la valeur de IMAGESMAX dans le module.
# Pour afficher les images d'un ID de 1 à 20, vous pouvez continuer à utiliser les commandes d'évènement, au-delà, il
# vous faudra faire un appel de script, selon vos besoins:
# - Afficher une image:
# $game_map.screen.pictures[ID].show(nom, origine, x, y, largeur, hauteur, opacite, type)
# - Déplacer une image:
# $game_map.screen.pictures[ID].move(origine, x, y, largeur, hauteur, opacite, type, temps)
# - Supprimer une image:
# $game_map.screen.pictures[ID].erase
#==============================================================================
# Correspondance des termes:
# - ID: Numéro de votre image, si deux images ont le même ID, c'est la dernière appelée qui sera affichée.
# - nom: Nom de votre image. Elle doit être située dans le dossier Graphics > Pictures de votre jeu.
# - origine:
# - 0: Coin haut-gauche
# - 1: Centre
# - x: Position en x
# - y: Position en y
# - largeur: Modification de la largeur en pourcents. Ecrire 100 pour qu'il n'y ait pas de déformation.
# - hauteur: Modification de la hauteur en pourcents. Ecrire 100 pour qu'il n'y ait pas de déformation.
# - opacite: De 0 à 255.
# - 0: Invisible
# - 255: Opaque
# - type:
# - 0: Normal
# - 1: Eclaircie
# - 2: Obscurcie
# - temps: Durée de la transition
#==============================================================================
module ImagesMax
IMAGESMAX = 30
end
class Game_Screen
def clear
@brightness = 255
@fadeout_duration = 0
@fadein_duration = 0
@tone = Tone.new(0, 0, 0, 0)
@tone_target = Tone.new(0, 0, 0, 0)
@tone_duration = 0
@flash_color = Color.new(0, 0, 0, 0)
@flash_duration = 0
@shake_power = 0
@shake_speed = 0
@shake_duration = 0
@shake_direction = 1
@shake = 0
@pictures = []
for i in 0..ImagesMax::IMAGESMAX
@pictures.push(Game_Picture.new(i))
end
@weather_type = 0
@weather_max = 0.0
@weather_type_target = 0
@weather_max_target = 0.0
@weather_duration = 0
end
end
class Spriteset_Map
def create_pictures
@picture_sprites = []
for i in 1..ImagesMax::IMAGESMAX
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_map.screen.pictures[i]))
end
end
end
Ressource utiliser
InformationRessource ripper sur le jeu lock qwest (DS) et modifier pour ce tuto.
Image - Spoiler:
Tutoriel
Partie 2 : Le pnj
Déclenchement : Touche Action
Page 1
|> Commentaire : PNJ
|> Opération : Interrupteur locale A = Activé # Active la page 2
|>
Page 2
|> Opération : Variable [0001 : ID du Menu] = 1 # Variable qui déterminer quelle menu est choisi
|> Appeler Événement Commun : Affichage # Appeler l'évènement commun qui affiche menu
|> Condition : Variable [0004 : position du curseur] == 1#Si choix x est choisis faire ...
#note pour la commende parler n'oublie pas de faire regarde le héros a l'évènement
|> Fin - Condition
|> Condition : Variable [0004 : position du curseur] == 2
|> Fin - Condition
|> Condition : Variable [0004 : position du curseur] == 3
|> Fin - Condition
|>
Partie 2 : Affichage
Code : partie 1
|> Condition : Si Variable [0001 : ID du Menu] == 1Condition utilisé pour savoir quelle menu est utilisé
|> Afficher image : 1 'Menu1' , H.G. (X:[0002 : Position x du menu ] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale #Affiche le fond
|> Afficher image : 2 'Parler' , H.G. (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale #Affiche le 1er choix
|> Afficher image : 3 'Faire les poche' , H.G (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale #Affiche le 2ieme choix
|> Afficher image : 4 'Retour' , H.G. (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale #Affiche le 3ieme choix
|> Afficher image : 5 'C1' , H.G. (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale #Affiche le curseur
|> Opération : Variable [0004 : position du curseur] = 1 #Stocke la position du curseur
|> Fin - Condition
|>
Ce petit bout de code affiche les image du menu mais vous trouver pas qu'il manque quelque chose ?
On ne donne pas de valeur aux variables [0002 : Position x du menu] et [0003 : Position y du menu] donc le menu s'affiche toujours en haut a gauche de l'écran
Pour y remédier , il suffit d'ajouter bout de code minuscule avant celui ci.
Code : partie 2
|>Opération : Variable [0002 : Position x du menu] = Cet Événement : Coordonnée X
|>Opération : Variable [0003 : Position y du menu] = Cet Événement : Coordonnée Y
|>Opération : Variable [0002..0003] *= 32
|>
La menu s'affiche désormais sur le PNJ mais il reste un autre problème, il peut sortir de l'écran
Rajoutons deux condition après les deux variables et avant l'affichage.
Code : partie 3
|> Condition : Si Variable [0002 : Position x du menu] > 428 #Si l'image sors de l'écran (x)
|> Opération : Variable [0002 : Position x du menu] == 428 #Changée le point X
|> Fin - Condition
|> Condition : Si Variable [0003 : Position y du menu] > 354 #Si l'image sors de l'écran (y)
|> Opération : Variable [0003 : Position y du menu] == 354 #Changée le point Y
|> Fin - Condition
|>
Voila Notre menu s'affiche sur le héros et ne sort pas de l'écran cependant on ne peut pas encore bouger le curseur ... Ajoutons ceci a la fin et passons a la partie 3
Code
|> Appeler Événement Commun : Gestion #Appelle l’événement qui gère le menu
|>
Partie 3 : Évènement commun : Gestion
Code
|> Boucle
|> attendre 5 frames #A deux utilité , empêcher l'évent de buguer et empêcher le changement de position se fasse trop vite
|> Condition : Si la touche Bas est pressée
|> Opération : Variable [0004 : position du curseur] += 1
|> Fin - Condition
|> Condition : Si la touche Haut est pressée
|> Opération : Variable [0004 : position du curseur] -= 1
|> Fin - Condition
|> Condition : Si la touche C est pressée
|> Appeler Événement Commun : Effacer #Appelle l’événement qui efface le menu
|>Sortir de la boucle
|> Fin - Condition
|> Condition : Si la touche B est pressée
|> Opération : Variable [0004 : position du curseur] = 0
|>Appeler Événement Commun : Effacer
|>Sortir de la boucle
|> Fin - Condition
|> Condition : Variable [0004 : position du curseur] == 1 #Vérifie la positon du curseur
|> Afficher image : 1 'C1' , H.G. (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale # Afficher l'image du curseur
|> Fin - Condition
|> Condition : Variable [0004 : position du curseur] == 2
|> Afficher image : 1 'C2' , H.G. (X:[0002 : Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale
|> Fin - Condition
|> Condition : Variable [0004 : position du curseur] == 3
|> Afficher image : 1 'C3' , H.G. (X:[0002 :Position x du menu] , Y:[0003 : Position y du menu]), (100%, 100%), 255 , Normale
|> Fin - Condition
|> Fin - Boucle
|>
Avec ce bout de code on modifie la valeur de la variables 4 (celle du curseur) mais comme certain l'on surement deja remarquer , il reste un problème. .
On peut lui donner des valeurs quelle est pas censé avoir.
Exemple avec la touche bas
Code
|> Condition : Si Variables [0004 : position du curseur] < 3 #Si la valeur de la Variable[0004] est supérieure a la valeur max
|> Opération : Variable [0004 : position du curseur] = 1 #On lui donne la valeur min
|> Fin - Condition
|>
A placer après l'addition a la variable
Partie 4 : Effacer
Code
|> Effacer image 1
|> Effacer image 2
|> Effacer image 3
|> Effacer image 4
|> Effacer image 5
|> Opération : Interrupteur locale A = Désactivé
|>