- Azuma-01Membre
- Nombre de messages : 94
Age : 28
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009
petits bouts de code pour devs
le Mer 25 Jan 2012 - 22:56

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.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum