Cheats Input Script
#1
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:
[Image: cheat.png]


Screenshot:
Screenshot


Demo:

.zip   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
}


Possibly Related Threads…
Thread Author Replies Views Last Post
  Steal and Mug Script Lethrface 0 3,041 08-08-2011, 01:00 PM
Last Post: Lethrface
  Book Script and Utility Bruth 0 2,740 06-10-2009, 01:00 PM
Last Post: Bruth
  Custom EXP Script Dargor 0 2,560 11-24-2007, 01:00 PM
Last Post: Dargor
  Clan Script ShockWave 0 2,615 08-27-2007, 01:00 PM
Last Post: ShockWave
  ARMS Script El Conductor 0 2,566 08-04-2007, 01:00 PM
Last Post: El Conductor
  Juke Box Script polraudio 0 2,730 06-17-2007, 01:00 PM
Last Post: polraudio
  Quest Script Samo the thief 0 2,561 03-12-2007, 01:00 PM
Last Post: Samo the thief
  Quest Script by SAMO Samo the thief 0 2,524 12-29-2006, 01:00 PM
Last Post: Samo the thief
  An easier WORKING party change script The Ghost 0 2,494 07-09-2006, 01:00 PM
Last Post: The Ghost
  Mission Script Leon Westbrooke 0 2,728 07-04-2006, 01:00 PM
Last Post: Leon Westbrooke



Users browsing this thread: 1 Guest(s)