Confira o Videos Épicos #45!
16 Respostas   5440 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
#==============================================================================# ** 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] = truemodule 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 = 42 # Largura do sprite do equipamento BITMAP_WIDTH = 96 # Altura do sprite do equipamento BITMAP_HEIGHT = 128#==============================================================================# Fim das configurações#============================================================================== endend#==============================================================================# ** 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 endend#==============================================================================# ** Game_Follower#==============================================================================class Game_Follower < Game_Character attr_reader :member_indexend
Ola ! Gostaria de uma ajuda coloquei seu script num projeto pra testar só seu script pra nao ter algum erro com outro mas mesmo assim aparece esta msg" Script'*MS - Visual Equipment' line 72;NoMethodError ocurred.undefined method 'equips' for nil:NilClass o que pode ser?