RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Additional Item Gain and stuff (resolved)

Started by magic2345, April 24, 2007, 04:11:33 AM

0 Members and 1 Guest are viewing this topic.

magic2345

Where can I get the Additional Item Gain script? There's one in .org but the script is in some rm.dev site and I can't connect to it. Anyone still have this on their comp? This is a script that lets us decide what items the monsters drop and their percentages. If anyone does have a script that also does this, please post.

Thanks,
Game I'm Working on:
-ADVENT-
Progress:
Story: 96%
Maps: 4%
Characters: 70%

ChaosSpartan28

You dont need a script. Just go to Database -> Monster Tab -> Near the bottom of page is where you can set what they drop, what rate, etc.
Sig by MacGravel

Winged

I think he wants it so MORE than item can be dropped from 1 monster. You can always make doubles of the monster but change their drops  ;8

~Winged



magic2345

Yeah, that would do it. But is there a script for it? Its a pain(well not really) to copy and paste.

Thanks,
Game I'm Working on:
-ADVENT-
Progress:
Story: 96%
Maps: 4%
Characters: 70%

Shinami

Aye. I made one like that a while back but then I found one done by SephirothSpawn that was done about 100 times more efficient while using about 1/10th of the lines I used. Again, credit goes to SephirothSpawn. It just requires a little bit of studying how he set up the variables Enemy_Item_Drops, Enemy_Weapon_Drops, and Enemy_Armor_Drops.

#==============================================================================
# ** Additional Enemy Drops
#------------------------------------------------------------------------------
# SephirothSpawn
# 2006-07-09
# Version 1
#------------------------------------------------------------------------------
# * Customization
#
#   ~ Enemy Item Drops
#     Enemy_Item_Drops = { enemy_id => { item_id => drop_percent, ... }, ... }
#
#   ~ Enemy Weapon Drops
#     Enemy_Weapon_Drops = { enemy_id => { item_id => drop_percent, ... }, ... }
#
#   ~ Enemy Armor Drops
#     Enemy_Armor_Drops = { enemy_id => { item_id => drop_percent, ... }, ... }
#==============================================================================
#==============================================================================
# ** Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Enemy Item Drops
  #  ~ enemy_id => { item_id => drop_percent, ... }
  #--------------------------------------------------------------------------
  Enemy_Item_Drops = { 1 => {1 => 50, 2 => 30, 3 => 10}, 2 => {3 => 100, 4 => 70, 7 => 100} }
  #--------------------------------------------------------------------------
  # * Enemy Weapon Drops
  #  ~ enemy_id => { weapon_id => drop_percent, ... }
  #--------------------------------------------------------------------------
  Enemy_Weapon_Drops = { 1 => {1 => 25}, 2 => {2 => 25} }
  #--------------------------------------------------------------------------
  # * Enemy Item Drops
  #  ~ enemy_id => { item_id => drop_percent, ... }
  #--------------------------------------------------------------------------
  Enemy_Armor_Drops = { 1 => {1 => 100} }
  #--------------------------------------------------------------------------
  # * Get Drop Items
  #--------------------------------------------------------------------------
  def get_drop_items
    # Item, Weapon & Armor Collection List
    items = []
    # Item Lists
    if Enemy_Item_Drops.has_key?(@enemy_id)
      # Passes Each Item
      Enemy_Item_Drops[@enemy_id].each do |item_id, drop_percent|
        # Adds items If Randomly Dropped
        if rand(100) < drop_percent
          items << $data_items[item_id]
          $game_party.gain_item(item_id, 1)
        end
      end
    end
    if Enemy_Weapon_Drops.has_key?(@enemy_id)
      # Passes Each Weapon
      Enemy_Weapon_Drops[@enemy_id].each do |weapon_id, drop_percent|
        # Adds items If Randomly Dropped
        if rand(100) < drop_percent
          items << $data_weapons[weapon_id]
          $game_party.gain_weapon(weapon_id, 1)
        end
      end
    end
    if Enemy_Armor_Drops.has_key?(@enemy_id)
      # Passes Each Armor
      Enemy_Armor_Drops[@enemy_id].each do |armor_id, drop_percent|
        # Adds items If Randomly Dropped
        if rand(100) < drop_percent
          items << $data_armors[armor_id]
          $game_party.gain_armor(armor_id, 1)
        end
      end
    end
    # Return List
    return items
  end
end

#==============================================================================
# ** Window_BattleResult
#==============================================================================

class Window_BattleResult < Window_Base
  #--------------------------------------------------------------------------
  # * Add Multiple Drops
  #--------------------------------------------------------------------------
  def add_multi_drops
    # Collects Extra Droppings
    for enemy in $game_troop.enemies
      # Adds Extra Treasures
      @treasures << enemy.get_drop_items
    end
    # Flatten Array
    @treasures.flatten!
    # Sort Treasures By ID
    @treasures.sort! {|a, b| a.id <=> b.id}
    # Sort Treasures By Type
    @treasures.sort! do |a, b|
      a_class = a.is_a?(RPG::Item) ? 0 : a.is_a?(RPG::Weapon) ? 1 : 2
      b_class = b.is_a?(RPG::Item) ? 0 : b.is_a?(RPG::Weapon) ? 1 : 2
      a_class<=>b_class
    end
    # Adjust Height & Window Contents
    self.height = [@treasures.size * 32 + 64, 256].min
    self.contents = Bitmap.new(width - 32, @treasures.size * 32 + 32)
    # Adjust Y
    self.y = 160 - height / 2
    # Refresh Window
    refresh
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    if Input.press?(Input::UP)
      self.oy -= 4 if self.oy > 0
    elsif Input.press?(Input::DOWN)
      self.oy += 4 if self.oy < self.contents.height - 64
    end
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_enemydrops_scnbtl_sp5 start_phase5
  #--------------------------------------------------------------------------
  # * Start After Battle Phase
  #--------------------------------------------------------------------------
  def start_phase5
    # Original Start Phase 5
    seph_enemydrops_scnbtl_sp5
    # Add Extra Item Drops
    @result_window.add_multi_drops
  end
end

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

magic2345

Game I'm Working on:
-ADVENT-
Progress:
Story: 96%
Maps: 4%
Characters: 70%