Bonjour à toutes et à tous,
Certains vont me dire que l'on peut facilement faire la même chose par event, mais ça pourrait intéresser ceux qui ne savent pas le faire.
Commencez par télécharger ces trois ressources (sans modifier leurs nom) dans le dossier Graphics/Characters de votre jeu :
Centre_pokemon_1.png
Centre_pokemon_2.png
Centre_pokemon_ecran.pngCe sont des rips de Emeraude, si vous voulez personnaliser votre centre pokemon il faudra faire vos propres rips.
Installez ensuite ce script au-dessus de Main, nommez le comme vous voulez :
Code: |
#------------------------------------------------------------------------------- # Class CENTRE_POKEMON # classe responsable de la structure générale du programme #------------------------------------------------------------------------------- module Centre_Pokemon M_ACCUEIL = "Bonjour, Bienvenue au centre Pokémon%s, \nNous pouvons soigner vos pokémons gratuitement. \nVoulez-vous soigner vos pokémons ?" M_DON = 'Veuillez me confier vos pokémon, je vous les rend dans un instant' M_REND = 'Vos pokémons sont en pleine forme !' M_0_POKEMON = 'Vous n\'avez pas de pokémon à soigner !' def self.call(nom) @i = Interpreter.new @i.afficher_message(sprintf(M_ACCUEIL, " " +nom.to_s)) if @i.draw_choice #oui if $pokemon_party.actors[0] != nil @infirmiere = search_event('INFIRMIERE') @centre_pokemon = search_event('CENTRE_POKEMON') @ecran = search_event('ECRAN') #inutil de chercher des event si on ne veut pas soigner ses pokémons --' @i.afficher_message(M_DON) anim_centre_pokemon_complet @i.afficher_message(M_REND) @i.afficher_message('A bientôt !') else @i.afficher_message(M_0_POKEMON + "\nAu revoir.") end else @i.afficher_message('Au revoir.') end end #call def self.search_event(index) events = $game_map.events.values for event in events name = event.event.name if name == index return event end end print("ERREUR : Aucun évent n'est nommé "+index.to_s+" dans cette map. Réglez ce bug.") end #search_event def self.anim_centre_pokemon_complet event_turn(4, @infirmiere) wait(4) anim_add_pokeball wait(4) Audio.me_play("Audio/ME/Pokemon Healing.mid", 100, 100) soin(110) wait(4) anim_retire_pokeball wait(4) event_turn(2, @infirmiere) end def self.soin(n) @centre_pokemon.move_speed = 5 @ecran.move_speed = 5 @centre_pokemon.step_anime =true @ecran.step_anime = true n.times do Graphics.update @centre_pokemon.update @ecran.update $scene.spriteset.update end @centre_pokemon.step_anime = false @ecran.step_anime = false end def self.anim_add_pokeball @centre_pokemon.character_name = "Centre_pokemon_1.png" for i_ball in 2..4 #dernier test $pokemon_party[4-2=2] if $pokemon_party.actors[i_ball - 2] dir = 2*i_ball event_turn(dir, @centre_pokemon) Audio.se_play("Audio/SE/Pokerebond.WAV", 100, 100) wait(17) else return end end for i_ball in 1..3 if $pokemon_party.actors[i_ball + 2] != nil #premier test $pokemon_party[1+2 = 3] @centre_pokemon.character_name = "Centre_pokemon_2.png" dir = 2*i_ball event_turn(dir, @centre_pokemon) Audio.se_play("Audio/SE/Pokerebond.WAV", 100, 100) wait(17) else return end end end #add_pokeball def self.anim_retire_pokeball for i in 1..3 i_ball = 6 - i if $pokemon_party.actors[i_ball] != nil dir = 10 - 2*(i + 1) event_turn(dir, @centre_pokemon) Audio.se_play("Audio/SE/Pokemove.WAV", 100, 100) wait(17) end end @centre_pokemon.character_name = "Centre_pokemon_1.png" for i in 1..4 i_ball = 3 - i if $pokemon_party.actors[i_ball] != nil dir = 10 - 2*i event_turn(dir, @centre_pokemon) Audio.se_play("Audio/SE/Pokemove.WAV", 100, 100) if i_ball != -1 wait(17) end end end #retire_pokeball def self.event_turn(dir, event) move_route = RPG::MoveRoute.new move_route.repeat = false move_route.skippable = true move_command = RPG::MoveCommand.new case dir when 2 #bas move_command.code = 16 when 4 #gauche move_command.code = 17 when 6 #droite move_command.code = 18 when 8 #haut move_command.code = 19 end move_route.list = [move_command] event.force_move_route(move_route) update end def self.wait(frame) i = 0 loop do i += 1 Graphics.update if i >= frame break end end end def self.update $scene.spriteset.update end
end #module Centre_Pokemon
class Interpreter def centre_pokemon(nom ='') Centre_Pokemon.call(nom) end end
class Scene_Map attr_accessor :spriteset end
class Game_Character attr_accessor :move_speed end
class Game_Event attr_accessor :event end |
Créer le centre pokémon :
Mappez votre centre pokémon comme normalement en plaçant vos event, etc comme ceci :
Notez que je n'ai pas encore mis d'event à la place de l’infirmière, de l'écran et de la machine qui soigne. C'est la prochaine étape.
En bas à droite de la machine créer un évent ayant pour nom : CENTRE_POKEMON, c'est obligatoire et il faut que ce soit le seul event de la map ayant ce nom la.
La page de l'event :
Les deux seuls paramètres importants sont : Le nom et l'image de l'event : prenez comme image Centre_pokemon_1 (direction vers le bas, ligne du haut quoi)
Il y deux autre event du même type à placer : l'infirmière qui DOIT avoir le nom INFIRMIERE (en majuscules), et l'ecran qui doit avoir le nom ECRAN, placez les comme suivant dans la map :
Enfin, il rest un dernier event à placer : son nom n'a pas d'importance, c'est lui qui va appeler le script d'animation du centre pokémon placer le juste en dessous de l'infirmière, il doit être activer par la touche action. Sa seule commande est :
Cependant, j'ai inclus dans le script une fonction permettant de nommer le centre pokémon, de changer le message :" Bonjour, bienvenue au centre pokémon. Voulez-vous soigner vos pokémons ?"
En quelque-chose du genre :"Bonjour, bienvenue au centre pokémon de Jadielle. Voulez-vous soigner vos pokémons ?"
Pour cela c'est simple, il suffit de mettre un paramètre à la commande précédente.
Le script affichera le message de cette façon
"Bonjour, bienvenue au centre pokemon"+nom_centre+". Nous pouvons soigner vos pokemons..."
Il faut donc que le "de" ou "du" ou autre soit inclus dans le nom du centre :
Voilà tout, bon making !