Features Nearly every aspect of this script can be changed from within the config module, to the point where you can re-purpose it to do (almost) whatever you want.
Script
Munkis' Event Dependant Travel System
CODE
#------------------------------------------------------------------------------ # * Munkis' Event Dependant Travel System V 4.5 # * Made by munkis # * Basically I got bored one weekend and decided to write this. # •”•••••••••••— # •‘ FEATURES •‘ # •š••••••••••• # * 99% Compatible; uses 4 custom classes, internally overwrites the # draw_currency_value method of Window_Base, so this script will need to go # under other scripts that change the curency symbol. Even then, I can't # guarantee compatability. # * 90% Plug & Play; You'll need to use images; also requires modern_algebra's # paragraph formatter. It's also a pretty good idea to use zeriab's fixed # font algorithm (makes the text look neater), but it isn't required per se. # * In-depth cinfiguration module; nearly every aspect of this script can be # changed from within the configuration module, so there's no need to do any # other edits that may make the script blow computer chips in your face;D # * You can call this script with: $scene = Munkis_Travel.new # * If you want to edit this, you'll need to be a passable scripter and # eventer, as this script will activate different in-game switches depending # on what choice you select. Just make a new event page and have it look # for the switch to be "ON" and put whatever travel related eventing stuff # you want there. As for the scripting part, if you want to have more (or # less) than the 7 choices this script comes with, there are several parts # of this script that will need to be changed to make it work properly. You # have been warned. # * V 1.0: Initial Release # * V 2.0: Added ability to show\hide all windows except for command window. # Can also determine wether or not the currency symbol gets changed. # * V 3.0: Crammed all but three variables into arrays. Added ability to # resize all windows from config module. # * V 3.5: n00bfix; some of the information in Window_Picture didn't update # properly. Didn't remember to change the array indexes that were looked # for in the different "when x" blocks. # * V 4.0: Full implementation of arrays (no more bulky "case" blocks); also # added second page of information to Window_Text. You can change what # button is used to flip pages in the config module, as well as toggle its # appearance. This should be the final update to the script. # * V 4.1: Removed sound effect from config module, as it made things sound # bad, I thought (changing the sound played to "cursor" would just make it # make a "double-clicking"-like sound). You still can change the button # used for flipping pages from the config module, however. Also fixed a bug # where nil was somehow being passed as an invalid argument. # * V 4.11: The choice window now scrolls when you add more commands than can # fit in the window. # * V 4.5: Made the INFO_TEXT_ARRAY easier to edit for long strings. #------------------------------------------------------------------------------
#[module] module MNK_Travel_Choice #---------------------------------------------------------------------------- # * Set the switches to be used by the event here. #----------------------------------------------------------------------------
CHOICE_SWITCHES = [1,2,3,4,5,6,7]
#---------------------------------------------------------------------------- # * Change the in-game variable used to determine travel cost here. #----------------------------------------------------------------------------
COST_VARIABLES = [1,2,3,4,5,6,7]
#---------------------------------------------------------------------------- # * Set the choice text here. #----------------------------------------------------------------------------
#---------------------------------------------------------------------------- # * Change the Information Window text here. #----------------------------------------------------------------------------
#The strings shouldn't be longer than 225 characters (including spaces) #because the information window doesn't scroll. It probably never will, so #don't ask.
INFO_TEXT_ARRAY = []
INFO_TEXT_ARRAY[0] = ["This is the island you start on in the demo.."]
INFO_TEXT_ARRAY[1] = ["DAMN it's cold!"]
INFO_TEXT_ARRAY[2] = ["Lots of mountains; a climber's dream."]
INFO_TEXT_ARRAY[3] = ["The sand gets into EVERYWHERE!"]
INFO_TEXT_ARRAY[4] = ["Damn it's cold!"]
INFO_TEXT_ARRAY[5] = ["Gotta love swamps... unless you have allergies, then they're hell :)"]
INFO_TEXT_ARRAY[6] = ["This place is so beautiful, I couldn't find a picture for it :)"]
#Setting this to true will move the text over to make room for the batler pic.
PAGE_2_BATTLER_SHOWN = true
#What level should the character be before they go to a particular area?
PAGE_2_LEVELS = [5,10,15,20,25,30,35]
#Change the in-game switches used to determine wether or not the player has #been to an area previously here.
PAGE_2_VISITED_SWITCHES = [8,9,10,11,12,13,14]
#Change the pageflip button used when you flip pages in Window_Text. Using #(Input::C) or (Input::B) isn't recommended.
INFO_PAGEFLIP_COMMAND = (Input::A)
#---------------------------------------------------------------------------- # * Change the Static Window message here. #----------------------------------------------------------------------------
STATIC_MESSAGE = "Where ye headed?"
#---------------------------------------------------------------------------- # * Travel choice window sizing is handled here. The first two numbers in # the array cannot be zero or negative. The second two can be zero or # negative, however. #----------------------------------------------------------------------------
#Change the pictures used in the Location Window here. Use "" for none. The #pictures should be 240 X 184, depending on the size of the window. Put the #pictures you're going to use in the Graphics\Pictures folder.
#Change the in-game variable used to indicate where you are here.
CURRENT_LOCATION_VARIABLE = 8
#Change the text tag used in Window_Picture to indicate where you are here.
CURRENT_LOCATION_TEXT = "[Current Location]"
#Change the properties of the Location window contents here. #PICTURE_WINDOW_PROPERTIES = [picture_width, picture_height, picture_position_x, picture_position_y, text_and_icon_position_x, text_and_icon_position_y]
PICTURE_WINDOW_PROPERTIES = [240,184,0,0,0,20]
#Toggle the windows and wether or not the gold icon is changed here. #You can also toggle page 2 of Window_Text here. #WINDOW_TOGGLES = [gold window, picture window, text window, static window, gold icon, text window page 2]
#------------------------------------------------------------------------------ # * This draws the Static window. #------------------------------------------------------------------------------
class Window_Static < Window_Base def initialize if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true super(MNK_Travel_Choice::WINDOW_STATIC_DIM[0],MNK_Travel_Choice::WINDOW_STATIC_DIM[1],MNK_Travel_Choice::WINDOW_STATIC_DIM[2],MNK_Travel_Choice::WINDOW_STATIC_DIM[3]) self.contents.draw_paragraph (MNK_Travel_Choice::WINDOW_STATIC_DIM[0], MNK_Travel_Choice::WINDOW_STATIC_DIM[1], MNK_Travel_Choice::WINDOW_STATIC_DIM[2], MNK_Travel_Choice::WINDOW_STATIC_DIM[3], MNK_Travel_Choice::STATIC_MESSAGE) end end end
#------------------------------------------------------------------------------ # * This draws the Location window. #------------------------------------------------------------------------------
class Window_Picture < Window_Base def initialize if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true super(MNK_Travel_Choice::WINDOW_PICTURE_DIM[0], MNK_Travel_Choice::WINDOW_PICTURE_DIM[1], MNK_Travel_Choice::WINDOW_PICTURE_DIM[2], MNK_Travel_Choice::WINDOW_PICTURE_DIM[3]) end end def refresh(window_contents) if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true self.contents.clear bitmap = Cache.picture(MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil rect = Rect.new(0, 0, 0, 0) rect.x = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[2] rect.y = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[3] rect.width = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[0] rect.height = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[1] self.contents.blt(x, y, bitmap, rect) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil bitmap.dispose unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, "Cost to travel:") unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil self.draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 128, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CHOICE_TEXT_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 160, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, $game_variables[MNK_Travel_Choice::COST_VARIABLES[window_contents]])unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == window_contents + 1 self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 80, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CURRENT_LOCATION_TEXT) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil end end end end
#------------------------------------------------------------------------------ # * This draws the Information window. #------------------------------------------------------------------------------
class Window_Text < Window_Base def initialize if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true super(MNK_Travel_Choice::WINDOW_TEXT_DIM[0], MNK_Travel_Choice::WINDOW_TEXT_DIM[1], MNK_Travel_Choice::WINDOW_TEXT_DIM[2], MNK_Travel_Choice::WINDOW_TEXT_DIM[3]) @page_1 = true end end def refresh(window_contents) if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true self.contents.clear if MNK_Travel_Choice::WINDOW_TOGGLES[5] == true if Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == true if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil Sound.play_cursor @page_1 = false else Sound.play_buzzer end elsif Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == false if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil Sound.play_cursor @page_1 = true else Sound.play_buzzer end elsif Input.trigger?(Input.dir4) and @page_1 == false @page_1 = true end end if @page_1 == true self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents]) elsif @page_1 == false if MNK_Travel_Choice::PAGE_2_BATTLER_SHOWN == true bitmap = Cache.battler(MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents], 0) bw = bitmap.width < 160 ? (160 - bitmap.width) / 2 : 0 bh = contents.height - bitmap.height self.contents.blt(bw - 32, bh - 15, bitmap, bitmap.rect) bitmap.dispose self.contents.draw_text (70, 0, 240, 25, "Monsters:") self.contents.draw_text (160, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents]) self.contents.draw_text (70, 20, 240, 25, "Recommended") self.contents.draw_text (70, 40, 240, 25, "Character Level:") self.contents.draw_text (215, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents]) self.contents.draw_text (70, 60, 240, 25, "Area Visited:") if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true self.contents.draw_text (185, 60, 240, 25, "YES") else self.contents.draw_text (185, 60, 240, 25, "NO") end end else self.contents.draw_text (0, 0, 240, 25, "Monsters:") self.contents.draw_text (90, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents]) self.contents.draw_text (0, 20, 240, 25, "Recommended Character") self.contents.draw_text (0, 40, 240, 25, "Level:") self.contents.draw_text (55, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents]) self.contents.draw_text (0, 60, 240, 25, "Area Visited:") if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true self.contents.draw_text (115, 60, 240, 25, "YES") else self.contents.draw_text (115, 60, 240, 25, "NO") end end end end else self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents]) end end end
#------------------------------------------------------------------------------ # * This changes the currency symbol in the gold window to match the icon # used in Window_Picture if CHANGE_GOLD_ICON == true. #------------------------------------------------------------------------------
class Window_Base def draw_currency_value(value, x, y, width) if MNK_Travel_Choice::WINDOW_TOGGLES[4] == true self.contents.font.color = normal_color self.contents.draw_text(x, y, width, WLH, value, 2) draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], x, y) else cx = contents.text_size(Vocab::gold).width self.contents.font.color = normal_color self.contents.draw_text(x, y, width-cx-2, WLH, value, 2) self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, Vocab::gold, 2) end end end
#------------------------------------------------------------------------------ # * This draws the Travel Choices menu. #------------------------------------------------------------------------------
class Munkis_Travel < Scene_Base #---------------------------------------------------------------------------- # * Start processing #---------------------------------------------------------------------------- def start super create_menu_background create_command_window if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true @gold_window = Window_Gold.new(MNK_Travel_Choice::GOLD_WINDOW[1], MNK_Travel_Choice::GOLD_WINDOW[2]) end if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true @picturewindow = Window_Picture.new() end if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true @textwindow = Window_Text.new() end if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true @staticwindow = Window_Static.new() end end #---------------------------------------------------------------------------- # * Post-Start Processing #---------------------------------------------------------------------------- def post_start super open_command_window end #---------------------------------------------------------------------------- # * Pre-termination Processing #---------------------------------------------------------------------------- def pre_terminate super close_command_window end #---------------------------------------------------------------------------- # * Termination Processing #---------------------------------------------------------------------------- def terminate super dispose_command_window dispose_menu_background if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true @gold_window.dispose end if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true @picturewindow.dispose end if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true @textwindow.dispose end if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true @staticwindow.dispose end end #---------------------------------------------------------------------------- # * Return to Original Screen #---------------------------------------------------------------------------- def return_scene $scene = Scene_Map.new end #---------------------------------------------------------------------------- # * Frame Update #---------------------------------------------------------------------------- def update super update_menu_background @command_window.update if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true @gold_window.refresh end if @window_contents != @command_window.index @window_contents = @command_window.index end if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true @picturewindow.refresh(@window_contents) end if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true @textwindow.refresh(@window_contents) end if Input.trigger?(Input::B) Sound.play_cancel return_scene elsif Input.trigger?(Input::C) case @command_window.index when 0 choice_1 when 1 choice_2 when 2 choice_3 when 3 choice_4 when 4 choice_5 when 5 choice_6 when 6 choice_7 when 7 cancel end end end #---------------------------------------------------------------------------- # * Update Background for Menu Screen #---------------------------------------------------------------------------- def update_menu_background super @menuback_sprite.tone.set(0, 0, 0, 128) end #---------------------------------------------------------------------------- # * Create Command Window #---------------------------------------------------------------------------- def create_command_window s1 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[0] s2 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[1] s3 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[2] s4 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[3] s5 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[4] s6 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[5] s7 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[6] s8 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[7] @command_window = Window_Command.new(MNK_Travel_Choice::CHOICE_WINDOW_DIM[0], [s1, s2, s3, s4, s5, s6, s7, s8], MNK_Travel_Choice::CHOICE_WINDOW_DIM[2]) @command_window.x = (544 - @command_window.width + MNK_Travel_Choice::CHOICE_WINDOW_DIM[3]) / 2 @command_window.y = (416 - @command_window.height + MNK_Travel_Choice::CHOICE_WINDOW_DIM[4]) / 2 @command_window.openness = 0 @command_window.height = MNK_Travel_Choice::CHOICE_WINDOW_DIM[1] end #---------------------------------------------------------------------------- # * Dispose of Choice Window #---------------------------------------------------------------------------- def dispose_command_window @command_window.dispose end #---------------------------------------------------------------------------- # * Open Choice Window #---------------------------------------------------------------------------- def open_command_window @command_window.open begin @command_window.update Graphics.update end until @command_window.openness == 255 end #---------------------------------------------------------------------------- # * Close Choice Window #---------------------------------------------------------------------------- def close_command_window @command_window.close begin @command_window.update Graphics.update end until @command_window.openness == 0 end #---------------------------------------------------------------------------- # * The choices are executed here #---------------------------------------------------------------------------- def choice_1 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[0]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 1 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_2 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[1]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 2 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_3 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[2]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 3 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_4 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[3]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 4 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_5 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[4]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 5 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_6 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[5]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 6 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def choice_7 $game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[6]] = true if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 7 Sound.play_buzzer return_scene else Sound.play_decision return_scene end end def cancel Sound.play_decision return_scene end end
Customization In-depth cinfiguration module; nearly every aspect of this script can be changed from within the configuration module, so there's no need to do any other edits that may make the script blow computer chips in your face You can call this script with: $scene = Munkis_Travel.new The script uses in-game switches to activate the different pages of the event the script is called in, so the actual transferring of players is kept simple. Just remember to set the condition of the event page to look for the switch to be ON.
Compatibility 99% Compatible; uses 4 custom classes, internally overwrites the draw_currency_value method of Window_Base, so this script will need to go under other scripts that change the curency symbol. Even then, I can't guarantee compatability.
(the script in the demo is out-dated, but the structure of the events is still valid. The demo also includes images.)
Installation Place in MATERIALS, above MAIN.
FAQ Q: ZOMG teh scriptz doesn't werk!!! A: First of all, be more specific. Second, all reports typed in chat-speak or 1337-speak will be ignored.
Terms and Conditions I don't mind this script being posted or linked on other sites AS LONG AS YOU GIVE CREDIT!!! Same goes for using this in your project. Contact me if you want to use this in a commercial project.
Credits Credit goes to me for the script. I don't remember who made the images included in the demo.
This post has been edited by munkis: Nov 5 2011, 05:42 PM
Group: Member
Posts: 1
Type: None
RM Skill: Undisclosed
Ther is a bug uin the script (i think)
When you open the window it gives you the option to travel to your current location and it charges you plus ther is still the option to stay there, i think this should be corrected
Its in the VX forums, also XP and VX are the standard RM for scripters (it seems, I'm not a member of this elite ). If you've tested and found an error please be more specific.
__________________________
Quotes
"everyone knows when you use caps that it's serious business"- Tsutanai
"Like I said, our current market breed ferocity, it breeds a cruel and callous kind of people, but that doesn't make them guilty of anything other than being dickheads."- Sparrowsmith
Its in the VX forums, also XP and VX are the standard RM for scripters (it seems, I'm not a member of this elite ). If you've tested and found an error please be more specific.
sorry,I'm dealing with a super-lame laptop, so i cant relle try this unless i close my internet connection and restrat before using an RPG Maker.. Just asking, hopefully a fast reply..and here we go..but thanks anyway ^^ sorry ^^ (I'm a noob)
__________________________
One idiot is actually talk more than three geniuses combined! -Patrick Star-
If you'd like I'll PM you where and how to add the script, but be sure to credit Munkis if your project ever gets anywhere and also be aware that adding a bunch of scripts willynilly can sometimes cause them to clash.
__________________________
Quotes
"everyone knows when you use caps that it's serious business"- Tsutanai
"Like I said, our current market breed ferocity, it breeds a cruel and callous kind of people, but that doesn't make them guilty of anything other than being dickheads."- Sparrowsmith
If you'd like I'll PM you where and how to add the script, but be sure to credit Munkis if your project ever gets anywhere and also be aware that adding a bunch of scripts willynilly can sometimes cause them to clash.
don't worry, its fine I've been dealing with RM for 4 years, but I just new to this forum..thats all ^^ I'll make sure to credit everyone for my projects once its done, including you. Its nice being here, meeting tons of makers. I'm just a mapper, and dealing a huge problems with scripting.
I'm going to try it soon, and see whether it works or not
__________________________
One idiot is actually talk more than three geniuses combined! -Patrick Star-