AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le deal à ne pas rater :
Pack Smartphone Samsung Galaxy S22 6.1″ + Galaxy Buds2 (Via ODR ...
599 €
Voir le deal

Partagez
 

 [VX] Compétence de métamorphose simplifiée

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 40
Inscrit le : 26/05/2008
Messages : 2360

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeLun 21 Déc 2009 - 14:53

L'auteur : MirainoHikari

Version : 4.0

LOG des modifications
v3.x - v4.0
Correction de bugs
Ajout de la possibilité d'utiliser en combat... Le rendu est un peu étrange, mais ça fonctionne.
À moins de bugs majeur, je n'ai pas d'autres modifications prévues.
v3.5 - v3.8
Quelques réorganisation
Ajout de l'enregistrement de la forme dans une variable (configurable)
Surcharge de Windows_Skill plutôt que Scene_Skill (préparation pour intégration en combat)
v3.0 - v3.5
Possibilité que plusieurs acteurs ait la compétence et d'affecter des valeurs différentes à chacun selon le cas.
Correction d'un certain nombre de bug
Détermine quel acteur est afecté par le préchoix si activé
v2.x - v3.0
Il n'y a plus de limitation de formes. (Contrairement aux versions précédentes)
Il n'est plus nécessaire d'enregistrer les choix dans une variable.
Le menu n'est plus sur un écran noir
v1.x - 2.0
La seule limite de forme est de 8 due au fichier de lecture, mais sera réglé dans la prochaine version.
N'utilise plus de variables de contrôle.
Légèrement modifiable grâce à quelques variables de configuration

C'est une adaptation du script du concours qui permet une plus vaste utilisation du script.

Pour faire fonctionner, faites copier le script dans vos materials (au dessus du main). Pour lancer le script, simplement appeler
Code:
$scene = Scene_Xform.new

Une utilisation possible est de créer vous une compétence sans cible appelée du menu seulement qui appèlera un event commun dans lequel vous inscrirez le script d'appel ou encore créer une événement "cabine" et appeler le script dans votre event.

Ce script surcharge également le menu Titre au besoin. Pour activer la surcharge pour choisir une apparence de départ,
Code:
Pre_Choix_Active = true
dans le module de CONFIG. Pour désactiver
Code:
Pre_Choix_Active = false
. Lorsque la surcharge est désactivé, l'apparence du héro est celle choisie dans la base de données. Le script conserve également l'apparence d'origine pour que vous retrouviez votre apparence "normale" en redevenant "vous-même".

Il n'y a pas de screen car globalement, ça dépends beaucoup de la façon dont vous utiliserez le script. Globalement, on ne fait qu'ajouter un menu.


Code:
#
#(c)2009 MirainoHikari, rpg-maker-vx.bbactif.com
#
# Version 4.0
#
# Pour lancer la compétence $scene = Scene_Xform.new
#
#

module CONFIG
# CONFIG DES VARIABLES
 
  # Si le préchoix doit être désactiver, mettre à false, sinon mettre à true
  Pre_Choix_Active = true
 
  # Si vous désirez conserver la valeur du choix, mettre Reminder à True
  # et donner l'index de la variable de contrôle à utiliser
  XF_Choix_Reminder = true
  Pre_Choix_Var = 51
 
  # Liste des choix d'apparence de départ. La clé suivante est la valeur pour
  # le fichier d'apparence avec son indexe et le fichier du visage avec
  # son index. Dans cet exemple, ça correspond, mais ce n'est pas obligatoire.
  Pre_Choix = {"Homme" => ["Actor1",0,"Actor1",0],
              "Femme" => ["Actor1",1,"Actor1",1]}
  # Numéro de l'Acteur affecté par le préchoix
  Prechoix_At = 1
 
  # Liste des transformation disponible
 
  # Valeur pour revenir à l'état initiale
  NORMAL = "Normal"
 
  # Ici, on donne le nom de la transformation, le nom du fichier du personnage
  # avec son index et le fichier du visage avec son index. Ne sont pas obligé
  # de correspondre
  # Ne pas retirer la première ligne. Pour le reste, vous pouvez en ajouter
  # ou en retirer autant que vous le désirez. La clé du hash doit correspondre
  # avec l'id de l'Acteur de la liste de la base de donnée.

  Liste = {1 => 
      { NORMAL => [], #retourne à valeur origine
        "ombre" => ["Evil",3,"Evil",3],
        "chien" => ["Animal",0,"Monster",2],
        "chat" => ["Actor3",7,"Actor3",7],
        "fée" => ["Spiritual",4,"Spiritual",4] },
  2 =>
    { NORMAL => [], #retourne à valeur origine
        "chien" => ["Animal",0,"Monster",2],
        "voleur" => ["Evil",2,"Evil",2]}
  }
 
  #variable de contrôle devant être affecté par le changement de costume
  #seul les acteurs que vous voulez conserver sont dans cette liste
  ##actor => index de la variable
  #si aucune variable à conserver, laisser vide XF_vars_list = {}
  XF_vars_list = {1=>52,2=>53}
 
 
end
#Fin de la config.   
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
###################################################################
#Ne pas modifier au dela de ce point si vous ne savez pas ce que
#vous faites.


#=========================================
# Surcharge du Skill
#========================================
class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    x      : window x-coordinate
  #    y      : window y-coordinate
  #    width  : window width
  #    height : window height
  #    actor  : actor
  #--------------------------------------------------------------------------
  alias xform_old_init initialize
  def initialize(x, y, width, height, actor)
    xform_old_init(x, y, width, height, actor)
    $xf_skilled_actor = actor
  end
end


#=======================================================
# Surcharge Actor
#=======================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader  :ini_form                # initial form
  attr_reader  :forms                    # character possible forms
  #--------------------------------------------------------------------------
  # * Object Initialization
  #    actor_id : actor ID
  #--------------------------------------------------------------------------
  alias xform_old_init initialize
  def initialize(actor_id)
    xform_old_init(actor_id)
    @forms = { CONFIG::NORMAL => []}
  end

  # Modificateurs d'apparence

  def set_initial_form
    @ini_form = [self.character_name, self.character_index, self.face_name, self.face_index]
    if CONFIG::XF_vars_list.has_key?(self.id)
      $game_variables[CONFIG::XF_vars_list[self.id]] = CONFIG::NORMAL
    end
  end

  def get_initial_form
    self.set_graphic(@ini_form[0],@ini_form[1],@ini_form[2],@ini_form[3])
    if CONFIG::XF_vars_list.has_key?(self.id)
      $game_variables[CONFIG::XF_vars_list[self.id]] = CONFIG::NORMAL
    end
  end

  def get_next_form(perso)
    new_form = @forms[perso]
    self.set_graphic(new_form[0], new_form[1], new_form[2], new_form[3])
    if CONFIG::XF_vars_list.has_key?(self.id)
      $game_variables[CONFIG::XF_vars_list[self.id]] = perso
    end
  end
 
  def add_forms(new_forms)
    @forms = new_forms
  end
 

end

#=====================================
# Surcharge Battle Process
#=====================================
class Scene_Battle < Scene_Base
  alias xf_start start
  def start
    xf_start
    @message_window.visible = false
  end
 
  def process_battle_start
    if !$battle_in_process
      @message_window.visible = true
      @message_window.clear
      wait(10)
      for name in $game_troop.enemy_names
        text = sprintf(Vocab::Emerge, name)
        $game_message.texts.push(text)
      end
      if $game_troop.preemptive
        text = sprintf(Vocab::Preemptive, $game_party.name)
        $game_message.texts.push(text)
      elsif $game_troop.surprise
        text = sprintf(Vocab::Surprise, $game_party.name)
        $game_message.texts.push(text)
      end
      wait_for_message
      @message_window.clear
      $battle_in_process = true
    end
    make_escape_ratio
    process_battle_event
    start_party_command_selection
  end
 
  alias xf_b_end battle_end
  def battle_end(result)
    xf_b_end(result)
    $battle_in_process = false
  end
 
end

#===================================================================
# La transformation opère à partir d'ici
#===================================================================
class Scene_Xform < Scene_Base
 
  def initialize
    super
    @actor = $xf_skilled_actor
    @formes = @actor.forms
    $xf_skilled_actor = nil
   
  end
 
  def start
    super
    create_menu_background
    create_command_window
  end
   
  def update
    super
    @command_window.update
    update_command_selection
  end
   
  def create_command_window
    @command_window = Window_Command.new(160, @formes.keys)
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 100
  end
 
  def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      if $game_temp.in_battle
        $scene = Scene_Battle.new
      else
        $scene = Scene_Map.new
      end
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      perso = @formes.keys[@command_window.index]
      case perso
      when CONFIG::NORMAL #forme initiale
        @actor.get_initial_form
      else #transformation
        @actor.get_next_form(perso)
      end
      $game_player.refresh
      if $game_temp.in_battle
        $scene = Scene_Battle.new
      else
        $scene = Scene_Map.new
      end
    end
   
  end
 
  def terminate
    super
    @command_window.dispose
  end

end

#=============================
# Suite des surcharges
#=============================

#==============================================================================
# Scene_Title
#==============================================================================
class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # command_new_game
  #--------------------------------------------------------------------------
  alias xForm_original_NG command_new_game
  def command_new_game
    if CONFIG::Pre_Choix_Active
      confirm_player_location
      Sound.play_decision
      $scene = Scene_Title_Choice.new
      close_command_window
    else
      xForm_original_NG
    end
    for act in 1..8
      $game_actors[act].set_initial_form
      if CONFIG::Liste.has_key?(act)
        $game_actors[act].add_forms(CONFIG::Liste[act])
      end
    end
  end
end

#==============================================================================
# Scene_Start
#==============================================================================
class Scene_Title_Choice < Scene_Base
  #--------------------------------------------------------------------------
  # start
  #--------------------------------------------------------------------------
  def start
    super
    create_command_window
    create_title_graphic
    play_title_music
  end
  #--------------------------------------------------------------------------
  # perform_transition
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(20)
  end
  #--------------------------------------------------------------------------
  # post_start
  #--------------------------------------------------------------------------
  def post_start
    super
    open_command_window
  end
  #--------------------------------------------------------------------------
  # pre_terminate
  #--------------------------------------------------------------------------
  def pre_terminate
    super
    close_command_window
  end
  #--------------------------------------------------------------------------
  # termination
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_command_window
    snapshot_for_background
    dispose_title_graphic
  end
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    @command_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      start_game(@command_window.commands[@command_window.index])
    end
  end
  #--------------------------------------------------------------------------
  # create_title_graphic
  #--------------------------------------------------------------------------
  def create_title_graphic
    @sprite = Sprite.new
    @sprite.bitmap = Cache.system("Title")
  end
  #--------------------------------------------------------------------------
  # dispose_title_graphic
  #--------------------------------------------------------------------------
  def dispose_title_graphic
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # check_save_switch
  #--------------------------------------------------------------------------
  def check_saved_switch(switch_id)
    filenames = Dir.glob('Save*.rvdata')
    for filename in filenames
      file = File.open(filename, "rb")
      game_switches = Marshal.load(file) until game_switches.is_a?(Game_Switches)
      return true if game_switches[switch_id]
      file.close
      game_switches = nil
    end
    return false
  end
  #--------------------------------------------------------------------------
  # create_command_window
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_Command.new(160, CONFIG::Pre_Choix.keys)
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = (416 - @command_window.height) / 2
    @command_window.openness = 0
    @command_window.open
  end
 
  #--------------------------------------------------------------------------
  # dispose_command_window
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # open_command_window
  #--------------------------------------------------------------------------
  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end
  #--------------------------------------------------------------------------
  # close_command_window
  #--------------------------------------------------------------------------
  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end
  #--------------------------------------------------------------------------
  # play_title_music
  #--------------------------------------------------------------------------
  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # return_scene
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Title.new
  end
  #--------------------------------------------------------------------------
  # start_game
  #--------------------------------------------------------------------------
  def start_game(key)
    $scene = Scene_Map.new
    Sound.play_decision
    $game_party.setup_starting_members            # Initial party
    $game_map.setup($data_system.start_map_id)    # Initial map position
    $game_player.moveto($data_system.start_x, $data_system.start_y)
   
    $game_variables[CONFIG::Pre_Choix_Var] = key if CONFIG::XF_Choix_Reminder
    $game_actors[CONFIG::Prechoix_At].set_graphic(CONFIG::Pre_Choix[key][0], CONFIG::Pre_Choix[key][1], CONFIG::Pre_Choix[key][2], CONFIG::Pre_Choix[key][3])
    $game_actors[CONFIG::Prechoix_At].set_initial_form
    $game_player.refresh
     
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    close_command_window
    Graphics.fadeout(60)
    Graphics.wait(40)
    Graphics.frame_count = 0
    RPG::BGM.stop
    $game_map.autoplay
  end 
end


Dernière édition par MirainoHikari le Mar 22 Déc 2009 - 21:13, édité 12 fois
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Pouet
Ex-Grand Œil des projets
Ex-Grand Œil des projets
Pouet


Féminin Age : 37
Inscrit le : 10/06/2009
Messages : 1137

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeLun 21 Déc 2009 - 15:33

Merci beaucoup ^^

Alors j'ai installé le script avec des chara et faces pour tester. J'ai créé une compétence "métamorphose" qui appel l'évènement commun => $scene = Scene_Xform.new

Je lance le combat, j'utilise la compétence => écran noir je choisit chien, chat ou souris, mais je reviens à la map. Donc je suis en train de me rendre compte en écrivant que ce script n'est probablement pas utilisable en combat ?
Mais c'est extra quand même, en fait ça permet de changer le héros dans le menu et je vais enfin pouvoir faire avancer mon projet. Merci beaucoup ^^

EDIT : J'ai créé la compétence utilisable uniquement dans le menu, et ça ne marche plus. Je sélectionne la compétence métamorphose (Cible : L'utilisateur ; Disponibilité : Menu uniquement) ensuite je me retrouve sur une page pour sélectionner un membre de l'équipe, et je ne peux ni choisir un membre, ni valider mon choix, je ne peux qu'annuler. Késako ?
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 40
Inscrit le : 26/05/2008
Messages : 2360

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeMar 22 Déc 2009 - 14:23

