Pokémon Script Project Index du Forum

S’enregistrer | Rechercher | Connexion
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Animation du centre pokémon par script (v2)
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts
Sujet précédent :: Sujet suivant   
Auteur Message
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 09:00 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

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.png

Ce 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 !


Dernière édition par Ku'rei le Lun 30 Sep - 13:36 (2013); édité 7 fois
Revenir en haut
Publicité






MessagePosté le: Sam 2 Avr - 09:00 (2011)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Tinei
Membre


Inscrit le: 12 Juin 2010
Messages: 245
Localisation: Quelque part dans l'univers
Masculin

MessagePosté le: Sam 2 Avr - 09:50 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Ah c'est vrai c'est simple à installer Imbécile heureux
Par contre ça m'étonnerais que ça marche sur PSP 0.7:

Code:
@interpreter.afficher_message
Revenir en haut
Visiter le site web du posteur
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 10:05 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

^^ Je sais, c'est pour ça que j'ai modifié le Sous-titre : PSP4G+/PSPDs, il manque la fonction afficher_message dans PSP0.7, désolé Imbécile heureux
Revenir en haut
Sphinx
Scribe
Scribe


Inscrit le: 07 Jan 2008
Messages: 9 736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

MessagePosté le: Sam 2 Avr - 10:36 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

http://pokemonscriptproject.xooit.fr/t3487-Messages-a-la-pokemon.htm

Voici pour inclure la commande afficher_message à PSP0.7 Clin d'œil foireux
Revenir en haut
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 10:48 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Okay, je l'inclus tout de suite au sujet Imbécile heureux Merci
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Sam 2 Avr - 11:50 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Y'a plus simple pour wait.
Code:

  def wait(fps)
    0.step(fps) { Graphics.update }
  end

Pour ta classe tu aurais peut être pu utiliser module ça éviteras de créé 50000 classe Centre_Pokemon dans la RAM.
Pour tes strings utilise aussi des constantes et utilise '' au lieu de "" si tu n'utilise pas de codes skips ("\n \r \001 \277 ...").

Sinon c'est une idée utile de script ça évite de créé et/ou modifier les évents à chaque fois.
Revenir en haut
Facebook Twitter
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 13:58 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Je connaissais pas cette fonction, j'ai copier/coller celle de Krosk de Pokemon_Battle_Core
Ensuite, je ne sais pas me servir des module :/ J'ai même pas compris la différence entre un module et une classe c'est pour dire
Et pour la différence entre '' et "" merci Imbécile heureux je la connaissait pas non plus.
Pour les constantes, il faut un module non ?
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Sam 2 Avr - 15:05 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Pas forcément.
Les constantes se définissent dans tout les objets, faut juste éviter de las définir dans une méthode au risque d'avoir un bug a chaque appelle de la méthode.
Pour les modules, on les utilise soit pour contenir des constantes, soit pour stocker ne pas créé plusieurs objet car il y en a pas besoins, un exemple simple, le module Graphics.
On a pas besoins d'avoir plusieurs objet Graphics donc on a utilisé module contrairement à Sprite.
Créer c'est presque comme avec une classe mais il y a des différences.
Il faut dire que la méthode peut être utilisé en tant que fonction de module, les attr sont difficiles à réaliser, et on peut créer des méthodes à l’extérieur du module pour le module lui même.
Un exemple :
Code:
module MonModule #création de la constante qui va contenir mon module
  Salut='Salut ! '  #création de la constante Salut
  Nom='Quel est ton nom ? '  #"" Nom
  Affirmation='Ah tu t’appelles %s ! ' #"" Affirmation
  Message_avec_saut="Je m'appelles :\n%s." #String avec code skip
 
  #création d'une méthode utilisable dans l’immédiat
  def self.dire_salut 
    print(Salut)
  end

  #création d'une méthode dont je dois dire qu'elle est une fonction de module
  def dire_question
    print(Nom)
  end
  #création de méthodes disant les variables:
  def variable=(val)
    @variable=val
  end
  def variable
    @variable
  end

  #Et la on dit les fonctions de module
  module_function :dire_question, :variable=, :variable
end

#Création d'une méthode hors du module.
def MonModule.dire_noms(int,loc)
  print(sprintf(MonModule::Affirmation,loc),sprintf(MonModule::Message_avec_saut,int))
end

#utilisation de tout ça
MonModule.variable=1500
print MonModule.variable
MonModule.dire_salut
MonModule.dire_question
MonModule.dire_noms('Yuri','Robert')

Ça va afficher :
STDOUT a écrit:
1500Salut ! Quel est ton nom ? Ah tu tÆappelles Robert ! Je m'appelles :
Yuri.

