| Petit Menu (Personnalisable) + UP : Worldmap | |
|
Auteur | Message |
---|
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:43 | |
| Salut, je vais vous donner un script pour faire un petit menu : Voici le script à rajouter avant Main appellez le Scene_Essai : - Code:
-
#============================================================================== # ■ Scene_Menu # Auteur : Quentin BAZIN de www.crazycollec.wb.st #==============================================================================
class Scene_Essai # Début de la classe #-------------------------------------------------------------------------- # ● menu_index #-------------------------------------------------------------------------- def initialize(menu_index = 0) # Initialisation de l'index @menu_index = menu_index end #-------------------------------------------------------------------------- # ● Principal #-------------------------------------------------------------------------- def main # Initialisation des variables @spriteset=Spriteset_Map.new s1 = "Objets" s2 = "Compétences" s3 = "Equiper" s4 = "Sauvegarder" s5 = "Charger" s6 = "Ecran titre" s7 = "Quitter" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7]) # Création d'une fenêtre de commande @command_window.index = @menu_index Graphics.transition # Transition graphique lorsque l'on quitte le menu loop do # Début de la boucle Graphics.update Input.update update # On dit au script d'aller voir la méthode "update" if $scene != self break end end Graphics.freeze # On gèle l'écran @command_window.dispose # On efface la fenêtre de commande @spriteset.dispose end #-------------------------------------------------------------------------- # ● Mise à jour #-------------------------------------------------------------------------- def update # On définie la méthode "update" @command_window.update # Mise à jour de la fenêtre de commande en disant d'aller voir la méthode "update" de la classe contenue dans @command_window, c'est à dire "Command_Window.new". if @command_window.active # Si la fenêtre de commande est active update_command # Aller voir la méthode "update_command" return # Retourné le résultat end end #-------------------------------------------------------------------------- # ● Mise à jour de la commande #-------------------------------------------------------------------------- def update_command # Définition de la méthode "update_command" # B if Input.trigger?(Input::B) #Si l'on appuis sur B (c'est à dire Echap, X, ou 0) $game_system.se_play($data_system.cancel_se) #On joue le son "SE" dont le nom ($data_system.cancel_se) est renvoyer par la méthode "cancel_se" de la classe contenue dans "$data_system". $scene = Scene_Map.new # Aller à la scène : "Scene_Map" return end # C if Input.trigger?(Input::C) # Si l'on appuis sur C (c'est à dire Entrée, ou Espace). case @command_window.index # Etudions les valeurs que peuvent prendre l'index de la fenêtre de commande (c'est à dire la position du curseur dans la commande : premier choix, deuxième choix, etc...) sachant que le premier choix à pour numéro 0. when 0 # Si l'on est sur le premier choix $game_system.se_play($data_system.decision_se) # Jouer la SE $scene = Scene_Item_Mod.new when 1 # Si l'on est sur le deuxième choix $game_system.se_play($data_system.decision_se) $scene = Scene_Skill_Mod.new when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Equip_Mod.new when 3 $game_system.se_play($data_system.decision_se) $scene = Scene_Save_Mod.new when 4 $game_system.se_play($data_system.decision_se) $scene = Scene_Load_Mod.new when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Title.new when 6 $game_system.se_play($data_system.decision_se) command_shutdown end # Fin de la condition return end # Fin la condition (appuis touche) end # Fin de la méthode #-------------------------------------------------------------------------- # ● Fermer le Jeu #-------------------------------------------------------------------------- def command_shutdown # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # BGM、BGS、ME をフェードアウト Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) # シャットダウン $scene = nil end end # Fin de la classe
Dernière édition par Quent42340 le Mar 7 Avr 2009 - 10:10, édité 2 fois |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:45 | |
| Ensuite, il faut rajouter Scene_Item_Mod : - Code:
-
#============================================================================== # ■ Scene_Item #------------------------------------------------------------------------------ # アイテム画面の処理を行うクラスです。 #==============================================================================
class Scene_Item_Mod #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # ヘルプウィンドウ、アイテムウィンドウを作成 @help_window = Window_Help.new @item_window = Window_Item.new # ヘルプウィンドウを関連付け @item_window.help_window = @help_window # ターゲットウィンドウを作成 (不可視・非アクティブに設定) @target_window = Window_Target.new @target_window.visible = false @target_window.active = false # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @help_window.dispose @item_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @help_window.update @item_window.update @target_window.update # アイテムウィンドウがアクティブの場合: update_item を呼ぶ if @item_window.active update_item return end # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ if @target_window.active update_target return end end #-------------------------------------------------------------------------- # ● フレーム更新 (アイテムウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_item # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え $scene = Scene_Essai.new(0) return end # C ボタンが押された場合 if Input.trigger?(Input::C) # アイテムウィンドウで現在選択されているデータを取得 @item = @item_window.item # 使用アイテムではない場合 unless @item.is_a?(RPG::Item) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 使用できない場合 unless $game_party.item_can_use?(@item.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 効果範囲が味方の場合 if @item.scope >= 3 # ターゲットウィンドウをアクティブ化 @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true # 効果範囲 (単体/全体) に応じてカーソル位置を設定 if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end # 効果範囲が味方以外の場合 else # コモンイベント ID が有効の場合 if @item.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @item.common_event_id # アイテムの使用時 SE を演奏 $game_system.se_play(@item.menu_se) # 消耗品の場合 if @item.consumable # 使用したアイテムを 1 減らす $game_party.lose_item(@item.id, 1) # アイテムウィンドウの項目を再描画 @item_window.draw_item(@item_window.index) end # マップ画面に切り替え $scene = Scene_Map.new return end end return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ターゲットウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_target # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # アイテム切れなどで使用できなくなった場合 unless $game_party.item_can_use?(@item.id) # アイテムウィンドウの内容を再作成 @item_window.refresh end # ターゲットウィンドウを消去 @item_window.active = true @target_window.visible = false @target_window.active = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # アイテムを使い切った場合 if $game_party.item_number(@item.id) == 0 # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # ターゲットが全体の場合 if @target_window.index == -1 # パーティ全体にアイテムの使用効果を適用 used = false for i in $game_party.actors used |= i.item_effect(@item) end end # ターゲットが単体の場合 if @target_window.index >= 0 # ターゲットのアクターにアイテムの使用効果を適用 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end # アイテムを使った場合 if used # アイテムの使用時 SE を演奏 $game_system.se_play(@item.menu_se) # 消耗品の場合 if @item.consumable # 使用したアイテムを 1 減らす $game_party.lose_item(@item.id, 1) # アイテムウィンドウの項目を再描画 @item_window.draw_item(@item_window.index) end # ターゲットウィンドウの内容を再作成 @target_window.refresh # 全滅の場合 if $game_party.all_dead? # ゲームオーバー画面に切り替え $scene = Scene_Gameover.new return end # コモンイベント ID が有効の場合 if @item.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @item.common_event_id # マップ画面に切り替え $scene = Scene_Map.new return end end # アイテムを使わなかった場合 unless used # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end return end end end
|
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:47 | |
| Puis Scene_Skill_Mod : - Code:
-
#============================================================================== # ■ Scene_Skill #------------------------------------------------------------------------------ # スキル画面の処理を行うクラスです。 #==============================================================================
class Scene_Skill_Mod #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor_index : アクターインデックス #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # アクターを取得 @actor = $game_party.actors[@actor_index] # ヘルプウィンドウ、ステータスウィンドウ、スキルウィンドウを作成 @help_window = Window_Help.new @status_window = Window_SkillStatus.new(@actor) @skill_window = Window_Skill.new(@actor) # ヘルプウィンドウを関連付け @skill_window.help_window = @help_window # ターゲットウィンドウを作成 (不可視・非アクティブに設定) @target_window = Window_Target.new @target_window.visible = false @target_window.active = false # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @help_window.dispose @status_window.dispose @skill_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @help_window.update @status_window.update @skill_window.update @target_window.update # スキルウィンドウがアクティブの場合: update_skill を呼ぶ if @skill_window.active update_skill return end # ターゲットウィンドウがアクティブの場合: update_target を呼ぶ if @target_window.active update_target return end end #-------------------------------------------------------------------------- # ● フレーム更新 (スキルウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_skill # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え $scene = Scene_Essai.new(1) return end # C ボタンが押された場合 if Input.trigger?(Input::C) # スキルウィンドウで現在選択されているデータを取得 @skill = @skill_window.skill # 使用できない場合 if @skill == nil or not @actor.skill_can_use?(@skill.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 効果範囲が味方の場合 if @skill.scope >= 3 # ターゲットウィンドウをアクティブ化 @skill_window.active = false @target_window.x = (@skill_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true # 効果範囲 (単体/全体) に応じてカーソル位置を設定 if @skill.scope == 4 || @skill.scope == 6 @target_window.index = -1 elsif @skill.scope == 7 @target_window.index = @actor_index - 10 else @target_window.index = 0 end # 効果範囲が味方以外の場合 else # コモンイベント ID が有効の場合 if @skill.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @skill.common_event_id # スキルの使用時 SE を演奏 $game_system.se_play(@skill.menu_se) # SP 消費 @actor.sp -= @skill.sp_cost # 各ウィンドウの内容を再作成 @status_window.refresh @skill_window.refresh @target_window.refresh # マップ画面に切り替え $scene = Scene_Map.new return end end return end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 次のアクターへ @actor_index += 1 @actor_index %= $game_party.actors.size # 別のスキル画面に切り替え $scene = Scene_Skill.new(@actor_index) return end # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 前のアクターへ @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # 別のスキル画面に切り替え $scene = Scene_Skill.new(@actor_index) return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ターゲットウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_target # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # ターゲットウィンドウを消去 @skill_window.active = true @target_window.visible = false @target_window.active = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # SP 切れなどで使用できなくなった場合 unless @actor.skill_can_use?(@skill.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # ターゲットが全体の場合 if @target_window.index == -1 # パーティ全体にスキルの使用効果を適用 used = false for i in $game_party.actors used |= i.skill_effect(@actor, @skill) end end # ターゲットが使用者の場合 if @target_window.index <= -2 # ターゲットのアクターにスキルの使用効果を適用 target = $game_party.actors[@target_window.index + 10] used = target.skill_effect(@actor, @skill) end # ターゲットが単体の場合 if @target_window.index >= 0 # ターゲットのアクターにスキルの使用効果を適用 target = $game_party.actors[@target_window.index] used = target.skill_effect(@actor, @skill) end # スキルを使った場合 if used # スキルの使用時 SE を演奏 $game_system.se_play(@skill.menu_se) # SP 消費 @actor.sp -= @skill.sp_cost # 各ウィンドウの内容を再作成 @status_window.refresh @skill_window.refresh @target_window.refresh # 全滅の場合 if $game_party.all_dead? # ゲームオーバー画面に切り替え $scene = Scene_Gameover.new return end # コモンイベント ID が有効の場合 if @skill.common_event_id > 0 # コモンイベント呼び出し予約 $game_temp.common_event_id = @skill.common_event_id # マップ画面に切り替え $scene = Scene_Map.new return end end # スキルを使わなかった場合 unless used # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end return end end end
|
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:48 | |
| Puis Scene_Equip_Mod - Code:
-
#============================================================================== # ■ Scene_Equip #------------------------------------------------------------------------------ # 装備画面の処理を行うクラスです。 #==============================================================================
class Scene_Equip_Mod #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor_index : アクターインデックス # equip_index : 装備インデックス #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index @equip_index = equip_index end #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # アクターを取得 @actor = $game_party.actors[@actor_index] # ウィンドウを作成 @help_window = Window_Help.new @left_window = Window_EquipLeft.new(@actor) @right_window = Window_EquipRight.new(@actor) @item_window1 = Window_EquipItem.new(@actor, 0) @item_window2 = Window_EquipItem.new(@actor, 1) @item_window3 = Window_EquipItem.new(@actor, 2) @item_window4 = Window_EquipItem.new(@actor, 3) @item_window5 = Window_EquipItem.new(@actor, 4) # ヘルプウィンドウを関連付け @right_window.help_window = @help_window @item_window1.help_window = @help_window @item_window2.help_window = @help_window @item_window3.help_window = @help_window @item_window4.help_window = @help_window @item_window5.help_window = @help_window # カーソル位置を設定 @right_window.index = @equip_index refresh # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @help_window.dispose @left_window.dispose @right_window.dispose @item_window1.dispose @item_window2.dispose @item_window3.dispose @item_window4.dispose @item_window5.dispose end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh # アイテムウィンドウの可視状態設定 @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) # 現在装備中のアイテムを取得 item1 = @right_window.item # 現在のアイテムウィンドウを @item_window に設定 case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end # ライトウィンドウがアクティブの場合 if @right_window.active # 装備変更後のパラメータを消去 @left_window.set_new_parameters(nil, nil, nil) end # アイテムウィンドウがアクティブの場合 if @item_window.active # 現在選択中のアイテムを取得 item2 = @item_window.item # 装備を変更 last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) # 装備変更後のパラメータを取得 new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef # 装備を戻す @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp # レフトウィンドウに描画 @left_window.set_new_parameters(new_atk, new_pdef, new_mdef) end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @left_window.update @right_window.update @item_window.update refresh # ライトウィンドウがアクティブの場合: update_right を呼ぶ if @right_window.active update_right return end # アイテムウィンドウがアクティブの場合: update_item を呼ぶ if @item_window.active update_item return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ライトウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_right # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え $scene = Scene_Essai.new(2) return end # C ボタンが押された場合 if Input.trigger?(Input::C) # 装備固定の場合 if @actor.equip_fix?(@right_window.index) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # アイテムウィンドウをアクティブ化 @right_window.active = false @item_window.active = true @item_window.index = 0 return end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 次のアクターへ @actor_index += 1 @actor_index %= $game_party.actors.size # 別の装備画面に切り替え $scene = Scene_Equip.new(@actor_index, @right_window.index) return end # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 前のアクターへ @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # 別の装備画面に切り替え $scene = Scene_Equip.new(@actor_index, @right_window.index) return end end #-------------------------------------------------------------------------- # ● フレーム更新 (アイテムウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_item # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # ライトウィンドウをアクティブ化 @right_window.active = true @item_window.active = false @item_window.index = -1 return end # C ボタンが押された場合 if Input.trigger?(Input::C) # 装備 SE を演奏 $game_system.se_play($data_system.equip_se) # アイテムウィンドウで現在選択されているデータを取得 item = @item_window.item # 装備を変更 @actor.equip(@right_window.index, item == nil ? 0 : item.id) # ライトウィンドウをアクティブ化 @right_window.active = true @item_window.active = false @item_window.index = -1 # ライトウィンドウ、アイテムウィンドウの内容を再作成 @right_window.refresh @item_window.refresh return end end end
|
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:48 | |
| Puis Scene_Save_Mod: - Code:
-
#============================================================================== # ■ Scene_Save #------------------------------------------------------------------------------ # セーブ画面の処理を行うクラスです。 #==============================================================================
class Scene_Save_Mod < Scene_File #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super("Sauvegarder dans quel fichier?") end #-------------------------------------------------------------------------- # ● 決定時の処理 #-------------------------------------------------------------------------- def on_decision(filename) # セーブ SE を演奏 $game_system.se_play($data_system.save_se) # セーブデータの書き込み file = File.open(filename, "wb") write_save_data(file) file.close # イベントから呼び出されている場合 if $game_temp.save_calling # セーブ呼び出しフラグをクリア $game_temp.save_calling = false # マップ画面に切り替え $scene = Scene_Map.new return end # メニュー画面に切り替え $scene = Scene_Essai.new(4) end #-------------------------------------------------------------------------- # ● キャンセル時の処理 #-------------------------------------------------------------------------- def on_cancel # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # イベントから呼び出されている場合 if $game_temp.save_calling # セーブ呼び出しフラグをクリア $game_temp.save_calling = false # マップ画面に切り替え $scene = Scene_Map.new return end # メニュー画面に切り替え $scene = Scene_Essai.new(4) end #-------------------------------------------------------------------------- # ● セーブデータの書き込み # file : 書き込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- def write_save_data(file) # セーブファイル描画用のキャラクターデータを作成 characters = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] characters.push([actor.character_name, actor.character_hue]) end # セーブファイル描画用のキャラクターデータを書き込む Marshal.dump(characters, file) # プレイ時間計測用のフレームカウントを書き込む Marshal.dump(Graphics.frame_count, file) # セーブ回数を 1 増やす $game_system.save_count += 1 # マジックナンバーを保存する # (エディタで保存するたびにランダムな値に書き換えられる) $game_system.magic_number = $data_system.magic_number # 各種ゲームオブジェクトを書き込む Marshal.dump($game_system, file) Marshal.dump($game_switches, file) Marshal.dump($game_variables, file) Marshal.dump($game_self_switches, file) Marshal.dump($game_screen, 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) end end
|
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Ven 3 Avr 2009 - 21:49 | |
| Et enfin Scene_Load_Mod : - Code:
-
#============================================================================== # ■ Scene_Load #------------------------------------------------------------------------------ # ロード画面の処理を行うクラスです。 #==============================================================================
class Scene_Load_Mod < Scene_File #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # テンポラリオブジェクトを再作成 $game_temp = Game_Temp.new # タイムスタンプが最新のファイルを選択 $game_temp.last_file_index = 0 latest_time = Time.at(0) for i in 0..3 filename = make_filename(i) if FileTest.exist?(filename) file = File.open(filename, "r") if file.mtime > latest_time latest_time = file.mtime $game_temp.last_file_index = i end file.close end end super("Charger quelle partie?") end #-------------------------------------------------------------------------- # ● 決定時の処理 #-------------------------------------------------------------------------- def on_decision(filename) # ファイルが存在しない場合 unless FileTest.exist?(filename) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # ロード SE を演奏 $game_system.se_play($data_system.load_se) # セーブデータの書き込み file = File.open(filename, "rb") read_save_data(file) file.close # BGM、BGS を復帰 $game_system.bgm_play($game_system.playing_bgm) $game_system.bgs_play($game_system.playing_bgs) # マップを更新 (並列イベント実行) $game_map.update # マップ画面に切り替え $scene = Scene_Map.new end #-------------------------------------------------------------------------- # ● キャンセル時の処理 #-------------------------------------------------------------------------- def on_cancel # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # タイトル画面に切り替え $scene = Scene_Essai.new end #-------------------------------------------------------------------------- # ● セーブデータの読み込み # file : 読み込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- def read_save_data(file) # セーブファイル描画用のキャラクターデータを読み込む characters = Marshal.load(file) # プレイ時間計測用のフレームカウントを読み込む Graphics.frame_count = Marshal.load(file) # 各種ゲームオブジェクトを読み込む $game_system = Marshal.load(file) $game_switches = Marshal.load(file) $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_screen = 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) # マジックナンバーがセーブ時と異なる場合 # (エディタで編集が加えられている場合) if $game_system.magic_number != $data_system.magic_number # マップをリロード $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end # パーティメンバーをリフレッシュ $game_party.refresh end end
Puis dans Scene_Map ligne 122 : - Code:
-
if Input.trigger?(Input::B) # イベント実行中かメニュー禁止中でなければ unless $game_system.map_interpreter.running? or $game_system.menu_disabled # メニュー呼び出しフラグと SE 演奏フラグをセット $game_temp.menu_calling = true $game_temp.menu_beep = true end end à supprimer ! Puis dans la première map, créer un évenement pour activer un interrupteur (n'importe lequel) et dans les évènements globaux dire Processus Parallèle activation "Votre Interrupteur" : Si la touche B est pressée Alors : $scene = Scene_Essai.new Fin Voilà Les scripts sont de moi et les _Mod sont déja là mais je les ai modifiés pour correspondre avec le Scene_Essai. |
|
| |
DragokillerEmbryon
Messages : 828 Age : 27 Date d'inscription : 09/11/2008
Caractéristiques du membre Evolution: Atome Job: Je n'en n'ai pas vraiment pour l'instant XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Sam 4 Avr 2009 - 10:47 | |
| Ce script est long pour ce que c'est... |
|
| |
Zarmakuizz
Messages : 5155 Age : 34 Loisirs : Mon biz' Date d'inscription : 24/09/2006
Caractéristiques du membre Evolution: Atome Job: Faire des passes éclair XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Sam 4 Avr 2009 - 12:28 | |
| Je me demande aussi si c'est beaucoup pour pas grand-chose. C'est bien plus propre d'avoir à modifier/créer un seul script plutôt que de devoir faire des petites modifications parci-parla. |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Sam 4 Avr 2009 - 18:17 | |
| J'ai réécrit les _Mod au lieu de faire des modifs à cause des débutants. |
|
| |
stolas666Embryon
Messages : 600 Age : 33 Loisirs : Musique Date d'inscription : 04/03/2009
Caractéristiques du membre Evolution: Atome Job: Musicos et semi scenariste. XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Sam 4 Avr 2009 - 20:35 | |
| A ok sinon en fait c'est juste des modifs de script c'est sa ? |
|
| |
abigaëlMatière
Messages : 176 Date d'inscription : 21/03/2009
Caractéristiques du membre Evolution: Atome Job: charamaking et scénarios XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Sam 4 Avr 2009 - 20:45 | |
| une fois le menu modifié ainsi , on a un menu comme pokémon game boy non ? |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Dim 5 Avr 2009 - 10:20 | |
| - stolas666 a écrit:
- A ok sinon en fait c'est juste des modifs de script c'est sa ?
Pas exactement non, il faut quand même rajoute Scene_Essai. - sabigaël a écrit:
- une fois le menu modifié ainsi , on a un menu comme pokémon game boy non ?
C'est pas faux, en réalité le menu dans pokémon est à droite mais bon là aussi on peut le mettre à droite. |
|
| |
Zero
Messages : 1755 Age : 32 Loisirs : Fight, Drink and Fuck Date d'inscription : 26/04/2007
Caractéristiques du membre Evolution: Atome Job: La fête ! XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Dim 5 Avr 2009 - 10:56 | |
| Sa bote bien ce truc...
Il y a moyen ( je pense fort bien beaucoup) De Mettre un image en fond au lieu de la windows skin ?
Voyez? xD |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Dim 5 Avr 2009 - 10:59 | |
| - Zero a écrit:
- Sa bote bien ce truc...
Il y a moyen ( je pense fort bien beaucoup) De Mettre un image en fond au lieu de la windows skin ?
Voyez? xD Oui je pense qu'il y a un moyen de mettre autre chose que le Windows Skin mais pour le faire ... L'avantage de ce script est qu'il est personnalisable et facile à utiliser. Même un débutant peut l'utliser |
|
| |
Zarmakuizz
Messages : 5155 Age : 34 Loisirs : Mon biz' Date d'inscription : 24/09/2006
Caractéristiques du membre Evolution: Atome Job: Faire des passes éclair XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Dim 5 Avr 2009 - 16:07 | |
| Une chose que tu peux faire, c'est créer un projet contenant des scripts épurés et customisables pour les débutants. Ou au moins contenant ce script. |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Dim 5 Avr 2009 - 19:11 | |
| - Citation :
- Une chose que tu peux faire, c'est créer un projet contenant des scripts épurés et customisables pour les débutants. Ou au moins contenant ce script.
Bonne idée : http://www.megaupload.com/?d=O36BUNB3 J'espère que ça servira |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Lun 6 Avr 2009 - 17:19 | |
| J'up ce script avec un bonus : un WorldmapCréez un nouveau script : Script_Vol - Code:
-
#============================================================================== # ** Scene_Vol # De Quentin BAZIN htp://www.crazycollec.wb.st #==============================================================================
class Scene_Vol #-------------------------------------------------------------------------- # ● menu_index #-------------------------------------------------------------------------- def initialize(menu_index = 0) # Initialisation de l'index @menu_index = menu_index end #-------------------------------------------------------------------------- # ● Principal #-------------------------------------------------------------------------- def main # Initialisation des variables @spriteset=Spriteset_Map.new s1 = "Téléporter" @command_window = Window_Command_Vol.new(160, [s1]) # Création d'une fenêtre de commande @command_window.index = @menu_index Graphics.transition # Transition graphique lorsque l'on quitte le menu loop do # Début de la boucle Graphics.update Input.update update # On dit au script d'aller voir la méthode "update" if $scene != self break end end Graphics.freeze # On gèle l'écran @command_window.dispose # On efface la fenêtre de commande @spriteset.dispose end #===================================================================== # * Définition de la méthode Teleport #====================================================================== def teleport(map_id, coord_x, coord_y, direction=0) $game_temp.player_transferring = true $game_temp.player_new_map_id = map_id $game_temp.player_new_x = coord_x $game_temp.player_new_y = coord_y $game_temp.player_new_direction = direction Graphics.freeze $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update @command_window.update # Mise à jour de la fenêtre de commande en disant d'aller voir la méthode "update" de la classe contenue dans @command_window, c'est à dire "Command_Window.new". if @command_window.active # Si la fenêtre de commande est active update_command # Aller voir la méthode "update_command" return # Retourné le résultat end end #-------------------------------------------------------------------------- # ● Mise à jour de la commande #-------------------------------------------------------------------------- def update_command # Définition de la méthode "update_command" # B if Input.trigger?(Input::B) #Si l'on appuis sur B (c'est à dire Echap, X, ou 0) $game_system.se_play($data_system.cancel_se) #On joue le son "SE" dont le nom ($data_system.cancel_se) est renvoyer par la méthode "cancel_se" de la classe contenue dans "$data_system". $scene = Scene_Menu.new # Aller à la scène : "Scene_Menu" return end # C if Input.trigger?(Input::C) # Si l'on appuis sur C (c'est à dire Entrée, ou Espace). case @command_window.index # Etudions les valeurs que peuvent prendre l'index de la fenêtre de commande (c'est à dire la position du curseur dans la commande : premier choix, deuxième choix, etc...) sachant que le premier choix à pour numéro 0. when 0 # Si l'on est sur le premier choix $game_system.se_play($data_system.decision_se) # Jouer la SE teleport(2, 17, 3, 2)#Map_Id, coord_x, coord_y, direction 2 = Bas, 4 = Gauche, 6 = Droite, 8 = Haut end # Fin de la condition return end # Fin la condition (appuis touche) end # Fin de la méthode end Puis supprimez Scene_Menu et renommez Scene_Essai en Scene_Menu : - Code:
-
#============================================================================== # ■ Scene_Menu #==============================================================================
class Scene_Menu # Début de la classe #-------------------------------------------------------------------------- # ● menu_index #-------------------------------------------------------------------------- def initialize(menu_index = 0) # Initialisation de l'index @menu_index = menu_index end #-------------------------------------------------------------------------- # ● Principal #-------------------------------------------------------------------------- def main # Initialisation des variables @spriteset=Spriteset_Map.new s1 = "Objets" s2 = "Compétences" s3 = "Equiper" s4 = "Sauvegarder" s5 = "Charger" s6 = "Ecran titre" s7 = "Quitter" s8 = "Status" s9 = "Téléport" @command_window = Window_Command.new(160, [s1, s2, s3, s8, s9, s4, s5, s6, s7]) # Création d'une fenêtre de commande @command_window.index = @menu_index Graphics.transition # Transition graphique lorsque l'on quitte le menu loop do # Début de la boucle Graphics.update Input.update update # On dit au script d'aller voir la méthode "update" if $scene != self break end end Graphics.freeze # On gèle l'écran @command_window.dispose # On efface la fenêtre de commande @spriteset.dispose end #-------------------------------------------------------------------------- # ● Mise à jour #-------------------------------------------------------------------------- def update # On définie la méthode "update" @command_window.update # Mise à jour de la fenêtre de commande en disant d'aller voir la méthode "update" de la classe contenue dans @command_window, c'est à dire "Command_Window.new". if @command_window.active # Si la fenêtre de commande est active update_command # Aller voir la méthode "update_command" return # Retourné le résultat end end #-------------------------------------------------------------------------- # ● Mise à jour de la commande #-------------------------------------------------------------------------- def update_command # Définition de la méthode "update_command" # B if Input.trigger?(Input::B) #Si l'on appuis sur B (c'est à dire Echap, X, ou 0) $game_system.se_play($data_system.cancel_se) #On joue le son "SE" dont le nom ($data_system.cancel_se) est renvoyer par la méthode "cancel_se" de la classe contenue dans "$data_system". $scene = Scene_Map.new # Aller à la scène : "Scene_Map" return end # C if Input.trigger?(Input::C) # Si l'on appuis sur C (c'est à dire Entrée, ou Espace). case @command_window.index # Etudions les valeurs que peuvent prendre l'index de la fenêtre de commande (c'est à dire la position du curseur dans la commande : premier choix, deuxième choix, etc...) sachant que le premier choix à pour numéro 0. when 0 # Si l'on est sur le premier choix $game_system.se_play($data_system.decision_se) # Jouer la SE $scene = Scene_Item.new when 1 # Si l'on est sur le deuxième choix $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new when 3 $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new when 4 $game_system.se_play($data_system.decision_se) $scene = Scene_Vol.new when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 6 $game_system.se_play($data_system.decision_se) $scene = Scene_Load_Mod.new when 7 $game_system.se_play($data_system.decision_se) $scene = Scene_Title.new when 8 $game_system.se_play($data_system.decision_se) command_shutdown end # Fin de la condition return end # Fin la condition (appuis touche) end # Fin de la méthode #-------------------------------------------------------------------------- # ● Fermer le Jeu #-------------------------------------------------------------------------- def command_shutdown # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # BGM、BGS、ME をフェードアウト Audio.bgm_fade(800) Audio.bgs_fade(800) Audio.me_fade(800) # シャットダウン $scene = nil end end # Fin de la classe Et enfin, supprimez tous les _mod sauf Scene_Load_Mod et pour finir copiez le script Window_Command et appellez le Window_Command_Vol puis modifiez l'emplacement de la fenêtre avec la ligne : super(x, y, w, h). Vlà |
|
| |
Quent42340Molécule
Messages : 67 Date d'inscription : 03/04/2009
Caractéristiques du membre Evolution: Atome Job: La création de Jeux :lol: XP: (20/20)
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap Lun 6 Avr 2009 - 17:31 | |
| Et comme le dit Zarmakuizz : - Zarmakuizz a écrit:
- Une chose que tu peux faire, c'est créer un projet contenant des scripts épurés et customisables pour les débutants. Ou au moins contenant ce script.
Le lien de la démo ( menu + worldmap ): http://www.megaupload.com/?d=1YRYMOR5 |
|
| |
Contenu sponsorisé
| Sujet: Re: Petit Menu (Personnalisable) + UP : Worldmap | |
| |
|
| |
| Petit Menu (Personnalisable) + UP : Worldmap | |
|