Anubis
Villageois (Nv 1)
Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006
|
Sujet: Script mission Mer 13 Sep 2006 - 15:35 |
|
|
Auteur : "créé par Tonyryu, entièrement modifié et optimisé par Corwin "
1) Crez un script " Game_Quests " Collez y - Code:
-
#============================================================================== # ■ 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:
-
#============================================================================== # ■ 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 = red_color else if $game_quests.etatID(@IDquest[i]) == 99 self.contents.font.color = green_color 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 = red_color
else if $game_quests.etatID(@IDquest[self.index]) == 99 text = "Quête terminée avec succés !" @help_window.contents.font.color = green_color
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:
-
#============================================================================== # ■ 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:
-
#============================================================================== # ■ 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
Dernière édition par le Mer 13 Sep 2006 - 15:41, édité 1 fois
|
|
Anubis
Villageois (Nv 1)
Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006
|
Sujet: Re: Script mission Mer 13 Sep 2006 - 15:35 |
|
|
Puis pour finir un " Window_QuestDetails "
- Code:
-
#============================================================================== # ■ Window_QuestDetails # créé par Corwin #------------------------------------------------------------------------------
class Window_QuestDetails < Window_Base
def initialize #super(0, 0, 640, 64) super(0, 0, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 self.contents.font.name = $fontfaceQuest self.contents.font.size = $fontsizeQuest+12 self.contents.font.color = gold_color self.contents.draw_text(0, -8, self.width - 40, 36, "Grimoire des Quêtes...", 1) end
end
Maintenant les modifications des scripts déjà présents
Main - Code:
-
#============================================================================== #============================================================================== # ■ Main #------------------------------------------------------------------------------ # 各クラスの定義が終わった後、ここから実際の処理が始まります。 #==============================================================================
Font.default_name = "Comic Sans MS" Font.default_color = Color.new(255,255,255,255) $defaultfontsize = 28 $defaultfonttype = "Comic Sans MS" begin # Change the $fontface variable to change the font style $fontface = "Comic Sans MS" # Change the $fontsize variable to change the font size $fontsize = 28 # トランジション準備 Graphics.freeze # シーンオブジェクト (タイトル画面) を作成 $scene = Scene_Title.new # $scene が有効な限り main メソッドを呼び出す # définition du type de police d'écriture pour l'affichage des Quêtes $fontfaceQuest = "Comic Sans MS" $fontsizeQuest = 28
while $scene != nil $scene.main end # フェードアウト Graphics.transition(20) rescue Errno::ENOENT # 例外 Errno::ENOENT を補足 # ファイルがオープンできなかった場合、メッセージを表示して終了する filename = $!.message.sub("Ne trouve pas le fichier ou le répertoire - ", "") print("Le ficher #{filename} n'a pas été trouvé.") end
(sachez qu'il contient à peu près tout)
puis dans " scene_save " vers la fin entre les lignes 82 et 83 - Code:
-
Marshal.dump($game_quests.get_etat, file) puis à " scene_Load " entre les lignes 82 et 83 - Code:
-
$game_quests.set_etat( Marshal.load(file)) Et voila fini pour les scripts[/code]
Maintenant ATTENTION car c'est là que 90% des erreurs vont subvenir !
Tout va se passer dans "game_quest"
observons - Code:
-
#quete n°1 1,"Achats", "Aller en ville pour effectuer des achats divers.", 1 représente le nombre d'état de la quête
"achats" et le titre
"aller en ville ..." est un état
Remarquer qu'à la fin il y a toujours une virgule !Si elle n'y est pas vous verrez apparaître une erreur à la quête suivante.
Pour changer les états, changer 1 et rajoutez (dans ce cas mais ça peut-être aussi enlevez) une description entre ""
Pour rajouter ou enlever une quête à la ligne 14 modifier le 4 en fonction de ce que vous voulez faire - Code:
-
@nbre_quete = 4
|
|
Anubis
Villageois (Nv 1)
Nombre de messages : 4
Niveau RPG Maker : Grande connaissance en RPG : plus de 30 script et 1800 ressources
Date d'inscription : 13/09/2006
|
|
Contenu sponsorisé
|
Sujet: Re: Script mission |
|
|
|
|