Habitant Lv.6
Age : 28 Inscrit le : 05/04/2011 Messages : 110
| Sujet: Re: Pile ou Façe ? Mar 5 Avr 2011 - 19:37 | |
| Bon sa date un peu mais mieux vaut tard que jamais (et si les modérateur ne voulait pas que l'on y écrive, il n'avait qu'à le bloqué) Ces sripts se place au dessus de main mais n'ont pas d'ordre précis (en revanche il sont optimisable...) - Code:
-
#============================================================================== # ■ Bestiaire 2.0 pour RPG Maker VX #------------------------------------------------------------------------------ # Version 2.0 (24/05/2010) par Krazplay # Où me trouver ? Si vous avez des questions ou problèmes : # Oniromancie => http://www.rpg-maker.fr/ # C'est là où je traine maintenant que la Factory a fermé :'( #------------------------------------------------------------------------------ # Ce script fonctionne aussi en 640x480, la fenêtre détaillant les monstres # reste en 544x416, mais elle est centrée au milieu de l'écran par défaut. #------------------------------------------------------------------------------ # Par défaut, ce script utilise les variables 4001 à 4000+Nbre de monstres dans # votre base de données. Assurez-vous qu'elles soient disponible ou changer # la configuration pour en utiliser d'autres (ou ne pas en utiliser du tout) #------------------------------------------------------------------------------ # Pour appeler ce menu il suffit d'utiliser la ligne suivante : # $scene = Scene_Bestiaire.new # Cette scene renvoie au menu lorsqu'elle se termine, si vous voulez qu'elle # ramène sur la carte plutôt qu'au menu, ajouter l'argument false : # $scene = Scene_Bestiaire.new(false) #------------------------------------------------------------------------------ # Vous pouvez librement diffuser ce script, y compris des versions modifiées. # Mais vous devez laisser la provenance (auteur/site) du script original, # c'est la moindre des choses :-) #============================================================================== module KRAZ_SLM # Si Vrai, les monstres qui n'ont pas encore été vaincus n'apparaissent pas du # tout dans la liste (même pas comme monstre inconnu) MONSTRES_INCONNUS_INVISIBLES = false # Si Vrai, les noms des monstres sont visibles même s'ils n'ont jamais été # tués, si Faux, ils apparaitront avec le nom précisé dans NOM_MONSTRE_INCONNU NOMS_PAR_DEFAUT = true # Si les monstres inconnus sont visibles mais que leurs noms n'apparaissent # pas s'ils n'ont pas encore été tué, alors c'est celui-là qui sera utilisé. NOM_MONSTRE_INCONNU = "???" # Si vrai, on peut accéder aux détails d'un monstre même si l'on en a pas encore # tué un, utile pour voir à quoi ressemble le bestaire. DETAILS_PAR_DEFAUT = true # Si la scene est appelée par le menu, il peut être sympa de remettre le curseur # sur la commande Bestiaire lorsqu'on y retourne. POSITION_DS_MENU = 4 # Définit comment enregistrer les données # Si 0, tout est enregistré dans les variables du jeu, comme dans la première version # Si 1, tout est enregistré dans le tableau $game_system.bestaire TYPE_SAUVEGARDE = 0 # Définit quelles variables vont être utilisées dans le cas TYPE_SAUVEGARDE = 0 # N'oublier pas que cela commence à DEPART_VARIABLES+1, parce que le premier # monstre a l'ID 1 et non 0. DEPART_VARIABLES = 4000 # Les méthodes suivantes sont les seules références aux variables où sont # stockés le nombre d'ennemi tué de chaque sorte. def self.nombre_tués(id_monstre) return $game_variables[DEPART_VARIABLES+id_monstre] if TYPE_SAUVEGARDE == 0 return $game_system.bestiaire[id_monstre] end def self.set_nombre_tués(id_monstre, nombre) $game_variables[DEPART_VARIABLES+id_monstre] = nombre if TYPE_SAUVEGARDE == 0 $game_system.bestiaire[id_monstre] = nombre end def self.ajout_nombre_tués(id_monstre, nombre) $game_variables[DEPART_VARIABLES+id_monstre] += nombre if TYPE_SAUVEGARDE == 0 $game_system.bestiaire[id_monstre] += nombre end # Ce qui suit permet de déplacer quasiment tout les textes présents dans le # script afin que vous puissiez le customiser ou le faire fonctionner dans une # nouvelle résolution. #======> Positionnement des éléments <======# #-------------------------------------------# # La fenêtre générale prend automatiquement tout l'écran # Taille de la police FG_TP = 24 # Description des 2 colonnes FG_COL1 = "BESTIAIRE" FG_COL2 = "(Nom)" FG_COL3 = "(Tué)" # Position des descriptions [x, y, longueur, hauteur] FG_PD1 = [10, 0, 200, 32] FG_PD2 = [300, 0, 200, 32] FG_PD3 = [455, 0, 200, 32] # Position du numéro du monstre selectionné [x, y, longueur, hauteur] FG_NM = [240, 420, 300, 32] # Fenêtre liste des monstres [x, y, longueur, hauteur] # Attention cette fenêtre ne se voit pas, seul son contenu est visible. FM = [0, 41, 544, 370] # Nom du monstre [x, largeur max] FM_NM = [10, 300] # Nombre de monstres tués [x, largeur] # Attention alignement du texte à droite et non à gauche. FM_NMT = [200, 30] # Position de la Fenêtre détails d'un monstre [x, y, largeur, hauteur] FD = [(Graphics.width-544)/2, (Graphics.height-416)/2, 544, 416] # Vitesse ouverture/fermeture (255 le plus rapide) FD_V = 24 # Taille de la police du nom du monstre FD_TT = 28 # Couleur du nom du monstre [Rouge, Vert, Bleu, Opacité] FD_CT = [255, 155, 155, 255] # Nom du monstre [x, y, longueur, hauteur] # Attention ici le nom est centré sur x FD_NM = [32, 0, 470, 32] # Position de l'image du monstre [x, y] FD_B = [355, 160] # Taille de la police du reste de la fenêtre FD_TP = 20 # Utilise la couleur système pour la suite FD_COLOR_SYSTEM = true # Si vous ne désirez pas utiliser la couleur système # [Rouge, Vert, Bleu, Opacité] FD_CSA = [255, 155, 155, 255] # Pour tout ce qui suit, le nom de la caractéristique et sa valeur sont écrit # dans le même rectangle, mais la valeur est aligné à droite du rectangle. # Position HP [x, y, longueur, hauteur] FD_HP = [10, 40, 165, 24] # Points de vie FD_MP = [10, 40+24, 165, 24] # Points de magie FD_ATK = [10, 40+3*24, 165, 24] # Attaque FD_DEF = [10, 40+4*24, 165, 24] # Défense FD_SPI = [10, 40+5*24, 165, 24] # Esprit FD_AGI = [10, 40+6*24, 165, 24] # Agilité FD_EXP = [10, 40+8*24, 155, 24] # Experience FD_GOLD = [10, 40+9*24, 155+20, 24] # Argent # Mots désignants respectivement l'experience, l'or et les objets pouvant être # laissé par l'ennemi. FD_MEXP = "EXP" FD_MGOLD = "Crédit" FD_MDROP = "Objets" # Position du mot FD_MDROP [x, y, longueur, hauteur] FD_DROP = [10, 40+11*24, 200, 24] # Position des objets droppé par l'ennemi [x, y, longueur, hauteur] FD_DR1 = [20, 40+12*24, 220, 24] FD_DR2 = [20, 40+13*24, 220, 24] # Graphique des défenses élémentales [x, y, rayon] FD_GDE = [290, 239, 28] ##=====> Fin positionnement des éléments <=====## end
#============================================================================== # Graphic_Def_Elem #============================================================================== class Window_Base FONT_SIZE = 20 WORD_ELEMENT_GUARD = "Déf. Elémentaire" NUMBER_OF_ELEMENTS = 8 # Nombre d'éléments affichés dans le graphique K_ELEMENT_ORDER1 = [1,3,8,5,2,4,7,6] # ID des éléments affichés dans le graphique # Second jeu d'élément pour le graphe ! # Si ça ne vous intéresse pas, mettre absolument à nil comme suit : #K_ELEMENT_ORDER2 = nil K_ELEMENT_ORDER2 = [9,11,16,13,10,12,15,14] GRAPH_SCALINE_COLOR = Color.new(255, 255, 255, 128) GRAPH_SCALINE_COLOR_SHADOW = Color.new( 0, 0, 0, 192) GRAPH_LINE_COLOR = Color.new(255, 255, 64, 255) GRAPH_LINE_COLOR_MINUS = Color.new( 64, 255, 255, 255) GRAPH_LINE_COLOR_PLUS = Color.new(255, 64, 64, 255) end
#============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ # Ajoute les monstres tués aux variables lorsqu'on gagne un combat ou fuit. #============================================================================== class Scene_Battle include KRAZ_SLM alias kraz_slm_process_victory process_victory def process_victory compte_les_morts kraz_slm_process_victory end alias kraz_slm_process_escape process_escape def process_escape compte_les_morts kraz_slm_process_escape end def compte_les_morts for enemy in $game_troop.members if enemy.dead? KRAZ_SLM.ajout_nombre_tués(enemy.enemy_id, 1) end end end end
#============================================================================== # ■ Scene_Bestiaire #------------------------------------------------------------------------------ # La scène du bestiaire, tout simplement. #============================================================================== class Scene_Bestiaire include KRAZ_SLM def initialize(vient_du_menu = true) # Pour savoir si l'on retourne au menu ou sur la carte à la fin de la scene. @vient_du_menu = vient_du_menu # Sert à vérifier si l'index de la fenêtre monstres a changé. # -1 pour forcer la mise à jour dès le départ @monstres_index = -1 # Retient le jeu d'élément utilisé pour le graphe @jeu_element = 0 end def main @general_window = Window_General.new @monstres_window = Window_Monstres.new @details_monstre_window = Window_Details_Monstre.new @general_window.set_max_monstres(@monstres_window.data.size) @details_monstre_window.openness = 0 @details_monstre_window.active = false Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end @general_window.dispose @monstres_window.dispose end def update # Mise à jour des fenêtre @general_window.update @monstres_window.update @details_monstre_window.update # On vérifie si le curseur a bougé if @monstres_window.index != @monstres_index @monstres_index = @monstres_window.index @general_window.affiche_numero(@monstres_index+1) end # Bouton de confirmation if Input.trigger?(Input::C) if @monstres_window.active and @monstres_window.data.size > 0 id_monstre = @monstres_window.data[@monstres_window.index][2] if KRAZ_SLM.nombre_tués(id_monstre) > 0 or DETAILS_PAR_DEFAUT @details_monstre_window.refresh(id_monstre) @details_monstre_window.active = true @details_monstre_window.open @monstres_window.active = false Sound.play_decision else Sound.play_buzzer end elsif @details_monstre_window.active # On change les éléments qui vont être affichés par le graphe @jeu_element = (@jeu_element + 1) % 2 @details_monstre_window.changer_jeu_d_elements(@jeu_element) # On rafraichit la fenêtre pour que ça prenne effet id_monstre = @monstres_window.data[@monstres_window.index][2] @details_monstre_window.refresh(id_monstre) end # Bouton d'annulation elsif Input.trigger?(Input::B) Sound.play_cancel if @monstres_window.active $scene = @vient_du_menu ? Scene_Menu.new(POSITION_DS_MENU) : Scene_Map.new Graphics.freeze elsif @details_monstre_window.active @details_monstre_window.active = false @details_monstre_window.close @monstres_window.active = true end end if @details_monstre_window.active # Passage d'un monstre à l'autre lorsqu'on regarde leurs détails if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN) data = @monstres_window.data new_index = index = @monstres_window.index data.size.times do new_index +=1 new_index = 0 if new_index >= data.size break if DETAILS_PAR_DEFAUT or data[new_index][1] > 0 end if new_index != index @details_monstre_window.refresh(data[new_index][2]) Sound.play_cursor @monstres_window.index = new_index end elsif Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP) data = @monstres_window.data new_index = index = @monstres_window.index data.size.times do new_index -=1 new_index = data.size-1 if new_index < 0 break if DETAILS_PAR_DEFAUT or data[new_index][1] > 0 end @details_monstre_window.refresh(data[new_index][2]) if new_index != index @monstres_window.index = new_index if new_index != index @details_monstre_window.refresh(data[new_index][2]) Sound.play_cursor @monstres_window.index = new_index end end end end # update end # class Scene_Bestiaire
#============================================================================== # ■ Window_General #------------------------------------------------------------------------------ # Fenêtre général #============================================================================== class Window_General < Window_Base include KRAZ_SLM def initialize super(0, 0, Graphics.width, Graphics.height) @max = 0 refresh end def refresh self.contents.font.size = FG_TP self.contents.font.color = system_color self.contents.draw_text(FG_PD1[0], FG_PD1[1], FG_PD1[2], FG_PD1[3], FG_COL1) self.contents.draw_text(FG_PD2[0], FG_PD2[1], FG_PD2[2], FG_PD2[3], FG_COL2) self.contents.draw_text(FG_PD3[0], FG_PD3[1], FG_PD3[2], FG_PD3[3], FG_COL3) end def affiche_numero(ind=1) # On efface une partie de la fenêtre (RGSS2!) avant d'écrire dessus self.contents.clear_rect(FG_NM[0], FG_NM[1], FG_NM[2], FG_NM[3]) self.contents.draw_text(FG_NM[0], FG_NM[1], FG_NM[2], FG_NM[3], "Monstre #{ind} / #{@max}") end def set_max_monstres(max) @max = max end end #============================================================================== # ■ Window_Monstres #------------------------------------------------------------------------------ # Fenêtre avec le nom de tout les ennemis tués et combien de fois ils ont été # tués. Seul le texte de la fenêtre reste visible (l'opacité et l'opacité du # fond est mise à zéro). #============================================================================== class Window_Monstres < Window_Selectable include KRAZ_SLM attr_reader :data def initialize # Création de la fenêtre, on s'assure qu'elle au-dessus de la fenêtre 'General' super(FM[0], FM[1], FM[2], FM[3]) # On ne veut voir que le texte, donc opacité et back_opacity à 0 self.back_opacity = 0 self.opacity = 0 # Deux colonnes, index à zéro lorsqu'on commence @column_max = 2 self.index = 0 # @data est le tableau des données qui vont être affichées. # Ces éléments sont des tableaux [nom du monstre, nombre tué, id du monstre] @data = [] # Remplissage de @data for monstre in $data_enemies next if monstre == nil id = monstre.id tués = KRAZ_SLM.nombre_tués(id) if tués == 0 next if MONSTRES_INCONNUS_INVISIBLES nom = NOMS_PAR_DEFAUT ? monstre.name : NOM_MONSTRE_INCONNU @data.push([nom, tués, id]) else nom = monstre.name @data.push([nom, tués, id]) end end # Le nombre d'objets dans notre liste c'est évidement le nombre de monstre # qu'on va afficher @item_max = @data.size # Va mettre le bitmap à la bonne taille create_contents refresh end
def refresh self.contents.clear for i in 0...@item_max draw_item(i) end end def draw_item(index) tab_monstre = @data[index] if tab_monstre != nil self.contents.draw_text( FM_NM[0] + 270*(index%@column_max), (index/2 * WLH), FM_NM[1], WLH, tab_monstre[0]) self.contents.draw_text(FM_NMT[0] + 270*(index%@column_max), (index/2 * WLH),FM_NMT[1], WLH, tab_monstre[1].to_s, 2) end end def item_rect(index) rect = Rect.new(0, 0, 0, 0) rect.width = (contents.width + @spacing) / @column_max - @spacing rect.height = WLH rect.x = index % @column_max * (rect.width + @spacing) rect.y = index / @column_max * WLH return rect end def update super if @column_max == 1 and self.active if Input.repeat?(Input::RIGHT) cursor_pagedown end if Input.repeat?(Input::LEFT) cursor_pageup end end end end #class Window_Monstres
#============================================================================== # ■ Window_details_monstre #------------------------------------------------------------------------------ # Permet de créer une fenêtre avec les détails d'un ennemi #============================================================================== class Window_Details_Monstre < Window_Base include KRAZ_SLM def initialize @element_order = K_ELEMENT_ORDER1 super(FD[0], FD[1], FD[2], FD[3]) self.contents = Bitmap.new(width-32, height-32) self.back_opacity = 255 end def update if @opening self.openness += FD_V @opening = false if self.openness == 255 elsif @closing self.openness -= FD_V @closing = false if self.openness == 0 end end def refresh(monstre_id) self.contents.clear draw_actor_battler($data_enemies[monstre_id], FD_B[0], FD_B[1]) self.contents.font.size = FD_TT self.contents.font.bold = true self.contents.font.color = Color.new(FD_CT[0], FD_CT[1], FD_CT[2], FD_CT[3]) self.contents.draw_text(FD_NM[0], FD_NM[1], FD_NM[2], FD_NM[3], $data_enemies[monstre_id].name, 1) self.contents.font.size = FD_TP self.contents.font.bold = false if FD_COLOR_SYSTEM self.contents.font.color = system_color else self.contents.font.color = Color.new(FD_CSA[0], FD_CSA[1], FD_CSA[2], FD_CSA[3]) end self.contents.draw_text(FD_HP[0], FD_HP[1], FD_HP[2], FD_HP[3], "#{Vocab.hp} :") self.contents.draw_text(FD_MP[0], FD_MP[1], FD_MP[2], FD_MP[3], "#{Vocab.mp} :") self.contents.draw_text(FD_ATK[0], FD_ATK[1], FD_ATK[2], FD_ATK[3], "#{Vocab.atk}") self.contents.draw_text(FD_DEF[0], FD_DEF[1], FD_DEF[2], FD_DEF[3], "#{Vocab.def}") self.contents.draw_text(FD_SPI[0], FD_SPI[1], FD_SPI[2], FD_SPI[3], "#{Vocab.spi}") self.contents.draw_text(FD_AGI[0], FD_AGI[1], FD_AGI[2], FD_AGI[3], "#{Vocab.agi}") self.contents.draw_text(FD_EXP[0], FD_EXP[1], FD_EXP[2], FD_EXP[3], FD_MEXP+" :") self.contents.draw_text(FD_GOLD[0], FD_GOLD[1], FD_GOLD[2], FD_GOLD[3], FD_MGOLD+" :") self.contents.draw_text(FD_DROP[0], FD_DROP[1], FD_DROP[2], FD_DROP[3], FD_MDROP+" :") self.contents.font.color = normal_color self.contents.draw_text(FD_HP[0], FD_HP[1], FD_HP[2], FD_HP[3], $data_enemies[monstre_id].maxhp.to_s, 2) self.contents.draw_text(FD_MP[0], FD_MP[1], FD_MP[2], FD_MP[3], $data_enemies[monstre_id].maxmp.to_s, 2) self.contents.draw_text(FD_ATK[0], FD_ATK[1], FD_ATK[2], FD_ATK[3], $data_enemies[monstre_id].atk.to_s, 2) self.contents.draw_text(FD_DEF[0], FD_DEF[1], FD_DEF[2], FD_DEF[3], $data_enemies[monstre_id].def.to_s, 2) self.contents.draw_text(FD_SPI[0], FD_SPI[1], FD_SPI[2], FD_SPI[3], $data_enemies[monstre_id].spi.to_s, 2) self.contents.draw_text(FD_AGI[0], FD_AGI[1], FD_AGI[2], FD_AGI[3], $data_enemies[monstre_id].agi.to_s, 2) self.contents.draw_text(FD_EXP[0], FD_EXP[1], FD_EXP[2], FD_EXP[3], $data_enemies[monstre_id].exp.to_s, 2) self.contents.draw_text(FD_GOLD[0], FD_GOLD[1], FD_GOLD[2], FD_GOLD[3], $data_enemies[monstre_id].gold.to_s+" #{Vocab.gold}", 2) # Affichage objets que peuvent donner les ennemis if $data_enemies[monstre_id].drop_item1.kind != 0 item = $data_enemies[monstre_id].drop_item1 case item.kind when 1 icon_index = $data_items[item.item_id].icon_index name = $data_items[item.item_id].name when 2 icon_index = $data_weapons[item.weapon_id].icon_index name = $data_weapons[item.weapon_id].name when 3 icon_index = $data_armors[item.armor_id].icon_index name = $data_armors[item.armor_id].name end opacity = self.contents.font.color == normal_color ? 255 : 128 denom = $data_enemies[monstre_id].drop_item1.denominator.to_s draw_icon(icon_index, FD_DR1[0], FD_DR1[1]+1) self.contents.draw_text(FD_DR1[0]+30, FD_DR1[1], FD_DR1[2], FD_DR1[3], name + " (1/#{denom})", 0) end if $data_enemies[monstre_id].drop_item2.kind != 0 item = $data_enemies[monstre_id].drop_item2 case item.kind when 1 icon_index = $data_items[item.item_id].icon_index name = $data_items[item.item_id].name when 2 icon_index = $data_weapons[item.weapon_id].icon_index name = $data_weapons[item.weapon_id].name when 3 icon_index = $data_armors[item.armor_id].icon_index name = $data_armors[item.armor_id].name end opacity = self.contents.font.color == normal_color ? 255 : 128 denom = $data_enemies[monstre_id].drop_item2.denominator draw_icon(icon_index, FD_DR2[0], FD_DR2[1]+1) self.contents.draw_text(FD_DR2[0]+30, FD_DR2[1], FD_DR2[2], FD_DR2[3], name + " (1/#{denom})", 0) end self.draw_enemy_element_radar_graph($data_enemies[monstre_id], FD_GDE[0], FD_GDE[1], FD_GDE[2]) end def changer_jeu_d_elements(id_jeu) if id_jeu == 0 @element_order = K_ELEMENT_ORDER1 elsif id_jeu == 1 and K_ELEMENT_ORDER2 != nil @element_order = K_ELEMENT_ORDER2 end end end
#-------------------------------------------------------------------------- # ● draw_actor_battler # Dessine le battler de l'acteur aux coordonnées x,y # L'acteur peut aussi bien être un monstre qu'un personnage #-------------------------------------------------------------------------- class Window_Base def draw_actor_battler(actor, x, y) bitmap = Cache.battler(actor.battler_name, actor.battler_hue) cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect) end end
#============================================================================== # ¡ Window_Status #============================================================================== class Window_Base #-------------------------------------------------------------------------- def draw_enemy_element_radar_graph(enemy, x, y, radius = 56) cx = x + radius + FONT_SIZE + 48 cy = y + radius + FONT_SIZE + 32 self.contents.font.color = system_color #self.contents.draw_text(x, y, 134, 32, WORD_ELEMENT_GUARD) for loop_i in 0..NUMBER_OF_ELEMENTS if loop_i == 0 else @pre_x = @now_x @pre_y = @now_y @pre_ex = @now_ex @pre_ey = @now_ey @color1 = @color2 end if loop_i == NUMBER_OF_ELEMENTS eo = @element_order[0] else eo = @element_order[loop_i] end er = element_pourcent(enemy, eo) estr = $data_system.elements[eo] @color2 = er < 0 ? GRAPH_LINE_COLOR_MINUS : er > 100 ? GRAPH_LINE_COLOR_PLUS : GRAPH_LINE_COLOR th = Math::PI * (0.5 - 2.0 * loop_i / NUMBER_OF_ELEMENTS) @now_x = cx + (radius * Math.cos(th)).floor @now_y = cy - (radius * Math.sin(th)).floor @now_wx = cx + ((radius+FONT_SIZE*2/2) * Math.cos(th)).floor - FONT_SIZE @now_wy = cy - ((radius+FONT_SIZE*1/2) * Math.sin(th)).floor - FONT_SIZE/2 @now_vx = cx + ((radius+FONT_SIZE*6/2) * Math.cos(th)).floor - FONT_SIZE @now_vy = cy - ((radius+FONT_SIZE*3/2) * Math.sin(th)).floor - FONT_SIZE/2 @now_ex = cx + (er.abs*radius/100 * Math.cos(th)).floor @now_ey = cy - (er.abs*radius/100 * Math.sin(th)).floor if loop_i == 0 @pre_x = @now_x @pre_y = @now_y @pre_ex = @now_ex @pre_ey = @now_ey @color1 = @color2 else end next if loop_i == 0 self.contents.draw_line(cx+1,cy+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW) self.contents.draw_line(@pre_x+1,@pre_y+1, @now_x+1,@now_y+1, GRAPH_SCALINE_COLOR_SHADOW) self.contents.draw_line(cx,cy, @now_x,@now_y, GRAPH_SCALINE_COLOR) self.contents.draw_line(@pre_x,@pre_y, @now_x,@now_y, GRAPH_SCALINE_COLOR) self.contents.draw_line(@pre_ex,@pre_ey, @now_ex,@now_ey, @color1, 2, @color2) self.contents.font.size = FONT_SIZE self.contents.font.color = system_color self.contents.draw_text(@now_wx,@now_wy, FONT_SIZE*2, FONT_SIZE, estr, 1) self.contents.font.color = Color.new(255,255,255,128) self.contents.draw_text(@now_vx,@now_vy, FONT_SIZE*2, FONT_SIZE, er.to_s + "%", 2) end end
#-------------------------------------------------------------------------- # ● 属性補正値の取得 # element_id : 属性 ID #-------------------------------------------------------------------------- def element_pourcent(enemy, element_id) table = [0,200,150,100,50,0,-100] return table[enemy.element_ranks[element_id]] end end #============================================================================== # ¸ ¦O�����C�u���¦ #============================================================================== class Bitmap def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color) distance = (start_x - end_x).abs + (start_y - end_y).abs if end_color == start_color for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i if width == 1 self.set_pixel(x, y, start_color) else self.fill_rect(x, y, width, width, start_color) end end else for i in 1..distance x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i r = start_color.red * (distance-i)/distance + end_color.red * i/distance g = start_color.green * (distance-i)/distance + end_color.green * i/distance b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance if width == 1 self.set_pixel(x, y, Color.new(r, g, b, a)) else self.fill_rect(x, y, width, width, Color.new(r, g, b, a)) end end end end end
class Game_System attr_accessor :bestiaire alias kraz_bestiaire_initialize initialize def initialize @bestiaire = [] for i in 0...$data_enemies.size @bestiaire[i] = 0 end kraz_bestiaire_initialize end end Le script bestiaire. - Code:
-
########################################################################################## # # script écrit par : Raizen ZENTRIX # # script Réputation # Version 2.0 # # Autres infos sur : http://rpgmvx-rz.forumactif.com # # # Versions précédentes : # + version 1.0 (sur RPG Maker VX) # ########################################################################################## =begin
Ce script permet de rajouter dans le menu l'option "Réputation", qui contient la réputation de l'équipe, leurs points de réputations actuelles, ainsi que les autres réputations accompagnées d'une image pour chaque réput.
Pour le bon fonctionnement du script, suivez pas à pas et ATTENTIVEMENT les instructions dans le script.
En tout, il y a deux modifications obligatoires à faire.
Pour utiliser le script ce qui veut dire changer la réputation de l'équipe au cours du jeu, il faut changer les points de réputation, évident, non ? Pour cela, vous devez appeler un script par event, et y mettre l'une de ces commandes :
$reput_points += M (Pour augmenter la valeur des points d'un montant de M)
$reput_points -= M (Pour les diminuer d'un montant de M)
Facile, non ? ^^
Maintenant, passons au choses sérieuses : Les modifications !
Au faîte, j'allais oublier, le script est à placer au dessus de Main ^^'.
=end
######################################### Le script ########################################
class Scene_Reputation # C'est la variable des points de réputation, comme vous voyez elle est égale à la valeur # 0, car au début, l'équipe aura 0 point de réputation, mais vous pouvez toujours #modifier cette valeur si vous voulez que votre équipe ne commence pas avec 0. # N.B : # La variable peut ausi être de valeur négative ! # La valeur de la variable doit être un nombre entier ! $reput_points = 0 def main #--------------------------------------------------------------------- A MODIFIER ------------------------------------------------------------------- # Ici, vous devez mettre les noms de vos réputations POSITIVES, dans la variable # @pos_reputs, les points de réputations requis dans la variable @pos_points, # ainsi que le nom des images des réputations dans la variable @pos_images, # et enfin, la couleur de la réputation dans la variable @pos_colors. # Suivez l'exemple : @pos_reputs = ["Neutre", "Amical", "Bon", "Noble", "Chevalier", "Epée Célèste"] # ici, on mets les noms des réputations positives entre guillemets, et on les sépare par # des virgules. @pos_points = [0, 500, 1000, 2000, 5000, 10000] # ici, on mets le nombre de points requis pour avoir chaque réputation, on doit les # mettre en ordre, si on prend cet exemple, on a pour la réputation : # "Neutre" => 0 points # "Amical" => 200 points # "Bon" => 500 points # ... et ainsi de suite. @pos_images = [ "image_neutre", "ami007", "Bon_picture", "image_noble", "image_chevalier", "image_epe_celeste" ] # ici, on mets le noms des images de chaque réputation, en ordre, si on prend cet # exemple, le nom de l'image de la réputation : # "Neutre" => "image_neutre" # "Amical" => "ami007" # "Bon" => "Bon_picture" # ... et ainsi de suite. # N.B : # le nom des images ne doit pas contenir l'extension ! # les images doivent être mise dans le dossier Pictures dans Graphics ! # le format conseillé des images est de 340x236 ! # n'oubliez pas les virgules entre les noms des images ! @pos_colors = [ Color.new(255, 255, 255), Color.new(0, 190, 255), Color.new(0, 150, 255), Color.new(0, 90, 255), Color.new(0, 0, 255), Color.new(0, 255, 0) ] # ici, on mets la couleur de chaque réputation en ordre, il faut procéder comme # ceci : # Color.new(a, b, c) # avec : # a : chiffre représentant la tendance de la couleur Rouge # b : la tendance de la couleur Verte # c : et enfin celle de la couleur Bleue # si on prend cet exemple, la couleur de la réputation : # "Neutre" => Color.new(255, 255, 255) # "Amical" => Color.new(0, 190, 255) # "Bon" => Color.new(0, 150, 255) # ... et ainsi de suite. # N.B : # n'oubliez pas que vous devez avoir le même nombre de réputations que les noms # des couleurs, des images et des points, en d'autre termes, si vous avez 6 réputations # (comme c'est le cas), vous devez avoir 6 points, 6 noms d'images et 6 couleurs !
#-------------------------------------------------------------- FIN DE LA 1ERE MODIF --------------------------------------------------------# #--------------------------------------------------------------------- A MODIFIER ------------------------------------------------------------------- # Ici, vous devez mettre les noms de vos réputations NEGATIVES cette fois, dans # la variable @neg_reputs, les points de réputations requis dans la variable # @neg_points, ainsi que le nom des images des réputations dans la variable # @neg_images, et enfin, la couleur de la réputation dans la variable @neg_colors. # C'est le même processus à suivre : @neg_reputs = ["Agressif", "Retord", "Malicieux", "Cruel", "Ténèbreux"] # ici, on mets les noms des réputations positives entre guillemets, et on les sépare par # des virgules. @neg_points = [-500, -1000, -2000, -5000, -10000] # ici, on mets le nombre de points requis pour avoir chaque réputation, on doit les # mettre en ordre, si on prend cet exemple, on a pour la réputation : # "Agressif" => -200 points # "Retord" => -500 points # "Malicieux" => -1000 points # ... et ainsi de suite. # N.B : # dans cette section des réputations négatives, les points DOIVENT être de valeur # négatives, et c'est une OBLIGATION pour le bon fonctionnement du script ! @neg_images = [ "image_agressif", "retord007", "malicieux_picture", "image_cruel", "image_tenebre", ] # ici, on mets le noms des images de chaque réputation, en ordre, si on prend cet # exemple, le nom de l'image de la réputation : # "Agressif" => "image_agressif" # "Retord" => "retor007" # "Malicieux" => "Malicieux_picture" # ... et ainsi de suite. # N.B : # le nom des images ne doit pas contenir l'extension ! # les images doivent être mise dans le dossier Pictures dans Graphics ! # le format conseillé des images est de 340x236 ! # n'oubliez pas les virgules entre les noms des images ! @neg_colors = [ Color.new(255,190,0), Color.new(255, 150, 0), Color.new(255, 90, 0), Color.new(255, 0, 0), Color.new(140, 140, 140), ] # ici, on mets la couleur de chaque réputation en ordre, il faut procéder comme # ceci : # Color.new(a, b, c) # avec : # a : chiffre représentant la tendance de la couleur Rouge # b : la tendance de la couleur Verte # c : et enfin celle de la couleur Bleue # si on prend cet exemple, la couleur de la réputation : # "Agressif" => Color.new(255, 190, 0) # "Retord" => Color.new(255, 150, 0) # "Malicieux" => Color.new(255, 0, 0) # ... et ainsi de suite. # N.B : # n'oubliez pas que vous devez avoir le même nombre de réputations que les noms # des couleurs, des images et des points, en d'autre termes, si vous avez 4 réputations # (comme c'est le cas), vous devez avoir 4 points, 4 noms d'images et 4 couleurs ! #-------------------------------------------------------------- FIN DE LA 2EME MODIF --------------------------------------------------------# # Le texte qu'apparaîtera dans la fenêtre de bienvenue texte1 = "Réputation de l'équipe" # Le texte qu'apparaîtera dans la réputaion actuelle de l'équipe texte2 = "Réputation actuelle :" # Le texte qu'apparaîtera dans les points de réputation actuelles de l'équipe texte3 = "Points de réputation :" # Le texte qu'apparaîtera dans la liste des réputations connues de l'équipe texte4 = "Réputations connues :" @reputs = @pos_reputs.reverse + @neg_reputs @colors = @pos_colors.reverse + @neg_colors @images = @pos_images.reverse + @neg_images
for i in 0...@pos_reputs.size if $reput_points >= @pos_points[i] @reput_actuelle = @pos_reputs[i] @color_actuelle = @pos_colors[i] end end for i in 0...@neg_reputs.size if $reput_points <= @neg_points[i] @reput_actuelle = @neg_reputs[i] @color_actuelle = @neg_colors[i] end end # La fenêtre de bienvenue : @welcome_window = Window_Base.new (0, 0, 544, 64) @welcome_window.contents.draw_text (4, 0, 544, 32, texte1, 1) # La fenêtre où apparaîtera la réputation actuelle de l'équipe : @reput_actuelle_window = Window_Base.new (200, 64, 344, 56) @reput_actuelle_window.contents.draw_text (4, 0, @reput_actuelle_window.width - 40, 28, texte2, 0) @reput_actuelle_window.contents.font.color = @color_actuelle @reput_actuelle_window.contents.draw_text (4, 0, @reput_actuelle_window.width - 40, 28, @reput_actuelle.to_s, 2) # La fenêtre où apparaîteront les points de réputation actuelles de l'équipe : @points_window = Window_Base.new (200, 120, 344, 56) @points_window.contents.draw_text (4, 0, @points_window.width - 40, 28, texte3, 0) @points_window.contents.font.color = @color_actuelle @points_window.contents.draw_text (4, 0, @points_window.width - 40, 28, $reput_points.to_s, 2) # La fenêtre qui sera en haut de la liste des réputations connues : @head_window = Window_Base.new (0, 64, 200, 56) @head_window.contents.draw_text (4, 0, @head_window.width - 40, 28, texte4, 0) # La fenêtre où apparaîteront les réputations connues de l'équipe : @reput_window = Raizen_Reput2_Command.new (200, @reputs, 304) @reput_window.y = 120
for i in 0...@reputs.size @reput_window.draw_item (i, @colors[i]) end # La fenêtre où apparaîtera les images des réputaions : @images_window = Window_Base.new (200, 176, 344, 240) @images_window.back_opacity = 0 # Le sprite des images : @reput_sprite = Sprite.new @reput_sprite.x = @images_window.x + 2 @reput_sprite.y = @images_window.y + 2 Graphics.transition loop do Graphics.update Input.update create_sprite if $scene != self break end end Graphics.freeze @welcome_window.dispose @reput_actuelle_window.dispose @points_window.dispose @head_window.dispose @reput_window.dispose @images_window.dispose @reput_sprite.dispose end def create_sprite index = @reput_window.index @reput_sprite.bitmap = Cache.picture(@images[index]) update end def update @welcome_window.update @reput_actuelle_window.update @points_window.update @head_window.update @reput_window.update @images_window.update update_command end def update_command if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Menu.new(4) end end end Réputation part 1 Et le script central qui gèrent le menu: - Code:
-
#============================================================================== # Création de Raizen_Reput2_Command #==============================================================================
class Raizen_Reput2_Command < Window_Selectable
def initialize(width, commands, height, column_max = 1, row_max = 0, spacing = 32) if row_max == 0 row_max = (commands.size + column_max - 1) / column_max end if (row_max*WLH + 32) >= height super(0, 0, width, height, spacing) else super(0, 0, width, row_max * WLH + 32, spacing) end @commands = commands @item_max = commands.size @column_max = column_max self.contents.dispose self.contents = Bitmap.new(width - 32, @item_max * WLH) refresh self.index = 0 end
def refresh self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end
def draw_item(index, color) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = color self.contents.draw_text(rect, @commands[index]) end end
#============================================================================== # Modification de Scene_Menu #============================================================================== class Scene_Menu < Scene_Base
def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end s7 = "Bestiaire" # Ajout de s7 pour le Bestiaire s8 = "Réputation" # Et là dans la liste des choix j'ajoute bestiaire entre Status et Sauvegarde @command_window = Window_Command.new(160, [s1, s2, s3, s4, s7,s8, s5, s6])
@command_window.index = @menu_index if $game_party.members.size == 0 @command_window.draw_item(0, false) @command_window.draw_item(1, false) @command_window.draw_item(2, false) @command_window.draw_item(3, false) end if $game_system.save_disabled @command_window.draw_item(4, false) end end
def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Skill, equipment, status start_actor_selection when 4 # Bestiaire $scene = Scene_Bestiaire.new # On lance la scene du Bestiaire when 5 #reputation $scene = Scene_Reputation.new when 6 # Save $scene = Scene_File.new(true, false, false) when 7 # End Game $scene = Scene_End.new end end end end
#============================================================================== # Modification de Scene_File #============================================================================== class Scene_File < Scene_Base def return_scene if @from_title $scene = Scene_Title.new elsif @from_event $scene = Scene_Map.new else $scene = Scene_Menu.new(5) end end def write_save_data(file) characters = [] for actor in $game_party.members characters.push([actor.character_name, actor.character_index]) end $game_system.save_count += 1 $game_system.version_id = $data_system.version_id @last_bgm = RPG::BGM::last @last_bgs = RPG::BGS::last Marshal.dump(characters, file) Marshal.dump(Graphics.frame_count, file) Marshal.dump(@last_bgm, file) Marshal.dump(@last_bgs, file) Marshal.dump($game_system, file) Marshal.dump($game_message, file) Marshal.dump($game_switches, file) Marshal.dump($game_variables, file) Marshal.dump($game_self_switches, file) Marshal.dump($game_actors, file) Marshal.dump($game_party, file) Marshal.dump($game_troop, file) Marshal.dump($game_map, file) Marshal.dump($game_player, file) Marshal.dump($reput_points, file) end def read_save_data(file) characters = Marshal.load(file) Graphics.frame_count = Marshal.load(file) @last_bgm = Marshal.load(file) @last_bgs = Marshal.load(file) $game_system = Marshal.load(file) $game_message = Marshal.load(file) $game_switches = Marshal.load(file) $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_actors = Marshal.load(file) $game_party = Marshal.load(file) $game_troop = Marshal.load(file) $game_map = Marshal.load(file) $game_player = Marshal.load(file) $reput_points = Marshal.load(file) if $game_system.version_id != $data_system.version_id $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end end end
#============================================================================== # Modification de Scene_End #============================================================================== class Scene_End < Scene_Base def return_scene $scene = Scene_Menu.new(6) end end
############################## Fin du script ####################################### ################################################## # Mog Basic Menu Plus V 1.0 # ################################################## # By Moghunter # http://www.atelier-rgss.com ################################################## #Menu padrão VX com adição de alguns extras, neste #script você poderá trabalhar em cima dele e adaptá-lo #facilmente ao seu jogo. #------------------------------------------------- ############## # Game_Actor # ############## class Game_Actor < Game_Battler def now_exp return @exp - @exp_list[@level] end def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end end ############### # Window_Base # ############### class Window_Base < Window def draw_actor_level_menu(actor, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 32, WLH, Vocab::level_a) self.contents.font.color = normal_color self.contents.draw_text(x + 16, y, 24, WLH, actor.level, 2) end def draw_actor_class_menu(actor, x, y) self.contents.font.color = normal_color self.contents.draw_text(x, y, 85, WLH, actor.class.name) end def exp_gauge_color1 return text_color(30) end def exp_gauge_color2 return text_color(31) end def draw_actor_exp_meter(actor, x, y, width = 100) if actor.next_exp != 0 exp = actor.now_exp else exp = 1 end gw = width * exp / [actor.next_exp, 1].max gc1 = exp_gauge_color1 gc2 = exp_gauge_color2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, "Exp") self.contents.font.color = normal_color xr = x + width self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2) end end ##################### # Window_MenuStatus # ##################### class Window_MenuStatus < Window_Selectable def initialize(x, y) super(x, y, 384, 416) refresh self.active = false self.index = -1 end def refresh self.contents.clear @item_max = $game_party.members.size for actor in $game_party.members draw_actor_face(actor, 2, actor.index * 96 + 2, 92) x = 104 y = actor.index * 96 + WLH / 2 draw_actor_name(actor, x, y) draw_actor_class_menu(actor, x + 120, y) draw_actor_level_menu(actor, x + 200, y) draw_actor_state(actor, x, y + WLH * 2) draw_actor_hp(actor, x + 120, y + WLH * 1) draw_actor_mp(actor, x + 120, y + WLH * 2) draw_actor_exp_meter(actor, x , y + WLH * 1) end end def update_cursor if @index < 0 self.cursor_rect.empty elsif @index < @item_max self.cursor_rect.set(0, @index * 96, contents.width, 96) elsif @index >= 100 self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96) else self.cursor_rect.set(0, 0, contents.width, @item_max * 96) end end end ############ # Game_Map # ############ class Game_Map attr_reader :map_id def mpname $mpname = load_data("Data/MapInfos.rvdata") $mpname[@map_id].name end end ############### # Window_Time # ############### class Window_Mapname < Window_Base def initialize(x, y) super(x, y+46, 160, WLH + 45) refresh end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0-10, 120, 32, "Localisation") self.contents.font.color = normal_color self.contents.draw_text(4, 10, 120, 32, $game_map.mpname.to_s, 2) end end ############### # Window_Time # ############### class Window_Time < Window_Base def initialize(x, y) super(x, y+22, 160, WLH + 45) refresh end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0-10, 120, 32, "Temps de Jeu") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(4, 10, 120, 32, text, 2) end def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end ############## # Scene_Menu # ############## class Scene_Menu def main start perform_transition Input.update loop do Graphics.update Input.update update break if $scene != self end Graphics.update pre_terminate Graphics.freeze terminate end def initialize(menu_index = 0) @menu_index = menu_index end def create_menu_background @menuback_sprite = Sprite.new @menuback_sprite.bitmap = $game_temp.background_bitmap @menuback_sprite.color.set(16, 16, 16, 128) update_menu_background end def create_menu_background @menuback_sprite = Sprite.new @menuback_sprite.bitmap = $game_temp.background_bitmap @menuback_sprite.color.set(16, 16, 16, 128) update_menu_background end def dispose_menu_background @menuback_sprite.dispose end def update_menu_background end def perform_transition Graphics.transition(10) end def start create_menu_background create_command_window @gold_window = Window_Gold.new(0, 360) @status_window = Window_MenuStatus.new(160, 0) @playtime_window = Window_Time .new(0, 270) @mapname_window = Window_Mapname.new(0, 178) @status_window.openness = 0 @playtime_window.openness = 0 @mapname_window.openness = 0 @gold_window.openness = 0 @status_window.open @playtime_window.open @mapname_window.open @gold_window.open end def pre_terminate @status_window.close @playtime_window.close @mapname_window.close @gold_window.close @command_window.close begin @status_window.update @playtime_window.update @mapname_window.update @gold_window.update @command_window.update Graphics.update end until @status_window.openness == 0 end def terminate dispose_menu_background @command_window.dispose @gold_window.dispose @status_window.dispose @playtime_window.dispose @mapname_window.dispose end def update update_menu_background @command_window.update @gold_window.update @status_window.update @mapname_window.update @playtime_window.update if @command_window.active update_command_selection elsif @status_window.active update_actor_selection end end def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6]) @command_window.index = @menu_index @command_window.openness = 0 @command_window.open if $game_party.members.size == 0 @command_window.draw_item(0, false) @command_window.draw_item(1, false) @command_window.draw_item(2, false) @command_window.draw_item(3, false) end if $game_system.save_disabled @command_window.draw_item(4, false) end end def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 $scene = Scene_Item.new when 1,2,3 start_actor_selection when 4 $scene = Scene_File.new(true, false, false) when 5 $scene = Scene_End.new end end end def start_actor_selection @command_window.active = false @status_window.active = true if $game_party.last_actor_index < @status_window.item_max @status_window.index = $game_party.last_actor_index else @status_window.index = 0 end end def end_actor_selection @command_window.active = true @status_window.active = false @status_window.index = -1 end def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @command_window.index when 1 $scene = Scene_Skill.new(@status_window.index) when 2 $scene = Scene_Equip.new(@status_window.index) when 3 $scene = Scene_Status.new(@status_window.index) end end end end $mogscript = {} if $mogscript == nil $mogscript["basic_menu_plus"] = true #============================================================================== # ■ Intégration du Bestiaire 2.0 dans le menu de base (RPG Maker VX) #------------------------------------------------------------------------------ # par Krazplay #------------------------------------------------------------------------------ # Ceci ne fonctionnera pas si vous avez déjà des modifications dans votre # menu principal ! # Dans ce cas-là pas de miracle, soit vous modifiez votre menu vous-même, # soit vous essayer de voir ça dans le sujet du script sur Oniromancie # (http://www.rpg-maker.fr) #============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end s7 = "Bestiaire" # Ajout de s7 pour le Bestiaire s8 = "Réputation" # Et là dans la liste des choix j'ajoute bestiaire entre Status et Sauvegarde @command_window = Window_Command.new(160, [s1, s2, s3, s4, s7,s8, s5, s6]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(5, false) # Disable save end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Skill, equipment, status start_actor_selection when 4 # Bestiaire $scene = Scene_Bestiaire.new # On lance la scene du Bestiaire when 5 #reputation $scene = Scene_Reputation.new when 6 # Save $scene = Scene_File.new(true, false, false) when 7 # End Game $scene = Scene_End.new end end end end
Voila... J'espère que c'est pas trop tard (4mois...) Ha oui et les scripts d'origines doivent le rester normalement... |
|