Chaos Project

RPG Maker => RPG Maker Scripts => Script Troubleshooting => Topic started by: Zephor on May 30, 2011, 10:30:39 pm

Title: Need help fixing this script.
Post by: Zephor on May 30, 2011, 10:30:39 pm
I don't want to have to use SDK, so is it possible to get it removed from this script that I want to use?

Spoiler: ShowHide
#===============================================================================
# ** Icedmetal57's Mining
#-------------------------------------------------------------------------------
# Author    Icedmetal57
# Version   1.0
# Date      July 3rd, 2007
#===============================================================================
#
# Description
#-------------------
# A mining script that allows for experience and levels, if you wish, along with
# changing probability for mining a certain ore.
#
# Instructions
#-------------------
# Go to the section EDIT HERE and edit the things according to what you wish. To
# set up an event so you can mine an ore from it, add the following comments...
#
# Comment: Mine_Ore
# Comment: Ore [n1,n2]
#
# This script will choose 1 item randomly from the Ore array in the comments,
# so change the n's to the item ids you wish to choose randomly from.
#
# Example:
#
# Comment: Mine_Ore
# Comment: Ore [71,12]
#
# In your mining attempt for this example, it will choose either 71 or 12
#
# Compatability
#-------------------
# Requires SDK version 2.2 parts 1 and 3.
#
# Script Changes
#-------------------
# ? This script aliases:
# - Scene_Map > main_window
# - Scene_Map > update
#
# ? This script adds methods:
# - Scene_Map > set_ore
# - Scene_Map > mine
# - Scene_Map > in_direction? Credit to Near_Fantastica for this one
# - Scene_Map > in_range? Credit to Near_Fantastica for this one
#
#==============================================================================

#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
SDK.log("Icedmetal57's Mining", "Icedmetal57", 1.0, "July 3rd, 2007")
#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.enabled?("Icedmetal57's Mining") == true

# EDIT HERE
#--------------------------------------------------------------------------
Mine_Animation = 109 # Animation ID displayed when mining.
Mining_Level_Up_Animation = 1 # Animation ID displayed when mining levels up.
Mine_Wait = 7 # Delay between each mining attempt, in seconds.
Mine_Activate_Key = Settings::Mining # Key you have to press to mine.
# If true, Mining_Pick is a weapon id and you must have it equipped.
Mining_Pick_Weapon = true
Mining_Pick = 202 # Item ID or Weapon ID of Pick Axe which is required to mine.
Mine_Level_Enabled = true # Set true if you'd like to have levels for your mining.
# Probability that you'll get that ore.
# Ore_Probability = {Ore_ID => percent chance to get it, Ore_ID => percent...
Ore_Probability = {515 => 50, 515 => 50
}
# If Ore_Probability does not contain a certain Ore ID, then it'll refer to the
# default probability.
Default_Probability = 50
# Determines if you gain exact amount of exp, or not, otherwise you'll gain exp
# based off your level. The formula for the exp that way, is (exp/level) * 2
Exact_Ore_Exp_Gain = false
# Probability that you'll get that ore.
# Ore_Exp = {Ore_ID => exp, Ore_ID => percent...
Ore_Exp = {514 => 3, 515 => 3
}
# If Ore_Exp does not contain a certain Ore ID, then it'll refer to the
# default probability.
Default_Exp = 3
#--------------------------------------------------------------------------

# DO NOT EDIT BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING

class Scene_Map
 #--------------------------------------------------------------------------
 # * Alias Listings
 #--------------------------------------------------------------------------
 alias_method :mining_scene_map_update, :update
 alias_method :mining_scene_map_main_window, :main_window
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main_window
   @mine_button_mash = 0
   mining_scene_map_main_window
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   mining_scene_map_update
   @mine_button_mash -= 1 if @mine_button_mash > 0
   pick = $game_party.actors[0].weapon_id
   if (Mining_Pick_Weapon and Mining_Pick == pick) or (Mining_Pick_Weapon != true and $game_party.item_number(Mining_Pick) > 0)
     if Input.trigger?(Mine_Activate_Key) and @mine_button_mash <= 0
       for e in $game_map.events.values
         #Skip the enemy if its not close by or not facing
         next if !in_direction?($game_player, e) or !in_range?($game_player, e, 1)
         ore = set_ore(e)
         return if ore == 0 or ore == nil or ore < 0
         @mine_button_mash = Mine_Wait * 10
         e.animation_id = Mine_Animation
         mine(ore)
       end
     end
   end
 end
 #--------------------------------------------------------------------------
 # * Set Ore(Event)
 #--------------------------------------------------------------------------
 def set_ore(event)
   #Get the parameters
   parameters = SDK.event_comment_input(event, 1, "Mine_Ore")
   #Skip if the paramete is NIL
   return 0 if parameters.nil?
   #Set Ore
   o = parameters[0].split
   ore = eval(o[1])
   ore2 = ore[rand(ore.size)]
   return ore2
 end
 #--------------------------------------------------------------------------
 # * Mine(Ore Item ID)
 #--------------------------------------------------------------------------
 def mine(ore)
   r = rand(100)
   prob = Ore_Probability.has_key?(ore) ? Ore_Probability[ore] : Default_Probability
   mining_level = Mine_Level_Enabled ? $game_party.actors[0].mining_level : prob
   receive_ore = mining_level + prob / 2
   if r <= receive_ore.to_i
     $game_party.gain_item(ore,1)
     if Mine_Level_Enabled
       exp = Ore_Exp.has_key?(ore) ? Ore_Exp[ore] : Default_Exp
       $game_party.actors[0].gain_mining_exp(exp, Exact_Ore_Exp_Gain)
     end
     $scene = Scene_Mine_Item.new(ore)
   end
 end
 #--------------------------------------------------------------------------
 # * In Range?(Element, Object, Range) - Near Fantastica
 #--------------------------------------------------------------------------
 def in_range?(element, object, range)
   x = (element.x - object.x) * (element.x - object.x)
   y = (element.y - object.y) * (element.y - object.y)
   r = x + y
   return true if r <= (range * range)
   return false
 end
 #--------------------------------------------------------------------------
 # * In Direction?(Element, Object) - Near Fantastica
 #--------------------------------------------------------------------------
 def in_direction?(subject, object)
   return true if subject.direction == 2 and object.y >= subject.y and object.x == subject.x
   return true if subject.direction == 4 and object.x <= subject.x and object.y == subject.y
   return true if subject.direction == 6 and object.x >= subject.x and object.y == subject.y
   return true if subject.direction == 8 and object.y <= subject.y and object.x == subject.x
   return false
 end
end
 
#==============================================================================
# ** Window_Mine_Item
#------------------------------------------------------------------------------
#  This window displays the item you received from mining.
#==============================================================================

class Window_Mine_Item < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize(ore)
   super(208, 0, 224, 96)
   self.contents = Bitmap.new(width - 32, height - 32)
   @ore = ore
   refresh
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.contents.font.size = 14
   item = $data_items[@ore]
   self.contents.font.color = system_color
   self.contents.draw_text(0, 0, self.width-32, 32, 'You Mined...',1)
   self.contents.font.color = normal_color
   draw_item_name(item, 0, 32)
 end
end

class Scene_Mine_Item
 #--------------------------------------------------------------------------
 # * Object Initialization
 #     ore_id     : item ID of ore
 #--------------------------------------------------------------------------
 def initialize(ore)
   @ore = ore
 end
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
   @spriteset = Spriteset_Map.new
   @mine_item = Window_Mine_Item.new(@ore)
   @mine_item.y = 320 if $game_player.screen_y < 240
   # 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
   @spriteset.dispose
   @mine_item.dispose
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   @spriteset.update
   @mine_item.update
   # If B button was pressed
   if Input.trigger?(Input::B) or Input.trigger?(Input::C)
     # Play cancel SE
     $game_system.se_play($data_system.cancel_se)
     # Switch to menu screen
     $scene = Scene_Map.new
     return
   end
 end
