Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.
Original Source
- Original title: KLazyWayOut XP
- Original author: kyonides
- Original date: June 14, 2022
- Source thread: https://forums.rpgmakerweb.com/threads/klazywayout-xp.148528/
- Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSS Scripts (RMXP)
Summary
on. Terms & Conditions Free as in beer for non commercial games. Contact me if you want to go commercial. (There will be an inexpensive charge for this script only.)
Archived First Post
KLazyWayOut XP
by Kyonides
by Kyonides
Introduction
Are your players tired of fighting some random mobs?
Fear not! There is a LAZY way out of such a messy situation!
A brand new message will show up on the map warning you about the upcoming battle. If the player wants to skip it, he or she can pay their way out of it!
Currently Available Payment Methods:
- Gold - Default
- Experience Points
Ruby:
# * KLazyWayOut XP
# Scripter : Kyonides Arkanthes
# 2022-06-14
# * A Non Plug & Play Script * #
# Are your players tired of fighting some random mobs?
# Fear not! There is a LAZY way out of such a messy situation!
# A brand new message will show up on the map warning you about the upcoming
# battle. If the player wants to skip it, he or she can pay their way out of it!
# :ox and :oy stands for the X & Y Offsets respectively.
module KLazy
SWITCH_ID = 1
ALERT_SOUND = { :name => "", :volume => 70, :pitch => 100 }
TRANSITION = { :name => "018-Brick02", :frames => 10 }
FONT = { :name => "Arial", :size => 22, :bold => false }
PICTURE = { :name => "app_logo", :ox => 4, :oy => 4 }
MESSAGE_SIZE = { :x => 100, :y => 4, :width => 480 }
MESSAGE = [] # Leave it alone!
MESSAGE << "You are out of luck!"
MESSAGE << "Some random monsters have appeared!"
MESSAGE << "Want to pay them %s%s?"
MESSAGE << ""
# Battle Skip Cost: { MAPID => cost, etc. }
SKIP_COST = { 1 => 10 }
SKIP_COST.default = 20
end
class Spriteset_Map
def make_battle_alert
dimensions = KLazy::MESSAGE_SIZE
mx = dimensions[:x]
my = dimensions[:y]
cost = KLazy::SKIP_COST[$game_map.map_id]
pic = KLazy::PICTURE
message = KLazy::MESSAGE
font = KLazy::FONT
ay = $game_player.y - $game_map.display_y
@alert_sprite = Sprite.new(@viewport2)
@alert_sprite.y = ay < 8 ? 344 : 12
@alert_sprite.z += 1000
@alert_sprite.bitmap = b = Bitmap.new(dimensions[:width], 132)
bit = RPG::Cache.picture(pic[:name])
b.blt(pic[:ox], pic[:oy], bit, bit.rect)
bit.dispose
mw = b.width - mx - 8
b.font.name = font[:name]
b.font.size = font[:size]
b.font.bold = font[:bold]
message.size.times do |n|
text = sprintf(message[n], cost, $data_system.words.gold)
b.draw_text(mx, my, mw, 28, text)
my += 28
end
tr = KLazy::TRANSITION
Graphics.transition(tr[:frames], "Graphics/Transitions/" + tr[:name])
end
def dispose_battle_alert
@alert_sprite.bitmap.dispose
@alert_sprite.dispose
end
end
class Scene_Map
alias :kyon_lf_scn_bttl_up :update
alias :kyon_lf_scn_bttl_call_bttl :call_battle
def dispose_alert
@spriteset.dispose_battle_alert
@battle_alert = nil
end
def update_alert
$game_system.update
$game_screen.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
kyon_lf_scn_bttl_call_bttl
dispose_alert
elsif Input.trigger?(Input::C)
cost = KLazy::SKIP_COST[$game_map.map_id]
if $game_party.gold < cost
$game_system.se_play($data_system.buzzer_se)
kyon_lf_scn_bttl_call_bttl
dispose_alert
return
end
$game_system.se_play($data_system.shop_se)
$game_party.lose_gold(cost)
$game_temp.battle_troop_id = nil
dispose_alert
end
end
def update
if @battle_alert
update_alert
return
end
kyon_lf_scn_bttl_up
end
def battle_alert
$game_temp.battle_calling = false
$game_temp.menu_calling = false
$game_temp.menu_beep = false
$game_player.make_encounter_count
$game_player.straighten
sound = KLazy::ALERT_SOUND
alert_se = RPG::AudioFile.new(sound[:name], sound[:volume], sound[:pitch])
$game_system.se_play(alert_se)
$game_player.straighten
Graphics.freeze
@spriteset.make_battle_alert
@battle_alert = true
end
def call_battle
$game_switches[KLazy::SWITCH_ID] ? battle_alert : kyon_lf_scn_bttl_call_bttl
end
end
Ruby:
# * KLazyWayOut XP
# Scripter : Kyonides
# v1.1.0 - 2025-07-17
# * A Non Plug & Play Script * #
# Are your players tired of fighting some random mobs?
# Fear not! There is a LAZY way out of such a messy situation!
# A brand new message will show up on the map warning you about the upcoming
# battle. If the player wants to skip it, he or she can pay their way out of it!
# Available Payment Methods: Gold & Experience.
# :ox and :oy stands for the X & Y Offsets respectively.
# * Script Call * #
# Set Skip Cost Type - Default Type: :gold
# $game_party.leader.skip_cost_type = :gold
# $game_party.leader.skip_cost_type = :exp
module KLazy
SWITCH_ID = 1
BACKDROP_COLOR = Color.new(0, 0, 0, 128)
ALERT_SOUND = { :name => "", :volume => 70, :pitch => 100 }
TRANSITION = { :name => "018-Brick02", :frames => 10 }
FONT = { :name => "Arial", :size => 22, :bold => false }
PICTURE = { :name => "app_logo", :ox => 12, :oy => 12 }
MESSAGE_SIZE = { :x => 100, :y => 4, :width => 480 }
MESSAGE = [] # Leave it alone!
MESSAGE << "You are out of luck!"
MESSAGE << "Some random monsters have appeared!"
MESSAGE << "Want to pay them %s%s?"
MESSAGE << ""
EXP_LABEL = "EXP"
# Battle Skip Cost: { MAPID => cost, etc. }
GOLD_SKIP_COST = { 1 => 10 }
GOLD_SKIP_COST.default = 20
EXP_SKIP_COST = { 1 => 100 }
EXP_SKIP_COST.default = 200
end
class Game_Actor
alias :kyon_lw_gm_act_setup :setup
def setup(actor_id)
kyon_lw_gm_act_setup(actor_id)
@skip_cost_type = :gold
end
attr_accessor :skip_cost_type
end
class Game_Party
def leader
@actors[0]
end
end
class LazyAlertSprite < Sprite
def initialize(sy, view=nil)
super(view)
self.y = sy
self.z += 1000
end
def make_bitmap(w, h)
self.bitmap = Bitmap.new(w, h)
@height = h
end
def draw_alert(message)
dimensions = KLazy::MESSAGE_SIZE
mx = dimensions[:x]
my = dimensions[:y]
mw = self.bitmap.width - mx - 8
pic = KLazy::PICTURE
lazy_font = KLazy::FONT
font = self.bitmap.font
font.name = lazy_font[:name]
font.size = lazy_font[:size]
font.bold = lazy_font[:bold]
self.bitmap.fill_rect(self.bitmap.rect, KLazy::BACKDROP_COLOR)
bit = RPG::Cache.picture(pic[:name])
self.bitmap.blt(pic[:ox], pic[:oy], bit, bit.rect)
bit.dispose
leader = $game_party.leader
pay_gold = leader.skip_cost_type == :gold
term_gold = $data_system.words.gold
if pay_gold
cost = KLazy::GOLD_SKIP_COST[$game_map.map_id]
label = term_gold
elsif leader.skip_cost_type == :exp
cost = KLazy::EXP_SKIP_COST[$game_map.map_id]
KLazy::EXP_LABEL
else
cost = 0
label = "None"
end
message.size.times do |n|
text = sprintf(message[n], cost, label)
self.bitmap.draw_text(mx, my + n * 28, mw, 28, text)
end
if pay_gold
label = $game_party.gold.to_s + term_gold
elsif leader.skip_cost_type == :exp
label = leader.exp + label
else
label = ""
end
self.bitmap.draw_text(8, @height - 28, mx - 16, 28, label, 2)
end
end
class Spriteset_Map
def make_battle_alert
message = KLazy::MESSAGE.reject{|ln| ln.empty? }
msg_height = 16 + message.size * 24
ay = $game_player.y - $game_map.display_y
@alert_sprite = LazyAlertSprite.new(ay < 8 ? 344 : 12, @viewport2)
@alert_sprite.make_bitmap(KLazy::MESSAGE_SIZE[:width], msg_height)
@alert_sprite.draw_alert(message)
tr = KLazy::TRANSITION
Graphics.transition(tr[:frames], "Graphics/Transitions/" + tr[:name])
end
def dispose_battle_alert
@alert_sprite.bitmap.dispose
@alert_sprite.dispose
end
end
class Scene_Map
alias :kyon_lw_scn_bttl_up :update
alias :kyon_lw_scn_bttl_call_bttl :call_battle
def dispose_alert
@spriteset.dispose_battle_alert
@battle_alert = nil
end
def cancel_alert
$game_system.se_play($data_system.buzzer_se)
kyon_lf_scn_bttl_call_bttl
dispose_alert
end
def update_alert
$game_system.update
$game_screen.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
kyon_lf_scn_bttl_call_bttl
dispose_alert
return
elsif Input.trigger?(Input::C)
leader = $game_party.leader
if leader.skip_cost_type == :gold
cost = KLazy::GOLD_SKIP_COST[$game_map.map_id]
if $game_party.gold < cost
cancel_alert
return
end
$game_party.lose_gold(cost)
elsif leader.skip_cost_type == :exp
cost = KLazy::EXP_SKIP_COST[$game_map.map_id]
if leader.exp < cost
cancel_alert
return
end
leader.exp -= cost
end
$game_system.se_play($data_system.shop_se)
$game_temp.battle_troop_id = nil
dispose_alert
end
end
def update
if @battle_alert
update_alert
return
end
kyon_lw_scn_bttl_up
end
def battle_alert
$game_temp.battle_calling = false
$game_temp.menu_calling = false
$game_temp.menu_beep = false
$game_player.make_encounter_count
$game_player.straighten
sound = KLazy::ALERT_SOUND
alert_se = RPG::AudioFile.new(sound[:name], sound[:volume], sound[:pitch])
$game_system.se_play(alert_se)
$game_player.straighten
Graphics.freeze
@spriteset.make_battle_alert
@battle_alert = true
end
def call_battle
$game_switches[KLazy::SWITCH_ID] ? battle_alert : kyon_lw_scn_bttl_call_bttl
end
end
Download DEMO
Note: The demo includes some minor edits of the Scene_Title class to make it easy to earn some gold coins and automatically turns Switch #1 on.
Terms & Conditions
Free as in beer for non commercial games.
Contact me if you want to go commercial. (There will be an inexpensive charge for this script only.)
Downloads / Referenced Files
Log in to download
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadLicense / Terms Note
Free as in beer for non commercial games. Contact me if you want to go commercial. (There will be an inexpensive charge for this script only.)
Creator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
0
replies
2
views
Topic Summary
Loading summary...