Mega évolution et Primo résurgence V2

107 Réponses • 6924 Vues

Ce script est la version améliorée de celui ci : http://communityscriptproject.com/forum/index.php?topic=1057.0
Il gère maintenant les méga et promo pour l'adversaire et devrait, dans l'ensemble, être plus facile à configurer.
Ce script à été testé sur PSP0.7, et devrait donc marcher sous 0.8 et 0.9 .

Installation :

Dans le script "Pokemon", en dessous de cette ligne :
attr_accessor :form

collez ceci :
attr_accessor :mega

Ensuite, cherchez y également ceci : (lignes 148 à 240, normalement)

Spoiler
def icon
      if @egg
        return "Icon/Egg000.png"
      end
      ida = sprintf("%03d", id)
      string = "Icon/#{ida}#{battler_form}.png"
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
      return string
    end
       
    def cry
      if @egg
        return ""
      end
      ida = sprintf("%03d", id)
      cry = "Audio/SE/Cries/#{ida}Cry.wav"
      return cry
    end
   
    def battler_form
      if @form == nil
        @form = 0
      end
      if @form > 0
        return sprintf("_%02d", @form)
      end
      return ""
    end
   
    def battler_face
      ida = sprintf("%03d", id)
     
      if @egg
        string = "Eggs/#{ida}.png"
        if not( $picture_data["Graphics/Battlers/#{string}"] )
          string = "Eggs/Egg000.png"
        end
        return string
      end
     
      if @gender == 1 or @gender == 0
        string = "Front_Male/#{ida}#{battler_form}.png"
      elsif @gender == 2
        string = "Front_Female/#{ida}#{battler_form}.png"
        #if not(FileTest.exist?("Graphics/Battlers/" + string))
        if not( $picture_data["Graphics/Battlers/" + string] )
          string = "Front_Male/#{ida}#{battler_form}.png"
        end
      end
           
      if @shiny
        string2 = "Shiny_" + string
        #if FileTest.exist?("Graphics/Battlers/" + string2)
        if $picture_data["Graphics/Battlers/" + string2]
          string = string2
        end
      end
     
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
     
      return string
    end
   
    def battler_back
      ida = sprintf("%03d", id)
      if @gender == 1 or @gender == 0
        string = "Back_Male/#{ida}#{battler_form}.png"
      elsif @gender == 2
        string = "Back_Female/#{ida}#{battler_form}.png"
        #if not(FileTest.exist?("Graphics/Battlers/" + string))
        if not($picture_data["Graphics/Battlers/" + string])
          string = "Back_Male/#{ida}#{battler_form}.png"
        end
      end
     
      if @shiny
        string2 = "Shiny_" + string
        #if FileTest.exist?("Graphics/Battlers/" + string2)
        if $picture_data["Graphics/Battlers/" + string2]
          string = string2
        end
      end
     
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
     
      return string
    end 

Et remplacez le par ça :

Spoiler
def icon
      if @egg
        return "Icon/Egg000.png"
      end
      ida = sprintf("%03d", id)
      string = "Icon/#{ida}#{battler_form}#{battler_mega}.png"
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_mega, "")
      end
      return string
    end
       
    def cry
      if @egg
        return ""
      end
      ida = sprintf("%03d", id)
      cry = "Audio/SE/Cries/#{ida}Cry.wav"
      return cry
    end
   
    def battler_form
      if @form == nil
        @form = 0
      end
      if @form > 0
        return sprintf("_%02d", @form)
      end
      return ""
    end
   
    def battler_mega
      if @mega
        return sprintf("_M%01d", @mega)
      else
        return ""
      end
     
    end
   
    def battler_face
      ida = sprintf("%03d", id)
     
      if @egg
        string = "Eggs/#{ida}.png"
        if not( $picture_data["Graphics/Battlers/#{string}"] )
          string = "Eggs/Egg000.png"
        end
        return string
      end
     
      if @gender == 1 or @gender == 0
        string = "Front_Male/#{ida}#{battler_form}#{battler_mega}.png"
      elsif @gender == 2
        string = "Front_Female/#{ida}#{battler_form}#{battler_mega}.png"
        #if not(FileTest.exist?("Graphics/Battlers/" + string))
        if not( $picture_data["Graphics/Battlers/" + string] )
          string = "Front_Male/#{ida}#{battler_form}#{battler_mega}.png"
        end
      end
           
      if @shiny
        string2 = "Shiny_" + string
        #if FileTest.exist?("Graphics/Battlers/" + string2)
        if $picture_data["Graphics/Battlers/" + string2]
          string = string2
        end
      end
     
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_mega, "")
      end
     
      return string
    end
   
    def battler_back
      ida = sprintf("%03d", id)
      if @gender == 1 or @gender == 0
        string = "Back_Male/#{ida}#{battler_form}#{battler_mega}.png"
      elsif @gender == 2
        string = "Back_Female/#{ida}#{battler_form}#{battler_mega}.png"
        #if not(FileTest.exist?("Graphics/Battlers/" + string))
        if not($picture_data["Graphics/Battlers/" + string])
          string = "Back_Male/#{ida}#{battler_form}#{battler_mega}.png"
        end
      end
     
      if @shiny
        string2 = "Shiny_" + string
        #if FileTest.exist?("Graphics/Battlers/" + string2)
        if $picture_data["Graphics/Battlers/" + string2]
          string = string2
        end
      end
     
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_form, "")
      end
      if not( $picture_data["Graphics/Battlers/" + string] )
        string.sub!(battler_mega, "")
      end
     
      return string
    end 

Ensuite, dans "Pokemon_Battle_Core 1", cherchez :
# Préround 1: Fuite
      if @actor_action == 4
        run
      end
      if @enemy_action == 4
        enemy_run
      end

et collez ceci en dessous :
mega_evolution


cherchez ensuite:
def end_battle(result = 0)

et collez (en dessous) :
clear_mega



Ensuite, en dessous de :
if not(jumped)
          draw_text("Que doit faire", @actor.given_name + "?")
          @action_window.visible = true
          @action_window.active= true
          $battle_var.action_id = 0

Collez :
bouton_mega


Puis, au dessus de :
if Input.trigger?(Input::C) and @skills_window.active

Collez :
bouton_mega2 if Input.trigger?(Input::A) #mega


Enfin, en dessous de :
def post_round_cycle_1(actor, enemy)

collez :
primo_resurgence


Ceci fait, creez un nouveau script au dessus de "Main" et collez y ceci :
Spoiler
#Script de mega evolution et primo resurgence. (V2)
#
#                Par FL0RENT_

ANIMMEGA = 521 #animation des mega evolutions.
ANIMPRIMO = 520 #animation des primo resurgences.

module POKEMON_S
  class Pokemon_Battle_Core
    def mega_list
      list =[]
      list.push([3, 1, 396]) #Florizarre
      list.push([6, 1, 397]) #Dracaufeu X
      list.push([6, 2, 398]) #Dracaufeu Y
      list.push([9, 1, 399]) #Tortank
      list.push([384, 1]) #Rayquaza
    end
   
    def primo_list
      list =[]
      list.push([382, 1, 400])#Kyogre
      list.push([383, 1, 401])#Groudon
    end
   
     
     
     
   
    def clear_mega
      for actor in $pokemon_party.actors
        actor.mega = nil
        actor.statistic_refresh
      end
      $mega_on = nil
      $mega_evolution = nil
      @megaicon.dispose if @megaicon
    end
   
    def mega_evo(n, p = nil)
      list = mega_list
      list = primo_list if p == "primo"
      for a in list
        if a[0] == n.id or a[0] == n.name
          if a[2] == nil or a[2] == n.item_hold
            n.mega = a[1]
            n.statistic_refresh
            break
          end
        end
      end
    end
   
    def mega_test(n)
      return false if n.mega
      if n != @actor or not $mega_evolution
        for a in mega_list
          if a[0] == n.id or a[0] == n.name
            return true if a[2] == nil or a[2] == n.item_hold
          end
        end
      end
      return false
    end
   
    def primo_test(n)
      return false if n.mega
      for a in primo_list
        if a[0] == n.id or a[0] == n.name
          return true if a[2] == nil or a[2] == n.item_hold
        end
      end
      return false
    end
   
    def bouton_mega
      @megaicon.dispose if @megaicon
      if mega_test(@actor) and not $mega_evolution
        @megaicon = Sprite.new
        if $mega_on == true
          @megaicon.bitmap = RPG::Cache.picture("mega1.png")
        else
          @megaicon.bitmap = RPG::Cache.picture("mega2.png")
        end
        @megaicon.x = 580
        @megaicon.y = 160
        @megaicon.z = 1
      end
    end
   
    def bouton_mega2
      if mega_test(@actor) and not $mega_evolution
        if not $mega_on
          $mega_on = true
          @megaicon.bitmap = RPG::Cache.picture("mega1.png")
        else
          $mega_on = false
          @megaicon.bitmap = RPG::Cache.picture("mega2.png")
        end
        Audio.se_play("Audio/SE/002-System02.ogg", 100) #son
      end
    end
   
    def mega_evolution
      @megaicon.dispose if @megaicon
      if mega_test(@enemy)
        mega_evo(@enemy)
        draw_text(@enemy.given_name, "Mega évolue!")
        animation = $data_animations[ANIMMEGA]
        @enemy_sprite.animation(animation, true)
        loop do
          @enemy_sprite.update
          Graphics.update
          Input.update
          if not(@enemy_sprite.effect?)
            break
          end
        end
        Graphics.update
        Input.update
        update_sprite
      end
      if $mega_on and not $mega_evolution
        mega_evo(@actor)
        draw_text(@actor.given_name, "Mega évolue!")
        animation = $data_animations[ANIMMEGA]
        @actor_sprite.animation(animation, true)
        loop do
          @actor_sprite.update
          Graphics.update
          Input.update
          if not(@actor_sprite.effect?)
            break
          end
        end
        Graphics.update
        Input.update
        update_sprite
        $mega_evolution = true
      end
    end
   
    def primo_resurgence
      if primo_test(@enemy)
        mega_evo(@enemy, "primo")
        draw_text("Primo résurgence de", @enemy.given_name+ " !")
        animation = $data_animations[ANIMPRIMO]
        @enemy_sprite.animation(animation, true)
        loop do
          @enemy_sprite.update
          Graphics.update
          Input.update
          if not(@enemy_sprite.effect?)
            break
          end
        end
        Graphics.update
        Input.update
        update_sprite
      end
      if primo_test(@actor)
        mega_evo(@actor, "primo")
        draw_text("Primo résurgence de", @actor.given_name+ " !")
        animation = $data_animations[ANIMPRIMO]
        @actor_sprite.animation(animation, true)
        loop do
          @actor_sprite.update
          Graphics.update
          Input.update
          if not(@actor_sprite.effect?)
            break
          end
        end
        Graphics.update
        Input.update
        update_sprite
        $mega_evolution = true
      end
    end
  end
end

Pour finir, placez ces deux images dans le dossier "pictures" de votre projet et nomez les respectivement "Mega1" et "Mega2" (sans les "", bien entendu)


Configuration :

Dans le script que vous venez de rajouter, vous trouverez ceci :
def mega_list
      list =[]
      list.push([3, 1, 396]) #Florizarre
      list.push([6, 1, 397]) #Dracaufeu X
      list.push([6, 2, 398]) #Dracaufeu Y
      list.push([9, 1, 399]) #Tortank
      list.push([384, 1]) #Rayquaza
    end
   
    def primo_list
      list =[]
      list.push([382, 1, 400])#Kyogre
      list.push([383, 1, 401])#Groudon
    end
Rajoutez vos mega et primo a la suite de leurs listes respectives en suivant le modèle suivant :
list.push([id, forme, obj])

Ou "id" corresponds à l'ID du Pokémon dans la BDD
"forme" au numéro du méga (de base, marquez 1, sauf si vous avez plusieurs méga évolutions du même Pokemon)
"obj" est le numéro l'objet qui doit être tenu pour méga évoluer. (si vous ne marquez rien, le pokémon n'aura pas besoin d'objet, cf l'exemple de Rayquaza.)

Pour ce qui vas suivre, les primo résurgences suivent exactement le même procédé que les méga.

Configurez ensuite les stats de votre mega dans le script "Pokemon_custom" en suivant l'exemple de deoxys, mais en utilisant @mega au lieux de @form. (si c'est juste marqué "form", c'est une erreur dans le code, rajoutez le @.)

Enfin, rajoutez vos battlers dans les dossiers correspondants, en les nommant "num_Mmega" par exemple, 006_M2 pour méga Dracaufeu Y

(si vous savez vous servir des formes dans PSP, vou pouvez faire des combinaisons forme + mega avec "num_form_Mmega" par ex "493_02_M1" pour un méga Arceus plaque feu)

PS: Assurez vous que vos images soient au format PNG.

PS2 : Pour faire Mega évoluer votre pokémon en combat, appuyez sur Shift avant de choisir votre attaque.

« Modifié: 20 avril 2018, 20:19:56 par FL0RENT_ »

Script PSP

Elogio

Utilisateurs bannis ou désinscrits

Oui mais si on avait déjà installé la première version?
Je me souviens pas de tout ce que j'avais modifié...
Il faut TOUT reprendre?
Parce que bon, les scripts et moi de base, c'est pas tip-top alors si je dois faire des recherches tout le temps en alternant sur les deux sujets... je vais m'énerver assez vite je pense... :grrr:
Oui mais si on avait déjà installé la première version?
Je me souviens pas de tout ce que j'avais modifié...
Il faut TOUT reprendre?

Malheureusement oui, ce script est une refonte du premier et n'as plus grand chose en commun avec l'original (seulement la partie que gère l'affichage du bouton, en fait... et encore)

Au pire, tu regarde l'autre script, et tu fais les manips "à l'envers". (Tu peux trouver les portions de code avec ctrl + F)

Aussi, une bonne partie des lignes a rajouter dans "battle core1" sont aux même endroits que pour l'ancien script.

Elogio

Utilisateurs bannis ou désinscrits

Bon, dis-moi tout de suite si tu comptes l'améliorer une troisième fois...
Parce que t'es gentil hein, mais je suis pas du genre à passer ma vie à changer et rechanger des scripts...
:ahde:
Bon, dis-moi tout de suite si tu comptes l'améliorer une troisième fois...

Normalement, non.
Mais si c’était le cas, contrairement à l'autre fois, j'ai prévu la structure du script pour qu'elle soit facile a modifier.

Modif ou pas, je ne ferai pas d'autres refontes du script, donc il n'y aura pas tout à réinstaller.

Elogio

Utilisateurs bannis ou désinscrits

Merci, Dieu FLORENT_ !

PS: Désolé de ronchonner à chaque fois que tu sors un script... ;|

Ota

Programmeur

Erreur dans ta list def mega list tien je viens de la corriger.Si il faut j'ai compléter entierment la liste pour se qui voulent . :3
Liste corrigé
def mega_list
  list =[]
  list.push([3, 1, 396]) #Florizarre
  list.push([6, 1, 397]) #Dracaufeu X
  list.push([6, 2, 398]) #Dracaufeu Y
  list.push([9, 1, 399]) #Tortank
  list.push([384, 1]) #Rayquaza
  end
 
  def primo_list
  list =[]
  list.push([382, 1, 400])#Kyogre
  list.push([383, 1, 401])#Groudon
  end

Liste fini mais le reste dans Pokemon custom et paramétré les objet je vous laisse le faire
Liste complété
def mega_list
  list =[]
  list.push([3, 1, 396]) #Florizarre
  list.push([6, 1, 397]) #Dracaufeu X
  list.push([6, 2, 398]) #Dracaufeu Y
  list.push([9, 1, 399]) #Tortank
  list.push([15, 1, 400]) #Dardargnan
  list.push([18, 1, 401]) #Roucarnage
  list.push([65, 1, 402]) #Alakazam
  list.push([80, 1, 403]) #Flagadoss
  list.push([94, 1, 404]) #Ectoplasma
  list.push([115, 1, 405]) #Kangourex
  list.push([127, 1, 406]) #Scarabrute
  list.push([130, 1, 407]) #Léviator
  list.push([142, 1, 408]) #Ptéra
  list.push([150, 1, 409]) #Mewtwo X
  list.push([150, 2, 410]) #Mewtwo Y
  list.push([181, 1, 411]) #Pharamp
  list.push([208, 1, 412]) #Steelix
  list.push([212, 1, 413]) #Cizayox
  list.push([214, 1, 414]) #Scarhino
  list.push([229, 1, 415]) #Démolosse
  list.push([248, 1, 416]) #Tyranocif
  list.push([254, 1, 417]) #Jungko
  list.push([257, 1, 418]) #Braségali
  list.push([260, 1, 419]) #Laggron
  list.push([282, 1, 420]) #Gardevoir
  list.push([302, 1, 421]) #Ténéfix
  list.push([303, 1, 422]) #Mysdibule
  list.push([306, 1, 423]) #Galeking
  list.push([308, 1, 424]) #Charmina
  list.push([310, 1, 425]) #Élecsprint
  list.push([319, 1, 426]) #Sharpedo
  list.push([323, 1, 427]) #Camérupt
  list.push([334, 1, 428]) #Altaria
  list.push([354, 1, 429]) #Branette
  list.push([359, 1, 430]) #Absol
  list.push([362, 1, 431]) #Onigali
  list.push([373, 1, 432]) #Drattak
  list.push([376, 1, 433]) #Métalosse
  list.push([380, 1, 434]) #Latias
  list.push([381, 1, 435]) #Latios
  list.push([428, 1, 436]) #Lockpin
  list.push([445, 1, 437]) #Carchacrok
  list.push([448, 1, 438]) #Lucario
  list.push([460, 1, 439]) #Blizzaroi
  list.push([475, 1, 440]) #Gallame
  list.push([531, 1, 441]) #Nanméouïe
  list.push([719, 1, 442]) #Diancie
  list.push([384, 1]) #Rayquaza
  end
 
  def primo_list
  list =[]
  list.push([382, 1, 443])#Kyogre
  list.push([383, 1, 444])#Groudon
  end

« Modifié: 29 mai 2016, 11:29:24 par Otaku »

Ota

Programmeur

Lol ? Essaye de faire gaffe aux noms des Pokémon.. "Dracofeu" tu le fais exprès ou bien..?
J'ai pas modifier les 3 premier exemple de FLORENT_ regarde dans son post c'est une erreur de lui alors bon voilà.
Lol ? Essaye de faire gaffe aux noms des Pokémon.. "Dracofeu" tu le fais exprès ou bien..?

:ahde:

J'ai ajouté les lignes de commentaires sans vraiment me relire.
J'ai corrigé dans le premier post
Dans tous les cas, ça n'avait aucun impact sur le code.

Erreur dans ta list def mega list tien je viens de la corriger.Si il faut j'ai compléter entierment la liste pour se qui voulent . :3

Quand tu parlais d'erreur, c’était ou ?(en dehors du commentaire, je parle)
Je n'arrive pas trop a voir la différence entre la liste corrigée et celle de mon post.
En tout cas, bonne ide la liste complétée.


Edit :
Ah, oui, Tortank.
J'ai vraiment fais ces exemples à la va-vite, j'aurais du faire plus gaffe.
Enfin, c'est toujours mieux ça que des erreurs niveau code comme sur la première version.

« Modifié: 29 mai 2016, 11:41:47 par FL0RENT_ »

Ota

Programmeur

Oui mais comme certain son pointilleux exemple du Dracaufeu :) puis si tu le souhaite tu peut aussi ajouter ma liste fini dans ton premier post pour les flemmards x) je te passerai les sprites de la totalité des Méga+ les primo aussi et le pokemon custom terminé :3.

Dans custom j'ai un souci pour les doubles type tu peux m'expliqué comment je peux faire s'il te plait .

Et encore merci pour se script.
Edit: Rayquaza tu a mi 348 au lieu de 384 :3.

« Modifié: 29 mai 2016, 11:58:56 par Otaku »

Dans custom j'ai un souci pour les doubles type tu peut m'expliqué comment je peux faire s'il te plait .

dans le pokemon_custom, tu rajoute un truc genre :

def type2
return 15 if name == "Dracaufeu" and @mega == 1
return 7 if name == "Mewtwo" and @mega == 1
return 17 if name == "Leviator" and @mega == 1
return 15 if name == "Pharamp" and @mega == 1
return 15 if name == "Jungko" and @mega == 1
@type2
end

Ou sinon, vu que name doit respecter les majuscules de la BDD (qui ne sont pas les mêmes dans 0.7 et 0.8), tu peux utiliser id a la place pour être sur que ce soit compatible avec tout.
Exemple :
return 15 if id == 254 and @mega == 1


Et encore merci pour se script.
Edit: Rayquaza tu a mi 348 au lieu de 384 :3.

:ahde::ahdek:

Ota

Programmeur

Oki merci ^^ de tout façon j'utilise que les ID c'est moins chiant :3.

Aerun

Modérateur

Il vaut toujours mieux utiliser les id que les strings, juste au cas où on souhaite changer la langue d'affichage, etc.

Ota

Programmeur

Je confirme mais les id pose beaucoup moins de souci de compatibilité entre deux PSP si ma mémoire et bonne il y a un PSP ou les noms des pokemon son écrie comme ça "DRACAUFEU" et dans l'autre comme ça "Dracaufeu" je me rappelle qu'a l'époque j'avais complètement arrêter l'idée de passer d'un PSP à l'autre à causse de cella ça générer trop d'erreur avec ma BDD des pokemon de l'autre projet quand le transfère a était effectué . Après j'ai appris qu'on pouvait changer

if name == "DRACAUFEU" par if id == 006 puis ça ma changer la vie x) .

VIVE LES ID :3.
petit probleme ... j'ai tout fait .. aucun bouton de mega ... ni primo

« Modifié: 30 mai 2016, 23:21:56 par Anolis999 »

Yamette Yuri senpai.

There was an error while thanking
Thanking...