Chasseur41 Admin
Nombre de messages : 49 Age : 31 Localisation : Vendôme (41) et Tours (37) Loisirs : Création de jeu, musique, livre et sortit Date d'inscription : 04/07/2007
Feuille de personnage Prénom du Personnage: Brutus Nom du Personnage: Macligan Âge du Personnage: 28 ans
| Sujet: Quêtes Sam 6 Oct - 12:46 | |
| Voici un petit script permettant la gestion de quêtes. Appellez se script: Scene_Item - Code:
-
#============================================================================== # ■ Scene_Item #------------------------------------------------------------------------------ # アイテム画面の処理を行うクラスです。 #==============================================================================
class Scene_Mission #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # ヘルプウィンドウ、アイテムウィンドウを作成 @help_window = Window_Help.new @item_window = Window_Mission1.new @mission_desc = Window_Mission2.new # ヘルプウィンドウを関連付け @item_window.help_window = @help_window
Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @help_window.dispose @item_window.dispose @mission_desc.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @help_window.update @item_window.update if @item_window.item != nil name = @item_window.item_name name = "Missions/"+name+".txt" file = File.open(name) @mission_desc.add_content(file.readlines) file.close end @mission_desc.refresh # アイテムウィンドウがアクティブの場合: update_item を呼ぶ if @item_window.active update_item return end end #-------------------------------------------------------------------------- # ● フレーム更新 (アイテムウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_item # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え $scene = Scene_Menu.new(4) return end end end Creéz ensuite un second script, que je nomme : Window_Item - Code:
-
#============================================================================== # ■ Window_Item #------------------------------------------------------------------------------ # アイテム画面、バトル画面で、所持アイテムの一覧を表示するウィンドウです。 #==============================================================================
class Window_Mission1 < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 64, 320, 416) @column_max = 1 refresh self.index = 0 end #-------------------------------------------------------------------------- # ● アイテムの取得 #-------------------------------------------------------------------------- def item return @data[self.index] end
def item_name nom = String.new(@data[self.index].name) nom[0] = "" return nom end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 and $data_items[i].name[0] == 42 @data.push($data_items[i]) end end
@item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- # ● fonction d'affichage des items # index #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] number = $game_party.item_number(item.id) if item.is_a?(RPG::Item) and number == 1 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end case number when 1 etat = "( En cours )" when 2 etat = "( Terminée )" when 3 etat = "( Annulée )" when 4 etat = "( Perdue )" end x = 4 y = index * 32 nom = String.new(item.name) nom[0] = "" rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, nom + " "+etat, 0) end #-------------------------------------------------------------------------- # ● ヘルプテキスト更新 #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end
Et voici le derniez script à ajoutez, vous l'appellerez : Window_Mission2 - Code:
-
class Window_Mission2 < Window_Base def initialize super(0, 64, 320, 416) self.x = 320 self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = 20 @content = Array.new(1,"") refresh end def add_content(x) @content = x end def refresh self.contents.clear self.contents.font.color = normal_color for i in 0...@content.size self.contents.draw_text(16, 16, 288, 16+i*32,@content[i], 0) end end end Vous créez un "nouveau dossier" dans le répertoire avec "graphismes" etc. Vous mettez dedans des fichiers textes. Vous leur mettez un nom. ex:"Mercenaire" Ajoutez ensuite un objet dans la base de données que vous appellerez par le nom que le fichier texte avec une "*" devant. ex:"*Mercenaire". Dans le fichier texte, vous mettrez les consignes de la mission. Dans le répertoire, vous mettrez autant de fichiers textes qu'il y a de missions. Ilvous faudra créer un objet pour chaque mission que vous souhaitez et qui commencera par (*) et qui portera le même nom que la mission. Pour appelez la gestion de quêtes, vous mettez un évènement avec un script dedans. Dans ce script, vous mettrez: $scene = Scene_Mission.new | |
|