- Joined
- Oct 9, 2018
- Messages
- 307
- Reaction score
- 180
- First Language
- Greek
- Primarily Uses
- RMVXA
Hello!
I am using the Visual Equipment script by BRANDT/Masked
when i interact with an event to use this script, this error pops up
at the lines around 167-168

When i use this script in a empty new project, everything works just fine..
Here's the script
I am using the Visual Equipment script by BRANDT/Masked
when i interact with an event to use this script, this error pops up
at the lines around 167-168

When i use this script in a empty new project, everything works just fine..
Here's the script
Ruby:
#==============================================================================
# ** MS - Visual Equipment
#------------------------------------------------------------------------------
# por Masked
#==============================================================================
#==============================================================================
# Instruções:
#------------------------------------------------------------------------------
# Para definir um gráfico para o equipamento, escreva nas notas dele:
# <Graphic = Nome_do_arquivo>
# O arquivo "Nome_do_arquivo" deve estar na pasta Graphics/Characters do seu
# projeto
#
# Para definir mais de um frame, para o caso de um script de extra frame,
# escreva isso nas notas do equipamento:
# <Frames = x>
# Sendo o 'x' o número de frames
#
# Para definir a prioridade (eixo Z) do equipamento:
# <Z = x>
# Sendo o 'x' a prioridade do equipamento
#
# Para definir os gráficos para um evento, é preciso criar um comentário nele
# com o seguinte conteúdo:
# <Equips: x,y,z>
# Sendo x, y e z os IDs dos equipamentos, se x for A1, a armadura de id 1 será
# atribuída ao evento, se y for W3, a arma de id 3 será atribuída a ele,
# você pode colocar quantos IDs quiser na lista
#==============================================================================
($imported ||= {})[:ms_visual_equip] = true
module MBS
module VisualEquip
#==============================================================================
# Configurações
#==============================================================================
# Ajuste horizontal da posição do equipamento
POSITION_ADJUST_X = -16
# Ajuste vertical da posição do equipamento
POSITION_ADJUST_Y = 0
# Switch que ativa/desativa o visual equip
SWITCH = 25
# Largura do sprite do equipamento
BITMAP_WIDTH = 96
# Altura do sprite do equipamento
BITMAP_HEIGHT = 128
#==============================================================================
# Fim das configurações
#==============================================================================
end
end
#==============================================================================
# ** Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
alias ms_initlz initialize
alias ms_updt update
#--------------------------------------------------------------------------
# * Inicialização do objeto
# viewport : camada
# character : personagem (Game_Character)
#--------------------------------------------------------------------------
def initialize(viewport, character = nil)
create_equip_sprite(viewport)
ms_initlz(viewport,character)
end
#--------------------------------------------------------------------------
# * Criação do sprite do equipamento
#--------------------------------------------------------------------------
def create_equip_sprite(viewport)
@equipments = []
@equip_sprite = Sprite.new(viewport)
@equip_sprite.bitmap = Bitmap.new(MBS::VisualEquip::BITMAP_WIDTH,MBS::VisualEquip::BITMAP_HEIGHT)
@equip_sprite.oy = 4
end
#--------------------------------------------------------------------------
# Verificação de alteração no equipamento
#--------------------------------------------------------------------------
def equip_changed?
if @character.is_a?(Game_Player) || @character.is_a?(Game_Follower)
if @character.is_a?(Game_Player)
return @old != $game_party.members[0].equips
else
return @old != $game_party.members[@character.member_index].equips
end
elsif @character.is_a?(Game_Event)
@character.list.each do |command|
if command.code == 108
command.parameters[0][/<Equips\s*:\s*([AW0-9,]+)>/im]
$1.scan(/-*\w+/).collect{|n|n}.each do|equip|
if equip[0] == "A"
@equipments << $data_armors[equip[/\d+/].to_i]
elsif equip[0] == "W"
@equipments << $data_weapons[equip[/\d+/].to_i]
end
end
end
end
return @old != @equipments
end
end
#--------------------------------------------------------------------------
# * Atualização da tela
#--------------------------------------------------------------------------
def update
ms_updt
if ($game_switches || [])[MBS::VisualEquip::SWITCH]# && equip_changed?
update_equipment
else
@equip_sprite.dispose
end
end
#-------------------------------------------------------------------------
# * Atualização do gráfico de equipamento
#-------------------------------------------------------------------------
def update_equipment
@equipments.clear
pattern = @character.pattern < 3 ? @character.pattern : 1
frames = 3
if !@equip_sprite
create_equip_sprite(self.viewport)
elsif @equip_sprite.disposed?
create_equip_sprite(self.viewport)
end
@equip_sprite.bitmap.clear
bitmap = Bitmap.new(32,32)
pr = ->(equip) {
next if equip.nil?
equip.note.each_line {|line|
bitmap = Cache.character($1) if line =~ /<Graphic\s*=\s*([[:ascii:]]+)>/i
frames = $1.to_i if line =~ /<Frames\s*=\s*(\d+)>/i
}
rect = Rect.new(pattern*(bitmap.width/frames),(@character.direction/2-1)*(bitmap.height/4),bitmap.width/frames,bitmap.height/4)
@equip_sprite.bitmap.blt((frames/3-1)*4,0,bitmap,rect)
}
if @character.is_a?(Game_Player) || @character.is_a?(Game_Follower)
if @character.is_a?(Game_Player)
$game_party.members[0].equips.each {|equip|
@equipments << equip
}
@old = $game_party.members[0].equips
else
return unless $game_party.members[@character.member_index]
$game_party.members[@character.member_index].equips.each {|equip|
@equipments << equip
}
@old = $game_party.members[@character.member_index].equips
end
elsif @character.is_a?(Game_Event)
@character.list.each {|command|
if command.code == 108
command.parameters[0][/<Equips\s*:\s*([AW0-9,]+)>/im]
$1.scan(/-*\w+/).collect{|n|n}.each {|equip|
if equip[0] == "A"
@equipments << $data_armors[equip[/\d+/].to_i]
elsif equip[0] == "W"
@equipments << $data_weapons[equip[/\d+/].to_i]
end
}
end
}
@old = @equipments
end
@equipments.compact.sort do |a, b|
(a.note =~ /<z[ ]*=[ ]*(\d+)[ ]*>/i ? $1.to_i : 0) <=> (b.note =~ /<z[ ]*=[ ]*(\d+)[ ]*>/i ? $1.to_i : 0)
end.each {|equip|
pr[equip]
}
@equip_sprite.x = @character.screen_x + MBS::VisualEquip::POSITION_ADJUST_X
@equip_sprite.y = @character.screen_y - bitmap.height/4 + @character.shift_y + @character.jump_height + MBS::VisualEquip::POSITION_ADJUST_Y
@equip_sprite.z = @character.screen_z + 1
end
alias mbsdisps dispose
def dispose
mbsdisps
@equip_sprite.dispose
end
end
#==============================================================================
# ** Game_Follower
#==============================================================================
class Game_Follower < Game_Character
attr_reader :member_index
end