Partagez
Aller en bas
avatar
Azuma-01
Paysan spécialiste
Paysan spécialiste
Nombre de messages : 94
Age : 25
Localisation : Amos
Capacités : confirmé
Distinction : aucune
Date d'inscription : 22/09/2009

petits bouts de code pour devs

le Mer 25 Jan 2012 - 22:56
Arrow Bonjour, bonsoir... ou les deux.
Je vais présenter quelques bouts de code qui vont, a mon avis, simplifier le travail des développeurs.

Commençons par un qui permet d'ajouter un éléments dans un Window_Command dynamiquement.
par exemple si on veut ajouter la commande "Crédits" dans la scène Titre (Scene_Tilte), il faut commencer par faire un alias sur Window_TitleCommand#make_command_list pour la rendre visible ensuite en refaire un autre sur Scene_Tile#create_command_window pour y placer un handle. Et encore un peut plus si on veut que l'élément "Crédits" soit visible seulement si une/des condition(s) est requise(s). Au-lieu de s'arracher le cheveux de sur la tête, je propose la méthode
Window_Command#dynamic_add_command(name, symbol, method, index=@list.size, enabled = true, ext = nil)
un exemple est fournie avec le code ci-dessous.
Code:
=begin #exemple:
 
class Scene_Title
  alias old_create_command_window create_command_window
  def create_command_window
    old_create_command_window
    # add "Crédits" command before shutdown
    @command_window.dynamic_add_command("Crédits", :added, proc{@command_window.activate}, 2) if $game_variables[12]
  end
end

=end
class Window_Command
  def refresh
    clear_command_list
    make_command_list
    insert_others_commands
    create_contents
    super
  end
  def insert_others_commands
    (@dynamic_commands||[]).each{|com|@list.insert(com[0],com[1])}
  end
  def dynamic_add_command(name, symbol, method, index=@list.size, enabled = true, ext = nil)
    @dynamic_commands||=[]
    @dynamic_commands.push([index, {:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext}])
    set_handler(symbol, method)
    refresh
  end
end

Un autre : vous avez surement vue que les statistiques des objets comme les armes, armures, les classes...
sont stoker dans le tableau params. Voulez-vous vraiment apprendre par-cœur que l'attaque est à l'index 2, que la défense magique est à la position 5... Moi non. Alors voici un petit quelque chose qui rajoute les attributs mhp, mmp, atk, def, mat, mdf, agi et luk au classes RPG::EquipItem (donc RPG::Weapon et RPG::Armor), RPG::Class et RPG::Enemy.
Code:
module RPG
  [EquipItem, Class, Enemy].each{|klass|
    klass.class_eval{
      ['mhp','mmp','atk','def','mat','mdf','agi','luk'].each_with_index{|name,i|
        define_method(name){params[i]}
        define_method(name+'='){|v| params[i]=v}
      }
    }
  }

Celui-ci est surement moins utile des deux premier. Il permet seulement que, dans la scène menu (Scene_Menu), lorsque l'on appui sur la flèche de droite, on entre automatiquement en mode formation. Plus ou moins utile tel-quelle, mais qui offre des possibilités pour des menus plus élaborés.
Code:
class Window_MenuCommand < Window_Command
  def process_handling
    super
    if formation_enabled && Input.trigger?(:RIGHT)
      select_symbol(:formation)
      return process_ok
    end
  end
end

C'est tout pour l'instant, mais je vais très certainement en rajouter au fils du temps.

NOTE : Tous ces bouts de code ne nécessite pas de crédit quelconque, car tous pourraient les créés. Je leur ai seulement donnés une certaine polyvalence.
Revenir en haut
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum