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

Créer des Pokémons voyageurs visibles sur la map !
Aller à la page: 1, 2, 3, 4  >
 
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: Ven 18 Mar - 22:28 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !




Bonjour tout le monde ! Certains se souviendrons de mon script "Pokemons_voyageurs" quand j'était encore MadRob, ce script horrible, rempli de bug et réaliser sans aucun savoir-faire... Enfin, la chose est là, j'ai repris mon projet à zéro, maintenant tout est fonctionnel. Grâce à ce script, il est maintenant possible de créer facilement des pokémons comme ceux du légendaire trio de Or et Argent ou encore le duo Latios et Latias des cersions Rubis, Saphir et Emeraude, et rendre nomade tout les autres (une chasse au Racaillou doré dans une caverne, ça tente quelqu'un ?).

Le Topic est divisé en deux partie : l'Installation du script, qui est compliquée et le tutoriel expliquant comment créer le pokémon voyageur.

NB:Ce script a été réaliser sous PSP4G+, il est possible que certaine(s) ligne(s) ne correspondent pas si vous utilisez PSP0.7, il est aussi possible que le script ne fonctionne pas sous PSPDS (étant donné que je n'ai tester ni l'un ni l'autre, juste PSP4G+)



L'installation est malheureusement compliquée pour un débutant, je vais essayer d'expliquer comment installer mon script de façon claire et simple car je n'ai pas fais ce script pour que seule une poignée de maker puisse l'utiliser. Pour commencer, ouvrez l'éditeur de script (F9) puis faites les modifications précisées ci-après.


1.1-Les modifications des scripts existants


1.1.1-Pokemon_Battle_Core 1

Dans le script Pokemon_Battle_Core 1, j'ai modifié la fonction end_battle_flee_enemy car elle provoquait des bug quant à la fuite du pokémon voyageur. Dans cette fonction située aux environs de la ligne 2431, il faut remplacer ...
Code:
$battle_var.result_flee_enemy = expulsion ? false : true
$battle_var.result_flee = expulsion

... par ...
Code:
$battle_var.result_flee = expulsion ? false : true
$battle_var.result_flee_enemy = expulsion

(Les scripteurs les plus à l'aise du forum auraient sans doutes quelques remarques à faire sur cette modification)


1.1.2-Pokemon_Battle_Core 2

Dans ce script la modification tient de l'ajout, c'est ce qui fait fuire le pokémon voyageur (s'il est fuyard). Au début de la fonction attack_acttion, qui est aux alentours de la ligne 167, ajoutez le code qui suit (mettez le juste après def attack_action(user, user_skill, enemy)) :
Code:
if $combat_contre_pokemon_fuyard and user == @enemy
 if flee_able(@enemy, @actor)
   $combat_contre_pokemon_fuyard = false
    end_battle_flee_enemy
    return
  end
end

(Il y a deux conditions car flee_able affiche quelque chose si le pokémon ne peut fuir, y compris quand c'est le tour du pokémon du joueur)

1.1.3-Pokemon_Battle_Wild
Dans ce script, il y a deux modifications à apporter. La première consiste à supprimer la ligne suivante du script (ligne 61 environ), dans l'initialize :
Code:
@enemy.hp = @enemy.hp_max

NB : Cette ligne n’existe que sur PSP4G+, je ne sais pas pourquoi elle a été ajoutée, mais elle régénère les PV du pokémon en début de combat et sape la conservation du paramètre PV du pokémon voyageur.

La deuxième modification sert pour le paramétrage de la musique de combat spéciale au pokémon voyageur, remplacer cette portion de code de la fonction pre_battle_transition (environ ligne 127) :
Code:
$game_system.bgm_play($game_system.battle_bgm)
Audio.me_play("Audio/ME/battle_jingle.mid")

Est à remplacer par :
Code:
if $musique_combat_changee != nil
  Audio.bgm_play("Audio/BGM/" + $musique_combat_changee,100,100)
  $musique_combat_changee = nil
else 
  $game_system.bgm_play($game_system.battle_bgm)
  Audio.me_play("Audio/ME/battle_jingle.mid")
end

Voilà qui permet de changer ponctuellement la musique d'un combat ; le nom est stocké dans la variable $musique_combat_changee et doit comporter ".mid" ou autre.

C'est fini pour les modifications sur les script de combat ; il n'en reste plus qu'une sur un autre script.


1.1.4-Pokemon_Party

Dans le script Pokemon_Party, dans la fonction increase_steps aux alentours de la ligne 317, il faut ajouter après def increase_steps :
Code:
#Rencontre aléatoire pokémons voyageurs
Interpreter.new.load_file_pok_voy
rencontres = []
if $pokemons_voyageurs != nil
  $pokemons_voyageurs.each_value {|pokemon|
  if pokemon.rencontre?
     rencontres.push(pokemon)
     end
  }
  if rencontres != []
     rencontres[rand(rencontres.size)].rencontre_pok_voy
  end
end

Cela sert à détecter les mouvements du héros et à tester si il rencontre un pokémon voyageur. Je tiens à remercier Sphinx et Yuri pour m'avoir montrer cette fonction.

C'est la fin des modifications, le plus laborieux est terminé. Il ne reste plus qu'a installer le script principal.



1.2-Le script principal

Créez un nouveau script au-dessus du script "Main" (sinon il ne sera pas lu par le logiciel), nommez-le Pokemon_voyageurs puis copiez-y le code suivant :
Code:

#-------------------------------------------------------------------------------
# --- Script: Pokemon_voyageurs - ©Kureiji -
# --- Début :09/03/2011 --- Fin : 17/03/2011 -
#-------------------------------------------------------------------------------
module POKEMON_S
  #-----------------------------------------------------------------------------
  #  Paramètres concernant la visibilité du pokémon voyageur sur la map
  #-----------------------------------------------------------------------------
 
  POK_VOY_VISIBLE = false #false si vous ne voulez pas que les pokémons voyageurs soient visibles sur la map où ils sont
  ID_MAP_EVENT_POK_VOY = 46 #a remplacer par l'ID de la map ou se trouve l'évent décrit dans le tuto
  ID_EVENT_POK_VOY = 9 # à remplacer par l'id de l'event dans la map où il se trouve
 
  #-----------------------------------------------------------------------------
  #  Liste de map appartenant à la même catégorie
  #-----------------------------------------------------------------------------
 
  Maps_plaines = [46,51,50]
 
  #-----------------------------------------------------------------------------
  #  POKEMONS VOYAGEURS : "INDEX" : index du répertoire où sont stockées les informations sur le pokémon
  #-----------------------------------------------------------------------------
  LATIOS = {"INDEX" => "LATIOS","ID"=>"LATIOS","LVL"=>45,"SHINY"=>false, "SLOT"=>2,
            "MAPS"=>Maps_plaines,"TERRAINS"=>[1,7], "RARETE"=>30, "FUITE"=>true}
 
  LATIAS_SHINY = {"INDEX" => "LATIAS_SHINY", "ID"=>"LATIAS","LVL"=>45,"SHINY"=>true,
                  "SLOT"=>1,"MAPS"=>Maps_plaines,"TERRAINS"=>[1,7], "RARETE"=>10, "FUITE"=>true}
 
  RACAILLOU_SHINY = {"INDEX" => "RACAILLOU_SHINY","ID"=>"RACAILLOU","LVL"=>40,"SHINY"=>true,
                    "SLOT"=>3,"MAPS"=>Maps_plaines+[50],"TERRAINS"=>[1], "RARETE"=>80,
                    "FUITE"=>false}
 
  SUICUNE = {"INDEX"=>"SUICUNE", "ID"=>"SUICUNE","LVL"=>50,"SHINY"=>false,
              "SLOT"=>4,"MAPS"=>[50], "TERRAINS"=>[1], "RARETE"=>25, "FUITE"=>true,
              "MUSIQUE"=>"PkmnCrystal_Raikou,Entei,Suicune.mid"}
 

     
  class Pokemon_voyageur
   
    attr_accessor :index
    attr_accessor :id
    attr_accessor :level 
    attr_accessor :shiny
    attr_accessor :slot
    attr_accessor :maps_f
    attr_accessor :terrains_f
    attr_accessor :fuite
    attr_accessor :musique
    attr_accessor :map_actuelle
    attr_accessor :terrain_actuel
   
  #----------------------------------------------------------------------------
  #Création du pokémon voyageur (hash = {"INDEX","ID","LVL","SHINY","SLOT","MAPS" => [ARRAY],"TERRAINS" => [ARRAY] ,"RARETE",FUITE","VISIBLE","MAP DEPART"})
  #Caractéristiques du pokémon
  #-----------------------------------------------------------------------------
    def initialize(hash)
      @index = hash["INDEX"]
      @id = hash["ID"]
      @level = hash["LVL"]
      @shiny = hash["SHINY"]
      @slot = hash["SLOT"]
      @maps_f = hash["MAPS"].flatten  #Maps_fréquentées
      @terrains_f = hash["TERRAINS"]  #Terrains_fréquentés
      @rarete = hash["RARETE"]
      @fuite = hash["FUITE"]
      @musique = hash["MUSIQUE"]
      @visible = hash["VISIBLE"]
     
   
      #Initialisation de la map d'apparition initiale
      if hash["MAP DEPART"] != nil
        @map_actuelle = hash["MAP DEPART"]
      else
        tab = hash["MAPS"]
        @map_actuelle = tab[rand(tab.size)]
      end #if
   
      #Ajout du pokémon à la liste des pokémons voyageurs, création de la variables si premier pokemon voyageur
      if $pokemons_voyageurs == nil
        $pokemons_voyageurs = {}
      end #if   
      $pokemons_voyageurs[@index] = self
   
      #Création du pokémon voyageur
      @interpreter = Interpreter.new
      @interpreter.enregistrer_pokemon(@slot,@id,@level,@shiny)
      save_file

      #NOTE : l'enregistrement du pokémon voyageur dans un slot se fait dans l'Interpreter
      #(à l'appel de la fonction "creer_pokemon_voyageur"
   
    end #initialize
     
  #-----------------------------------------------------------------------------
  #  Enregistrement et récupération de données sur les pokémons voyageurs
  #-----------------------------------------------------------------------------
 
    def save_file
      slot = $game_variables[8] #Save slot
      save = "Data/Pokemon_voyageurs_slot_"+slot.to_s+".rxdata"
      file = File.open(save,"w")
      Marshal.dump($pokemons_voyageurs,file)
      file.close
    end
       
 
  #-----------------------------------------------------------------------------
  #  Gestion des rencontres et des combats avec les pokémons voyageurs
  #-----------------------------------------------------------------------------
   
    def rencontre?
      if self.map_act_ok? and self.terrain_act_ok? and self.rarete_loc_ok? and not(POK_VOY_VISIBLE)
        return true
      else
        return false
      end
    end #rencontre?
   
    def rencontre_pok_voy
      $musique_combat_changee = @musique if @musique != nil
      $combat_contre_pokemon_fuyard = true if @fuite == true
      @interpreter.demarrer_combat_existant(@interpreter.appel_pokemon(@slot))
      changement_map
      save_file
    end #rencontre_pok_voy
 
  #change @map_actuelle et @terrain_actuel
 
  def changement_map
    change_map
  end #changement_map
 
  def change_map
    if @maps_f.size > 1 #une seule map => on ne change pas de map
      maps = @maps_f-[@map_actuelle]
      @map_actuelle = maps[rand(maps.size)]
    end
  end #change_map
 
 
  #-----------------------------------------------------------------------------
  #  Fonctions applicable à l'objet de classe Pokemon_voyageur
  #-----------------------------------------------------------------------------
 
    def map_act_ok?
      if $game_map.map_id == @map_actuelle
        return true
      end #if
    end #map_act_ok?
 
    def terrain_act_ok?
      if @terrains_f.include?($game_player.terrain_tag)
        return true
      end #if
    end #terrain_act_ok?
 
    def rarete_loc_ok?
      if rand(101) <= @rarete #101 car rand(101) appartient à [0;100], comme @rarete
        return true
      end #if
    end #rarete_loc_ok?
 
    def slot
      return @slot
    end
   
    def map_actuelle
      if @map_actuelle ==nil
        return nil
      else
        return @map_actuelle
      end
    end
   
    #--------------------------------------------------------------------------
    #   DETECTION SI LE POKEMON EST PLACABLE DANS LA MAP ET PLACEMENT SI TRUE
    #--------------------------------------------------------------------------
   
    def detect_event_poke_voy
      if map_act_ok? and VISIBILITE == true and @visible == true
        create_event_pokemon_voyageur
      end
    end
   
   
    #--------------------------------------------------------------------------
    #   CREATION DE L'EVENT DU POKEMON VOYAGEUR SUR LA MAP
    #--------------------------------------------------------------------------
   
    # Structure principale
   
    def create_event_pokemon_voyageur
      p = @interpreter.appel_pokemon(@slot)
      if p.dead?
        return
      end
     
      map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
      events = map.events
      if events == nil
        return
      end
     
      for event in events.values
        if event.name == ("EVENT_POKEMON_VOYAGEUR_SLOT_" + @slot.to_s)
          return
        end
      end
      #Si l'event a déja été créer, on ne le recréer pas.

      @coo = recherche_coordonnees
      if @coo != nil
        pokemon = @interpreter.appel_pokemon(@slot)
        @chara = to_chara_filename(pokemon)
        if @chara != nil and pokemon != nil
          @create = Create_Event_Pokemon_Voyageur.new(@coo,@index,@chara)
        end
       
        return @create
      end
    end #create_event_pokemon_voyageur
   
   
    # to_chara_filename retourne le nom du fichier de la forme "CHARA_POKEMONS/034s_0.png", ce fichier doit
    # être dans le dossier Characters/CHARA_POKEMONS et du format png
   
    def to_chara_filename(pokemon)
      id = pokemon.id
      if id.between?(1,9)
        id = "00" + id.to_s
      elsif id.between?(10,99)
        id = "0" + id.to_s
      elsif id.between?(100,999)
        id = id.to_s
      end
     
      if pokemon.shiny
        shiny = "s"
      else
        shiny =""
      end
     
      #mise sous forme "CHARA_POKEMONS/019s_0.png"
      chara = "CHARA_POKEMONS/" + id.to_s + shiny.to_s + "_0.png"
      return chara
    end #to_chara_filename
       
   
    # Recherche de coordonnées valides :
    #     - Pas d'event
    #     - Tile Passable
    #     - Terrain correspondant
    #Organisation des recherche de terrain :
    #_____________________________________________________
    #|   _____________________________________________   |
    #|   |   _____________________________________   |   | Ca, c'est la map ...
    #|   |   |   ______________________________  |   |   |
    #|   |   |   |       ETC ...              |  |   |   |
    #|   |   | 3 |____________________________|  |   |   |
    #|   | 4 |___________________________________|   |   |
    #| 5 |___________________________________________|   |
    #_____________________________________________________
   
   
    def recherche_coordonnees
      for zone in 1..3
        coo = test_zone(zone)
        if coo != nil
          break
        end
      end
      return coo
    end #recherche de coordonnees
   
    # une zone est un rectangle dont les diagonales se coupent au centre de la map
    # height : hauteur de la map
    # width : largeur
    def test_zone(i)
      result = []
      width = $game_map.width
      height = $game_map.height
      if i < 3
        xf = width -1
        xf *= i*3 - 1
        xf /= i*3
        yf = height -1
        yf *= i*3 - 1
        yf /= i*3
      else
        xf = width
        yf = height
      end
     
      yd = (width - 1)/(i*3)
      yd = yd
     
      xd = (height - 1)/(i*3)
      xd = xd
     
      for y in yd..yf
        for x in xd..xf
          if good_coo?(x,y)
            result.push([x,y])
          end
          x += 1
        end
        y += 1
      end
     
      return (result[rand(result.size)])
    end #test_zone
   
    def good_coo?(x,y)
      if tile_passable?(x,y)
        if @terrains_f.include?($game_map.terrain_tag(x,y))
          if not(event_detected?(x,y))
            return true
          end
        end
      end
      return false
    end #good_coo?
   
    def tile_passable?(x,y)
      for a in 1..4
        dir = a*4
        if not($game_map.passable?(x,y,dir))
          return false
        end
      end
    end
   
   
    def event_detected?(x,y)
      for event in $game_map.events.values
        if event.x == x and event.y == y
          return true
        end
      end
      return false
    end # event_detected?     

  end #class Pokemon_voyageur
 
 
 
  # Class permettant de copier l'event du pokémon voyageur
  # Il doit être situé dans une map du jeu, celle d'id : ID_MAP_EVENT_POK_VOY
  # et doit avoir l'id : ID_EVENT_POK_VOY
  # cf. début du script
 
  class Create_Event_Pokemon_Voyageur < Pokemon_voyageur          #releve du copiage ... plus que de la création
   
    attr_accessor :index
   
    def initialize(coo, index, chara)
      @map = load_data(sprintf("Data/Map%03d.rxdata", ID_MAP_EVENT_POK_VOY))
      # Les évènements de la map
      @events = @map.events
      @event_id = ID_EVENT_POK_VOY
      @coo = coo
      @index = index
      @chara = chara
      if @events[@event_id] == nil
        return
      elsif coo != nil
        create
        return @create
      end
     
    end
   
    def create
      event = @events[@event_id]
      event.x = @coo[0]
      event.y = @coo[1]
      event.id = search_new_id
      event.name = "EVENT_POKEMON_VOYAGEUR_" + @index
      event.pages[0].graphic.character_name = @chara
      event.pages[0].move_type = 1
      event.pages[0].move_frequency = 5
      event.pages[0].trigger = 1
   
      @create = Game_Event.new($game_map.map_id,event)
      #Ajoute dans liste des évènements de la carte actuelle
      $game_map.events[event.id] = @create
      # Indique qu'on ajoute un Sprite
      $game_temp.add_event = true
      # ID de l'évènement pour le Sprite à ajouter
      $game_temp.id_add_event = event.id
      return @create
    end #create
   
    def search_new_id
      id = 1
      while $game_map.events.include?(id)
        id += 1
      end
      return id
    end   #search_new_id
   
  end #Create_Event_Pokemon_Voyageur
 

end #module POKEMON_S

#-------------------------------------------------------------------------------
# Interpreter
#-------------------------------------------------------------------------------

class Interpreter
 
  def creer_pokemon_voyageur(hash)
    Pokemon_voyageur.new(hash)
  end #creer_pokemon_voyageur
  alias lacher_pokemon_voyageur creer_pokemon_voyageur
 
  def creer_event_pok_voy(pokemon)
    pokemon.create_event_pokemon_voyageur
  end
 
 
  def pokemon_voyageur_event_fight
    xh = $game_player.x
    yh = $game_player.y
    coo_p = [[xh-1,yh],[xh,yh-1], [xh+1,yh], [xh,yh+1]]
    for coo in coo_p
      for index in $pokemons_voyageurs.keys
        for event in $game_map.events.values
          if event.name == ("EVENT_POKEMON_VOYAGEUR_" + index) and event.x == coo[0] and event.y == coo[1]
            pokemon = $pokemons_voyageurs[index]
            ok = true
            pokemon.rencontre_pok_voy
            break
          end
        end
        break if ok
      end
      break if ok
    end
  end
 
 
 
  def search_pokemon_voyageur(name)
    name.delete!("EVENT_POKEMON_VOYAGEUR_")
    return $pokemons_voyageurs[name]
  end
 
    def load_file_pok_voy
      if $pokemons_voyageurs == nil
        slot = $game_variables[8]
        save = "Data/Pokemon_voyageurs_slot_"+slot.to_s+".rxdata"
        if FileTest.exist?(save)
          file = File.open(save,"r")
          $pokemons_voyageurs = Marshal.load(file)
          file.close
        end
      end
    end

end #class Interpreter

Voilà qui est fini du point de vue script, je vais maintenant vous présenter son petit manuel d'utilisation, la partie la plus intéressante pour les non-scripteur : celle où l'on créer son propre pokémon voyageur !



Voici la partie du topic la plus intéressante pour ceux qui ne s'intéresse pas aux scripts, et pour ceux qui souhaitent utiliser ce script. 


2.1-Le paramétrage du pokémon voyageur


Tout d'abord, je vais dressé la liste des caractéristiques du pokémon voyageur :
-INDEX : L'index sert à classer le pokémon dans la variables $pokemons_voyageurs, le pokémon sera facilement retrouvable du moment que l'on connait son index,

-ID : l'id du pokémon, ou son nom entre guillemets (exemple : 212 sera un cizayox, "CIZAYOX" aussi),

-LVL : c'est le niveau du pokémon voyageur,

-SHINY : true si le pokémon est shiny, false si non,

-SLOT : c'est le slot de sauvegarde du pokémon ATTENTION ! c'est les mêmes slots que ceux utilisés pour la fonction enregistrer_pokemon !! Veillez à ne pas les mélanger, sinon ça bug,

-FUITE : true si le pokémon doit fuir quand on le rencontre, false ou rien si non,

-RARETE : Le poucentage de chance de rencontrer le pokémon voyageur à chaque pas que fais le héros si ils sont dans la même map et sur le même terrain,

-MAP_DEPART : C'est l'id de la map où apparaît pour la première fois le pokémon voyageur (ce paramètre est optionnel).

-MUSIQUE : c'est le nom de la musique spéciale au pokémon voyageur, c'est une chaîne de caractères et doit donc être écrite entre guillemets ; ensuite, elle doit contenir le nom complet de la musique : le nom + le format
exemple : "MUSIQUE" => "PkmnCrystal_Raikou,Entei,Suicune.mid", ce n'est pas la peine de préciser que la musique doit être dans le répertoire Audio de votre jeux.
Et si ce n'est pas le cas, il faut spécifier le chemin d'accès de la façon suivante :
"MUSIQUE" => "Dossier1/nom_de_la_musique.format", où dossier est le dossier où est la musique.



Voilà, ce sont les paramètres les plus simples à régler. Les plus compliqués arrivent : 
¤Régler les terrains ; le paramètre TERRAINS est un array, un tableau, dont les membres sont les tag des terrains où est susceptible d'apparaître le pokémon voyageur. 
exemple : [1,4,7] le pokémon voyageur pourra apparaître dans les tile dont le tag terrain est 1, 4 ou 7.


¤Régler les maps ; le paramètre MAPS est un array aussi et se présente de la même façon, le tableau contient les ids des map où peut apparaître le pokémon voyageur. En soit, la syntaxe de ce tableau n'est pas compliqué ; cependant pour faciliter la création des pokémon et raccourcir la liste des maps, je propose de créer une constante dans laquelle on stockera un tableau contenant les maps appartenant à la même catégorie.


Exemple : Au lieu d'écrire dans le paramètre MAPS du hash que l'on vera après un énorme tableau ([12,34,24,36,47,10,53,61,35,64,65,32,98,63] par exemple), on définie la constante Maps_plaines telle que :
 
Code:
 Maps_plaines = [12,34,24,36,47,10,53,61,35,64,65,32,98,63]

A NOTER : le nom de la constante DOIT commencer par une majuscule, sinon c'est une variable locale.


Nous aurons donc plus qu'à placer cette constante dans le Hash.
Mais attention ! il ne faut pas la placer n'importe comment non plus !


1er cas : Le pokémon n'apparaît que dans les map de la constante Maps_plaines
C'est le cas le plus simple, dans le Hash, il suffit de paramétrer :
 
Code:
 "MAPS" => Maps_plaines


2ème cas : Le pokémon apparaît dans les map de la constante Maps_plaines et dans d'autres map comme des maps d'une autre constante (Maps_montagnes,...) où des maps spécifiques. Il faut dans ce cas, paramétrer :
 
Code:
 "MAPS" => Maps_plaines + Maps_montagnes + [120, 40]

En gros, on ajoute les listes de map.
Voilà, ce n'est pas trés clair mais n'hésitez pas à demander des précisions.



2.2-La création du pokémon voyageur

Nous avons vu les paramètres possibles du future pokémon voyageur, mais ils faut les rassembler. Pour créer un pokémon voyageur, je connais de méthode dont l'une que je recommande fortement (je la présenterais en dernier pour bien faire contraste avec la première).


2.2.1-Première méthode

Dans l'évènement qui créer, ou lâche le pokémon voyageur dans la nature, utilisez la commande insérer un script et écrivez-y ceci, avec les paramètres de votre pokémon voyageur bien sûr :

Code:
lacher_pokemon_voyageur({"INDEX"=>"SUICUCNE", "ID"=>"SUICUNE","LVL"=>50,"SHINY"=>false, "SLOT"=>4,"MAPS"=>[Maps_plaines,35], "TERRAINS"=>[1], "RARETE"=>25, "FUITE"=>true, "MUSIQUE"=>"PkmnCrystal_Raikou,Entei,Suicune.mid", "MAP DEPART"=>33}

Voilà qui lachera un Suicune niveau 50 dans les Maps_plaines et 35
Qui trouve que c'est trééééés lourd à écrire dans un évènement ? Tout le monde, ça ne m'étonne pas. C'est pourquoi il existe une seconde méthode.

2.2.2-Seconde méthode

Dans le script Pokémons_voyageurs que vous avez installé précédemment, au tout début, entre module POKEMON_S et class Pokemon_voyageur Entrez y le code suivant, en personnalisant vos paramètres selon le pokémon que vous voulez créer bien entendu :
Code:
LATIAS_SHINY = {"INDEX" => "LATIAS_SHINY", "ID"=>"LATIAS","LVL"=>45,"SHINY"=>true,"SLOT"=>1,"MAPS"=>[33,34,35],"TERRAINS"=>[1,7], "RARETE"=>10, "FUITE"=>true}

Créer un Latias shiny de niveau 45 pouvant être dans les maps 33,34 ou 35
Notez bien que LATIAS_SHINY est une constante car son nom débute par une majuscule, nous allons donc pouvoir la réutiliser ailleurs...

Certains l'aurons deviné, on l'utilise dans la commande insérer un script, le gros bloc illisible devient simplement LATIAS_SHINY :
Code:
lacher_pokemon_voyageur(LATIAS_SHINY)


Admettez que c'est beaucoup plus évocateur, de plus, si le nom de la constante LATIAS_SHINY est trop peu précise pour vous, il est toujours possible de la nommer LATIAS_NV45_SHINY_SLOT4 mais bon ...


Sauvegardez le tout et jouez.


Pour ceux qui ont encore le courage de copier/coller des lignes de script j'ai une nouvelle fonctionnalité, innovante par rapport au jeu officiel. Faire apparaître le pokémon voyageur dans la map où il se trouve. Trois petites partie pour installer cette version.
Note : Le script principale installé précédemment contient déjà toutes les fonctions nécessaires à cette version.
ATTENTION ! Installer la version "visibilité" ne vous dispense pas d'installer le script normal !!


3.1-Les scripts à modifier
Etant donné que je me suis basé sur le tutoriel de RPG créative (Créer des events mais durant le jeu) pour créer ce script, il y a beaucoup de modification a faire.

3.1.1-Spriteset_Map
A la ligne 54, après l'initialize, insérez cette fonction :
Code:
  def add_event(event_id)
    sprite = Sprite_Character.new(@viewport2, $game_map.events[event_id])
    @character_sprites.push(sprite)
  end


3.1.2-Game_Temp
A la ligne 11, là où il y a tout les attr_accessor, insérez :
Code:
  attr_accessor :add_event
  attr_accessor :id_add_event

Puis dans l'initialize, vers la ligne 109, insérez les deux lignes suivantes :
Code:
    @add_event = false
    @id_add_event = 0


3.1.3-Scene_Map
Il y a deux script Scene_Map, celui de RPMX et celui de Krosk, insérez au début de la fonction update, vers la ligne 48 :
Code:
    if $game_temp.add_event
      @spriteset.add_event($game_temp.id_add_event)
      $game_temp.add_event = false
    end

Note: Ce sont les mêmes lignes pour les deux scripts.

3.1.4-Game_Map
A la ligne 42 du script Game_Map de Krosk (cf. Spoiler), insérez ces lignes :
Code:
    if $pokemons_voyageurs != nil
      $pokemons_voyageurs.each_value{|pokemon|
        if pokemon.map_actuelle == $game_map.map_id and POKEMON_S::POK_VOY_VISIBLE
          pokemon.create_event_pokemon_voyageur
        end
      }
    end


Après :
Code:
    for i in @map.events.keys
      @events[i] = Game_Event.new(@map_id, @map.events[i])
      if @events[i].event.name == "LIVREUR"
        int.check_cm(i)
      end
    end


{{{Vous devez répondre à ce sujet pour voir la partie cachée}}}


C'est tout pour les modifications de script.

3.2-L'évènement Pokemon_voyageur
N'ayant pas réussi à créer entièrement l'évent du pokémon voyageur. J'ai du utiliser une supercherie : copier un évent déjà créer sur une autre map.
Il faut donc créer cette évent : Sans rien modifier, ça pourrait tout faire bugger :

Relever son ID ainsi que l'id de la map ou il se trouve. Je pense que le plus simple est de le placé dans l'intro, ou même mieux, dans une nouvelle map on l'on pourra stocker ce genre d'évènements et d'autres évènements de map communs.

Au tout début du script Pokemon_Voyageur : il y a trois constantes :
Code:
POK_VOY_VISIBLE = false #à régler sur true, sinon le pokémon voyageur n'apparaîtera pas sur la map

Code:
ID_MAP_EVENT_POK_VOY = l'id de la map où vous venez de créer l'event à copier
ID_EVENT_POK_VOY = l'id de l'évent que vous venez de copier

Ce sont les coordonnées (Map, id) de l'event, trés important car c'est la base de l'évènement Pokémon_voyageur.

3.2-Les Chara pokémons
Bon, les chara de pokémons sont dans ce fichié zip : HGSS OW.zip, je sais qu'ils sont en téléchargement sur le forum mais je ne les ai pas retrouvé --', je ne sais pas si il y a des crédit mais vu le travail je pense que si.
Les chara ne sont pas a mettre n'importe où !!! Dans le dossier Characters, créer un nouveau dossier que vous appellerez CHARA_POKEMONS (en majuscules), puis faites extraire les données dans ce dossier.



On dirait que c'est enfin la fin de ce manuel d'installation et d'utilisation de mon script, cool non ? Parfait, je vous souhaite un bon jeu, un bon making et si vous utilisez ce script un petit crédit pour moi Clin d'œil foireux sans oublier de marquer que vous utiliser le pack HGSS OW.zip dont l'auteur pourra vous demander un crédit s'il le souhaite.

BON MAKING A TOUTES ET A TOUS !


Dernière édition par Ku'rei le Dim 27 Mar - 18:00 (2011); édité 8 fois
Revenir en haut
Publicité






MessagePosté le: Ven 18 Mar - 22:28 (2011)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Ku'rei
Membre


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

MessagePosté le: Sam 19 Mar - 10:59 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

20 Vues et aucun commentaires ... Le topic ne fonctionne pas ? Le script est trop compliqué à installer ? Ou tout le monde à la flegme de l'installer ?
Je suis en train de faire une démo, pour montrer l'utilité de ce script.
Revenir en haut
Solfay
Team SDK


Inscrit le: 16 Fév 2011
Messages: 397
Masculin

MessagePosté le: Sam 19 Mar - 11:34 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Ok, à quoi ça sert?        
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 19 Mar - 12:56 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

En même temps le pokémons voyageurs n’intéressent pas beaucoup de monde et ça se fait aussi facilement avec les events surtout quand c'est pour trois pokémons.
Revenir en haut
Facebook Twitter
Raude
Ex-staff


Inscrit le: 10 Aoû 2010
Messages: 1 162
ID Steam: Aimeraude

MessagePosté le: Sam 19 Mar - 19:59 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Bonsoir Kureiji,

Le double post, n'est pas toléré. La prochaine fois, tu écoperas d'un avertissement.
Pour éviter le double post : http://pokemonscriptproject.xooit.fr/t391-Petit-tuto-pour-les-forums-rendre…
Merci.
Revenir en haut
Visiter le site web du posteur
Tinei
Membre


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

MessagePosté le: Sam 19 Mar - 20:34 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Salut, ça a l'air cool ton truc, mais comme tu l'as dis, j'ai la flemme de l'installer :D
Sinon tu as bien expliqué et ça m'a l'air sympa, merci.
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: Dim 20 Mar - 12:41 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Je suis désolé pour le double-post, je croyais que le grand message ne comptait pas, je ferais attention la prochaine fois.
Solfay : Ca sert à créer de pokémons qui se baladent de map en map comme Suicune, Entei, Raiku, Latios et Latias (mais rien ne t'empêche d'en faire d'autre)
Yuri : Je sais que c'est une petite partie d'un jeu, mais ça me plait beaucoup de poursuivre des pokémon comme ça. Et ça faciliterais la création de tels pokémons si le script était incorporé à PSP 50.7 ou 4G+) mais cela ne dépend pas de moi.
Tinei : Oui, c'est dommage, j'aimerais trouver une solution pour simplifier l'installation du script ...
Revenir en haut
Tinei
Membre


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

MessagePosté le: Lun 21 Mar - 09:06 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Pas grave, j'attend la démo :D
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: Lun 21 Mar - 20:12 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Bah en fait, j'ai plusieurs script en réalisation, quand ils seront tous prêt je les installerais sur une version de PSP4G+ et la mettrait en téléchargement dans un topic.
Revenir en haut
maror
Membre


Inscrit le: 05 Juin 2010
Messages: 41

MessagePosté le: Lun 21 Mar - 20:18 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Tu crois qu'il y a un moyen pour le mettre sur PSPDS?
Revenir en haut
Ku'rei
Membre


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

MessagePosté le: Lun 21 Mar - 21:22 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Je ne sais pas, mais alors pas du tout... Je ne connais pas PSPDS, mais si les script n'ont pas trop variés d'une version à l'autre il ne devrait pas y avoir de problème.
Revenir en haut
IamTheAdic
Ex-staff


Inscrit le: 14 Juin 2010
Messages: 1 128
Non renseigné (Visible...)

MessagePosté le: Mer 23 Mar - 00:33 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

PSPDS est fait à partir de 0.7, donc les scripts sont différents. Fin bref je ne connais pas le 4G+ de Sphinxinou.
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: Mer 23 Mar - 13:01 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

Dans PSP DS il y a certainement plus de fonctions dans la classe Pokémon.
Dans 4G+ il y a plus de fonctions, mais les ancienne n'ont pas vraiment changer donc ça devrais marcher et puis pour savoir si le script fonctionne faut tester.
Revenir en haut
Facebook Twitter
maror
Membre


Inscrit le: 05 Juin 2010
Messages: 41

MessagePosté le: Mer 23 Mar - 20:57 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

j'ai testé mais quand je lâche le pokémon avec une des deux méthodes, je les trouves pas (pas de combat).
Revenir en haut
Ku'rei
Membre


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

MessagePosté le: Jeu 24 Mar - 21:25 (2011)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

J'essaie de l'installer sur PSPDS, je tente de corriger le bug et j'édite.
PS : Y aurait-il des intéressé pour que le pokémon voyageur apparaisse sur la map ? Comme ceci :

Car l'installation du script est compliqué, il faut télécharger les chara pokémons. Mais si ça intéresse quelqu'un je modifie mon topic et je refait le tuto Imbécile heureux

EDIT : J'ai fais quelque test, notamment sur les trois façon de déterminer les maps où apparaissent les pokémons voyageurs. Si tu utilise une constante et d'autre id dans ta liste de map, il semblerait qu'il y ai des bugs.
Voilà, il faut transformer (dans la définition de la constante du pokémon) :
Code:
"MAPS"=>[Maps_plaines, 45, 66]

en :
Code:
"MAPS"=>Maps_plaines + [45,66]

En espérant que ce soit ça Imbécile heureux

EDIT 2 : C'est ça, et on a le même problème dans PSP4G+, merci maror Imbécile heureux
J'édite le sujet tout de suite
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 07:54 (2017)    Sujet du message: Créer des Pokémons voyageurs visibles sur la map !

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, 3, 4  >
Page 1 sur 4

 
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