end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles the actor. It's used within the Game_Actors class
#  ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 # * Aliasing Objects
 #--------------------------------------------------------------------------
 alias_method :mining_game_actor_setup, :setup
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_reader :mining_level, :mining_exp
 #--------------------------------------------------------------------------
 # * Setup
 #     actor_id : actor ID
 #--------------------------------------------------------------------------
 def setup(actor_id)
   mining_game_actor_setup(actor_id)
   @mining_level = 1
   @mining_exp = 0
 end
 #--------------------------------------------------------------------------
 # * Gain Mining Level (or lose)
 #     level : increase amount of Mining level
 #--------------------------------------------------------------------------
 def gain_mining_level(level=1)
   @mining_level = [[@mining_level + level, 1].max, 100].min
 end
 #--------------------------------------------------------------------------
 # * Lose Mining Level
 #     level : decrease amount of Mining level
 #--------------------------------------------------------------------------
 def lose_mining_level(level=1)
   gain_mining_level(-level)
 end
 #--------------------------------------------------------------------------
 # * Change EXP of mastery skill
 #     exp : amount of exp change
 #     exact : determines if you want to gain the exact amount of exp, or not
 #--------------------------------------------------------------------------
 def gain_mining_exp(exp, exact=false)
   if @mining_level < 100
     result = exact ? exp : (exp/@mining_level.to_f) * 2.00
     @mining_exp += result if @mining_level < 100
     if @mining_exp >= 100 and @mining_level < 100
       self.damage = "~Mining Leveled Up~"
       $game_player.animation_id = Mining_Level_Up_Animation
       gain_mining_level
       @mining_exp -= 100
       @mining_exp = 100 if @mining_level == 100
     end
   else
     @mining_exp = 100 if @mining_level == 100
   end
 end
end

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end


Please use code tags when posting scripts. Thanks.  - Zer0
Title: Re: Need help fixing this script.
Post by: ForeverZer0 on May 30, 2011, 10:45:43 pm
I just noticed this script is incomplete.
The settings module has been removed. :P

In all probability, you can just remove the last "end" and the beginning SDK check to make it compatible.

Now you just need to find the other part.
Title: Re: Need help fixing this script.
Post by: Zephor on May 30, 2011, 10:55:44 pm
I knew something looked weird. >_< I'll try google and see what I can find.

EDIT: Google doesn't really bring much up.
Title: Re: Need help fixing this script.
Post by: ForeverZer0 on May 30, 2011, 11:03:30 pm
Try this:

Spoiler: ShowHide
#===============================================================================
# ** Icedmetal57's Mining
#-------------------------------------------------------------------------------
# Author    Icedmetal57
# Version   1.0
# Date      July 3rd, 2007
#===============================================================================
#
# Description
#-------------------
# A mining script that allows for experience and levels, if you wish, along with
# changing probability for mining a certain ore.
#
# Instructions
#-------------------
# Go to the section EDIT HERE and edit the things according to what you wish. To
# set up an event so you can mine an ore from it, add the following comments...
#
# Comment: Mine_Ore
# Comment: Ore [n1,n2]
#
# This script will choose 1 item randomly from the Ore array in the comments,
# so change the n's to the item ids you wish to choose randomly from.
#
# Example:
#
# Comment: Mine_Ore
# Comment: Ore [71,12]
#
# In your mining attempt for this example, it will choose either 71 or 12
#
# Compatability
#-------------------
# Requires SDK version 2.2 parts 1 and 3.
#
# Script Changes
#-------------------
# ? This script aliases:
# - Scene_Map > main_window
# - Scene_Map > update
#
# ? This script adds methods:
# - Scene_Map > set_ore
# - Scene_Map > mine
# - Scene_Map > in_direction? Credit to Near_Fantastica for this one
# - Scene_Map > in_range? Credit to Near_Fantastica for this one
#
#==============================================================================

