Cheats Input Script - BudsieBuds - 11-09-2005
Cheats Input Script
v 1.3
by BudsieBuds
Nov 9 2005
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
Script:
Code: #==============================================================================
# ** Cheats Input Script - v1.3 - 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
# START EDITING //
=begin
===============================================================================
Check the "How to make a cheat?" document for a tutorial
and a lot of example code.
Notes:
* The first cheat has to start with 'if'.
* The cheats coming after the first one start with 'elsif'.
===============================================================================
=end
#--------------------------------------------------------------------------
# * Cheats
#--------------------------------------------------------------------------
if @cheat_word == "iamrich"
$game_party.gain_gold(500)
$game_temp.message_text = "You received 500 gold!"
$game_system.se_play($data_system.decision_se)
elsif @cheat_word == "iamarealfighter"
$game_party.gain_weapon(1, 1)
$game_party.gain_armor(21, 3)
$game_temp.message_text = "You received one Bronze Sword and three Bronze\nShields!"
$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_temp.message_text = "You received every item 10 times!"
$game_system.se_play($data_system.decision_se)
end
elsif @cheat_word == "somehelpplease"
$game_party.add_actor(2)
$game_temp.message_text = $game_actors[2].name + " joined you!"
$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",
"K","L","M","N","O",
"U","V","W","X","Y",
" "," "," "," "," ",
"a","b","c","d","e",
"k","l","m","n","o",
"u","v","w","x","y",
" "," "," "," "," ",
"1","2","3","4","5",
"F","G","H","I","J",
"P","Q","R","S","T",
"Z"," "," "," "," ",
" "," "," "," "," ",
"f","g","h","i","j",
"p","q","r","s","t",
"z"," "," "," "," ",
" "," "," "," "," ",
"6","7","8","9","0",
]
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 128, 440, 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 = 40 + i / 5 / 9 * 160 + 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(328, 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(328, 9 * 32, 48, 32)
# If cursor is positioned on anything other than [OK]
else
x = 40 + @index / 5 / 9 * 160 + @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, just 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's 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.
Q: How to make a cheat?
A: You should check the "How to make a cheat.doc" tutorial below.
Put this icon in your icons folder:
Screenshot:
Demo:
Cheats_Input_Demo.zip (Size: 184.31 KB / Downloads: 2)
Thanks:
Homer (aka Matte)
Everyone who gave me useful feedback
Any bugs? Please tell me!
~Take care, Budsie
|