Inscrit le: 14 Sep 2006, 00:00 Messages: 4 Points d'aide: 0/60
Créations :
Voir ses créations
|
Auteur : "créé par Tonyryu, entièrement modifié et optimisé par Corwin " 1) Crez un script " Game_Quests " Collez y - Code: Tout sélectionner
#============================================================================== # ■ Game_Quests # créé par Tonyryu, entièrement modifié et optimisé par Corwin #------------------------------------------------------------------------------
class Game_Quests #-------------------------------------------------------------------------- # ● intialize #-------------------------------------------------------------------------- def initialize @etat = [] @addr_quete = [] # nombre de quetes @nbre_quete = 4
@quete_declenche = 0
# données des quétes # format : [ nbreEtat, NomQuete, DescriptionEtat1,...,DescriptionEtat2] # @quete = [ #quete n°1 1,"Achats", "Aller en ville pour effectuer des achats divers.",
#quete n°2 2,"Recherche", "Il faut aller voir par-là bas si j'y suis et si j'y suis pas et bien tant pis... on va aller chercher ailleur", "et bien je dois chercher encore",
#quete n°3 4,"Pierres", "A récupérer les pierre Saintes", "les pierres sont dans les repaires des méchants pas bô", "Et bien... encore une seule pierre et j'ai tout un sac, cool !", "... et c'est vrai, c'est la 4ème partie de la quête !",
#quete n°... 2,"Liste des quêtes...","Il est possible de trouver dans le présent grimoire une liste des différentes quêtes à résoudre", "--"
# attention, la dernière quête ne doit pas avoir de virgule à la fin !
]
# initialisation du tableau de recherche rapide des données de quête @offset = 0 for i in 0..(@nbre_quete - 1 ) @etat[i] = 0 @addr_quete[i] = @offset
@offset += (@quete[@offset] + 2) end
end #-------------------------------------------------------------------------- # ● etatID # quest_id : ID de la quete dont on veut connaitre l'etat #-------------------------------------------------------------------------- def etatID(quest_id) quest_id -= 1 if quest_id <= @nbre_quete and @etat[quest_id] != nil return @etat[quest_id] else return 0 end end #-------------------------------------------------------------------------- # ● changer_etat # quest_id : ID de la quete dont on veut changer l'etat # neo_etat : nouvel etat de la quete #-------------------------------------------------------------------------- def changer_etat(quest_id, neo_etat) quest_id -= 1 if quest_id <= @nbre_quete @etat[quest_id] = neo_etat end end
#-------------------------------------------------------------------------- # ● nom # quest_id : ID de la quete dont on veut connaitre le nom #-------------------------------------------------------------------------- def nom(quest_id) quest_id -= 1 if quest_id <= @nbre_quete return @quete[ ( @addr_quete[quest_id] + 1 ) ] end end
#-------------------------------------------------------------------------- # ● etatNom # quest_id : ID de la quete dont on veut connaitre l'etat d'avancement #-------------------------------------------------------------------------- def etatNom(quest_id) quest_id -= 1 if quest_id <= @nbre_quete return @quete[ ( @addr_quete[quest_id] + 1 + @etat[quest_id] ) ] end end
#-------------------------------------------------------------------------- # ● nbreQuete # quest_id : ID de la quete dont on veut connaitre l'etat #-------------------------------------------------------------------------- def nbreQuete() return @nbre_quete end
#-------------------------------------------------------------------------- # ● set_etat # tout_etat : table des etats à rentrer (load) #-------------------------------------------------------------------------- def set_etat(tout_etat) @etat = tout_etat end
#-------------------------------------------------------------------------- # ● get_etat #-------------------------------------------------------------------------- def get_etat return @etat end
#-------------------------------------------------------------------------- # ● set_quete_declenche # quete_ID : #-------------------------------------------------------------------------- def set_quete_declenche( quest_id ) @quete_declenche = quest_id end
#-------------------------------------------------------------------------- # ● get_quete_declenche #-------------------------------------------------------------------------- def get_quete_declenche return @quete_declenche end
#-------------------------------------------------------------------------- # ● declencher #-------------------------------------------------------------------------- def declencher changer_etat(@quete_declenche, 1) end
#-------------------------------------------------------------------------- # ● b_quete_echoue #-------------------------------------------------------------------------- def b_quete_echoue(quest_id) return (etatID(quest_id) == -1 ) end
#-------------------------------------------------------------------------- # ● b_quete_reussi #-------------------------------------------------------------------------- def b_quete_reussi(quest_id) return (etatID(quest_id) == 99 ) end
#-------------------------------------------------------------------------- # ● b_quete_termine #-------------------------------------------------------------------------- def b_quete_termine(quest_id) return (b_quete_echoue(quest_id) or b_quete_reussi(quest_id) ) end
#-------------------------------------------------------------------------- # ● b_quete_commence #-------------------------------------------------------------------------- def b_quete_commence(quest_id) return (etatID(quest_id) != 0) end
#-------------------------------------------------------------------------- # ● b_quete_inconu #-------------------------------------------------------------------------- def b_quete_inconu(quest_id) return (etatID(quest_id) == 0) end
#-------------------------------------------------------------------------- # ● finir_quete #-------------------------------------------------------------------------- def finir_quete(quest_id) changer_etat(quest_id, 99) end
#-------------------------------------------------------------------------- # ● echouer_quete #-------------------------------------------------------------------------- def echouer_quete(quest_id) changer_etat(quest_id, -1) end
end # fin de la classe
ensuite un " Window_Quests " - Code: Tout sélectionner
#============================================================================== # ■ Window_Quests # créé par Tonyryu, entièrement modifié et optimisé par Corwin #------------------------------------------------------------------------------ # Permet de visualiser les quêtes en cours #==============================================================================
class Window_Quests < Window_Selectable #-------------------------------------------------------------------------- # ● initialize #-------------------------------------------------------------------------- def initialize
super(54, 104, 260, 330)
refresh
self.index = 0 self.active = true self.opacity = 0
end
#-------------------------------------------------------------------------- # ● refresh #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil
end
@IDquest = [] @nbreQuestActive = 0
for i in 0...$game_quests.nbreQuete() if $game_quests.etatID(i) != 0 @IDquest[@nbreQuestActive] = (i) @nbreQuestActive += 1 end end
@item_max = (@nbreQuestActive == 0 ? 1 : @nbreQuestActive)
self.contents = Bitmap.new(width - 32, @item_max * 32) self.contents.font.name = $fontfaceQuest self.contents.font.size = $fontsizeQuest self.contents.font.color = normal_color
if @nbreQuestActive != 0 for i in 0...(@nbreQuestActive) if $game_quests.etatID(@IDquest[i]) == -1 self.contents.font.color = Color.new(255,0,0) else if $game_quests.etatID(@IDquest[i]) == 99 self.contents.font.color = Color.new(0,255,0) else self.contents.font.color = normal_color end end
self.contents.draw_text(4, i * 32, 600, 32, $game_quests.nom(@IDquest[i])) end
end end
#-------------------------------------------------------------------------- # ● update_help #-------------------------------------------------------------------------- def update_help if @nbreQuestActive != 0 if $game_quests.etatID(@IDquest[self.index]) == -1 text = "Quête lamentablement échouée." @help_window.contents.font.color = Color.new(255,0,0)
else if $game_quests.etatID(@IDquest[self.index]) == 99 text = "Quête terminée avec succés !" @help_window.contents.font.color = Color.new(0,255,0)
else text = $game_quests.etatNom(@IDquest[self.index]) @help_window.contents.font.color = normal_color end end else text = "Aucune quête en cours..." @help_window.contents.font.color = normal_color end
@help_window.set_text(text)
end end
Ensuite un " Scene_Quests " - Code: Tout sélectionner
#============================================================================== # ■ Scene_Quests # créé par Tonyryu, entièrement modifié et optimisé par Corwin #------------------------------------------------------------------------------ # Permet de gérer l'affichage des quêtes #==============================================================================
class Scene_Quests #-------------------------------------------------------------------------- # ● main #-------------------------------------------------------------------------- def main # Prèparation des fenêtre
@quest_book= Sprite.new @quest_book.bitmap = RPG::Cache.picture("quests") @quest_book.z = 9999 @quest_book.visible = true @quest_book.opacity = 120
# --- @help_window = Window_Help.new @help_window = Window_QuestsMsge.new @quest_window = Window_Quests.new # Définir une fenêtre d'aide @quest_window.help_window = @help_window
@quest_details_window = Window_QuestDetails.new
# Boucle de transition, mise à jour graphique et entré clavier Graphics.transition # boucle loop do # Mise à jour graphique Graphics.update # Mise à jour des entrées clavier Input.update # Mise à jour de la class update
# Si la scene n'existe plus, alors sortir de la boucle if $scene != self break end end # figer les graphiques Graphics.freeze # destruction des objets
@help_window.dispose @quest_window.dispose @quest_details_window.dispose @quest_book.dispose
end #-------------------------------------------------------------------------- # ● update #-------------------------------------------------------------------------- def update # Mise à jour de la fenêtre aide @help_window.update
# Mise à jour de la fenêtre quete @quest_window.update # Gestion des entrées clavier # Si B est appuyé if Input.trigger?(Input::B) # jouer le son d'annulation $game_system.se_play($data_system.cancel_se) # Revenir au menu sur l'élément 6 $scene = Scene_Menu.new(6) return end end end
puis un " Window_QuestsMsge " - Code: Tout sélectionner
#============================================================================== # ■ Window_QuestsMsge # créé par Corwin #------------------------------------------------------------------------------ #==============================================================================
class Window_QuestsMsge < Window_Base def initialize #super(0, 0, 640, 64) super(330, 104, 270, 348) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontfaceQuest self.contents.font.size = $fontsizeQuest self.opacity = 0 end
def set_text(text, align = 0) # テキストとアラインメントの少なくとも一方が前回と違っている場合 if text != @text or align != @align # テキストを再描画 self.contents.clear # -- test check lgueur ligne
self.contents.font.size= $fontsizeQuest -4 height = contents.text_size("Pg").height #pour avoir une hauteur type line_length = 220 #longueur de la ligne line = 0 lgueur_text = text.length # for i in 0...lgueur_text pos = lgueur_text while contents.text_size(text).width > line_length
pos_nulle = 0 pos = 0 # on affiche tant que le texte n'est pas trop long...
while contents.text_size(text[0, pos]).width < line_length && pos < lgueur_text pos += 1 end # on cherche une position nulle à venir pos_nulle = pos while pos_nulle > 0 if text[pos_nulle] == 32 break end pos_nulle -= 1 end #on a trouvé une position nulle (space), on affiche le texte jusqu'à la pos. nulle if pos_nulle == 0 self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos]) text = text[pos, lgueur_text] else self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos_nulle]) text = text[pos_nulle+1, lgueur_text] end line += 1 # permet de descendre d'une ligne pour afficher la suite end if ( text.length > 0 ) self.contents.draw_text(4, 2+line*height, self.width - 40,height, text[0,pos]) line += 1 end line += 1 # end
# -- fin check lgeur ligne
# -- self.contents.draw_text(4, 0, self.width - 40, 32, text, align) @text = text @align = align @actor = nil
end self.visible = true
end
def set_actor(actor) if actor != @actor self.contents.clear draw_actor_name(actor, 4, 0) draw_actor_state(actor, 140, 0) draw_actor_hp(actor, 284, 0) draw_actor_sp(actor, 460, 0) @actor = actor @text = nil self.visible = true end end
def set_enemy(enemy) text = enemy.name state_text = make_battler_state_text(enemy, 112, false) if state_text != "" text += " " + state_text end set_text(text, 1) end end
|
|