Invité
| Sujet: Modification de script Mar 26 Aoû 2008 - 13:33 | |
| Salut! Voilà un script pour une forge et alchimie: - Code:
-
########################################################### ###################### FORGE & ALCHIMIE ######################## #### V 1.0.5 ############################################## ################################### Por: lb_guilherme ##### #### traduction par : Douk ######################## #### commentaires & ajout de l'alchimie par : Lifa ######################## ###########################################################
# Pour qu'un événement déclenche la forge, mettez-lui un appel de script contenant : $scene = Scene_Refinar.new # Par défaut, les 10 premiers objets de votre liste d'objets serviront de matériaux. # Vous pouvez modifier le nombre de matériaux différents de votre jeu (de 1 à 14) à la ligne 56 (Minerios_id) # Vous pouvez à cette même ligne modifier les emplacements de ces matériaux dans votre liste d'objets.
# A la ligne 36, vous pouvez définir les différents groupes d'objets de votre forge. # A la ligne 39, mettez le type correspondant pour chaque groupe : # 1 = Armures (tout ce qui est dans votre liste d'armures compte, casques, accessoires, etc...) # 2 = Armes # 3 = Objets (il est tout à fait possible de créer des matériaux à partir d'autres matériaux ^^')
# Lignes 47 à 52 : mettez autant de lignes que de groupes d'objets de votre forge ! # Mettez ensuite à droite de chaque ligne les numéros des armures/armes/objets # que le joueur pourra créer dans ce groupe
# Enfin, lignes 67 à 89, mettez les matériaux requis pour chaque armure/arme/objet # (le nombre de nombres entre crochets doit correspondre au nombre de matériaux différents) # Il doit y avoir une ligne par armure/arme/objet.
module Refiner
Grupos_arms = [] Grupos_atr = [] Grupos_atr[1] = [] Grupos_atr[2] = [] Grupos_atr[3] = [] # ---------------------------------------------------- Grupos_name = ["Bâtons magiques","Armes de jet","Armes tranchantes","Armes contondantes","Armures","Alchimie"] #Type d'armes à forger # Noms des groupes d'objets # ---------------------------------------------------- Grupos_tips = [2,2,2,2,1,3] # Type d'objets des groupes (conservez le même ordre et même nombre) # 1 = Armures # 2 = Armes # 3 = Objets # ---------------------------------------------------- # ID des équipements que contiendront chaque groupe : # Max = 15 par groupe Grupos_arms[0] = [1,2,3,4] Grupos_arms[1] = [5,6] Grupos_arms[2] = [7,8,9] Grupos_arms[3] = [10,11] Grupos_arms[4] = [1,2,3,4,5] Grupos_arms[5] = [1,2,3,4,5] # ---------------------------------------------------- # ID des objets qui serviront de matériaux # Max = 14 Minerios_id = [1,2,3,4,5,6,7,8,9,10] # ---------------------------------------------------- # Quantité de matériaux requis pour chaque objet, dans l'ordre des matériaux indiqués ci-dessus # Grupos_atr[TYPE][ID] # TYPE: # 1 = Armures # 2 = Armes # 3 = Objets # ID: # Id de l'armure/arme/objet # ---------------------------------------------------- # Armures : Grupos_atr[1][1] = [1,1,0,0,0,0,0,0,0,0] Grupos_atr[1][2] = [2,2,0,0,0,0,0,0,0,0] Grupos_atr[1][3] = [3,3,0,0,10,0,0,0,0,0] Grupos_atr[1][4] = [5,5,5,5,5,5,5,5,0,0] Grupos_atr[1][5] = [10,0,0,0,0,0,0,0,0,0] # Armes : Grupos_atr[2][1] = [5,0,0,0,0,0,0,0,0,0] Grupos_atr[2][2] = [0,10,0,0,0,0,0,0,0,0] Grupos_atr[2][3] = [0,55,0,0,0,0,0,0,0,0] Grupos_atr[2][4] = [0,0,0,0,8,0,0,0,0,0] Grupos_atr[2][5] = [0,0,50,10,0,0,0,0,0,0] Grupos_atr[2][6] = [5,0,0,0,0,0,0,0,0,0] Grupos_atr[2][7] = [0,10,0,0,0,0,0,0,0,0] Grupos_atr[2][8] = [0,55,0,0,0,0,0,0,0,0] Grupos_atr[2][9] = [0,0,0,0,8,0,0,0,0,0] Grupos_atr[2][10] = [0,0,50,10,0,0,0,0,0,0] Grupos_atr[2][11] = [5,0,0,0,0,0,0,0,0,0] # Objets : Grupos_atr[3][1] = [1,1,0,0,0,0,0,0,0,0] Grupos_atr[3][2] = [10,15,0,0,0,0,0,0,0,0] Grupos_atr[3][3] = [5,0,0,0,10,0,0,0,0,0] Grupos_atr[3][4] = [5,5,5,5,5,5,5,5,0,0] Grupos_atr[3][5] = [8,45,0,0,0,0,0,0,0,0]
# ---------------------------------------------------- # # FIN DES CONFIGURATIONS - INITIALISATION DU SCRIPT # # ---------------------------------------------------- #
end class Window_Minerios < Window_Base def initialize(icons, x = 420, y = 5) super(x, y, 120, WLH * Refiner::Minerios_id.size + WLH + 32 + 10) @icons = icons self.contents.font.name = "UmePlus Gothic" refresh end def refresh self.contents.clear y = 10 x = 5 for i in 0...Refiner::Minerios_id.size y = y + WLH icon = @icons[i] draw_icon(icon, x, y) end end end class Scene_Refinar < Scene_Base def start super create_menu_background start_vars @min_window = Window_Minerios.new(@icons) @min_window.visible = false @grupo_window = Window_Command.new(160, Refiner::Grupos_name) @grupo_window.x = 5 @grupo_window.y = 5 @equips_window = Window_Command.new(160, [""]) @equips_window.visible = false @equips_window.active = false @confirm_window = Window_Confirm.new @confirm_window.x = 5 @confirm_window.y = 331 @confirm_op_window = Window_Command.new(75, ["Oui","Non"]) @confirm_op_window.x = 90 @confirm_op_window.y = 331 @confirm_op_window.opacity = 0 @confirm_window.visible = false @confirm_op_window.visible = false @confirm_op_window.active = false @confirm_op_window.index = 1 end def start_vars @groups_names = [] @groups_icons = [] for a in 0...Refiner::Grupos_name.size @groups_names[a] = [] @groups_icons[a] = [] for i in 0...Refiner::Grupos_arms[a].size id = Refiner::Grupos_arms[a][i] if Refiner::Grupos_tips[a] == 1 @groups_names[a][i] = $data_armors[id].name @groups_icons[a][i] = $data_armors[id].icon_index else if Refiner::Grupos_tips[a] == 2 @groups_names[a][i] = $data_weapons[id].name @groups_icons[a][i] = $data_weapons[id].icon_index else @groups_names[a][i] = $data_items[id].name @groups_icons[a][i] = $data_items[id].icon_index end end end end @icons = [] for i in 0...Refiner::Minerios_id.size id = Refiner::Minerios_id[i] @icons[i] = $data_items[id].icon_index end end def terminate super dispose_menu_background @equips_window.dispose @grupo_window.dispose @min_window.dispose @confirm_op_window.dispose @confirm_window.dispose end def update super update_menu_background @equips_window.update @min_window.update @grupo_window.update @confirm_op_window.update @confirm_window.update if @grupo_window.active == true grupo_update elsif @equips_window.active == true equips_update elsif @confirm_window.visible == true confirm_update end end def confirm_update if @confirm_op_window.active == false @confirm_window.contents.clear @confirm_window.contents.draw_text(0, 0, 130, 24, "Vous n'avez pas les") @confirm_window.contents.draw_text(0, 24, 130, 24, "items nécessaires") end if Input.trigger?(Input::B) Sound.play_cancel un_active end if Input.trigger?(Input::C) case @confirm_op_window.index when 0 Sound.play_decision refinar un_active @icon_window.dispose update_refiner desactive_options @confirm_op_window.index = 1 when 1 Sound.play_cancel un_active end end end def refinar v1 = Refiner::Grupos_tips[@grupo_window.index] v2 = Refiner::Grupos_arms[@grupo_window.index][@equips_window.index] for i in 0...Refiner::Minerios_id.size v = Refiner::Grupos_atr[v1][v2][i]
if v == nil v = 0 end $game_party.lose_item($data_items[Refiner::Minerios_id[i]], v) end if v1 == 1 t = $data_armors[v2] else if v1 == 2 t = $data_weapons[v2] else t = $data_items[v2] end end $game_party.gain_item(t,1) end def un_active @confirm_window.visible = false @confirm_op_window.visible = false @confirm_op_window.active = false @equips_window.active = true @confirm_window.contents.clear @confirm_window.contents.draw_text(0, 0, 80, 24, "Confirmer?") end def equips_update if Input.trigger?(Input::B) Sound.play_cancel @equips_window.visible = false @equips_window.active = false @grupo_window.active = true @min_window.visible = false @icon_window.dispose end if Input.trigger?(Input::C) Sound.play_decision trocar end if Input.repeat?(Input::DOWN) update_refiner end if Input.repeat?(Input::UP) update_refiner end end def grupo_update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) Sound.play_decision @equips_window.dispose @equips_window = Window_Command2.new(245, @groups_names[@grupo_window.index]) @equips_window.x = 170 @equips_window.y = 5 @min_window.visible = true @grupo_window.active = false desactive_options update_refiner end end def troc_list for i in 0...@troc.size if @troc[i] != false @troc[i] = true end end end def update_refiner v1 = Refiner::Grupos_tips[@grupo_window.index] v2 = Refiner::Grupos_arms[@grupo_window.index][@equips_window.index] @min_window.refresh y = 10 x = 35 @min_window.contents.font.color = @min_window.normal_color @min_window.contents.draw_text(0, 0, 100, 24, "Requis :") for i in 0...Refiner::Minerios_id.size y = y + 24 @min_window.contents.font.color = @min_window.normal_color @min_window.contents.draw_text(x, y, 80, 24, "→") text = Refiner::Grupos_atr[v1][v2][i] if text == nil text = 0 end if $game_party.item_number($data_items[Refiner::Minerios_id[i]]) < text @min_window.contents.font.color = @min_window.knockout_color end @min_window.contents.draw_text(x + 20, y, 80, 24, text.to_s) end end def desactive_options @troc = [] v1 = Refiner::Grupos_tips[@grupo_window.index] v2 = Refiner::Grupos_arms[@grupo_window.index].size for a in 0...v2 for i in 0...Refiner::Minerios_id.size v3 = Refiner::Grupos_arms[@grupo_window.index][a] v = Refiner::Grupos_atr[v1][v3][i] if v == nil v = 0 end if $game_party.item_number($data_items[Refiner::Minerios_id[i]]) < v @equips_window.draw_item(a, false) @troc[a] = false end end end @icon_window = Window_Icon.new @icon_window.opacity = 0 troc_list x = 0 y = -24 for i in 0...@groups_names[@grupo_window.index].size y = y + 24 icon = @groups_icons[@grupo_window.index][i] @icon_window.draw_icon(icon, x, y, @troc[i]) end end def trocar if @troc[@equips_window.index] == false Sound.play_cancel @confirm_window.visible = true @equips_window.active = false else @confirm_window.visible = true @confirm_op_window.visible = true @confirm_op_window.active = true @equips_window.active = false end end end class Window_Confirm < Window_Base def initialize super (0, 0, 160, WLH * 2 + 32) self.contents.draw_text(0, 0, 80, 24, "Confirmer ?") end end class Window_Icon < Window_Base def initialize super (170, 5, 100, WLH * 14 + 32) end end class Window_Command2 < Window_Selectable attr_reader:commands def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32) if row_max == 0 row_max = (commands.size + column_max - 1) / column_max end super(0, 0, width, row_max * WLH + 32, spacing) @commands = commands @item_max = commands.size @column_max = column_max refresh self.index = 0 end def refresh self.contents.clear for i in 0...@item_max draw_item(i) end end def draw_item(index, enabled = true) rect = item_rect(index) rect.x += 30 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(rect, @commands[index]) end end Et voilà ce que j'aimerais que ça fasse: 1. Que la forge soit payante 2. Que l'on puisse mettre plus d'objet et de catégorie Alors si quelqu'un pouvait me faire ça ce serait sympa Merci d'avance pour vos réponses |
|