# EDIT HERE
#--------------------------------------------------------------------------
Mine_Animation = 109 # Animation ID displayed when mining.
Mining_Level_Up_Animation = 1 # Animation ID displayed when mining levels up.
Mine_Wait = 7 # Delay between each mining attempt, in seconds.
Mine_Activate_Key = Input::Z # Key you have to press to mine.
# If true, Mining_Pick is a weapon id and you must have it equipped.
Mining_Pick_Weapon = true
Mining_Pick = 202 # Item ID or Weapon ID of Pick Axe which is required to mine.
Mine_Level_Enabled = true # Set true if you'd like to have levels for your mining.
# Probability that you'll get that ore.
# Ore_Probability = {Ore_ID => percent chance to get it, Ore_ID => percent...
Ore_Probability = {515 => 50, 515 => 50
}
# If Ore_Probability does not contain a certain Ore ID, then it'll refer to the
# default probability.
Default_Probability = 50
# Determines if you gain exact amount of exp, or not, otherwise you'll gain exp
# based off your level. The formula for the exp that way, is (exp/level) * 2
Exact_Ore_Exp_Gain = false
# Probability that you'll get that ore.
# Ore_Exp = {Ore_ID => exp, Ore_ID => percent...
Ore_Exp = {514 => 3, 515 => 3
}
# If Ore_Exp does not contain a certain Ore ID, then it'll refer to the
# default probability.
Default_Exp = 3
#--------------------------------------------------------------------------

# DO NOT EDIT BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING

class Scene_Map
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias_method :mining_scene_map_update, :update
  alias_method :mining_scene_map_main_window, :main
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    @mine_button_mash = 0
    mining_scene_map_main_window
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    mining_scene_map_update
    @mine_button_mash -= 1 if @mine_button_mash > 0
    pick = $game_party.actors[0].weapon_id
    if (Mining_Pick_Weapon and Mining_Pick == pick) or (Mining_Pick_Weapon != true and $game_party.item_number(Mining_Pick) > 0)
      if Input.trigger?(Mine_Activate_Key) and @mine_button_mash <= 0
        for e in $game_map.events.values
          #Skip the enemy if its not close by or not facing
          next if !in_direction?($game_player, e) or !in_range?($game_player, e, 1)
          ore = set_ore(e)
          return if ore == 0 or ore == nil or ore < 0
          @mine_button_mash = Mine_Wait * 10
          e.animation_id = Mine_Animation
          mine(ore)
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Set Ore(Event)
  #--------------------------------------------------------------------------
  def set_ore(event)
    #Get the parameters
    parameters = SDK.event_comment_input(event, 1, "Mine_Ore")
    #Skip if the paramete is NIL
    return 0 if parameters.nil?
    #Set Ore
    o = parameters[0].split
    ore = eval(o[1])
    ore2 = ore[rand(ore.size)]
    return ore2
  end
  #--------------------------------------------------------------------------
  # * Mine(Ore Item ID)
  #--------------------------------------------------------------------------
  def mine(ore)
    r = rand(100)
    prob = Ore_Probability.has_key?(ore) ? Ore_Probability[ore] : Default_Probability
    mining_level = Mine_Level_Enabled ? $game_party.actors[0].mining_level : prob
    receive_ore = mining_level + prob / 2
    if r <= receive_ore.to_i
      $game_party.gain_item(ore,1)
      if Mine_Level_Enabled
        exp = Ore_Exp.has_key?(ore) ? Ore_Exp[ore] : Default_Exp
        $game_party.actors[0].gain_mining_exp(exp, Exact_Ore_Exp_Gain)
      end
      $scene = Scene_Mine_Item.new(ore)
    end
  end
  #--------------------------------------------------------------------------
  # * In Range?(Element, Object, Range) - Near Fantastica
  #--------------------------------------------------------------------------
  def in_range?(element, object, range)
    x = (element.x - object.x) * (element.x - object.x)
    y = (element.y - object.y) * (element.y - object.y)
    r = x + y
    return true if r <= (range * range)
    return false
  end
  #--------------------------------------------------------------------------
  # * In Direction?(Element, Object) - Near Fantastica
  #--------------------------------------------------------------------------
  def in_direction?(subject, object)
    return true if subject.direction == 2 and object.y >= subject.y and object.x == subject.x
    return true if subject.direction == 4 and object.x <= subject.x and object.y == subject.y
    return true if subject.direction == 6 and object.x >= subject.x and object.y == subject.y
    return true if subject.direction == 8 and object.y <= subject.y and object.x == subject.x
    return false
  end