Oopss en effet, j'avais pas prévu ça pour le combat... Je vais faire la modification en même temps pour qu'il soit utilisable de partout.

EDIT: Ok, je viens de voir un autre bug. Je vais voir ce que je peux faire avec tout ça... Je crois que je vais devoir réécrire le tout très différemment. Nous verrons ce que ça donnera... Mais en fait, je vais faire une simplification encore plus drastique... D'ici ce soir, je devrais avoir quelque chose de plus facile à utiliser n'importe où.

UPDATE:
La version 3 règles plusieurs bugs et permet une meilleure configuration.
Limité encore cependant à la carte et au 1er acteur... La version suivante tentera de régler ces deux problèmes.

UPDATE:
La version 3.5 règles quelques autres bugs et permet une meilleure configuration.
Limité encore cependant à la carte, mais plus à l'acteur...
La version suivante tentera de régler l'utilisation en combat de la compétence.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Pouet
Ex-Grand Œil des projets
Ex-Grand Œil des projets
Pouet


Féminin Age : 37
Inscrit le : 10/06/2009
Messages : 1137

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeMar 22 Déc 2009 - 17:46

Arf j'ai pas du tout pensé à l'optimisation de ce script...
Est-il possible que chaque métamorphose engendre des modifications sur le personnage (Intelligence +, Agilité +, Force +, etc , 50% de résistance à tel élément ?)
Puisque c'était tout l'intérêt de la chose. Dans la version du script avec les costumes, ces changements sont induits par le costume, mais comment faire ici ?
Soit séparer les compétences ? => Une compétence correspond à une métamorphose précise engendrant des modifications ?
Créer un nouveau statut avec pleins de conditions ?

