Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Habilidade para Roubar em Dom 30 Set 2012, 01:37

Carlos

avatar
Administrador
Administrador
Este script permite criar habilidades que dão chance de roubar itens dos inimigos, também permite:

  • Definir porcentagens diferentes de roubo para cada item.


  • Definir "multi roubo" (se vai poder se roubar apenas um, ou varios itens de um inimigo)


  • Atribuir o efeito de roubo para habilidades que causem dano.


Como Usar ?

Para instalar, cole o script acima do Main.

Primeiramente defina a ID do Atributo de Roubo (na aba de sistemas) na linha

Código:
Steal_Element = 17
Você deverá adicionar este atributo a todas as habilidades que tiverem o efeito de roubo.

Após isto você deve definir a taxa base de roubo em
Código:
Steal_Rate = 50

Este valor é alterado pela diferença de agilidade entre o alvo e o usuário da habilidade.
É alterado também pela resistência do alvo ao atributo "Steal_Element"
Mas cuidado, se você adicionar este atributo a uma skill de dano e alterar a resistência do alvo contra ela, o dano da habilidade também será alterado.

Para adicionar itens para serem roubados, vá até o module Atoa
Enemy_Steal[ID] = {"ITEM" => PORCENTAGEM}
ID = ID do inimigo
ITEM = tipo e ID do item. deve sempre ser expresso como "xY"
- onde x = tipo do item e Y = ID do item
x deve ser "a" para armaduras, "w" para armas, "i" para itens, "g" para dinheiro
PORCENTAGEM = % de Roubar o item, valor de 0 a 100, aceita ate uma casa decimal
ex.: 5.4 = 5,4% de chace

EX.: Enemy_Steal[15] = {"w6" => 22.5, "g900" => 12}
Isto significa que o Inimigo ID 15 (Enemy_Steal[15])
tem 22,5% de chande de dar a arma ID 6 ("w6" => 22.5) ao ser roubado
também tem 12% de chande dar 900 em dinheiro ("g900" => 12) ao ser roubado

Você pode adicionar quantos item quiser para um inimigo, sempre separando por vírgulas.

Screen:

Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]

Script:

Código:
#==============================================================================
# Habilidade - Roubar
# por Atoa
#==============================================================================
# Este script permite adicionar criar habilidades que dão chance de roubar
# itens dos inimigos.
#
# Primeiramente defina a ID do Atributo de Roubo (na aba de sistemas) na linha
# Steal_Element = 17
# Você deverá adicionar este atributo a todas as habilidades que tiverem o efeito de roubo.
#
# Após isto você deve definir a taxa base de roubo em
# Steal_Rate = 50
# Este valor é alterado pela diferença de agilidade entre o alvo e o usuário da habilidade.
# É alterado também pela resistência do alvo ao atributo "Steal_Element"
# mas cuidado, se você adicionar este atributo a uma skill de dano e alterar a resistência do
# alvo contra ela, o dano da habilidade também será alterado.
#
# Para adicionar itens ao inimigos, vá até o module Atoa
# Enemy_Steal[ID] = {"ITEM" => PORCENTAGEM}
#
# ID = ID do inimigo
# ITEM = tipo e ID do item. deve sempre ser expresso como "xY"
#  onde x = tipo do item e Y = ID do item/quantia em dinheiro
#  x deve ser "a" para armaduras, "w" para armas, "i" para itens, "g" para dinheiro
# PORCENTAGEM = % de Roubar o item, valor de 0 a 100, aceita ate uma casa decimal
#  ex.: 5.4  = 5,4% de chace
#
# EX.: Enemy_Steal[15] = {"w6" => 22.5, "g900" => 12}
# Isto significa que o Inimigo ID 15 (Enemy_Steal[15])
# tem 22,5% de chande de dar a arma ID 6 ("w6" => 22.5) ao ser roubado
# e também tem 12% de chande dar 900 em dinheiro ("g900" => 12) ao ser roubado
#
# Lembrando que apenas um item é roubado por vez.
#
# Você pode adicionar quantos item quiser para um inimigo, sempre sepadao por vígulas
#
# IMPORTANTE:
# - Este script *NÃO* funciona com o SBL XP.
# - Este script *NÃO* funciona com ABS.
#==============================================================================


module Atoa
  Enemy_Steal = [] # não altere esta linha

  # Os inimigos poderão ser roubados mais de uma vez?
  Multi_Steal = true
  # Se for false, uma vez que o inimigo seja roubado, ele não poderá
  # ser mais roubado, mesmo que possua mais de um item (similar aos FF antigos)
 
  # ID do Atributo de Roubo.
  Steal_Element = 17
 
  # Taxa Base de Sucesso do Roubo
  Steal_Rate = 50
  # Memso que a taxa de sucesso seja 100%, isto não garantirá 100% de roubos
  # este valor varia de acordo com a agilidade do alvo e do usuário e
  # ainda será necessário avaliar a taxa de drop individual de cada item.
 
  # Mensage se o alvo não possui Itens
  No_Item = "Não tem nada"
 
  # Mensagem de falha na tentativa de roubo
  Steal_Fail = "Tentativa de Roubo Falhou"
 
  # Mensagem de Sucesso no roubo de item. {item} representa o nome do item,
  # deve sempre ser adicionado nesta mensagem, ou o nome do item não aparecerá.
  Steal_Item = "Roubou {item}"
  # Exemplos:
  # "Roubou {item}" - Roubou Poção
  # "{item} obtido" - Poção obtido
 
  # Mensagem de Sucesso no roubo de dinheiro. {gold} representa a quantia ganha,
  # deve sempre ser adicionado nesta mensagem, ou a quantia não aparecerá.]
  # {unit} é a unidade monetária do seu jogo, é opicional seu uso
  Steal_Gold = "Roubou {gold}{unit}"
  # Exemplos:
  # "Roubou {gold}{unit}" - Roubou 500g
  # "Roubou {gold} moedas" - "Roubou 500 moedas"
 
  # Adicione aqui novos drops para os inimigos
  Enemy_Steal[1] = {"g100" => 50, "w1" => 15, "a1" => 15,}
  Enemy_Steal[2] = {"i3" => 22.5, "w2" => 5}
  # Adicione quantas linhas você quiser
