Organ
Messages : 700
| Sujet: Fenêtre de quêtes Sam 23 Oct - 21:01 | |
| Hello makeurs! Voici voilà un script de Raitosan, qui permet d'afficher une fenêtre de quêtes... Hop des screens, parce que l'image vaut plus qu'un simple texte: - Spoiler:
Et le script: - Spoiler:
#============================================================================== # Script de Quêtes pour RPG Maker VX Version2 par Raitosan [23/08/2010] rpg-maker-vx.bbactif.com #============================================================================== # Class Quete #============================================================================== class Quete attr_accessor:nom attr_accessor:description attr_accessor:objets attr_accessor:nb_objets attr_accessor:interrupteur attr_accessor:recompenses def initialize # Variables d'information de la quête @nom = "" @description = [] @objets = [] @nb_objets = [] @interrupteur = 0 @recompenses = [] end # end of initialize end # end of class Quete #============================================================================== # Module M_Quete #============================================================================== module M_Quete attr_accessor:Quetes # Vocabulaire Quete_terminee = "Terminée" Quete_bloquee = "Bloquée" Quete_indisponible = "Aucune quête n'est disponible" Indisponible = "Indisponible" Nom_Quete_indisponible = "Aucune quête disponible" Recompenses = "Récompenses:" # Mot ou phrase avant les récompenses Points_exp = "points d'Exp" # Vous avez gagner X "points d'Exp" Argent = "Po" # Nom de l'argent # Couleurs Couleur_Base = Color.new(255,255,255) # Couleur de base Objets_Non_Possede = Color.new(170,170,170) # Le joueur ne possède pas l'objet Objets_Possede = Color.new(255,255,255) # Le joueur possède au moins un objet, mais pas le nombre requis Objets_Complets = Color.new(0,255,0) # Le joueur possède le bon nombre d'objet(ou plus) # Nom des images contenu dans Pictures/ Img_Exp = "exp" # Icone de l'exp Img_Po = "po" # Icone de l'argent # Variables pour les récompenses Exp = 0 Po = 1 Objet = 2 Arme = 3 Armure = 4 # Autres Position_Menu = 5 # Indique la position du curseur lorsque vous retournez dans le menu # On créer les quetes ici Quetes = [] Quetes.push(Quete.new) # On créer la première quête Quetes[0].nom = "iTi Maison?" # Nom de la quête Quetes[0].description.push("Trouvez la maison des quêtes. Elle se") # On créer la première ligne de description Quetes[0].description.push("trouve dans le village, et possède une") # On créer la deuxième ligne de description Quetes[0].description.push("insigne avec un livre. Elle vous attend!") # On créer la deuxième ligne de description Quetes[0].objets.push(false) # Aucuns objets n'est requis pour finir la quête Quetes[0].interrupteur = 40 # Quand l'interrupteur 40 sera activer, la quête sera marquée comme Terminée Quetes[0].recompenses.push(false) # Aucunes récompenses Quetes.push(Quete.new) # On créer la deuxième quête Quetes[1].nom = "Nom de la Quête" # Nom de la quête #Ici, j'ai créer une boucle qui ajoute les commentaires à ma place, désoler j'avais la flème de le faire^^ for x in 1...9 Quetes[1].description.push("Ligne de description " + x.to_s) # On créer la première ligne de description end Quetes[1].objets.push([Objet,25]) Quetes[1].objets.push([Objet,15]) Quetes[1].objets.push([Objet,7]) Quetes[1].objets.push([Arme,17]) Quetes[1].objets.push([Armure,2]) Quetes[1].nb_objets.push(1) Quetes[1].nb_objets.push(5) Quetes[1].nb_objets.push(3) Quetes[1].nb_objets.push(1) Quetes[1].nb_objets.push(2) Quetes[1].interrupteur = 41 Quetes[1].recompenses.push([Objet, 15]) Quetes[1].recompenses.push([Objet, 5]) Quetes[1].recompenses.push([Arme, 7]) Quetes[1].recompenses.push([Arme, 9]) Quetes[1].recompenses.push([Arme, 13]) Quetes[1].recompenses.push([Armure, 17]) Quetes[1].recompenses.push([Exp, 25]) Quetes.push(Quete.new) # On créer la deuxième quête Quetes[2].nom = "La vie en poudre" # Nom de la quête Quetes[2].description.push("Sortez à l'Est du village et tuez des Slime") # On créer la première ligne de description Quetes[2].description.push("Mutan pour obtenir des Poudres de Vie") # On créer la deuxième ligne de description Quetes[2].objets.push([Objet,27]) # L'objet avec l'ID 27 est requis pour terminer la quête Quetes[2].nb_objets.push(6) # Il faut 6 fois l'objet avec l'ID 27 pour terminer la quête Quetes[2].interrupteur = 42 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée Quetes[2].recompenses.push([Objet, 1]) # 1ère récompense: 1 fois l'objet avec l'ID 1 (potion) Quetes[2].recompenses.push([Po, 350]) # 2ème récompense: 350 PO Quetes[2].recompenses.push([Exp, 50]) # 3ème récompense: 50 points d'Exp Quetes.push(Quete.new) # On créer la deuxième quête Quetes[3].nom = "Takaya...ki?" # Nom de la quête Quetes[3].description.push("Trouvez Takayami, et lui parler. Il se") # On créer la première ligne de description Quetes[3].description.push("trouve en dehors du village, vers l'Est.") # On créer la deuxième ligne de description Quetes[3].objets.push(false) # Pas d'objets requis pour terminer la quête Quetes[3].interrupteur = 43 # Quand l'interrupteur 42 sera activer, la quête sera marquée comme Terminée Quetes[3].recompenses.push(false) # Pas de récompenses end #============================================================================== # Class Scene_Quete #============================================================================== class Scene_Quete < Scene_Base def start create_menu_background # Fond transparent create_pictures @quetes = M_Quete::Quetes # On ajoutes les quêtes @marge = 10 # Marge à gauche dans la fenêtre d'info de la quête @espace = 24 # Taille des lignes, et taille des sauts de lignes @nb_lines = 0 # Nombre de ligne qu'utilise la quête create_tab @liste = Window_Command.new(150, @tab,1,16) # Liste des quêtes @quete = Window_Informations.new(394, [""], 1, 16) # Informations de la Quête @quete.x = 150 @quete.y = 0 @quete.active = false @quete.visible = false #@quete = Window_Base.new(150,0,394, 416) # Informations de la Quête end # end of def start def terminate dispose_menu_background @liste.dispose @quete.dispose end # end of def terminate #=========================================================================== # def create_pictures #===========================================================================
def create_pictures @quete_terminee = Cache.picture(M_Quete::Img_Quete_terminee) # Image des quêtes terminées @quete_bloquee = Cache.picture(M_Quete::Img_Quete_bloquee) # Image des quêtes bloquées @exp_img = Cache.picture(M_Quete::Img_Exp) # Icone de l'exp @po_img = Cache.picture(M_Quete::Img_Po) #Icone des PO (pièces d'or) end #=========================================================================== # def create_tab #===========================================================================
def create_tab @tab = [] if @quetes.size > 0 for x in 0...@quetes.size if $game_switches[@quetes[x].interrupteur] == true @tab.push(M_Quete::Quete_terminee) # Quête terminée else if $game_switches[@quetes[x-1].interrupteur] == true @tab.push(@quetes[x].nom) # Liste des noms de quêtes else if x == 0 @tab.push(@quetes[x].nom) else @tab.push(M_Quete::Quete_bloquee) # Liste des quêtes bloquées end # en of if x == 0 end # end of $game_switches[@quetes[x-1].interrupteur] == true end # end of if $game_switches[@quetes[x].interrupteur] == true end # end of for x in 0...@quetes.size else tab.push(M_Quete::Indisponible) @quetes = [ [M_Quete::Nom_Quete_indisponible, [M_Quete::Quete_indisponible], [], [], []] ] end # end of if @quetes.size > 0 end #========================================================================== # def create_window_information #==========================================================================
def create_window_information(abscisses, ordonnees, w, nb_lignes, nb_colonnes, nb_lignes_afficher) tableau = [] for x in 0...nb_lignes tableau.push("") end @quete.dispose @quete = Window_Informations.new(w, tableau, nb_colonnes, nb_lignes_afficher) # Informations de la Quête @quete.x = abscisses @quete.y = ordonnees @quete.active = true @quete.visible = true end #========================================================================== # def objets_requis? #========================================================================== def objets_requis? if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false return true end end #========================================================================== # def recompense? #========================================================================== def recompense? if @quetes[@liste.index].recompenses[0] != false return true end end #========================================================================== # def saut_de_ligne #========================================================================== def saut_de_ligne @nb_lines += 1 end #========================================================================== # def afficher_nom #==========================================================================
def afficher_nom @quete.contents.draw_text(0,0,362,20, @quetes[@liste.index].nom, 1) # Nom de la Quête @nb_lines += 1 saut_de_ligne end #========================================================================== # def afficher_description #==========================================================================
def afficher_description description = "" for x in 0...@quetes[@liste.index].description.size # Description de la Quête description = @quetes[@liste.index].description[x] hauteur = @espace*@nb_lines @quete.contents.draw_text(@marge, hauteur, 394, @espace, description, 0) @nb_lines += 1 end # end of for x in 0...@quetes[@liste.index].description.size if objets_requis? saut_de_ligne elsif recompense? saut_de_ligne end end #========================================================================== # def afficher_objets #========================================================================== def afficher_objets if objets_requis? for x in 0...@quetes[@liste.index].objets.size # Couleurs if $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) <= 0 @quete.contents.font.color = M_Quete::Objets_Non_Possede # Objet non possédé elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) < @quetes[@liste.index].nb_objets[x] @quete.contents.font.color = M_Quete::Objets_Possede # Objet possédé elsif $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) >= @quetes[@liste.index].nb_objets[x] @quete.contents.font.color = M_Quete::Objets_Complets # Le nombre d'objet est suffisant end # end of if $game_party.item_number($data_items[@quetes[@liste.index].objets[x]]) <= 0 case @quetes[@liste.index].objets[x][0] when M_Quete::Objet # Image de l'objet icone = $data_items[@quetes[@liste.index].objets[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, @marge, hauteur) # Nom de l'objet, nombre d'objet possédé, et requis nom = $data_items[@quetes[@liste.index].objets[x][1]].name nb_objets_posseder = $game_party.item_number($data_items[@quetes[@liste.index].objets[x][1]]) nb_objets_requis = @quetes[@liste.index].nb_objets[x] texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )" @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0) when M_Quete::Arme # Image de l'objet icone = $data_weapons[@quetes[@liste.index].objets[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, @marge, hauteur) # Nom de l'objet, nombre d'objet possédé, et requis nom = $data_weapons[@quetes[@liste.index].objets[x][1]].name nb_objets_posseder = $game_party.item_number($data_weapons[@quetes[@liste.index].objets[x][1]]) nb_objets_requis = @quetes[@liste.index].nb_objets[x] texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )" @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0) when M_Quete::Armure # Image de l'objet icone = $data_armors[@quetes[@liste.index].objets[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, @marge, hauteur) # Nom de l'objet, nombre d'objet possédé, et requis nom = $data_armors[@quetes[@liste.index].objets[x][1]].name nb_objets_posseder = $game_party.item_number($data_armors[@quetes[@liste.index].objets[x][1]]) nb_objets_requis = @quetes[@liste.index].nb_objets[x] texte = nom + " ( " + (nb_objets_posseder).to_s + " / " + nb_objets_requis.to_s + " )" @quete.contents.draw_text(32+@marge,hauteur, 394,@espace, texte , 0) end @nb_lines+=1 end # end of for x in 0...@quetes[@liste.index].objets.size saut_de_ligne end # end of if @quetes[@liste.index].objets.size > 0 && @quetes[@liste.index].objets[0] != false end #========================================================================== # def afficher_objets #========================================================================== def afficher_recompenses if recompense? #On remet la couleur de base @quete.contents.font.color = M_Quete::Couleur_Base # Récompenses hauteur = @espace*@nb_lines @quete.contents.draw_text(@marge, hauteur, 362, @espace, M_Quete::Recompenses, 0) @nb_lines += 1 for x in 0...@quetes[@liste.index].recompenses.size case @quetes[@liste.index].recompenses[x][0] when M_Quete::Exp # Exp # Icone hauteur = @espace*@nb_lines @quete.contents.blt(4+@marge, hauteur,@exp_img,@exp_img.rect) # Texte texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Points_exp @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0) when M_Quete::Po # Argent # Icone hauteur = @espace*@nb_lines @quete.contents.blt(1+@marge, hauteur, @po_img, @po_img.rect) # Texte texte = @quetes[@liste.index].recompenses[x][1].to_s + " " + M_Quete::Argent @quete.contents.draw_text(30+@marge, hauteur, 362, 20, texte, 0) when M_Quete::Objet # Objet # Icone icone = $data_items[@quetes[@liste.index].recompenses[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, @marge ,hauteur) # Nom_Objet nom = $data_items[@quetes[@liste.index].recompenses[x][1]].name @quete.contents.draw_text(30+@marge, hauteur, 394, @espace, nom, 0) when M_Quete::Arme # Arme # Icone icone = $data_weapons[@quetes[@liste.index].recompenses[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, 0+@marge, hauteur) # Nom_Arme nom = $data_weapons[@quetes[@liste.index].recompenses[x][1]].name @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0) when M_Quete::Armure # Armure # Icone icone = $data_armors[@quetes[@liste.index].recompenses[x][1]].icon_index hauteur = @espace*@nb_lines @quete.draw_icon(icone, 0+@marge, hauteur) # Nom_Armure nom = $data_armors[@quetes[@liste.index].recompenses[x][1]].name @quete.contents.draw_text(30+@marge, hauteur,394, @espace, nom, 0) end # end of case @quetes[@liste.index].recompenses[x][0] @nb_lines += 1 end # end of for x in 0...@quetes[@liste.index].recompenses.size @nb_lines -= 1 # On supprime le dernier retour à la ligne end # end of if recompense? end #========================================================================== # def afficher_contenu #==========================================================================
def afficher_contenu afficher_nom afficher_description afficher_objets afficher_recompenses end def nb_line_quest(quete) nb_line_quest = 2 # Titre+saut de ligne nb_line_quest += @quetes[quete].description.size # description if objets_requis? nb_line_quest += 1 # saut de ligne nb_line_quest += @quetes[quete].objets.size # Objets end if recompense? nb_line_quest += 2 #saut de ligne et le mot Recompenses: nb_line_quest += @quetes[quete].recompenses.size # recompenses end return nb_line_quest end def terminee? if @tab[@liste.index] == M_Quete::Quete_terminee # Quête terminée elsif @tab[@liste.index] == M_Quete::Quete_bloquee # Quête bloquée else @nb_lines = 0 afficher_contenu end # end of if @tab[@liste.index] == M_Quete::Quete_terminee end def update update_menu_background # Fond transparent @liste.update if @quete != nil @quete.update end if Input.trigger?(Input::B) # Annulation Sound.play_cancel if @quete.active @quete.active = false @quete.visible = false @liste.active = true else $scene = Scene_Menu.new(M_Quete::Position_Menu) # On retroune dans le menu end elsif Input.trigger?(Input::C) # Validation if @tab[@liste.index] != M_Quete::Quete_bloquee && @tab[@liste.index] != M_Quete::Quete_terminee Sound.play_decision @liste.active = false create_window_information(150, 0, 394, nb_line_quest(@liste.index), 1, 16) else Sound.play_buzzer end
@quete.contents.font.color = M_Quete::Couleur_Base # On met la couleur du texte de base. terminee? end # end of if Input.trigger?(Input::B) end # end of def update end # end of class Scene_Quete < Scene_Base
class Window_Informations < Window_Command def refresh create_contents end end
Voiliii, à placer au-dessus de Main | |
|
Kitu
Messages : 6723
| Sujet: Re: Fenêtre de quêtes Mer 6 Juil - 19:52 | |
| Tu peux poster sur un sujet vieux d'un an, si ça te chante. Il est indiqué dans le règlement ( que tu as sûrement dû lire très attentivement, encore une fois ) que le nécropost est effectif si le sujet est uppé pour une raison non valable. Tu n'as pas posé de questions dans ton post, tu n'as pas ajouté d'information utile à l'auteur/la communauté, c'est donc un nécropost. Maintenant que c'est fait, c'est trop tard, tu peux donc poser une question si tu en as envie. | |
|