EDIT : En remarque une variable serait peut etre la meilleure solution, chaque valeur correspondant à une métamorphose : si variable =1 héros mouse costaud ?
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 40
Inscrit le : 26/05/2008
Messages : 2360

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeMar 22 Déc 2009 - 21:11

Je peux ajouter cette variable facilement si tu y tiens. À l'origine, ce script n'était pas prévu pour le combat, mais alors pas du tout... La métamorphose devait simplement être faite sur la carte pour remplir des missions. Disons que tu me fait travailler pas mal... Tiens. Version 3.8 (c'est un patch. C'est à toi de gerrer tes stats en fonctions de la variable que tu mets dans la config)

EDIT: Si tu préfère la version costume, rien ne t'empêche d'utiliser mon vieux script à la place. Seul détail, la classe d'armure existe pour tous même si seulement équipable par une classe particulière.


UPDATE: Enfin, la version 4. Le combat est géré. Ne devrait pas entré en conflit avec les autres scripts de combat (à tester). Ne me demandez pas cependant de faire des adaptation pour tel ou tel type de combat. S'il n'est pas compatible, tant pis. Cependant, j'ai fait attention pour surcharger un max afin de ne rien écraser. Donc fonctionne sur la carte et en combat. Les variables sont enregistrer en string dans les variables. Vous devrez faire la gestion par vous même si vous désirer faire des modifications de statistiques... Si vous voyez ça plutôt comme une "pièce d'équipement" aller chercher mon script de costume à la place. Afin de limité seulement à la carte ou seulement au combat, vous devrez faire cette gestion dans votre événement. S'il s'agit d'un event, ce n'est pas un problème, s'il s'agit d'un compétence, vous devrez gérer votre compétence, soit en mettant "Utilisation du menu seulement" ou encore en gerrant votre événement commun qui gère la compétence.

Merci à tous.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Diblo
Illusionniste Lv.12
Illusionniste Lv.12
Diblo


Masculin Age : 113
Inscrit le : 07/08/2009
Messages : 774

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeMer 23 Déc 2009 - 8:54

Eh beh, tu en as fait du boulot sur ce script, bravo =p
Revenir en haut Aller en bas
MirainoHikari
Ex-Admin-Script
Ex-Admin-Script
MirainoHikari


Masculin Age : 40
Inscrit le : 26/05/2008
Messages : 2360

[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitimeMer 23 Déc 2009 - 11:23

Merci. En effet, surtout sachant qu'à l'origine, ce n'était qu'un script pour dépanner pour un ancien concours.
Revenir en haut Aller en bas
http://mirainohikari.deviantart.com
Contenu sponsorisé




[VX] Compétence de métamorphose simplifiée Empty
MessageSujet: Re: [VX] Compétence de métamorphose simplifiée   [VX] Compétence de métamorphose simplifiée Icon_minitime

Revenir en haut Aller en bas
 

[VX] Compétence de métamorphose simplifiée

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Metamorphose
» Métamorphose ,perso choisit [Résolu ]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Héros et équipe-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forumactif.com