Bon, après si tu comprend vraiment pas les modules tu n'est pas obliger des les utiliser, dans certains cas c'est "pratique".

Note : Class est un descendant de Module :B
Revenir en haut
Facebook Twitter
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 16:12 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

Ah d'accord, je vois hum c'est vrai que ça peut être pratique les modules Petit saligaud mal élevé Je vois, je vais essayer d'approfondir ça avec quelques test, merci Imbécile heureux Mais j'ai une question qui me vient à l'esprit :
-Quelle est la fonction sprintf ?
Merci encore Imbécile heureux
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Sam 2 Avr - 16:15 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

La fonction sprintf sert a remplacer des objets dans un string en fonction des argument qu'on met après.
sprintf(String,Valeur1,Valeur2 ...,Valeurn)
Après faut se renseigner sur cette fonction pour son fonctionnement, je vais pas te faire un cours la dessus ^^'
Revenir en haut
Facebook Twitter
Ku'rei
Membre


Inscrit le: 10 Aoû 2010
Messages: 546
Adepte du NoMoreExcuses
Localisation: Chambéry
Masculin

MessagePosté le: Sam 2 Avr - 16:27 (2011)    Sujet du message: Animation du centre pokémon par script (v2)

D'accord, je regarderais ^^ J'ai déjà beaucoup à voir sur les module --' Merci
EDIT : J'ai remanier le script en me servant d'un module, mais c'est le même fonctionnement du point de vue event.
Revenir en haut
elric54
Membre


Inscrit le: 31 Mai 2013
Messages: 241
Localisation: Nancy
Masculin

MessagePosté le: Mar 24 Sep - 13:53 (2013)    Sujet du message: Animation du centre pokémon par script (v2)

Bonjour, désolé de Up ce projet après tant de temps mais j'ai essayé de l'installer et j'ai un problème à la ligne 43.
Je signale que je suis sous PSP0.7 et que j'ai bien installer le "afficher_message" c'est quand je dis oui qu'il y a un soucis.
Revenir en haut
og_loc-TATOO
Membre


Inscrit le: 11 Oct 2009
Messages: 3 383
Sailor Maniac
Localisation: noitasilacol

MessagePosté le: Mar 24 Sep - 14:23 (2013)    Sujet du message: Animation du centre pokémon par script (v2)

Fais voir le log.
Il y aura un peu plus de précision sur ton bug.
Revenir en haut
elric54
Membre


Inscrit le: 31 Mai 2013
Messages: 241
Localisation: Nancy
Masculin

MessagePosté le: Mar 24 Sep - 14:34 (2013)    Sujet du message: Animation du centre pokémon par script (v2)

---------- Erreur de script : évènement ----------
----- Type
NoMethodError

----- Message
- ARGS - []
Section181:43:in `search_event'undefined method `name' for #<Game_Event:0x9bbc7e0>

----- Position de l'évènement
MAP 33 EVENT 8
SCRIPT
centre_pokemon("de Zephira")


----- Backtrace
Script : Interpreter Bis | Ligne : 444 | Méthode : in `command_355'
Script : entre poke | Ligne : 42 | Méthode : in `each'
Script : entre poke | Ligne : 42 | Méthode : in `search_event'
Script : entre poke | Ligne : 24 | Méthode : in `call'
Script : entre poke | Ligne : 167 | Méthode : in `centre_pokemon'
Script : Loading | Ligne : 1 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `eval'
Script : Interpreter Bis | Ligne : 444 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `execute_command'
Script : Interpreter 1 | Ligne : 199 | Méthode : in `update'
Script : Interpreter 1 | Ligne : 113 | Méthode : in `loop'
Script : Interpreter 1 | Ligne : 204 | Méthode : in `update'
Script : Scene_Map | Ligne : 48 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 46 | Méthode : in `loop'
Script : Scene_Map | Ligne : 59 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 90 | Méthode : in `follow_me_update'
Script : follow_me | Ligne : 104 | Méthode : in `old_update'
Script : Jour_Nuit | Ligne : 166 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `old_main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `old_main'
Script : Jour_Nuit | Ligne : 159 | Méthode : in `main'
Script : Main | Ligne : 57

Désole je ne sais pas mettre en spoiler =s
Revenir en haut
bamoisoloman
Membre


Inscrit le: 01 Déc 2012
Messages: 54

MessagePosté le: Dim 29 Sep - 13:27 (2013)    Sujet du message: Animation du centre pokémon par script (v2)

J'ai la même problème D: !
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 16:51 (2017)    Sujet du message: Animation du centre pokémon par script (v2)

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)
Traduction par : phpBB-fr.com