Mage Lv.11
Age : 33 Inscrit le : 02/10/2008 Messages : 611
| Sujet: [VX] Tutoriel dans votre jeu Mer 26 Nov 2008 - 14:57 | |
| Tutoriel en cours de jeu. Autheur: modern algebra source script: http://rmrk.net/index.php?PHPSESSID=cae1e43a81a675746277ceda2d1d301d&topic=30151.0 Ce script permet de faire une sorte de tutoriel pendant votre jeu pour aider les autres à comprendre certaines fonction dans votre jeu(si vous le désirez) par exemple, tout comme dans final fantasy X par exemple lorsqu'ils expliquent comment le système sphérier fonctionne. Démo: Télécharger la sur le site à partir du lien que je vous aie passé. (elle est en plus bas que le script et s'apelle Scene Tutorial.rar) screen: Code partie 1: - Code:
-
#============================================================================== # Scene Tutorial # Version 1.0 # Author: modern algebra (rmrk.net) # Date: September 15, 2008 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Description: # This script allows you to freeze user input for a scene and run a special # common event that controls input. Effectively, this allows you to run a # scene and direct a tutorial to that scene that explains what the scene is. # So, if you ever wanted to give the players to your game a tutorial on # using the Menu scene, then this is the script for you. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Instructions: # Okay, this script can be slightly difficult to use, so you have to pay # careful attention to the instructions. # # To start a tutorial, you must use a call script with this code: # # $tutorial.start (scene, common event id) # # where scene is the name of the scene to call, (like Scene_Menu or # Scene_Battle) and common event ID is the ID of the common event that # controls the tutorial. Now, that's the easy part. Setting up the controller # common event will be tricky at first, but once you get the hang of it, # you'll be fine. Now, read the instructions very carefully: # # The Standard Wait Variable - You set what Variable this will be at line # 200. The value of this variable determines how many frames to wait for # after each command. # # The controller common event is similar to a regular common event in some # ways but many of the commands will be unavailable to you while others will # be irrelevant and others still will have a different effect than you would # expect. In the instructions, I will go over the functions of what will be # the most important commands in making a scene tutorial, but I just wanted # to warn you that many commands will not work as you expect them to. (For # instance, pictures, screen tone etc... will only work in a battle or map # tutorial). So, depending on how the scene is built, some things are # possible while others are not. Note, however, that in a number of cases, # you can simulate the effect that is not possible. That being said, it can # get quite convoluted, but that was as far as I was willing to go with this # script. I apologize for the difficulty. # # Anyway, there are a couple of specialized commands that have their function # changed from what they would normally do. These are: # # Control Variable # Set Move Route # # These have been changed so that rather than do what they would normally, # they instead interpret input. Since player input is frozen during a # tutorial, scene movement is handled by you, the game creator. It is done # through these two commands. This can be rather non-intuitive, but for each # value of 0 through 19, a button is attached. It is similar for Set Move # Route, but let's go over the variable way of setting input first. # # To set it, it must be a single variable set to a constant. If any other # option is chosen, then the Control Variable command will function normally. # Also, the control variable command will behave normally if the variable you # choose is the one you choose for setting standard wait time. Anyway, here # is the list of values and their effects: # # 0 - Down Cursor # 1 - Left Cursor # 2 - Right Cursor # 3 - Up Cursor # 4 - Button A # 5 - Button B # 6 - Button C # 7 - Button X # 8 - Button Y # 9 - Button Z # 10 - Button L # 11 - Button R # 12 - SHIFT # 13 - CTRL # 14 - ALT # 15 - F5 # 16 - F6 # 17 - F7 # 18 - F8 # 19 - F9 # # If you want to wait some frames, the Wait command will work normally. # # Set Move Route has a similar set of moves attached. They are: # Move Down - Down Cursor # Move Left - Left Cursor # Move Right - Right Cursor # Move Up - Up Cursor # Move Lower Left - Button A # Move Lower Right - Button B # Move Upper Left - Button C # Move Upper Right - Button X # Move at Random - Button Y # Move Toward Player - Button Z # Move Away from Player - Button L # One Step Forward - Button R # One Step Backward - SHIFT # Jump - CTRL # Wait - Waits for however many frames # Turn Down - ALT # Turn Left - F5 # Turn Right - F6 # Turn Up - F7 # Turn 90 Left - F8 # Turn 90 Right - F9 # # So basically, using those commands will make the scene react as if the # corresponding button had just been pressed. #============================================================================== # *** Input #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased method - trigger?, press?, repeat? #==============================================================================
module Input class << self #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Frame Update #```````````````````````````````````````````````````````````````````````` # Updates tutorial as well if it exists. It does it in Input as all scenes # update Input every frame #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_tutorials_update_9rt update def update $tutorial.update if $tutorial.active? # Run Original Method modalg_tutorials_update_9rt end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Trigger? #```````````````````````````````````````````````````````````````````````` # If Tutorial is running, freezes input and accepts only tutorial input #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_tut_frz_inpt_trig_dj5 trigger? def trigger? (key) return $tutorial.button == key if $tutorial.active? && !$tutorial.upd_input # Run Original Method modalg_tut_frz_inpt_trig_dj5 (key) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Repeat? #```````````````````````````````````````````````````````````````````````` # If Tutorial is running, freezes input and accepts only tutorial input #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_rpt_tutorial_upd_8fn repeat? def repeat? (key) return $tutorial.button == key if $tutorial.active? && !$tutorial.upd_input # Run Original Method modalg_rpt_tutorial_upd_8fn (key) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Press? #```````````````````````````````````````````````````````````````````````` # If Tutorial is running, freezes input and accepts only tutorial input #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_tut_prs_frz_inpt_9nfg press? def press? (key) return $tutorial.button == key if $tutorial.active? && !$tutorial.upd_input # Run Original Method modalg_tut_prs_frz_inpt_9nfg (key) end end end
|
|
Mage Lv.11
Age : 33 Inscrit le : 02/10/2008 Messages : 611
| Sujet: Re: [VX] Tutoriel dans votre jeu Mer 26 Nov 2008 - 15:00 | |
| Code autre et dernière partie - Code:
-
#============================================================================== # ** Tutorial Guide #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This class handles the interpretation of the common event for a tutorial #==============================================================================
class Game_TutorialGuide < Game_Interpreter #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Constant #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # STANDARD WAIT VARIABLE is the ID of the event variable that holds a # standard wait between input commands. Basically, if this is set to 2, # then Variable with ID 2 will control the wait between actions. So, if # Variable with ID 2 is set to 4, then it will wait four frames before # executing the next command in the common event STANDARD_WAIT_VARIABLE = 2 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize super @wait_frames = 0 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Control Variable #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_122 if @params[3] == 0 || @params[0] == STANDARD_WAIT_VARIABLE command_input (@params[4] + 1) else super end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Set Move Route #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_205 @move_route = @params[1].list @moveroute_index = 0 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Wait #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_230 command_wait (@params[0]) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Frame Update #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update # Wait if @wait_frames > 0 @wait_frames -= 1 return end # Execute Move Route Input unless @move_route.nil? loop do # Move on once move route exhausted if @moveroute_index >= (@move_route.size - 1) @move_route = nil @moveroute_index = 0 break end # Execute Input command command_move (@move_route[@moveroute_index]) @moveroute_index += 1 return if @wait_frames > 0 end end return false if @list.nil? return if !execute_command # Execute event command @index += 1 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Command Input # button_code : the key a button corresponds to. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_input (button_value) $tutorial.button = case button_value when 1 then Input::DOWN # Cursor Down when 2 then Input::LEFT # Cursor Left when 3 then Input::RIGHT # Cursor Right when 4 then Input::UP # Cursor Up when 5 then Input::A # Press A when 6 then Input::B # Press B when 7 then Input::C # Press C when 8 then Input::X # Press X when 9 then Input::Y # Press Y when 10 then Input::Z # Press Z when 11 then Input::L # Press L when 12 then Input::R # Press R when 13 then Input::SHIFT # Press SHIFT when 14 then Input::CTRL # Press CTRL when 15 then Input::ALT # Press ALT when 16 then Input::F5 # Press F5 when 17 then Input::F6 # Press F6 when 18 then Input::F7 # Press F7 when 19 then Input::F8 # Press F8 when 20 then Input::F9 # Press F9 end @wait_frames = $game_variables[STANDARD_WAIT_VARIABLE] end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Command Move #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_move (command) command_input (command.code) if command.code < 15 command_wait (command.parameters[0] - 1) if command.code == 15 command_input (command.code - 1) if command.code.between? (16, 21) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Command Wait # duration : the number of frames to wait #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def command_wait (duration) # Wait Frames - Subtract Standard wait frames tacked on by previous command @wait_frames = duration end end
#============================================================================== # ** Tutorial #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This class basically interprets a common event and navigates a scene by the # codes used in that common event #==============================================================================
class Tutorial #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Public Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ attr_reader :upd_input attr_accessor :button #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize # Initialize variables @button = false @upd_input = false @active = false @tutorial_guide = Game_TutorialGuide.new @index = 0 @wait_frames = 0 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Start # scene : the scene to guide through # common_event_id : the navigation common event #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def start (scene, common_event_id) # Get Common Event @tutorial_guide.setup ($data_common_events[common_event_id].list) # Initialize Scene $scene = scene.new @active = true # Initialize Message window here because uses $game variables. if @message_window.nil? @game_message = Game_Message.new @message_window = Window_Message.new @message_window.z = 210 end # Reset Saved values if $scene.is_a? (Scene_Menu) $game_party.last_item_id = 0 $game_party.last_actor_index = 0 $game_party.last_target_index = 0 end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Update #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update if @real_game_message.nil? @real_game_message = $game_message $game_message = @game_message end @button = nil @upd_input = true @message_window.update @upd_input = false if $game_message.visible $game_message = @real_game_message @real_game_message = nil return end @active = false if @tutorial_guide.update == false $game_message = @real_game_message @real_game_message = nil end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Active? #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def active? return @active end end
#============================================================================== # ** Scene_Title #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # aliased method - start #==============================================================================
class Scene_Title #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Load Database #`````````````````````````````````````````````````````````````````````````` # Initialize $tutorial #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_tutorial_scenes_ldb_init_nf4 load_database def load_database # Run Original Method modalg_tutorial_scenes_ldb_init_nf4 # Initialize Tutorial $tutorial = Tutorial.new end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Load Battle Test Database #`````````````````````````````````````````````````````````````````````````` # Initialize $tutorial #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias modalg_tutrl_scn_lbtdb_ak42 load_bt_database def load_bt_database # Run Original Method modalg_tutrl_scn_lbtdb_ak42 # Initialize Tutorial $tutorial = Tutorial.new end end
|
|
Age : 33 Inscrit le : 27/06/2008 Messages : 10881
| Sujet: Re: [VX] Tutoriel dans votre jeu Mer 26 Nov 2008 - 15:03 | |
| Dommage que le script soit en anglais.
Merci tout de même du partage ! |
|
Habitant Lv.6
Age : 31 Inscrit le : 24/11/2008 Messages : 113
| Sujet: Re: [VX] Tutoriel dans votre jeu Mer 26 Nov 2008 - 15:44 | |
| |
|
Ex-Admin Cruelle
Age : 32 Inscrit le : 03/07/2008 Messages : 2441
| Sujet: Re: [VX] Tutoriel dans votre jeu Mer 26 Nov 2008 - 19:06 | |
| Ouias si vous pouvez traduire un minimu les scripts avant de les proposer ca serait pas mal |
|
| Sujet: Re: [VX] Tutoriel dans votre jeu | |
| |
|