end

#==============================================================================
# Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  attr_accessor :steal_items
  attr_accessor :steal_flag
  attr_accessor :stole_item
  attr_accessor :steal_attempt
  #--------------------------------------------------------------------------
  alias initialize_atoa_steal_enemy initialize
  #--------------------------------------------------------------------------
  def initialize(troop_id, member_index)
    initialize_atoa_steal_enemy(troop_id, member_index)
    @steal_items = Enemy_Steal[@enemy_id].to_a
    @stole_item = nil
    @steal_flag = false
    @steal_attempt = 0
  end
end

#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  alias initialize_atoa_steal_battler initialize
  #--------------------------------------------------------------------------
  def initialize
    initialize_atoa_steal_battler
  end
  #--------------------------------------------------------------------------
  alias skill_effect_atoa_steal skill_effect
  def skill_effect(user, skill)
    effective = skill_effect_atoa_steal(user, skill)
    @stole_item = stole_item_set(user) if skill.element_set.include?(Steal_Element) and self.is_a?(Game_Enemy)
    return effective
  end
  #--------------------------------------------------------------------------
  def stole_item_set(user)
    @steal_flag = true
    rate = (Steal_Rate * elements_correct(Steal_Element.to_a)) / 100
    steal_success = rand(100) < (rate + self.steal_attempt) * user.agi / self.agi
    self.steal_attempt += 1
    return false unless steal_success
    return nil if self.steal_items == nil or self.steal_items == []
    item_stole = []
    self.steal_items.each do |item, steal_rate|
      item = item.split('')
      if item[0] == "i"
        item = item.join
        item.slice!("i")
        item_stole.push($data_items[item.to_i]) if rand(1000) < ((steal_rate * 10) + (self.steal_attempt * 2)).to_i
      elsif item[0] == "a"
        item = item.join
        item.slice!("a")
        item_stole.push($data_armors[item.to_i]) if rand(1000) < ((steal_rate * 10) + (self.steal_attempt * 2)).to_i
      elsif item[0] == "w"
        item = item.join
        item.slice!("w")
        item_stole.push($data_weapons[item.to_i]) if rand(1000) < ((steal_rate * 10) + (self.steal_attempt * 2)).to_i
      elsif item[0] == "g"
        item = item.join
        item.slice!("g")
        item_stole.push(item.to_i) if rand(1000) < ((steal_rate * 10) + (self.steal_attempt * 2)).to_i
      end
    end
    return false if item_stole == []
    self.steal_attempt = 0
    stole_item_index = rand(item_stole.size)
    item_to_steal = [item_stole[stole_item_index]]
    self.steal_items.delete_at(stole_item_index) if Multi_Steal
    self.steal_items = [] unless Multi_Steal
    return item_to_steal
  end
end

#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  include Atoa
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update
    Input.update
    $game_system.update
    $game_screen.update
    @spriteset.update
  end 
  #--------------------------------------------------------------------------
  def wait(duration)
    for i in 0...duration
      update_basic
    end
  end
  #--------------------------------------------------------------------------
  def pop_steal_help(obj)
    @help_window.set_text(obj, 1)
    count = 0
    loop do
      update_basic
      count += 1
      break @help_window.visible = false if (Input.trigger?(Input::C) and count > 30) or count == 60
    end
  end
  #--------------------------------------------------------------------------
  alias update_phase4_step5_atoa_steal update_phase4_step5
  def update_phase4_step5
    update_phase4_step5_atoa_steal
    @target_battlers.each do |battler|
      if battler.is_a?(Game_Enemy) && battler.steal_flag
        item_stole = battler.stole_item[0] unless battler.stole_item == false or battler.stole_item == nil
        item_stole = nil if battler.stole_item == nil
        item_stole = false if battler.stole_item == false or battler.damage == "Errou!"
        case item_stole
        when nil
          text = No_Item
        when false
          text = Steal_Fail
        when Numeric
          $game_party.gain_gold(item_stole)
          text = Steal_Gold.dup
          text.gsub!(/{gold}/i) {"#{item_stole}"}
          text.gsub!(/{unit}/i) {"#{$data_system.words.gold}"}         
        else
          case item_stole
          when RPG::Item
            $game_party.gain_item(item_stole.id, 1)
          when RPG::Weapon
            $game_party.gain_weapon(item_stole.id, 1)
          when RPG::Armor
            $game_party.gain_armor(item_stole.id, 1)
          end
          text = Steal_Item.dup
          text.gsub!(/{item}/i) {"#{item_stole.name}"}
        end
        pop_steal_help(text)
        battler.steal_flag = false 
        wait(3)
      end
    end
  end
end

Créditos:
Spoiler:
Criado por Atoa


__________________________________________
[Você precisa estar registrado e conectado para ver esta imagem.]


[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

2 Re: Habilidade para Roubar em Sab 06 Set 2014, 23:31

JP_kun17

avatar
Membro - Novato
Membro - Novato
Não importa o que eu faça sempre erra a tentativa de roubo, já coloquei tudo em 100% de drop e taxa de acerto e to usando o sistema de batalha normal do XP, alguém pode me ajudar por favor?

Ver perfil do usuário

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

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