O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

RMMV - Restrição por Nível

Iniciado por Diablete, 12/08/2020 às 01:30

12/08/2020 às 01:30 Última edição: 31/08/2020 às 10:55 por Gabriel
oi, alguém poderia me ajuda eu queria bota uma restrição de lv em meu projeto, tipo o personagem e lv 7 mais tem uma espada lv 20, ele não poderá usa. eu já achei um  scripts, mais eu queria saber se tem algum plug para o RPG maker MV ou se tem como converte esse Script em plung

o script e esse aqui em baixo

=begin
Equipment Requirements
by Fomar0153
Version 1.2
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
           Changed script name from Equipment Level Requirements
           to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
----------------------
Known bugs
----------------------
None
=end

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● If set to true then it compares the requirement with the actor's base
  #   stat rather than their current.
  #--------------------------------------------------------------------------
  EQUIPREQ_USE_BASE_STAT = true
  #--------------------------------------------------------------------------
  # ● Check the requirements
  #--------------------------------------------------------------------------
  alias level_equippable? equippable?
  def equippable?(item)
    return false unless item.is_a?(RPG::EquipItem)
    return false if @level < item.levelreq
    return false if reqstat(0) < item.mhpreq
    return false if reqstat(1) < item.mmpreq
    return false if reqstat(2) < item.atkreq
    return false if reqstat(3) < item.defreq
    return false if reqstat(4) < item.matreq
    return false if reqstat(5) < item.mdfreq
    return false if reqstat(6) < item.agireq
    return false if reqstat(7) < item.lukreq
    if item.switchreq > 0
      return false unless $game_switches[item.switchreq]
    end
    if item.wepreq > 0
      e = []
      for equip in @equips
        if equip.is_weapon?
          e.push(equip.object.id)
        end
      end
      return false unless e.include?(item.wepreq) unless equip.object.nil?
    end
    if item.armreq > 0
      e = []
      for equip in @equips
        if equip.is_armor?
          e.push(equip.object.id) unless equip.object.nil?
        end
      end
      return false unless e.include?(item.armreq)
    end
    return level_equippable?(item)
  end
  #--------------------------------------------------------------------------
  # ● New Method
  #--------------------------------------------------------------------------
  def reqstat(id)
    if EQUIPREQ_USE_BASE_STAT
      return param_base(id)
    else
      return param(id)
    end
  end
end

module RPG
  #--------------------------------------------------------------------------
  # ● Equip Item is inherited by both Weapon and Armor
  #--------------------------------------------------------------------------
  class EquipItem
    def levelreq
      if self.note =~ /<levelreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def mhpreq
      if self.note =~ /<mhpreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def mmpreq
      if self.note =~ /<mmpreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def atkreq
      if self.note =~ /<atkreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def defreq
      if self.note =~ /<defreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def matreq
      if self.note =~ /<matreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def mdfreq
      if self.note =~ /<mdfreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def agireq
      if self.note =~ /<agireq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def lukreq
      if self.note =~ /<lukreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def switchreq
      if self.note =~ /<switchreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def wepreq
      if self.note =~ /<wepreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
    def armreq
      if self.note =~ /<armreq (.*)>/i
        return $1.to_i
      else
        return 0
      end
    end
  end
end

12/08/2020 às 09:15 #1 Última edição: 12/08/2020 às 09:47 por Gabriel
Olá, Diablete.

Você poderia ter especificado a engine. Como disse plugins é fácil presumir que se trate do MV, mas lembre-se que isso está para mudar, vez que o MZ também usará a mesma denominação. Logo desde já peço que nas próximas vezes lembre-se de especificar para qual engine está pedindo suporte.

Enfim, fiz o plugin pra você. Não é uma conversão, até porque o script que você postou possui mais opções, que você não especificou necessitar, logo o fiz apenas para cobrir o requisito de nível que você pediu. Segue o código abaixo, as instruções de uso estão inclusas nele.

//==========================================================================
// Gabe MV - Equipment Level
//==========================================================================

/*:pt
 * @plugindesc Permite adicionar um requisito de nível para os personagens
 * poderem equipar um equipamento.
 * @author Gabe
 *
 * @help
 * 
 * Para adicionar um requisito de nível a algum equipamento (armas ou 
 * armaduras) basta adicionar a tag <level:x> a sua caixa de nota.
 * 
 * Exemplo:
 * <level:16> - Essa arma só poderá se equipada no nível 16.
 * <level:20> - Essa arma só poderá se equipada no nível 20.
 * <level:50> - Essa arma só poderá se equipada no nível 50.
 */

(function(){

    let _Window_EquipItem_isEnabled = Window_EquipItem.prototype.isEnabled;
    Window_EquipItem.prototype.isEnabled = function(item) {
        if (!item) return _Window_EquipItem_isEnabled.call(this, item);
        return item.meta.level ? this._actor.level >= item.meta.level : 
            _Window_EquipItem_isEnabled.call(this, item);
    };

    let _Game_Actor_calcEquipItemPerformance = Game_Actor.prototype.calcEquipItemPerformance;
    Game_Actor.prototype.calcEquipItemPerformance = function(item) {
        if (item.meta.level) {
            if (this._level >= item.meta.level) return _Game_Actor_calcEquipItemPerformance.call(this, item);
        } else {
            return _Game_Actor_calcEquipItemPerformance.call(this, item);
        }
    };

})();


Aliás, quando for postar algum código use a tag de código em vez do spoiler, ela foi feita especialmente pra isso.  Editei seu post dessa vez.

Qualquer outra dúvida, só falar. :XD:


funcionou, muito obrigado, e valeu pelas decas de post, usarei nas próximas