end
 
#==============================================================================
# ** Window_Mine_Item
#------------------------------------------------------------------------------
#  This window displays the item you received from mining.
#==============================================================================

class Window_Mine_Item < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(ore)
    super(208, 0, 224, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    @ore = ore
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 14
    item = $data_items[@ore]
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, self.width-32, 32, 'You Mined...',1)
    self.contents.font.color = normal_color
    draw_item_name(item, 0, 32)
  end
end

class Scene_Mine_Item
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     ore_id     : item ID of ore
  #--------------------------------------------------------------------------
  def initialize(ore)
    @ore = ore
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new
    @mine_item = Window_Mine_Item.new(@ore)
    @mine_item.y = 320 if $game_player.screen_y < 240
    # 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
    @spriteset.dispose
    @mine_item.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    @spriteset.update
    @mine_item.update
    # If B button was pressed
    if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Map.new
      return
    end
  end
end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles the actor. It's used within the Game_Actors class
#  ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Aliasing Objects
  #--------------------------------------------------------------------------
  alias_method :mining_game_actor_setup, :setup
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :mining_level, :mining_exp
  #--------------------------------------------------------------------------
  # * Setup
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def setup(actor_id)
    mining_game_actor_setup(actor_id)
    @mining_level = 1
    @mining_exp = 0
  end
  #--------------------------------------------------------------------------
  # * Gain Mining Level (or lose)
  #     level : increase amount of Mining level
  #--------------------------------------------------------------------------
  def gain_mining_level(level=1)
    @mining_level = [[@mining_level + level, 1].max, 100].min
  end
  #--------------------------------------------------------------------------
  # * Lose Mining Level
  #     level : decrease amount of Mining level
  #--------------------------------------------------------------------------
  def lose_mining_level(level=1)
    gain_mining_level(-level)
  end
  #--------------------------------------------------------------------------
  # * Change EXP of mastery skill
  #     exp : amount of exp change
  #     exact : determines if you want to gain the exact amount of exp, or not
  #--------------------------------------------------------------------------
  def gain_mining_exp(exp, exact=false)
    if @mining_level < 100
      result = exact ? exp : (exp/@mining_level.to_f) * 2.00
      @mining_exp += result if @mining_level < 100
      if @mining_exp >= 100 and @mining_level < 100
        self.damage = "~Mining Leveled Up~"
        $game_player.animation_id = Mining_Level_Up_Animation
        gain_mining_level
        @mining_exp -= 100
        @mining_exp = 100 if @mining_level == 100
      end
    else
      @mining_exp = 100 if @mining_level == 100
    end
  end
end


The settings module was only for one setting for Input. I deleted the SDK check, changed the config, and made an edit to a Scene_Map alias to make it compatible (I think).
Title: Re: Need help fixing this script.
Post by: Zephor on May 31, 2011, 01:19:40 am
There's a problem here:
#--------------------------------------------------------------------------
  # * Set Ore(Event)
  #--------------------------------------------------------------------------
  def set_ore(event)
    #Get the parameters
    parameters = SDK.event_comment_input(event, 1, "Mine_Ore")
    #Skip if the paramete is NIL
    return 0 if parameters.nil?
    #Set Ore
    o = parameters[0].split
    ore = eval(o[1])
    ore2 = ore[rand(ore.size)]
    return ore2
  end


Also how would I go about editing it so that instead of pressing a certain key, it asks if I would like to mine.