Jump to content
New account registrations are disabed. This website is now an archive. Read more here.

RGSS(RMXP) Scripts

Sign in to follow this  

RGSS Scripts for RPG Maker XP go in this Category. All RGSS scripts must be in Demo form.

35 files

  1. Ccoa's UMS 1.8

    Version: 1.8
    Author: Ccoa
     
    Introduction
    I made this script to do everything all the separate message systems did in one script, plus a few things no one had done that they should have.
     
    Instructions
    An instruction manual is included in the demo.

    6,519 downloads

    43 comments

    Updated

  2. Location Name V1.3

    Information: http://www.atelier-rgss.com/RGSS/System/XP_SYS06.html

    201 downloads

    0 comments

    Submitted

  3. Maplinks 2.0.1

    This script allows you to quickly tile maps together to create continuous regions without using any transfer events. Allow your party to roam free throughout the land. This script can handle just about any combination of maps you throw at it!
     

    Click to view the full Article

    301 downloads

    0 comments

    Updated

  4. GTBS - GubiD's Tactical Battle System v1.5.1.4

    For more information, please visit our GubiD's Tactical Battle System page.

    5,132 downloads

    14 comments

    Updated

  5. Prexcraft Modificated

    Modification of one of the best crafting system by me

    291 downloads

    0 comments

    Submitted

  6. Sideview Battle System Tankentai XP

    - Orginal VX Version By Enu
    - Original VX English Translation by Kylock and Mr.Bubble
    - XP Translation to english by cairn

    2,259 downloads

    7 comments

    Updated

  7. GMUS Guedez Mouse Use System

    Yeah i know, its a old script, but work "fine".
     
    "Fine", cause many script like CMS dont work with this.
    And you cant scroll down (exemple: when you have too many items and you see a little arrow under the window, you cant scroll to see other items...)
     
    Maybe someone here can make a new Mouse system... :D
     
    Instruction :
     
    Paste the script ABOVE the Main script

    198 downloads

    0 comments

    Submitted

  8. Buy-Only and Sell-Only Shops

    This script lets you call shops that only allow buying or selling. The default shop type is a normal shop that allows both buying and selling. To get a shop that only allows buying or selling, you need to directly change the value of the variable $game_temp.shop_type using the "Script" event command. Valid values are 0 for a normal shop, 1 for a buy-only shop, and 2 for a sell-only shop. $game_temp.shop_type will automatically be changed back to 0 once the shop is cancelled.

    286 downloads

    0 comments

    Submitted

  9. Monster Database Advanced

    Features:
     
    * * Assign Monsters into Groups, for quicker searching
    * * Counts Times Seen and Defeated for Each Enemy
    * * After Seeing an Enemy, it Unlocks the Basic Stats.
    * * After Defeating the enemy, see the Amount of Gold Dropped, Items Dropped, and Experience Recieved
    * * Test Battling (If you've seen a monster, you can test battle that monster)
    * * Animated Bestairy (Uses Sprites) (Press Right or Left to change the stance)
    Instructions:
     
    * * To add an enemy to a group, in the database add (Name of Group) after each enemy's name. (All Enemies not assigned to a group will be classified into a Unassigned Group.
    * * For Each Enemy you create, you need to make a Enemy Troop, named the same as your enemy, with only your enemy in it. (I tried adding troops to the $data_troops class, but this is just easier)
    * * Insert Script Above Main, but below Scene Battle (The script re-writes a few methods from the default battle system)
    * * Call the bestairy with: $scene = Scene_Beastairy.new
     
    The Script:

    #============================================================================== # Beastairy System #-------------------------------------------------------------------------- # Created By SephirothSpawn (11.18.05) # Last Updated: 11.18.05 #============================================================================== #============================================================================== # ** Class Scene Title #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # * Alias' New Game Method #-------------------------------------------------------------------------- alias new_game command_new_game #-------------------------------------------------------------------------- # * Adds Beastairy Game Variables #-------------------------------------------------------------------------- def command_new_game # Sets Up Smithery List $game_beastairy = Game_Beastairy.new new_game end end #============================================================================== # ** Game_Temp #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :beastairy_return #-------------------------------------------------------------------------- # * Alias Initialization #-------------------------------------------------------------------------- alias beastairy_initialize initialize #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize beastairy_initialize @beastairy_return = false end end #============================================================================== # ** Class Game Beastairy #============================================================================== class Game_Beastairy #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :monster_groups #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize @monster_groups = [] for i in 1...$data_enemies.size $data_enemies[i].beastairy_setup unless @monster_groups.include?($data_enemies[i].group) @monster_groups.push($data_enemies[i].group) end end end end #============================================================================== # ** Module RPG #============================================================================== module RPG #========================================================================= # ** Class Enemy #========================================================================= class Enemy #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- # Detectors attr_accessor :seen, :defeated, :group # Counters attr_accessor :seen_times, :defeated_times #-------------------------------------------------------------------------- # * Setup Beastairy #-------------------------------------------------------------------------- def beastairy_setup @seen_times, @defeated_times = 0, 0 @seen, @defeated = false, false if @name.include?('(') a, b = @name.index('('), @name.index(')') @group = @name.slice!(a..b) @group.delete!('(') @group.delete!(')') else @group = "Unclassified" end end #-------------------------------------------------------------------------- # * See Enemy #-------------------------------------------------------------------------- def see @seen = true @seen_times += 1 end #-------------------------------------------------------------------------- # * Defeat Enemy #-------------------------------------------------------------------------- def defeat @defeated = true @defeated_times += 1 end end end #============================================================================== # ** Scene_Save #============================================================================== class Scene_Save < Scene_File #-------------------------------------------------------------------------- # * Alias Save Data #-------------------------------------------------------------------------- alias new_save write_save_data #-------------------------------------------------------------------------- # * Write Save Data #-------------------------------------------------------------------------- def write_save_data(file) new_save(file) Marshal.dump($game_beastairy, file) end end #============================================================================== # ** Scene_Load #============================================================================== class Scene_Load < Scene_File #-------------------------------------------------------------------------- # * Alias Read Save Data #-------------------------------------------------------------------------- alias new_load read_save_data #-------------------------------------------------------------------------- # * Read Save Data #-------------------------------------------------------------------------- def read_save_data(file) new_load(file) $game_beastairy = Marshal.load(file) end end #============================================================================== # ** Class Window Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Draw Enemy Sprite #-------------------------------------------------------------------------- def draw_enemy_sprite(x, y, enemy_name, enemy_hue, pose, frame) bitmap = RPG::Cache.character(enemy_name, enemy_hue) cw = bitmap.width / 4 ch = bitmap.height / 4 # Facing Direction case pose when 0 ;a = 0 # Down when 1 ;a = ch # Left when 2 ;a = ch * 3 # Up when 3 ;a = ch * 2 # Right end # Current Animation Slide case frame when 0 ;b = 0 when 1 ;b = cw when 2 ;b = cw * 2 when 3 ;b = cw * 3 end # Bitmap Rectange src_rect = Rect.new(b, a, cw, ch) # Draws Bitmap self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end end #============================================================================== # Window Monster Group Info #============================================================================== class Window_Monster_Group_Info < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(200, 0, 440, 480) self.contents = Bitmap.new(width - 32, height - 32) refresh(0, 0, 0) end #-------------------------------------------------------------------------- # * Refresh # index : Index of Group From Game_Beastairy.Groups # pose : Enemy Character Pose # frame : Frame of Pose #-------------------------------------------------------------------------- def refresh(index, pose, frame) # Clears Window contents.clear # Sets Up Group Name group_name = $game_beastairy.monster_groups[index] # Sets Up Enemies In Group enemies = [] for i in 1...$data_enemies.size if $data_enemies[i].group == group_name enemies.push($data_enemies[i]) end end group_name = "Exit" if index == $game_beastairy.monster_groups.size # Draws Enemy Group Name contents.font.color = system_color contents.draw_text(0, 0, self.width - 32, 32, group_name, 1) unless index == $game_beastairy.monster_groups.size # Offsets Graphics X Position graphics_offset = contents.width / (enemies.size + 1) # Draws Enemies Graphics for i in 0...enemies.size draw_enemy_sprite(graphics_offset * (i + 1), 124, enemies[i].battler_name , enemies[i].battler_hue , pose, frame) end # HP, SP, and Gold Word hp_word = $data_system.words.hp sp_word = $data_system.words.sp gold_word = $data_system.words.gold # Draws Table Headings contents.draw_text(4, 128, width, 24, "Name") contents.draw_text(0, 128, 200, 24, "Max #{hp_word}", 2) contents.draw_text(0, 128, 300, 24, "Max #{sp_word}", 2) contents.draw_text(-4, 128, contents.width, 24, "#{gold_word} Award", 2) # Draws Enemies Stats contents.font.color = normal_color for i in 0...enemies.size # Sets Enemy Stats name, hp, sp, gold = "??????????", "???", "???", "?????" name, hp, sp = enemies[i].name, enemies[i].maxhp, enemies[i].maxsp if enemies[i].seen gold = enemies[i].gold if enemies[i].defeated # Draws Stats contents.draw_text(4, 152 + (i * 24), width, 24, name) contents.draw_text(0, 152 + (i * 24), 200, 24, "#{hp}", 2) contents.draw_text(0, 152 + (i * 24), 300, 24, "#{sp}", 2) contents.draw_text(-4, 152 + (i * 24), contents.width, 24, "#{gold}", 2) end end end end #============================================================================== # Window Monster Info #============================================================================== class Window_Monster_Info < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(200, 0, 440, 480) self.contents = Bitmap.new(width - 32, height - 32) end #-------------------------------------------------------------------------- # * Refresh # index : Index of enemy From $data_enemies # pose : Enemy Character Pose # frame : Frame of Pose #-------------------------------------------------------------------------- def refresh(index, pose, frame) # Clears Window contents.clear # Enemy enemy = $data_enemies[index] # Graphic Image draw_enemy_sprite(52, 100, enemy.battler_name , enemy.battler_hue, pose, frame) # Default Stats Set name = "??????????" maxhp = maxsp = str = dex = agi = int = atk = pdef = mdef = eva = "???" exp = gold = item_id = weapon_id = armor_id = treasure_prob = "?????" item_icon = weapon_icon = armor_icon = "049-Skill06" armor_type = 2 # If the Enemy has been seen if enemy.seen name = enemy.name maxhp = enemy.maxhp.to_s maxsp = enemy.maxsp.to_s str = enemy.str.to_s dex = enemy.dex.to_s agi = enemy.agi.to_s int = enemy.int.to_s atk = enemy.atk.to_s pdef = enemy.pdef.to_s mdef = enemy.mdef.to_s eva = enemy.eva.to_s end # If the Enemy has been Defeated if enemy.defeated exp = enemy.exp.to_s gold = enemy.gold.to_s if enemy.item_id == 0 item_id = "Nothing" item_icon = "032-Item01" else item_id = $data_items[enemy.item_id].name item_icon = $data_items[enemy.item_id].icon_name end if enemy.weapon_id == 0 weapon_id = "Nothing" weapon_icon = "032-Item01" else weapon_id = $data_weapons[enemy.weapon_id].name weapon_icon = $data_weapons[enemy.weapon_id].icon_name end if enemy.armor_id == 0 armor_id = "Nothing" armor_icon = "032-Item01" else armor_id = $data_armors[enemy.armor_id].name armor_icon = $data_armors[enemy.armor_id].icon_name armor_type = $data_armors[enemy.armor_id].type end treasure_prob = enemy.treasure_prob.to_s end # System Words g_word = $data_system.words.gold hp_word = $data_system.words.hp sp_word = $data_system.words.sp str_word = $data_system.words.str dex_word = $data_system.words.dex agi_word = $data_system.words.agi int_word = $data_system.words.int atk_word = $data_system.words.atk pdef_word = $data_system.words.pdef mdef_word = $data_system.words.mdef weapon_word = $data_system.words.weapon case armor_type when 0 ;armor_type = $data_system.words.armor1 when 1 ;armor_type = $data_system.words.armor2 when 2 ;armor_type = $data_system.words.armor3 when 3 ;armor_type = $data_system.words.armor4 end item_word = $data_system.words.item # Draws Name contents.font.color = normal_color contents.draw_text(116, 0, contents.width - 116, 32, name) # Draws Times Seen & Defeated contents.font.color = system_color contents.draw_text(116, 32, contents.width - 116, 32, "Times Seen:") contents.draw_text(116, 64, contents.width - 116, 32, "Times Defeated:") contents.font.color = normal_color contents.draw_text(0, 32, contents.width, 32, "#{enemy.seen_times}", 2) contents.draw_text(0, 64, contents.width, 32, "#{enemy.defeated_times}", 2) # Organizes Stats colomn_a_left = ["Max #{hp_word}", "Max #{sp_word}", str_word, dex_word, agi_word, int_word, atk_word, pdef_word, mdef_word, "Evasion"] colomn_a_right = [maxhp, maxsp, str,dex , agi, int, atk, pdef, mdef, eva] # Organized Victory Settings column_b_left = ["Experience Given:", "#{g_word} Dropped:", "#{item_word} Dropped:", "", "#{weapon_word} Dropped:", "", "#{armor_type} Dropped:", "", "Drop Pobabilty:"] column_b_right = [exp, gold, "", item_id, "", weapon_id, "", armor_id, treasure_prob] # Draws Stats for i in 0...colomn_a_left.size contents.font.color = system_color contents.draw_text(4, 160 + i * 32, 160, 32, colomn_a_left[i]) contents.font.color = normal_color contents.draw_text(-4, 160 + i * 32, 160, 32, colomn_a_right[i], 2) end # Draws Victory Settings for i in 0...column_b_left.size contents.font.color = system_color contents.draw_text(168, 160 + i * 32, contents.width, 32, column_b_left[i]) x = -4 x = -30 if i == 3 or i == 5 or i == 7 contents.font.color = normal_color contents.draw_text(x, 160 + i * 32, contents.width, 32, column_b_right[i], 2) end # Draws Item Icons bitmap = RPG::Cache.icon(item_icon) self.contents.blt(contents.width - 24, 260, bitmap, Rect.new(0, 0, 24, 24)) bitmap = RPG::Cache.icon(weapon_icon) self.contents.blt(contents.width - 24, 324, bitmap, Rect.new(0, 0, 24, 24)) bitmap = RPG::Cache.icon(armor_icon) self.contents.blt(contents.width - 24, 388, bitmap, Rect.new(0, 0, 24, 24)) end end #============================================================================== # Window Beastairy Controls #============================================================================== class Window_Beastairy_Controls < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 288, 200, 192) self.contents = Bitmap.new(width - 32, height - 32) self.z = 999 refresh(0) end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh(phase) # Clears Window contents.clear disabled_system_color = Color.new(192, 224, 255, 128) contents.font.color = normal_color contents.draw_text(0, 0, contents.width, 24, "L / R : Change Pose") # Main Phase Controls contents.font.color = phase == 0 ? system_color : disabled_system_color contents.draw_text(4, 24, contents.width, 24, "Main") contents.font.color = phase == 0 ? normal_color : disabled_color contents.draw_text(8, 48, contents.width, 24, "B : Return to Map") contents.draw_text(8, 72, contents.width, 24, "C : Select Group") # Enemy Select Controls contents.font.color = phase == 1 ? system_color : disabled_system_color contents.draw_text(4, 96, contents.width, 24, "Enemy Select") contents.font.color = phase == 1 ? normal_color : disabled_color contents.draw_text(8, 120, contents.width, 24, "B : Return to Main") contents.draw_text(8, 140, contents.width, 24, "C : Test Battle") end end #============================================================================== # ** Class Scene Beastairy #============================================================================== class Scene_Beastairy #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Sets Main Phase @phase = 0 # Enemies Graphic Animation @pose, @frame, @counting_frame= 0, 0, 0 # Current Phase Window @phase_window = Window_Base.new(0, 0, width = 200, height = 64) @phase_window.contents = contents = Bitmap.new(width - 32, height - 32) @phase_window.contents.draw_text(0, 0, 168, 32, "Main Phase", 1) # Main Window (Enemy Groups) commands = $game_beastairy.monster_groups.dup commands.push("Exit") @enemy_groups = Window_Command.new(200, commands) @enemy_groups.y = 64 @enemy_groups.height = 224 # Controls Window @controls = Window_Beastairy_Controls.new # Monster Group Information Window @monster_window = Window_Monster_Group_Info.new @monster_window.refresh(0, 0, 0) # Enemy Information Window @enemy_window = Window_Monster_Info.new @enemy_window.visible = false # Scene Objects @objects = [@phase_window, @enemy_groups, @controls, @monster_window, @enemy_window] # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Update Objects Information @objects.each {|x| x.update} # Frame update update # Abort loop if screen is changed break if $scene != self end # Prepare for transition Graphics.freeze # Dispose of Objects @objects.each {|x| x.dispose unless x.disposed?} end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Visiblity Changes Between Methods case @phase # Main Phase when 0 [@enemy_window].each {|x| x.visible = false if x.visible} [@enemy_groups, @monster_window].each {|x| x.visible = true unless x.visible} @enemy_groups.active = true when 1 [@enemy_window].each {|x| x.visible = true unless x.visible} [@enemy_groups, @monster_window].each {|x| x.visible = false if x.visible} @enemy_groups.active = false end # Updates Enemy Animation @counting_frame += 1 if @counting_frame == 8 @counting_frame = 0 @frame += 1 @frame = 0 if @frame == 4 if @phase == 0 @monster_window.refresh(@enemy_groups.index, @pose, @frame) else enemy_id = @enemies[@groups_enemies.index].id @enemy_window.refresh(enemy_id, @pose, @frame) end end # Current Phase Update case @phase when 0; main_update when 1; enemy_select end end #-------------------------------------------------------------------------- # * Main Frame Update #-------------------------------------------------------------------------- def main_update # Exit Scene if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $game_temp.beastairy_return = false $scene = Scene_Map.new # Enemy Select elsif Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) if @enemy_groups.index == $game_beastairy.monster_groups.size $game_temp.beastairy_return = false $scene = Scene_Map.new else commands, @enemies = [], [] group = $game_beastairy.monster_groups[@enemy_groups.index] for i in 1...$data_enemies.size if $data_enemies[i].group == group commands.push($data_enemies[i].name) @enemies.push($data_enemies[i]) end end @groups_enemies = Window_Command.new(200, commands) @groups_enemies.y = 64 @groups_enemies.height = 224 # Phase Window Update @phase_window.contents.clear @phase_window.contents.draw_text(0, 0, 168, 32, "Enemy Select", 1) # Adds Object (For Updating) @objects.push(@groups_enemies) # Updates Controls Window @controls.refresh(1) enemy_id = @enemies[@groups_enemies.index].id @enemy_window.refresh(enemy_id, @pose, @frame) # Changes Phase @phase = 1 end # Changes Pose elsif Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @pose == 0 ? @pose = 3 : @pose -= 1 elsif Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @pose == 3 ? @pose = 0 : @pose += 1 end end #-------------------------------------------------------------------------- # * Enemy Frame Update #-------------------------------------------------------------------------- def enemy_select # Exit Phase if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @groups_enemies.dispose @objects.delete(@groups_enemies) # Phase Window Update @phase_window.contents.clear @phase_window.contents.draw_text(0, 0, 168, 32, "Main Phase", 1) # Updates Controls Window @controls.refresh(0) # Changes Phase @phase = 0 # Enemy Select elsif Input.trigger?(Input::C) enemy = @enemies[@groups_enemies.index] if enemy.seen $game_system.se_play($data_system.decision_se) enemy_name = enemy.name for i in 1...$data_troops.size if $data_troops[i].name == enemy_name $game_temp.beastairy_return = true $game_temp.battle_troop_id = i $game_temp.battle_can_escape = true $game_temp.battle_can_lose = false $game_temp.battle_proc = nil # Memorize map BGM and stop BGM $game_temp.map_bgm = $game_system.playing_bgm $game_system.bgm_stop # Play battle start SE $game_system.se_play($data_system.battle_start_se) # Play battle BGM $game_system.bgm_play($game_system.battle_bgm) # Straighten player position $game_player.straighten # Switch to battle screen $scene = Scene_Battle.new end end else $game_system.se_play($data_system.buzzer_se) end elsif Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @pose == 0 ? @pose = 3 : @pose -= 1 elsif Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @pose == 3 ? @pose = 0 : @pose += 1 end end end #============================================================================== # ** Scene_Battle #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # * Alias Main Processing #-------------------------------------------------------------------------- alias beastairy_main main #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main unless $game_temp.beastairy_return @beastairy_troop = [] troop = $data_troops[$game_temp.battle_troop_id] for i in 0...troop.members.size enemy = $data_enemies[troop.members[i].enemy_id] @beastairy_troop.push(enemy) enemy.see end else @beastairy_troop = [] end beastairy_main end #-------------------------------------------------------------------------- # * Battle Ends # result : results (0:win 1:lose 2:escape) #-------------------------------------------------------------------------- def battle_end(result) # Clear in battle flag $game_temp.in_battle = false # Clear entire party actions flag $game_party.clear_actions # Remove battle states for actor in $game_party.actors actor.remove_states_battle end # Clear enemies $game_troop.enemies.clear # Call battle callback if $game_temp.battle_proc != nil $game_temp.battle_proc.call(result) $game_temp.battle_proc = nil end if $game_temp.beastairy_return $scene = Scene_Beastairy.new else if result == 0 for enemy in @beastairy_troop enemy.defeat end end $scene = Scene_Map.new end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # If battle event is running if $game_system.battle_interpreter.running? # Update interpreter $game_system.battle_interpreter.update # If a battler which is forcing actions doesn't exist if $game_temp.forcing_battler == nil # If battle event has finished running unless $game_system.battle_interpreter.running? # Rerun battle event set up if battle continues unless judge setup_battle_event end end # If not after battle phase if @phase != 5 # Refresh status window @status_window.refresh end end end # Update system (timer) and screen $game_system.update $game_screen.update # If timer has reached 0 if $game_system.timer_working and $game_system.timer == 0 # Abort battle $game_temp.battle_abort = true end # Update windows @help_window.update @party_command_window.update @actor_command_window.update @status_window.update @message_window.update # Update sprite set @spriteset.update # If transition is processing if $game_temp.transition_processing # Clear transition processing flag $game_temp.transition_processing = false # Execute transition if $game_temp.transition_name == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end # If message window is showing if $game_temp.message_window_showing return end # If effect is showing if @spriteset.effect? return end # If game over if $game_temp.gameover # Switch to game over screen if $game_temp.beastairy_return $scene = Scene_Beastairy.new else $scene = Scene_Gameover.new end end # If returning to title screen if $game_temp.to_title # Switch to title screen $scene = Scene_Title.new return end # If battle is aborted if $game_temp.battle_abort # Return to BGM used before battle started $game_system.bgm_play($game_temp.map_bgm) # Battle ends battle_end(1) return end # If waiting if @wait_count > 0 # Decrease wait count @wait_count -= 1 return end # If battler forcing an action doesn't exist, # and battle event is running if $game_temp.forcing_battler == nil and $game_system.battle_interpreter.running? return end # Branch according to phase case @phase when 1 # pre-battle phase update_phase1 when 2 # party command phase update_phase2 when 3 # actor command phase update_phase3 when 4 # main phase update_phase4 when 5 # after battle phase update_phase5 end end #-------------------------------------------------------------------------- # * Start After Battle Phase #-------------------------------------------------------------------------- def start_phase5 # Shift to phase 5 @phase = 5 # Play battle end ME $game_system.me_play($game_system.battle_end_me) # Return to BGM before battle started $game_system.bgm_play($game_temp.map_bgm) # Initialize EXP, amount of gold, and treasure exp = 0 gold = 0 treasures = [] # Loop for enemy in $game_troop.enemies # If enemy is not hidden unless enemy.hidden unless $game_temp.beastairy_return # Add EXP and amount of gold obtained exp += enemy.exp gold += enemy.gold # Determine if treasure appears if rand(100) < enemy.treasure_prob if enemy.item_id > 0 treasures.push($data_items[enemy.item_id]) end if enemy.weapon_id > 0 treasures.push($data_weapons[enemy.weapon_id]) end if enemy.armor_id > 0 treasures.push($data_armors[enemy.armor_id]) end end end end end # Treasure is limited to a maximum of 6 items treasures = treasures[0..5] # Obtaining EXP for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.exp += exp if actor.level > last_level @status_window.level_up(i) end end end # Obtaining gold $game_party.gain_gold(gold) # Obtaining treasure for item in treasures case item when RPG::Item $game_party.gain_item(item.id, 1) when RPG::Weapon $game_party.gain_weapon(item.id, 1) when RPG::Armor $game_party.gain_armor(item.id, 1) end end # Make battle result window @result_window = Window_BattleResult.new(exp, gold, treasures) # Set wait count @phase5_wait_count = 100 end end

    636 downloads

    1 comment

    Updated

  10. Skill Shop

    Introduction
    This script allows you to setup skill shops which sells skills. You may have requirements to purchase/learn the skill, such as: amount of exp, exp cost, gold, level, class, other skills.
     
     
    [info=More information on the website]http://www.rmxpunlimited.net/index.php/rmx...skill-shop.html[/info]

    542 downloads

    0 comments

    Updated

  11. Zeriab's Anti Event Lag System

    Zeriab's Anti Event Lag System
    Version: 1.2
     
    [info=Support Topic]http://www.rmxpunlimited.net/forums/index.php?showtopic=935[/info]

    272 downloads

    0 comments

    Updated

  12. Zeriab's Gamos

    People asked, so I uploaded

    243 downloads

    0 comments

    Submitted

  13. Emily-Ann's Import-Export System

    Ever want to take your characters from one game and import them into a sequel instead of falling to the typical "Let's start all over again" cliche? Now you can! This system will let you set up an export from one game, then allow you to import that file into the next game, thus allowing your players to start up right where they left off, with the same characters, and the same stats. This is a demo to show it works (I've tested it). I hope you enjoy it.

    364 downloads

    2 comments

    Submitted

  14. Change Map Tileset

    Allows the player to change the tilemap.

    374 downloads

    1 comment

    Updated

  15. Diego's CMS

    Diego's CMS
     
    For more information and screenshots, visit the web page:
    http://www.rmxpunlimited.net/index.php/rmx...diegos-cms.html

    1,292 downloads

    15 comments

    Updated

  16. Diablo 2 waypoint system

    A way point sytem just like diablo 2

    371 downloads

    1 comment

    Submitted

  17. 1 comment

    Submitted

  18. Caterpillar System

    This is a caterpillar system nothing special. This code is based on Fukuyama's version only better. Currently this is only a prototype of the full version
     
    [info=Support Topic]http://www.rmxpunlimited.net/forums/index.php?showtopic=1028[/info]

    744 downloads

    1 comment

    Updated

  19. Advanced Message Script - Release 4 [Update #2]

    Advanced Message Script - Release 4 [update #2] By Dubealex.
     
    Script:

    #=================================================== # ■ AMS - Advanced Message Script - R4 [update #2] #=================================================== # For more infos and update, visit: # www.dubealex.com (Creation Asylum) # # Edited, Fixed and Enhanced by: Dubealex # Original Script Core by: XRXS Scripter (Jap Dudes) # HTML Hexadecimal color feature from: Phylomorphis # # Special Thanks: # Rabu: For enabling the Show Face feature in an encrypted project # # To found all my new features, search the following: #NEW # To configure the button to skip the dialog, search: #SKIP_TEXT_CODE # # May 18, 2005 #=================================================== LETTER_BY_LETTER_MODE = true #Set the letter by letter mode ON/OFF #=================================================== # ▼ CLASS AMS Begins #=================================================== class AMS attr_accessor :name_box_x_offset attr_accessor :name_box_y_offset attr_accessor :font_type attr_accessor :name_font_type attr_accessor :font_size attr_accessor :name_font_size attr_accessor :message_box_opacity attr_accessor :name_box_skin attr_accessor :name_box_text_color attr_accessor :message_box_text_color attr_accessor :message_box_skin attr_accessor :name_box_width attr_accessor :name_box_height attr_accessor :message_width attr_accessor :message_height attr_accessor :message_x attr_accessor :message_y_bottom attr_accessor :message_y_middle attr_accessor :message_y_top attr_accessor :event_message_x_ofset attr_accessor :event_message_y_ofset def initialize @name_box_x_offset = 0 #Choose the X axis offset of the name bos. default= 0 @name_box_y_offset = -10 #Choose the Y axis offset of the name bos. default= -10 @name_box_width = 8 #Choose the width of the Name Box. default= 8 @name_box_height = 26 #Choose the height of the Name Box. default= 26 @font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for message box @name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box @font_size = 22 #Choose the default Font Size for message box text @name_font_size = 22 #Choose the deafault Font Size for Name Box text @name_box_text_color=0 #Choose the Text Color of the Name Box @message_box_text_color=0 #Choose the Text Color of the Message Box @message_box_opacity = 160 #Choose the opacity of the message window. Default=160 @message_box_skin = "001-Blue01" #Choose the WindowSkin for the Message Box @name_box_skin = "001-Blue01" #Choose the WindowSkin for the Name Box @message_width = 480 #Choose the width size of the message box. Default=480 @message_height = 160 #Choose the height size of the message box. Default=160 @message_x = 80 #Choose the X position of the message box. Default=80 @message_y_bottom = 304 #Choose the Y bottom position of the message box. Default=304 @message_y_middle = 160 #Choose the Y middle position of the message box. Default=160 @message_y_top = 16 #Choose the Y top position of the message box. Default=16 @event_message_x_ofset = 0 #Choose the X position offset of the event message. Default=0 @event_message_y_ofset = 48 #Choose the Y position offset of the event message. Default=48 end end #=================================================== # ▲ CLASS AMS Ends #=================================================== #=================================================== # ▼ Class Window_Message Begins #=================================================== class Window_Message < Window_Selectable alias xrxs9_initialize initialize def initialize @alex_skip = false xrxs9_initialize if $soundname_on_speak == nil then $soundname_on_speak = "" end $gaiji_file = "./Graphics/Gaiji/sample.png" if FileTest.exist?($gaiji_file) @gaiji_cache = Bitmap.new($gaiji_file) else @gaigi_cache = nil end @opacity_text_buf = Bitmap.new(32, 32) end #-------------------------------------------------------------------------- alias xrxs9_terminate_message terminate_message def terminate_message if @name_window_frame != nil @name_window_frame.dispose @name_window_frame = nil end if @name_window_text != nil @name_window_text.dispose @name_window_text = nil end xrxs9_terminate_message end #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size self.windowskin = RPG::Cache.windowskin($ams.message_box_skin) @x = @y = @max_x = @max_y = @indent = @lines = 0 @face_indent = 0 @opacity = 255 @cursor_width = 0 @write_speed = 0 @write_wait = 0 @mid_stop = false @face_file = nil @popchar = -2 if $game_temp.choice_start == 0 @x = 8 end if $game_temp.message_text != nil @now_text = $game_temp.message_text if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then @face_file = $1 + ".png" @x = @face_indent = 128 if FileTest.exist?("Graphics/Pictures/" + $1 + ".png") self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" } end begin last_text = @now_text.clone @now_text.gsub!(/\\[Vv]\[([iiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) } end until @now_text == last_text @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end #NEW #Dubealex's Stop Skip Text ON-OFF @now_text.gsub!(/\\[%]/) { "\100" } #End new command #NEW #Dubealex's Show Monster Name Feature @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : "" end #End new command #NEW #Dubealex's Show Item Price Feature @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : "" end #End new command #NEW #Dubealex's Show Hero Class Name Feature @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : "" end #End new command #NEW #Dubealex's Show Current Map Name Feature @now_text.gsub!(/\\[Mm]ap/) do $game_map.name != nil ? $game_map.name : "" end #End new command #NEW #Dubealex's Choose Name Box Text Color @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do $ams.name_box_text_color=$1.to_i @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" } end #End new command name_window_set = false if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil name_window_set = true name_text = $1 @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" } end if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then @popchar = $1.to_i if @popchar == -1 @x = @indent = 48 @y = 4 end @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" } end @max_choice_x = 0 if @popchar >= 0 @text_save = @now_text.clone @max_x = 0 @max_y = 4 for i in 0..3 line = @now_text.split(/\n/)[3-i] @max_y -= 1 if line == nil and @max_y <= 4-i next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width @max_x = cx if cx > @max_x if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end self.width = @max_x + 32 + @face_indent self.height = (@max_y - 1) * 32 + 64 @max_choice_x -= 68 @max_choice_x -= @face_indent*216/128 else @max_x = self.width - 32 - @face_indent for i in 0..3 line = @now_text.split(/\n/)[i] next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end @max_choice_x += 8 end @cursor_width = 0 @now_text.gsub!(/\\\\/) { " 0" } @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { " 1[#{$1}]" } @now_text.gsub!(/\\[Gg]/) { " 2" } @now_text.gsub!(/\\[ss]\[([0-9]+)\]/) { " 3[#{$1}]" } @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { " 4[#{$1}]" } #NEW #Dubealex's Permanent Color Change @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do $ams.message_box_text_color= $1.to_i @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" } end #End of new command #NEW #Dubealex's Font Change Feature @now_text.gsub(/\\[Tt]\[(.*?)\]/) do buftxt = $1.to_s $ams.font_type = buftxt @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" } end #End of new command @now_text.gsub!(/\\[.]/) { " 5" } @now_text.gsub!(/\\[|]/) { " 6" } @now_text.gsub!(/\\[>]/) { "16" } @now_text.gsub!(/\\[<]/) { "17" } @now_text.gsub!(/\\[!]/) { "20" } @now_text.gsub!(/\\[~]/) { "21" } @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "22[#{$1}]" } @now_text.gsub!(/\\[ii]/) { "23" } @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "24[#{$1}]" } @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "25[#{$1}]" } @now_text.gsub!(/\\[bb]\[([0-9]+)\]/) { "26[#{$1}]" } @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "27[#{$1}]" } reset_window if name_window_set color=$ams.name_box_text_color off_x = $ams.name_box_x_offset off_y = $ams.name_box_y_offset space = 2 x = self.x + off_x - space / 2 y = self.y + off_y - space / 2 w = self.contents.text_size(name_text).width + $ams.name_box_width + space h = $ams.name_box_height + space @name_window_frame = Window_Frame.new(x, y, w, h) @name_window_frame.z = self.z + 1 x = self.x + off_x + 4 y = self.y + off_y @name_window_text = Air_Text.new(x, y, name_text, color) @name_window_text.z = self.z + 2 end end reset_window if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end #-------------------------------------------------------------------------- def update super if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end @now_text = nil if @now_text == "" if @now_text != nil and @mid_stop == false if @write_wait > 0 @write_wait -= 1 return end text_not_skip = LETTER_BY_LETTER_MODE while true @max_x = @x if @max_x < @x @max_y = @y if @max_y < @y if (c = @now_text.slice!(/./m)) != nil if c == " 0" c = "\\" end if c == " 1" @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "") temp_color = $1 color = temp_color.to_i leading_x = temp_color.to_s.slice!(/./m) if leading_x == "#" self.contents.font.color = hex_color(temp_color) next end if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end if c == " 2" if @gold_window == nil and @popchar <= 0 @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end c = "" end if c == " 3" @now_text.sub!(/\[([0-9]+)\]/, "") speed = $1.to_i if speed >= 0 and speed <= 19 @write_speed = speed end c = "" end if c == " 4" @now_text.sub!(/\[(.*?)\]/, "") buftxt = $1.dup.to_s if buftxt.match(/\//) == nil and buftxt != "" then $soundname_on_speak = "Audio/SE/" + buftxt else $soundname_on_speak = buftxt.dup end c = "" elsif c == " 4" c = "" end if c == " 5" @write_wait += 5 c = "" end if c == " 6" @write_wait += 20 c = "" end if c == "16" text_not_skip = false c = "" end if c == "17" text_not_skip = true c = "" end if c == "20" @mid_stop = true c = "" end if c == "21" terminate_message return end if c == "23" @indent = @x c = "" end if c == "24" @now_text.sub!(/\[([0-9]+)\]/, "") @opacity = $1.to_i color = self.contents.font.color self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255) c = "" end if c == "25" @now_text.sub!(/\[([0-9]+)\]/, "") self.contents.font.size = [[$1.to_i, 6].max, 32].min c = "" end if c == "26" @now_text.sub!(/\[([0-9]+)\]/, "") @x += $1.to_i c = "" end if c == "27" @now_text.sub!(/\[(.*?)\]/, "") @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end c = "" end if c == "30" @now_text.sub!(/\[(.*?)\]/, "") self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24)) if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end @x += 24 c = "" end if c == "\n" @lines += 1 @y += 1 @x = 0 + @indent + @face_indent if @lines >= $game_temp.choice_start @x = 8 + @indent + @face_indent @cursor_width = @max_choice_x end c = "" end if c == "22" @now_text.sub!(/\[([0-9]+)\]/, "") @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i) c = "" end #NEW #Dubealex's Text Skip On/OFF Command if c == "\100" if @alex_skip==false @alex_skip=true else @alex_skip=false end c = "" end #end of new command if c != "" self.contents.draw_text(0+@x, 32 * @y, 40, 32, c) @x += self.contents.text_size?.width if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end end #SKIP_TEXT_CODE # B = Escape, 0 (On The NumPad), X # C = Enter, Space Bar and C # A = Shift, Z if Input.press?(Input::C) # <-- Change the value on that line if @alex_skip==false text_not_skip = false end end else text_not_skip = true break end if text_not_skip break end end @write_wait += @write_speed return end if @input_number_window != nil @input_number_window.update if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true @input_number_window.dispose @input_number_window = nil terminate_message end return end if @contents_showing if $game_temp.choice_max == 0 self.pause = true end if Input.trigger?(Input::cool.gif if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end if @mid_stop @mid_stop = false return else terminate_message end end return end if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end #-------------------------------------------------------------------------- def get_character(parameter) case parameter when 0 return $game_player else events = $game_map.events return events == nil ? nil : events[parameter] end end #-------------------------------------------------------------------------- def reset_window #MESSAGE_SIZE #MESSAGE_POSITION if @popchar >= 0 events = $game_map.events if events != nil character = get_character(@popchar) x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min self.x = x self.y = y end elsif @popchar == -1 self.x = -4 self.y = -4 self.width = 648 self.height = 488 else if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 self.y = $ams.message_y_top when 1 self.y = $ams.message_y_middle when 2 self.y = $ams.message_y_bottom end self.x = $ams.message_x if @face_file == nil self.width = $ams.message_width self.x = $ams.message_x else if self.width <= 600 self.width = 600 self.x -=60 end end self.height = $ams.message_height end end self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.color = text_color($ams.message_box_text_color) self.contents.font.name = $ams.font_type self.contents.font.size = $ams.font_size if @face_file != nil self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end if @popchar == -1 self.opacity = 255 self.back_opacity = 0 elsif $game_system.message_frame == 0 self.opacity = 255 self.back_opacity = $ams.message_box_opacity else self.opacity = 0 self.back_opacity = $ams.message_box_opacity end end #-------------------------------------------------------------------------- def gaiji_draw(x, y, num) if @gaiji_cache == nil return 0 else if @gaiji_cache.width < num * 24 return 0 end if self.contents.font.size >= 20 and self.contents.font.size <= 24 size = 24 else size = self.contents.font.size * 100 * 24 / 2200 end self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24)) if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end return size end end #-------------------------------------------------------------------------- def line_height return 32 if self.contents.font.size >= 20 and self.contents.font.size <= 24 return 32 else return self.contents.font.size * 15 / 10 end end #-------------------------------------------------------------------------- def ruby_draw_text(target, x, y, str,opacity) sizeback = target.font.size target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2 rubysize = [rubysize, 6].max opacity = [[opacity, 0].max, 255].min split_s = str.split(/,/) split_s[0] == nil ? split_s[0] = "" : nil split_s[1] == nil ? split_s[1] = "" : nil height = sizeback + rubysize width = target.text_size(split_s[0]).width target.font.size = rubysize ruby_width = target.text_size(split_s[1]).width target.font.size = sizeback buf_width = [target.text_size(split_s[0]).width, ruby_width].max width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0 if opacity == 255 target.font.size = rubysize target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1]) target.font.size = sizeback target.draw_text(x, y, width, target.font.size, split_s[0]) return width else if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height @opacity_text_buf.dispose @opacity_text_buf = Bitmap.new(buf_width, height) else @opacity_text_buf.clear end @opacity_text_buf.font.size = rubysize @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1) @opacity_text_buf.font.size = sizeback @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1) if sub_x >= 0 target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) else target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) end return width end end #-------------------------------------------------------------------------- def convart_value(option, index) option == nil ? option = "" : nil option.downcase! case option when "i" unless $data_items[index].name == nil r = sprintf("30[%s]%s", $data_items[index].icon_name, $data_items[index].name) end when "w" unless $data_weapons[index].name == nil r = sprintf("30[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name) end when "a" unless $data_armors[index].name == nil r = sprintf("30[%s]%s", $data_armors[index].icon_name, $data_armors[index].name) end when "s" unless $data_skills[index].name == nil r = sprintf("30[%s]%s", $data_skills[index].icon_name, $data_skills[index].name) end else r = $game_variables[index] end r == nil ? r = "" : nil return r end #-------------------------------------------------------------------------- def dispose terminate_message if @gaiji_cache != nil unless @gaiji_cache.disposed? @gaiji_cache.dispose end end unless @opacity_text_buf.disposed? @opacity_text_buf.dispose end $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end #========================================= # ▲ CLASS Window_Message Ends #========================================= #========================================= # ▼ Class Window_Frame Begins #========================================= class Window_Frame < Window_Base def initialize(x, y, width, height) super(x, y, width, height) self.windowskin = RPG::Cache.windowskin($ams.name_box_skin) self.contents = nil end #-------------------------------------------------------------------------- def dispose super end end #========================================= # ▲ CLASS Window_Frame Ends #========================================= #========================================= # ▼ CLASS Game_Map Additional Code Begins #========================================= class Game_Map #Dubealex's Addition (from XRXS) to show Map Name on screen def name $map_infos[@map_id] end end #========================================= # ▲ CLASS Game_Map Additional Code Ends #========================================= #========================================= # ▼ CLASS Scene_Title Additional Code Begins #========================================= class Scene_Title #Dubealex's Addition (from XRXS) to show Map Name on screen $map_infos = load_data("Data/MapInfos.rxdata") for key in $map_infos.keys $map_infos[key] = $map_infos[key].name end #Dubealex's addition to save data from the AMS in the save files $ams = AMS.new end #========================================= # ▲ CLASS Scene_Title Additional Code Ends #========================================= #========================================= # ▼ CLASS Window_Base Additional Code Begins #========================================= class Window_Base < Window #Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors def hex_color(string) red = 0 green = 0 blue = 0 if string.size != 6 print("Hex strings must be six characters long.") print("White text will be used.") return Color.new(255, 255, 255, 255) end for i in 1..6 s = string.slice!(/./m) if s == "#" print("Hex color string may not contain the \"#\" character.") print("White text will be used.") return Color.new(255, 255, 255, 255) end value = hex_convert(s) if value == -1 print("Error converting hex value.") print("White text will be used.") return Color.new(255, 255, 255, 255) end case i when 1 red += value * 16 when 2 red += value when 3 green += value * 16 when 4 green += value when 5 blue += value * 16 when 6 blue += value end end return Color.new(red, green, blue, 255) end #-------------------------------------------------------------------------- def hex_convert(character) case character when "0" return 0 when "1" return 1 when "2" return 2 when "3" return 3 when "4" return 4 when "5" return 5 when "6" return 6 when "7" return 7 when "8" return 8 when "9" return 9 when "A" return 10 when "B" return 11 when "C" return 12 when "D" return 13 when "E" return 14 when "F" return 15 end return -1 end end #========================================= # ▲ CLASS Window_Base Additional Code Ends #========================================= #========================================= # ▼ Class Air_Text Begins #========================================= class Air_Text < Window_Base def initialize(x, y, designate_text, color=0) super(x-16, y-16, 32 + designate_text.size * 12, 56) self.opacity = 0 self.back_opacity = 0 self.contents = Bitmap.new(self.width - 32, self.height - 32) w = self.contents.width h = self.contents.height self.contents.font.name = $ams.name_font_type self.contents.font.size = $ams.name_font_size self.contents.font.color = text_color(color) self.contents.draw_text(0, 0, w, h, designate_text) end #-------------------------------------------------------------------------- def dispose self.contents.clear super end end #========================================== # ▲ CLASS Air_Text Ends #========================================== #=================================================== # ▼ CLASS Scene_Save Additional Code Begins #=================================================== class Scene_Save < Scene_File alias ams_original_write_save_data write_save_data def write_save_data(file) ams_original_write_save_data(file) Marshal.dump($ams, file) end end #=================================================== # ▲ CLASS Scene_Save Additional Code Ends #=================================================== #=================================================== # ▼ CLASS Scene_Load Additional Code Begins #=================================================== class Scene_Load < Scene_File alias ams_original_read_save_data read_save_data def read_save_data(file) ams_original_read_save_data(file) $ams = Marshal.load(file) end end #=================================================== # ▲ CLASS Scene_Load Additional Code Ends #===================================================
     
    [info=Support Topic]http://www.rmxpunlimited.net/forums/index.php?showtopic=30[/info]

    1,598 downloads

    11 comments

    Updated

  20. Mr.Mo's ABS v4.5

    Mr Mo's ABS
     
    Introduction
    Version : V 4.5
    I wasn't happy with all the other ABSs, so I made this ABS with many features and customizable as possible.
     
    Features
    Here are some(most features can be toggled off/on, see the help file);
    - Improved AI
    - Event Vs Event
    - Player Vs Event
    - Able to choose if a monster attacks the closest enemy or random
    - Able to assign any hot keys for skills and items.
    - Able to use Non-Ranged Skills(attacks closest enemy)
    - Able to choose button Mash time for each attack or skill. If left blank the default is 3 seconds(can change).
    - Displays Demage
    - Level Up Display
    - Kick Back Effect
    - Fade dead enemies
    - ABS off/on. i.e $ABS.active = false # Off
    - Dash and Sneak, can be turned off.
    - Able to turn off and on the hud.
    - Able to animate monsters and player.
    - State Effects and Animations
    - Smaller Animations
    - and more..! (See the Help File)
     
    Thanks and Credits
    Credit me and Near Fantastica.
    # Thanks to Near Fantastica's methods;
    # - In Range?, Get Range, In Direction?, enemy_dead?, treasure
    # - RANGE_WEAPONS, RANGE_SKILLS
    # - Class Game_Range(highly modified for convinience)
    # - Scene_Skill(main, update_shk)
    This is not an edit of Near Fantastica's ABS. I wrote mines from scratch, except for the methods I listed.
     
    If you plan to use the blonde girl that comes with this, give credit to Prexus too, for using them.
     
    If you plan to use the Hud:
    Credit Trickster for the Gradient Bars
    Credit Me for coding it.
    Credit Axerax for designing it and coding it

    3,411 downloads

    12 comments

    Updated

  21. Cogwheel's Pixel Movement

    This script allows the player to move in 8 directions (without the need of an 8 way graphic) AND also allows them to move pixel-by-pixel instead of square by square. The only problem is that it IS limited by your passability, in that if you make a square impassible, even if it is just a tiny tree trunk that doesn't cover the entire square, the character will still be unable to move along that square. This was made by Cogwheel!
     
    Paste this code above Main but under Scene_Debug:
    [spoiler=Cogwheels Pixel Movement Script]
    # [url="http://members.jcom.home.ne.jp/cogwheel/"]http://members.jcom.home.ne.jp/cogwheel/[/url] #============================================================================== # Game_Player #============================================================================== class Game_Player < Game_Character UP = 0 DOWN = 0 SIDE = 0 SLANT = false #-------------------------------------------------------------------------- attr_reader :event attr_accessor :move_speed #-------------------------------------------------------------------------- alias :update_original :update def update @walk = 4 @dash = 5 @event = 4 @dot_m = true unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing if @walk != @dash if Input.press?(Input::C) if @move_speed != @dash @move_speed = @dash end else if @move_speed != @walk @move_speed = @walk end end end end if @revise_x == nil and @revise_y == nil @revise_x = 0 @revise_y = 0 end unless @dot_m update_original return end if @move_route_forcing last_moving = moving? last_real_x = @real_x last_real_y = @real_y if (@revise_x != 0 or @revise_y != 0) and not jumping? and @move == true if @revise_x != @real_x - @x * 128 or @revise_y != @real_y - @y * 128 @revise_x = @real_x - @x * 128 @revise_y = @real_y - @y * 128 end distance1 = 2 ** @move_speed distance2 = Math.sqrt(@revise_x ** 2 + @revise_y ** 2) if distance1 > distance2 @real_x = @real_x - @revise_x @real_y = @real_y - @revise_y @revise_x = 0 @revise_y = 0 anime_update else @real_x -= (distance1 * @revise_x / distance2).round @real_y -= (distance1 * @revise_y / distance2).round @revise_x = @real_x - @x * 128 @revise_y = @real_y - @y * 128 anime_update end else super end else @move = false unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing @event_run = false case Input.dir8 when 1 move_lower_left_p when 2 move_down_p when 3 move_lower_right_p when 4 move_left_p when 6 move_right_p when 7 move_upper_left_p when 8 move_up_p when 9 move_upper_right_p end end last_real_x = @real_x last_real_y = @real_y @real_x = @x * 128 + @revise_x @real_y = @y * 128 + @revise_y last_moving = moving? move_on if (last_real_x != @real_x or last_real_y != @real_y) @move_distance = 0 if @move_distance == nil @move_distance += Math.sqrt((last_real_x - @real_x) ** 2 + (last_real_y - @real_y) ** 2) if @move_distance >= 128 @move_distance %= 128 increase_steps end anime_update else @pattern = 0 end end if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y $game_map.scroll_down(@real_y - last_real_y) end if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X $game_map.scroll_left(last_real_x - @real_x) end if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X $game_map.scroll_right(@real_x - last_real_x) end if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y $game_map.scroll_up(last_real_y - @real_y) end if last_moving result = check_event_trigger_here([1,2]) if result == false unless $DEBUG and Input.press?(Input::CTRL) if @encounter_count > 0 @encounter_count -= 1 end end end end if Input.trigger?(Input::C) check_event_trigger_here([0]) check_event_trigger_there([0,1,2]) end end #-------------------------------------------------------------------------- def initialize @revise_x = 0 @revise_y = 0 @move == false super end #-------------------------------------------------------------------------- def moving? unless @dot_m result = super return result end if @move_route_forcing if @move == false return false end super else return (@x != (@real_x / 128.0).round or @y != (@real_y / 128.0).round) end end #-------------------------------------------------------------------------- def moving_a? if @move == false if (@move_route.list[@move_route_index].code <= 14 or @move_route.list[@move_route_index].code == 25) @move = true end return false end moving? end #-------------------------------------------------------------------------- def update_jump @jump_count -= 1 @real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1) @real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1) if @jump_count == 0 @revise_x = 0 @revise_y = 0 end end #-------------------------------------------------------------------------- def move_type_custom unless @dot_m super return end if jumping? or moving_a? return end while @move_route_index < @move_route.list.size command = @move_route.list[@move_route_index] if command.code == 0 if @move_route.repeat @move_route_index = 0 end unless @move_route.repeat if @move_route_forcing and not @move_route.repeat @move_route_forcing = false @move_route = @original_move_route @move_route_index = @original_move_route_index @original_move_route = nil end @stop_count = 0 end return end if command.code <= 14 case command.code when 1 move_down when 2 move_left when 3 move_right when 4 move_up when 5 move_lower_left when 6 move_lower_right when 7 move_upper_left when 8 move_upper_right when 9 move_random when 10 move_toward_player when 11 move_away_from_player when 12 move_forward when 13 move_backward when 14 jump(command.parameters[0], command.parameters[1]) end if not @move_route.skippable and not moving? and not jumping? return end @move_route_index += 1 return end if command.code == 15 @wait_count = command.parameters[0] * 2 - 1 @move_route_index += 1 return end if command.code >= 16 and command.code <= 26 case command.code when 16 turn_down when 17 turn_left when 18 turn_right when 19 turn_up when 20 turn_right_90 when 21 turn_left_90 when 22 turn_180 when 23 turn_right_or_left_90 when 24 turn_random when 25 turn_toward_player when 26 turn_away_from_player end @move_route_index += 1 return end if command.code >= 27 case command.code when 27 $game_switches[command.parameters[0]] = true $game_map.need_refresh = true when 28 $game_switches[command.parameters[0]] = false $game_map.need_refresh = true when 29 @move_speed = command.parameters[0] when 30 @move_frequency = command.parameters[0] when 31 @walk_anime = true when 32 @walk_anime = false when 33 @step_anime = true when 34 @step_anime = false when 35 @direction_fix = true when 36 @direction_fix = false when 37 @through = true when 38 @through = false when 39 @always_on_top = true when 40 @always_on_top = false when 41 @tile_id = 0 @character_name = command.parameters[0] @character_hue = command.parameters[1] if @original_direction != command.parameters[2] @direction = command.parameters[2] @original_direction = @direction @prelock_direction = 0 end if @original_pattern != command.parameters[3] @pattern = command.parameters[3] @original_pattern = @pattern end when 42 @opacity = command.parameters[0] when 43 @blend_type = command.parameters[0] when 44 $game_system.se_play(command.parameters[0]) when 45 result = eval(command.parameters[0]) end @move_route_index += 1 return end end end #-------------------------------------------------------------------------- def move_down_p turn_down distance = 2 ** @move_speed down1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- def down1(x, y, distance, down = false) result = down2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x, y+1) return result end if @revise_x < -SIDE result = down2(x, y + 1, distance, 4) result &= down2(x - 1, y, distance) if result == false if down move_lower_right_p if @revise_x > SIDE @revise_x = SIDE end end return result end elsif @revise_x > SIDE result = down2(x, y + 1, distance, 6) result &= down2(x + 1, y, distance) if result == false if down move_lower_left_p if @revise_x < -SIDE @revise_x = -SIDE end end return result end end @revise_y += distance return result end #-------------------------------------------------------------------------- def down2(x, y, distance, d = 2) if @revise_y + distance > DOWN unless passable?(x, y, d) if @revise_y < DOWN @revise_y = DOWN end return false end end return true end #-------------------------------------------------------------------------- def move_left_p turn_left distance = 2 ** @move_speed left1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- def left1(x, y, distance, left = false) result = left2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x-1, y) return result end if @revise_y < -UP result = left2(x - 1, y, distance, 8) result &= left2(x, y - 1, distance) if result == false if left move_lower_left_p if @revise_y > DOWN @revise_y = DOWN end end return result end elsif @revise_y > DOWN result = left2(x - 1, y, distance, 2) result &= left2(x, y + 1, distance) if result == false if left move_upper_left_p if @revise_y < -UP @revise_y = -UP end end return result end end @revise_x -= distance return result end #-------------------------------------------------------------------------- def left2(x, y, distance, d = 4) if @revise_x - distance < -SIDE unless passable?(x, y, d) if @revise_x > -SIDE @revise_x = -SIDE end return false end end return true end #-------------------------------------------------------------------------- def move_right_p turn_right distance = 2 ** @move_speed right1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- def right1(x, y, distance, right = false) result = right2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x+1, y) return result end if @revise_y < -UP result = right2(x + 1, y, distance, 8) result &= right2(x, y - 1, distance) if result == false if right move_lower_right_p if @revise_y > DOWN @revise_y = DOWN end end return result end elsif @revise_y > DOWN result = right2(x + 1, y, distance, 2) result &= right2(x, y + 1, distance) if result == false if right move_upper_right_p if @revise_y < -UP @revise_y = -UP end end return result end end @revise_x += distance return result end #-------------------------------------------------------------------------- def right2(x, y, distance, d = 6) if @revise_x + distance > SIDE unless passable?(x, y, d) if @revise_x < SIDE @revise_x = SIDE end return false end end return true end #-------------------------------------------------------------------------- def move_up_p turn_up distance = 2 ** @move_speed up1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- def up1(x, y, distance, up = false) result = up2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x, y-1) return result end if @revise_x < -SIDE result = up2(x, y - 1, distance, 4) result &= up2(x - 1, y, distance) if result == false if up move_upper_right_p if @revise_x > SIDE @revise_x = SIDE end end return result end elsif @revise_x > SIDE result = up2(x, y - 1, distance, 6) result &= up2(x + 1, y, distance) if result == false if up move_upper_left_p if @revise_x < -SIDE @revise_x = -SIDE end end return result end end @revise_y -= distance return result end #-------------------------------------------------------------------------- def up2(x, y, distance, d = 8) if @revise_y - distance < -UP unless passable?(x, y, d) if @revise_y > -UP @revise_y = -UP end return false end end return true end #-------------------------------------------------------------------------- def move_lower_left_p unless @direction_fix @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction) end distance = (2 ** @move_speed) / Math.sqrt(2) turn_left unless down1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_down if @event_run unless @event_run if last_move?(@real_x, @real_y, 2, distance) result = check_event_trigger_here([1,2], false) if result == true return end end move_on if @revise_y > DOWN and -UP > @revise_y - distance @revise_y = DOWN end turn_down unless left1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_left if @event_run end end #-------------------------------------------------------------------------- def move_lower_right_p unless @direction_fix @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction) end distance = (2 ** @move_speed) / Math.sqrt(2) turn_right unless down1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_down if @event_run unless @event_run if last_move?(@real_x, @real_y, 2, distance) result = check_event_trigger_here([1,2], false) if result == true return end end move_on if @revise_y > DOWN and -UP > @revise_y - distance @revise_y = DOWN end turn_down unless right1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_right if @event_run end end #-------------------------------------------------------------------------- def move_upper_left_p unless @direction_fix @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction) end distance = (2 ** @move_speed) / Math.sqrt(2) turn_left unless up1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_up if @event_run unless @event_run if last_move?(@real_x, @real_y, 8, distance) result = check_event_trigger_here([1,2], false) if result == true return end end move_on if @revise_y + distance > DOWN and -UP > @revise_y @revise_y = -UP end turn_up unless left1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_left if @event_run end end #-------------------------------------------------------------------------- def move_upper_right_p unless @direction_fix @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction) end distance = (2 ** @move_speed) / Math.sqrt(2) turn_right unless up1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_up if @event_run unless @event_run if last_move?(@real_x, @real_y, 8, distance) result = check_event_trigger_here([1,2], false) if result == true return end end move_on if @revise_y + distance > DOWN and -UP > @revise_y @revise_y = -UP end turn_up unless right1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance) turn_right if @event_run end end #-------------------------------------------------------------------------- def check_event_trigger_here(triggers, run = true) result = false if $game_system.map_interpreter.running? return result end for event in $game_map.events.values if event.x == ((@x * 128 + @revise_x) / 128.0).round and event.y == ((@y * 128 + @revise_y) / 128.0).round and triggers.include?(event.trigger) if not event.jumping? and event.over_trigger? if event.list.size > 1 if run == true event.start end result = true end end end end return result end #-------------------------------------------------------------------------- def move_on if @y < (@y + @revise_y / 128.0).round @y += 1 @revise_y -= 128 end if @x > (@x + @revise_x / 128.0).round @x -= 1 @revise_x += 128 end if @x < (@x + @revise_x / 128.0).round @x += 1 @revise_x -= 128 end if @y > (@y + @revise_y / 128.0).round @y -= 1 @revise_y += 128 end end #-------------------------------------------------------------------------- def anime_update if @walk_anime @anime_count += 1.5 elsif @step_anime @anime_count += 1 end if @anime_count > 18 - @move_speed * 2 if not @step_anime and @stop_count > 0 @pattern = @original_pattern else @pattern = (@pattern + 1) % 4 end @anime_count = 0 end end #-------------------------------------------------------------------------- alias :moveto_original :moveto def moveto(x, y) @revise_x = 0 @revise_y = 0 moveto_original(x, y) end #-------------------------------------------------------------------------- def last_move?(x, y, direction, distance) if direction == 2 or direction == 6 distance *= -1 end if (direction == 2 or direction == 8) and (y / 128.0).round != ((y - distance) / 128.0).round return true end if (direction == 4 or direction == 6) and (x / 128.0).round != ((x - distance) / 128.0).round return true end return false end end #============================================================================== # Game_Character #============================================================================== class Game_Character def update_move distance = 2 ** @move_speed if @x * 128 != @real_x and @y * 128 != @real_y and Game_Player::SLANT distance /= Math.sqrt(2) end if @y * 128 > @real_y @real_y = [@real_y + distance, @y * 128].min end if @x * 128 < @real_x @real_x = [@real_x - distance, @x * 128].max end if @x * 128 > @real_x @real_x = [@real_x + distance, @x * 128].min end if @y * 128 < @real_y @real_y = [@real_y - distance, @y * 128].max end if @walk_anime @anime_count += 1.5 elsif @step_anime @anime_count += 1 end end end #============================================================================== # Game_Event #============================================================================== class Game_Event < Game_Character def start if @list.size > 1 if $game_player.event != 0 $game_player.move_speed = $game_player.event end @starting = true end end end
     
     
    [info=Support Topic]http://www.rmxpunlimited.net/forums/index.php?showtopic=162[/info]

    490 downloads

    0 comments

    Updated

  22. Cheats Input Script - v1.2 - by BudsieBuds

    Script
    [spoiler=Script]
    #============================================================================== # Cheats Input Script - v1.2 - by BudsieBuds #------------------------------------------------------------------------------ # NOTE: Start editing at line 68 and stop editing at '# STOP EDITING \\'. #============================================================================== #============================================================================== # ** Scene_Cheats #------------------------------------------------------------------------------ # by BudsieBuds #============================================================================== class Scene_Cheats #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make windows @edit_window = Window_CheatsEdit.new @input_window = Window_CheatsInput.new # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of windows @edit_window.dispose @input_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update windows @edit_window.update @input_window.update # If B button was pressed if Input.repeat?(Input:: B) # If cursor position is at 0 if @edit_window.index == 0 return end # Play cancel SE $game_system.se_play($data_system.cancel_se) # Delete text @edit_window.back return end # If C button was pressed if Input.trigger?(Input::C) # If cursor position is at [OK] if @input_window.character == nil @cheat_word = @edit_window.cheat.downcase =begin # START EDITING // =============================================================================== The cheat that you have to input: elsif @cheat_word == "Put the cheat you want to use here." ------------------------------------------------------------------------------- For item(s): $game_party.gain_item(Item ID, How many) For gold: $game_party.gain_gold(How many) For weapon(s): $game_party.gain_weapon(Weapon ID, How many) For armor(s): $game_party.gain_armor(Armor ID, How many) For skill(s): $game_party.actors[Actor ID].learn_skill(Skill ID) For adding (an) actor(s): $game_party.add_actor(id) For changing a stat: $game_actors[id].stat = amount ------------------------------------------------------------------------------- This is the verification sound $game_system.se_play($data_system.decision_se) ------------------------------------------------------------------------------- Your cheat can have a maximum of 17 letters. The first cheat has to start with 'if'. The cheats coming after that have to start with 'elsif'. =============================================================================== =end if @cheat_word == "iamrich" $game_party.gain_gold(500) $game_system.se_play($data_system.decision_se) elsif @cheat_word == "iamarealfighter" $game_party.gain_weapon(1, 1) $game_party.gain_armor(21, 1) $game_system.se_play($data_system.decision_se) elsif @cheat_word == "iloveitems" for i in 1...$data_items.size $game_party.gain_item(i, 10) $game_system.se_play($data_system.decision_se) end elsif @cheat_word == "somehelpplease" $game_party.add_actor(2) $game_system.se_play($data_system.decision_se) # STOP EDITING \\ else # Play buzzer SE $game_system.se_play($data_system.buzzer_se) end # Switch to map screen $scene = Scene_Map.new return end # If text character is empty if @input_window.character == "" # Play buzzer SE $game_system.se_play($data_system.buzzer_se) return end # Play decision SE $game_system.se_play($data_system.decision_se) # Add text character @edit_window.add(@input_window.character) return end end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # by BudsieBuds #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Draw Graphic # icon : icon # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_icon_graphic(icon, x, y) bitmap = RPG::Cache.icon(icon) cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end end #============================================================================== # ** Window_CheatsEdit #------------------------------------------------------------------------------ # by BudsieBuds #============================================================================== class Window_CheatsEdit < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :cheat # cheat attr_reader :index # cursor position #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 128) self.contents = Bitmap.new(width - 32, height - 32) @max_char = 17 @index = 0 @cheat = "" refresh update_cursor_rect end #-------------------------------------------------------------------------- # * Add Character # character : text character to be added #-------------------------------------------------------------------------- def add(character) if @index < @max_char and character != "" @cheat += character @index += 1 refresh update_cursor_rect end end #-------------------------------------------------------------------------- # * Delete Character #-------------------------------------------------------------------------- def back if @index > 0 # Delete 1 text character name_array = @cheat.split(//) @cheat = "" for i in 0...name_array.size-1 @cheat += name_array[i] end @index -= 1 refresh update_cursor_rect end end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear # Draw cheat name_array = @cheat.split(//) for i in 0...@max_char c = name_array[i] if c == nil c = "_" end x = (i + 1) * 32 self.contents.draw_text(x, 32, 28, 32, c, 1) end # Draw graphic draw_icon_graphic("cheat", 16, 60) end #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect x = (@index + 1) * 32 self.cursor_rect.set(x, 32, 28, 32) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_cursor_rect end end #============================================================================== # ** Window_CheatsInput #------------------------------------------------------------------------------ # by BudsieBuds #============================================================================== class Window_CheatsInput < Window_Base CHARACTER_TABLE = [ "A","B","C","D","E", "F","G","H","I","J", "K","L","M","N","O", "P","Q","R","S","T", "U","V","W","X","Y", "Z"," "," "," "," ", "+","-","*","/","!", "1","2","3","4","5", "" ,"" ,"" ,"" ,"" , "a","b","c","d","e", "f","g","h","i","j", "k","l","m","n","o", "p","q","r","s","t", "u","v","w","x","y", "z"," "," "," "," ", "#","$","%","&","@", "6","7","8","9","0", "" ,"" ,"" ,"" ,"" , ] #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0, 128, 640, 352) self.contents = Bitmap.new(width - 32, height - 32) @index = 0 refresh update_cursor_rect end #-------------------------------------------------------------------------- # * Text Character Acquisition #-------------------------------------------------------------------------- def character return CHARACTER_TABLE[@index] end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...90 x = 140 + i / 5 / 9 * 180 + i % 5 * 32 y = i / 5 % 9 * 32 self.contents.draw_text(x, y, 32, 32, CHARACTER_TABLE[i], 1) end self.contents.draw_text(428, 9 * 32, 48, 32, "OK", 1) end #-------------------------------------------------------------------------- # * Cursor Rectangle Update #-------------------------------------------------------------------------- def update_cursor_rect # If cursor is positioned on [OK] if @index >= 90 self.cursor_rect.set(428, 9 * 32, 48, 32) # If cursor is positioned on anything other than [OK] else x = 140 + @index / 5 / 9 * 180 + @index % 5 * 32 y = @index / 5 % 9 * 32 self.cursor_rect.set(x, y, 32, 32) end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super # If cursor is positioned on [OK] if @index >= 90 # Cursor down if Input.trigger?(Input::DOWN) $game_system.se_play($data_system.cursor_se) @index -= 90 end # Cursor up if Input.repeat?(Input::UP) $game_system.se_play($data_system.cursor_se) @index -= 90 - 40 end # If cursor is positioned on anything other than [OK] else # If right directional button is pushed if Input.repeat?(Input::RIGHT) # If directional button pressed down is not a repeat, or # cursor is not positioned on the right edge if Input.trigger?(Input::RIGHT) or @index / 45 < 3 or @index % 5 < 4 # Move cursor to right $game_system.se_play($data_system.cursor_se) if @index % 5 < 4 @index += 1 else @index += 45 - 4 end if @index >= 90 @index -= 90 end end end # If left directional button is pushed if Input.repeat?(Input::LEFT) # If directional button pressed down is not a repeat, or # cursor is not positioned on the left edge if Input.trigger?(Input::LEFT) or @index / 45 > 0 or @index % 5 > 0 # Move cursor to left $game_system.se_play($data_system.cursor_se) if @index % 5 > 0 @index -= 1 else @index -= 45 - 4 end if @index < 0 @index += 90 end end end # If down directional button is pushed if Input.repeat?(Input::DOWN) # Move cursor down $game_system.se_play($data_system.cursor_se) if @index % 45 < 40 @index += 5 else @index += 90 - 40 end end # If up directional button is pushed if Input.repeat?(Input::UP) # If directional button pressed down is not a repeat, or # cursor is not positioned on the upper edge if Input.trigger?(Input::UP) or @index % 45 >= 5 # Move cursor up $game_system.se_play($data_system.cursor_se) if @index % 45 >= 5 @index -= 5 else @index += 90 end end end # If L or R button was pressed if Input.repeat?(Input::L) or Input.repeat?(Input::R) # Move capital / small $game_system.se_play($data_system.cursor_se) if @index < 45 @index += 45 else @index -= 45 end end end update_cursor_rect end end
     
     
    FAQ:
     
    Q: How to access the script?
    A: Use '$scene = Scene_Cheats.new'.
     
    Q: Can I make my own icon?
    A: Yeah, but make sure that your icon is 24x24 pixels, that the name is 'cheat.png' and that it's in the 'Icons' folder of your game.
     
    Q: I can't see any letters, how come?
    A: Well, that probably because you're using the illegal version of RPG Maker XP.
    You can download the legal version HERE, it's a 30 days trail.
    If the trail ends you can buy RMXP for $60.
     
    Put this icon in your icons folder:

     
    Future Changes:
     
    Case-sensitive
    Better design
    Buzzer sound when the cheat isn't correct
     
    Credits:
     
    BudsieBuds
     
     
    Thanks:
     
    Homer (aka Matte)
     
    [info=Support Topic]http://www.rmxpunlimited.net/forums/index.php?showtopic=153[/info]

    263 downloads

    1 comment

    Updated

  23. Chrono Trigger CMS

    Chrono Trigger CMS
     
    Introduction
     
    A CMS that looks like the menu system in the videogame Chrono Trigger
     
    Update: September, 14th
    Added a Windowskin version of the menu and fixed some bugs.
     
    Update: September, 19th
    Added a ring menu version of the script
     
    Features
     
    * new item menu
    * new skill menu (no double or tripple techs included)
    * new equip menu
    * party order changing feature
    * new save and load menu
    Update: September, 19th
    * ring menu command window
     
    Instructions
     
    Instructions are within the scripts in the demo.
     
    FAQ
    [spoiler=How to make it compatible with Dubealex's AMS]
    In the CMS find these lines:

    def write_save_data(file) # Make character data for drawing save file characters = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] characters.push([actor.character_name, actor.character_hue]) end # Write character data for drawing save file Marshal.dump(characters, file) # Wrire frame count for measuring play time Marshal.dump(Graphics.frame_count, file) # Increase save count by 1 $game_system.save_count += 1 # Save magic number # (A random value will be written each time saving with editor) $game_system.magic_number = $data_system.magic_number # Write each type of game object 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
    After Marshal.dump($game_player, file) add
    Marshal.dump($ams, file)
     
    You old save file won't work, but new ones will.
     
     
    [spoiler=How to use only the save menu(Windowskin Version)]For the save menu put this script above main:

    #============================================================================== # ** Chrono Trigger Save Menu #------------------------------------------------------------------------------ # Raziel # 2006-09-09 # Version 1.00 #============================================================================== # ~Instructions # Icons of the characters are used in the save menu. # Make sure you put them in the icon folder and name them # like you name your character file, for example the icon for # Arshes would be 001-Fighter01 # # For the chapter function, just use $game_system.chapter = "desired filename" # in a call script command and then the savefile will have the name # you choose. #============================================================================== #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This is a superclass for the save screen and load screen. #============================================================================== class Scene_File #-------------------------------------------------------------------------- # * Object Initialization # help_text : text string shown in the help window #-------------------------------------------------------------------------- def initialize(help_text) @help_text = help_text end #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main # Make save file window @back_ground = Sprite.new @back_ground.bitmap = RPG::Cache.picture(CT_Pictures::BG_Picture) @save_window = [] @save_window[0] = Window_Base.new(39,32, 560, 70) @save_window[1] = Window_Base.new(39,102, 560, 70) @save_window[2] = Window_Base.new(39,172, 560, 70) @save_left = Window_Base.new(39,273,241,172) @save_right = Window_Base.new(280,273,320,172) @savefile_windows = [] @save_status = Window_SaveStatus.new for i in 0..2 @savefile_windows.push(Window_SaveFile.new(i, make_filename(i))) end # Select last file to be operated @file_index = $game_temp.last_file_index @savefile_windows[@file_index].selected = true # Execute transition Graphics.transition # Main loop loop do # Update game screen Graphics.update # Update input information Input.update # Frame update update # Abort loop if screen is changed if $scene != self break end end # Prepare for transition Graphics.freeze # Dispose of windows @save_status.dispose @back_ground.dispose @save_left.dispose @save_right.dispose for i in 0..2 @save_window[i].dispose end for i in @savefile_windows i.dispose end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update @save_status.update $game_temp.save_index = @file_index if Input.trigger?(Input::C) # Call method: on_decision (defined by the subclasses) on_decision(make_filename(@file_index)) $game_temp.last_file_index = @file_index return end # If B button was pressed if Input.trigger?(Input::B) # Call method: on_cancel (defined by the subclasses) on_cancel return end # If the down directional button was pressed if Input.repeat?(Input::DOWN) # If the down directional button pressed down is not a repeat, # or cursor position is more in front than 3 unless @file_index == 2 if Input.trigger?(Input::DOWN) # Play cursor SE $game_system.se_play($data_system.cursor_se) # Move cursor down @savefile_windows[@file_index].selected = false @file_index = (@file_index + 1) @savefile_windows[@file_index].selected = true return end end # If the up directional button was pressed elsif Input.repeat?(Input::UP) # If the up directional button pressed down is not a repeat、 # or cursor position is more in back than 0 unless @file_index == 0 if Input.trigger?(Input::UP) # Play cursor SE $game_system.se_play($data_system.cursor_se) # Move cursor up @savefile_windows[@file_index].selected = false @file_index = (@file_index - 1) @savefile_windows[@file_index].selected = true return end end end end end #============================================================================== # ** Game_System #------------------------------------------------------------------------------ # This class handles data surrounding the system. Backround music, etc. # is managed here as well. Refer to "$game_system" for the instance of # this class. #============================================================================== class Game_System attr_accessor :chapter alias raz_cms_system_initialize initialize #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize @chapter = "" raz_cms_system_initialize end end #============================================================================== # ** Game_Temp #------------------------------------------------------------------------------ # This class handles temporary data that is not included with save data. # Refer to "$game_temp" for the instance of this class. #============================================================================== class Game_Temp attr_accessor :save_index alias raz_cms_initialize initialize #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize @save_index = 0 raz_cms_initialize end end #============================================================================== # ** Window_SaveStatus #------------------------------------------------------------------------------ # This window displays stats on the save files. #============================================================================== class Window_SaveStatus < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize super(0,0,640,480) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @index = $game_temp.save_index refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear filename = "Save#{$game_temp.save_index + 1}.rxdata" return unless FileTest.exist?(filename) file = File.open(filename, "r") @characters = Marshal.load(file) @frame_count = Marshal.load(file) @game_system = Marshal.load(file) @game_switches = Marshal.load(file) @game_variables = Marshal.load(file) Marshal.load(file) Marshal.load(file) Marshal.load(file) party = Marshal.load(file) Marshal.load(file) map = Marshal.load(file) self.contents.font.size = 20 self.contents.font.bold = true for i in 0...party.actors.size actor = party.actors[i] x = 284 y = i * 36 + 265 draw_actor_name(actor, x + 40, y - 2) draw_actor_level(actor, x + 170, y - 2) self.contents.blt(x + 5, y + 10, RPG::Cache.icon(actor.character_name), Rect.new(0,0,24,24)) self.contents.draw_text(x + 40, y + 16, 150, 32, "#{$data_system.words.hp} #{actor.hp} / #{actor.maxhp}") self.contents.draw_text(x + 170, y + 16, 150, 32, "#{$data_system.words.sp} #{actor.sp} / #{actor.maxsp}") end total_sec = @frame_count / Graphics.frame_rate hour = total_sec / 60 / 60 min = total_sec / 60 % 60 sec = total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name self.contents.font.size = 20 self.contents.draw_text(45, 272, 144, 32, map_name) self.contents.draw_text(45, 304, 144, 32, "TIME:") self.contents.draw_text(100, 304, 144, 32, text,2) self.contents.draw_text(45, 336, 144, 32, $data_system.words.gold + ":") self.contents.draw_text(100, 336, 144, 32, party.gold.to_s,2) self.contents.draw_text(45, 368, 144, 32, "Save #:") self.contents.draw_text(100, 368, 144, 32, @game_system.save_count.to_s, 2) end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update super if @index != $game_temp.save_index refresh @index = $game_temp.save_index end end end #============================================================================== # ** Window_SaveFile #------------------------------------------------------------------------------ # This window displays save files on the save and load screens. #============================================================================== class Window_SaveFile < Window_Base #-------------------------------------------------------------------------- # * Object Initialization # file_index : save file index (0-2) # filename : file name #-------------------------------------------------------------------------- def initialize(file_index, filename) super(42, 35 + file_index % 4 * 70, 640, 90) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @file_index = file_index @filename = "Save#{@file_index + 1}.rxdata" @time_stamp = Time.at(0) @file_exist = FileTest.exist?(@filename) if @file_exist file = File.open(@filename, "r") @time_stamp = file.mtime @characters = Marshal.load(file) @frame_count = Marshal.load(file) @game_system = Marshal.load(file) @game_switches = Marshal.load(file) @game_variables = Marshal.load(file) @total_sec = @frame_count / Graphics.frame_rate file.close end refresh @selected = false end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.size = 18 self.contents.font.bold = true # Draw file number self.contents.font.color = normal_color name = "File#{@file_index + 1}" self.contents.draw_text(4, 0, 600, 32, name) @name_width = contents.text_size(name).width # If save file exists if @file_exist self.contents.draw_text(0, 0, 600, 32, @game_system.chapter.to_s,1) end end end
     
     
    Compatibility
     
    Incompatible with some menu add ons. You'd have to edit some things to include them.
    If you want to include something just ask, maybe I can help you.
     
    Credits and Thanks
     
    Credits to Squall / Selwyn for his cursor script
    Credits to Der VVulfman for the ring menu.
    Thanks to RPG Advocate for the party order changing method.
    Thanks to MeisMe for helping me out fixing some bugs.
    Thanks to SephirothSpawn and Stevo for betatesting.
     
    Credits to Nin for the background picture of the windowskin version.
    I don't know who made the windowskin or the icons, so if you know who made them, please PM me so I can add those to the credit list.
     
    Author's Notes
    In the instructions in the script it says use $game_system = "desired filename" to store the savefile's name, but it should be $game_system.chapter = "desired filename".
    You can see it as an example within the demo when you click the event.
    Enjoy

    1,612 downloads

    5 comments

    Updated

  24. RMXP meets Flash v1.0

    This Script will allow you to play Flash Movies in RPG Maker XP.

    572 downloads

    0 comments

    Updated

  25. SFont Script

    A quick script I wrote that gives the maker access to SFonts. An SFont is an image that replaces font files that contains the characters you want to display. For more information here is the official sfont page http://www.linux-games.com/sfont

    138 downloads

    3 comments

    Updated

Sign in to follow this  

×
×
  • Create New...