Multi-Drop VX

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Multi-Drop VX

Mensagem por Ykkyto em Dom 13 Mar - 0:38


Multi-Drop VX
Autor: KGC



Descrição
Este script permite que um monstro drope quantos itens você quiser.



Instruções
Instale o script em scripts adicionais.

Para fazer os monstros droparem itens adicionais, você terá que colocar a seguinte tag em seu Histórico (o script detalha melhor)

O formato é o seguinte
sem as aspas "".

Onde Tipo => A = Armadura, I = Item, W = Arma
Onde ID é o ID do item no respectivo database
Onde probabilidade = chance do item dropar



Script
Código:
# ■ Multi Drop - VX (KGC_ExtraDropItem)
#   
#------------------------------------------------------------------------------
#  Script por: KGC  traduzido por: Holocaust (Holocaust2)
#==============================================================================
#  Esse Script permite que você aumenta a quantidade de itens e equipamentos
# que são dropados por um inimigo após sua morte.
#==============================================================================
# ● Instruções
#------------------------------------------------------------------------------
#  Para adicionar um drop extra em um Monstro, você precisa inserir a tag
#    <drop> na caixa "Histórico" no database do respectivo Monstro. .
#
#  O formato é o seguinte <drop "Tipo":"IDdoItem" "Probabilidade"> (exemplo adiante)
# sem as aspas "".
#  Onde Tipo => A = Armadura, I = Item, W = Arma
#  Onde ID é o ID do item no respectivo database
#  Onde probabilidade = chance do item dropar (pode ser em % ou em fração)
#==============================================================================
# ● Exemplos
#------------------------------------------------------------------------------
# Você tem um monstro que você quer que tenha a chance de 50% de Dropar uma Espada.
# Basta colocar na parte Histórico a seguinte tag:
#
# <drop W:2 50%> ou <drop W:2 1/2>
# onde W representa Arma, 2 representa o ID da arma, e 50% ou 1/2 a chance de dropar.
#
# É simples, mas se tiver dúvidas pergunte no tópico desse Script no fórum RPG Brasil.
#
#----------------------------------------------------------------------------
# Observação: Insira acima dos script KGC_BattleDifficulty and KGC_EnemyGuide.
# caso você os tenha em seu projeto.
#-------------------------------------------------------------------------

$imported = {} if $imported == nil
$imported["ExtraDropItem"] = true

module KGC
module ExtraDropItem
  # Regular Expression Defined
  module Regexp
    # Base Enemy Module
    module Enemy
      # Drop Item tag string
      DROP_ITEM = /<(?:DROP|drop)\s*([IWA]):(\d+)\s+(\d+)([%%])?>/i
    end
  end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Enemy
#==============================================================================

class RPG::Enemy
  #--------------------------------------------------------------------------
  # ○ Gera Cache de Drop Extra de Itens
  #--------------------------------------------------------------------------
  def create_extra_drop_item_cache
    @__extra_drop_items = []

    self.note.split(/[\r\n]+/).each { |line|
      case line
      when KGC::ExtraDropItem::Regexp::Enemy::DROP_ITEM
        # Drop Item
        item = RPG::Enemy::DropItem.new
        case $1.upcase
        when "I"  # Item
          item.kind = 1
          item.item_id = $2.to_i
        when "W"  # Weapon
          item.kind = 2
          item.weapon_id = $2.to_i
        when "A"  # Armor
          item.kind = 3
          item.armor_id = $2.to_i
        else
          next
        end
        # Drop Rate
        if $4 != nil
          item.drop_prob = $3.to_i
        else
          item.denominator = $3.to_i
        end
        @__extra_drop_items << item
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ Retorna Drop Extra de Itens
  #--------------------------------------------------------------------------
  def extra_drop_items
    create_extra_drop_item_cache if @__extra_drop_items == nil
    return @__extra_drop_items
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::Enemy::DropItem
#==============================================================================

unless $@
class RPG::Enemy::DropItem
  #--------------------------------------------------------------------------
  # ● Public Instance Variable
  #--------------------------------------------------------------------------
  attr_accessor :drop_prob                # Drop rate
  #--------------------------------------------------------------------------
  # ● Inicialização do Objeto
  #--------------------------------------------------------------------------
  def drop_prob
    @drop_prob = 0 if @drop_prob == nil
    return @drop_prob
  end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ Adquirir item dropado
  #--------------------------------------------------------------------------
  def extra_drop_items
    return enemy.extra_drop_items
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Troop
#==============================================================================

class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # ● Cria Drop de Itens
  #--------------------------------------------------------------------------
  alias make_drop_items_KGC_ExtraDropItem make_drop_items
  def make_drop_items
    drop_items = make_drop_items_KGC_ExtraDropItem

    dead_members.each { |enemy|
      enemy.extra_drop_items.each_with_index { |di, i|
        next if di.kind == 0
        if di.drop_prob > 0
          # Probability specification
          next if di.drop_prob < rand(100)
        else
          # Denominator specification
          next if rand(di.denominator) != 0
        end
        if di.kind == 1
          drop_items.push($data_items[di.item_id])
        elsif di.kind == 2
          drop_items.push($data_weapons[di.weapon_id])
        elsif di.kind == 3
          drop_items.push($data_armors[di.armor_id])
        end
        # Set up compatability with KGC_EnemyGuide.
        if $imported["EnemyGuide"]
          KGC::Commands.set_enemy_item_dropped(enemy.enemy.id, i + 2)
        end
      }
    }
    return drop_items
  end
end



ScreenShot




Ykkyto
Membro
Membro

Reputação : 9

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum