Confira o Videos Épicos #45!
5 Respostas   1566 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
#==============================================================================# ** Window_Message#------------------------------------------------------------------------------# Esta janela de mensagem é usada para exibir textos.#==============================================================================class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # * Inicialização do objeto #-------------------------------------------------------------------------- def initialize super(0, 0, window_width, window_height) self.z = 200 self.openness = 0 create_all_windows create_back_bitmap create_back_sprite clear_instance_variables end #-------------------------------------------------------------------------- # * Aquisição da largura da janela #-------------------------------------------------------------------------- def window_width Graphics.width end #-------------------------------------------------------------------------- # * Aquisição da altura da janela #-------------------------------------------------------------------------- def window_height fitting_height(visible_line_number) end #-------------------------------------------------------------------------- # * Limpeza das variáveis de instância #-------------------------------------------------------------------------- def clear_instance_variables @fiber = nil # Fibra @background = 0 # Tipo do fundo @position = 2 # Posição na tela clear_flags end #-------------------------------------------------------------------------- # * Limpeza das flags #-------------------------------------------------------------------------- def clear_flags @show_fast = false # Mostra rapidamente @line_show_fast = false # Mostrar linha rapidamente @pause_skip = false # Pular pausas end #-------------------------------------------------------------------------- # * Aquisição do número de linhas exibidas #-------------------------------------------------------------------------- def visible_line_number return 4 end #-------------------------------------------------------------------------- # * Disposição #-------------------------------------------------------------------------- def dispose super dispose_all_windows dispose_back_bitmap dispose_back_sprite end #-------------------------------------------------------------------------- # * Atualização da tela #-------------------------------------------------------------------------- def update super update_all_windows update_back_sprite update_fiber end #-------------------------------------------------------------------------- # * Atualização da fibra #-------------------------------------------------------------------------- def update_fiber if @fiber @fiber.resume elsif $game_message.busy? && !$game_message.scroll_mode @fiber = Fiber.new { fiber_main } @fiber.resume else $game_message.visible = false end end #-------------------------------------------------------------------------- # * Criação de todas as janelas #-------------------------------------------------------------------------- def create_all_windows @gold_window = Window_Gold.new @gold_window.x = Graphics.width - @gold_window.width @gold_window.y = 0 @gold_window.openness = 0 @choice_window = Window_ChoiceList.new(self) @number_window = Window_NumberInput.new(self) @item_window = Window_KeyItem.new(self) end #-------------------------------------------------------------------------- # * Criação do bitmap plano de fundo #-------------------------------------------------------------------------- def create_back_bitmap @back_bitmap = Bitmap.new(width, height) rect1 = Rect.new(0, 0, width, 12) rect2 = Rect.new(0, 12, width, height - 24) rect3 = Rect.new(0, height - 12, width, 12) @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true) @back_bitmap.fill_rect(rect2, back_color1) @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true) end #-------------------------------------------------------------------------- # * Aquisição da cor doe plano de fundo 1 #-------------------------------------------------------------------------- def back_color1 Color.new(0, 0, 0, 160) end #-------------------------------------------------------------------------- # * Aquisição da cor do plano de fundo 2 #-------------------------------------------------------------------------- def back_color2 Color.new(0, 0, 0, 0) end #-------------------------------------------------------------------------- # * Criação do sprite do plano de fundo #-------------------------------------------------------------------------- def create_back_sprite @back_sprite = Sprite.new @back_sprite.bitmap = @back_bitmap @back_sprite.visible = false @back_sprite.z = z - 1 end #-------------------------------------------------------------------------- # * Disposição de todas as janelas #-------------------------------------------------------------------------- def dispose_all_windows @gold_window.dispose @choice_window.dispose @number_window.dispose @item_window.dispose end #-------------------------------------------------------------------------- # * Disposição do bitmap do plano de fundo #-------------------------------------------------------------------------- def dispose_back_bitmap @back_bitmap.dispose end #-------------------------------------------------------------------------- # * Disposição do sprite do plano de fundo #-------------------------------------------------------------------------- def dispose_back_sprite @back_sprite.dispose end #-------------------------------------------------------------------------- # * Atualização de todas as janelas #-------------------------------------------------------------------------- def update_all_windows @gold_window.update @choice_window.update @number_window.update @item_window.update end #-------------------------------------------------------------------------- # * Atualização do sprite do plano de fundo #-------------------------------------------------------------------------- def update_back_sprite @back_sprite.visible = (@background == 1) @back_sprite.y = y @back_sprite.opacity = openness @back_sprite.update end #-------------------------------------------------------------------------- # * Processamento principal da fibra #-------------------------------------------------------------------------- def fiber_main $game_message.visible = true update_background update_placement loop do process_all_text if $game_message.has_text? process_input $game_message.clear @gold_window.close Fiber.yield break unless text_continue? end close_and_wait $game_message.visible = false @fiber = nil end #-------------------------------------------------------------------------- # * Atualização do fundo da janela #-------------------------------------------------------------------------- def update_background @background = $game_message.background self.opacity = @background == 0 ? 255 : 0 end #-------------------------------------------------------------------------- # * Atualização da posição da janela #-------------------------------------------------------------------------- def update_placement @position = $game_message.position self.y = @position * (Graphics.height - height) / 2 @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height end #-------------------------------------------------------------------------- # * Execução de todos texto #-------------------------------------------------------------------------- def process_all_text open_and_wait text = convert_escape_characters($game_message.all_text) pos = {} new_page(text, pos) process_character(text.slice!(0, 1), text, pos) until text.empty? end #-------------------------------------------------------------------------- # * Execução da entrada de comandos #-------------------------------------------------------------------------- def process_input if $game_message.choice? input_choice elsif $game_message.num_input? input_number elsif $game_message.item_choice? input_item else input_pause unless @pause_skip end end #-------------------------------------------------------------------------- # * Abertura da janela e espeta até abertura total #-------------------------------------------------------------------------- def open_and_wait open Fiber.yield until open? end #-------------------------------------------------------------------------- # * Fechamento da janela e espeta até fechamento total #-------------------------------------------------------------------------- def close_and_wait close Fiber.yield until all_close? end #-------------------------------------------------------------------------- # * Definição se todas as jalenas estão fechadas #-------------------------------------------------------------------------- def all_close? close? && @choice_window.close? && @number_window.close? && @item_window.close? end #-------------------------------------------------------------------------- # * Definição de continuação do texto #-------------------------------------------------------------------------- def text_continue? $game_message.has_text? && !settings_changed? end #-------------------------------------------------------------------------- # * Definição de mudança das condigurações #-------------------------------------------------------------------------- def settings_changed? @background != $game_message.background || @position != $game_message.position end #-------------------------------------------------------------------------- # * Tempo de espera # duration : duração #-------------------------------------------------------------------------- def wait(duration) duration.times { Fiber.yield } end #-------------------------------------------------------------------------- # * Atualização de exibição rápida #-------------------------------------------------------------------------- def update_show_fast @show_fast = true if Input.trigger?(:C) end #-------------------------------------------------------------------------- # * Espera após a exibição de um caractere #-------------------------------------------------------------------------- def wait_for_one_character update_show_fast Fiber.yield unless @show_fast || @line_show_fast end #-------------------------------------------------------------------------- # * Definição de quebra de página # text : texto # pos : posição #-------------------------------------------------------------------------- def new_page(text, pos) contents.clear draw_face($game_message.face_name, $game_message.face_index, 0, 0) reset_font_settings pos[:x] = new_line_x pos[:y] = 0 pos[:new_x] = new_line_x pos[:height] = calc_line_height(text) clear_flags end #-------------------------------------------------------------------------- # * Definição de quebra de linha #-------------------------------------------------------------------------- def new_line_x $game_message.face_name.empty? ? 0 : 112 end #-------------------------------------------------------------------------- # * Processamento de caracteres comuns # c : caractere # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_normal_character(c, pos) super wait_for_one_character end #-------------------------------------------------------------------------- # * Processamento de caracteres de nova linha # text : texto a ser desenhado # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_new_line(text, pos) @line_show_fast = false super if need_new_page?(text, pos) input_pause new_page(text, pos) end end #-------------------------------------------------------------------------- # * Definição de necessidade de nova pagina # text : texto a ser desenhado # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def need_new_page?(text, pos) pos[:y] + pos[:height] > contents.height && !text.empty? end #-------------------------------------------------------------------------- # * Processamento de caracteres de nova página # text : texto a ser desenhado # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_new_page(text, pos) text.slice!(/^\n/) input_pause new_page(text, pos) end #-------------------------------------------------------------------------- # * Processamento de desenho de ícones # icon_index : índice do ícone # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_draw_icon(icon_index, pos) super wait_for_one_character end #-------------------------------------------------------------------------- # * Processamento de caracteres de controle # code : parte principal do caractere de controle (「C」 se 「\C[1]」) # text : texto a ser desenhado # pos : posição de desenho {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_escape_character(code, text, pos) case code.upcase when '$' @gold_window.open when '.' wait(15) when '|' wait(60) when '!' input_pause when '>' @line_show_fast = true when '<' @line_show_fast = false when '^' @pause_skip = true else super end end #-------------------------------------------------------------------------- # * Execução de espera de entrada #-------------------------------------------------------------------------- def input_pause self.pause = true wait(10) Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) Input.update self.pause = false end #-------------------------------------------------------------------------- # * Execução de entrada de escolhas #-------------------------------------------------------------------------- def input_choice @choice_window.start Fiber.yield while @choice_window.active end #-------------------------------------------------------------------------- # * Execução de entrada numérica #-------------------------------------------------------------------------- def input_number @number_window.start Fiber.yield while @number_window.active end #-------------------------------------------------------------------------- # * Execução de escolha de itens #-------------------------------------------------------------------------- def input_item @item_window.start Fiber.yield while @item_window.active endend
#===============================================================================# Variável Local - 3.0# => Por Sasuke_Uchiha#===============================================================================#Usando o comando de evento "Opções de Variável", você estará#chamando a variável local do evento em que o comando foi criado.#Você pode retornar uma variável de um outro evento usando isto#em um "Chamar Script":# $game_variables[[X, Y]]# => Sendo X o ID do evento.# => Sendo Y o ID da variável.##===============================================================================#===============================================================================#=> CONFIGURAÇÕES:#===============================================================================#===============================================================================module Var_Config #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- #Coloque dentro das chaves o ID das variáveis que serão locais Locais = [1,2] #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- #Mostrar o valor das variáveis locais no "Mostrar Mensagem"? # => "true" para "sim" e "false" para "não" # => Desative caso não esteja usando o sistema de mensagens padrão Mens = true #----------------------------------------------------------------------------- #-----------------------------------------------------------------------------end#===============================================================================# => FIM DAS CONFIGURAÇÕES#=============================================================================== #===============================================================================# => Classe que trata das variáveis no jogo#===============================================================================class Game_Variables def initialize @data = [] @data2 = {} end def [](key) if key.is_a?(Array) return @data2[key] if @data2[key] != nil return 0 else if key <= 5000 and @data[key] != nil return @data[key] else return 0 end end end def []=(key, value) if key.is_a?(Array) @data2[key] = value else if key <= 5000 @data[key] = value end end endend#===============================================================================# => INTERPRETER#===============================================================================class Game_Interpreter #=> alias do método que mostra menssagem: alias s_c101 command_101 #----------------------------------------------------------------------------- # => Método que cuida do comando "Mostrar Mensagem" #----------------------------------------------------------------------------- def command_101 $e_id = @event_id s_c101 end #----------------------------------------------------------------------------- # => Método que cuida do acesso as variáveis por evento #----------------------------------------------------------------------------- def command_122 value = 0 akey ||= [] for i in @params[0] .. @params[1] if Var_Config::Locais.include?(@params[0]) akey.push([@event_id, @params[0]]) else akey.push(@params[0]) end end case @params[3] when 0 value = @params[4] when 1 value = $game_variables[@params[4]] when 2 value = @params[4] + rand(@params[5] - @params[4] + 1) when 3 value = $game_party.item_number(@params[4]) when 4 actor = $game_actors[@params[4]] if actor != nil case @params[5] when 0 # Nível value = actor.level when 1 # Experiência value = actor.exp when 2 # HP value = actor.hp when 3 # MP value = actor.mp when 4 # HP Máximo value = actor.maxhp when 5 # MP Máximo value = actor.maxmp when 6 # Ataque value = actor.atk when 7 # Defesa value = actor.def when 8 # Inteligência value = actor.spi when 9 # Agilidade value = actor.agi end end when 5 enemy = $game_troop.enemies[@params[4]] if enemy != nil case @params[5] when 0 # HP value = enemy.hp when 1 # MP value = enemy.mp when 2 # HP Máximo value = enemy.maxhp when 3 # MP Máximo value = enemy.maxmp when 4 # Ataque value = enemy.atk when 5 # Defesa value = enemy.def when 6 # Inteligência value = enemy.spi when 7 # Agilidade value = enemy.agi end end when 6 character = get_character(@params[4]) if character != nil case @params[5] when 0 value = character.x when 1 value = character.y when 2 value = character.direction when 3 value = character.screen_x when 4 value = character.screen_y when 5 value = character.terrain_tag end end when 7 case @params[4] when 0 value = $game_map.map_id when 1 value = $game_party.actors.size when 2 value = $game_party.gold when 3 value = $game_party.steps when 4 value = Graphics.frame_count / Graphics.frame_rate when 5 value = $game_system.timer / Graphics.frame_rate when 6 value = $game_system.save_count end end for i in akey case @params[2] when 0 $game_variables[i] = value when 1 $game_variables[i] += value when 2 $game_variables[i] -= value when 3 $game_variables[i] *= value when 4 $game_variables[i] /= value if value != 0 when 5 $game_variables[i] %= value if value != 0 end if $game_variables[i] > 99999999 $game_variables[i] = 99999999 end if $game_variables[i] < -99999999 $game_variables[i] = -99999999 end end $game_map.need_refresh = true return true end def command_111 # Iniciar variável local result = false case @params[0] when 0 # Switch result = ($game_switches[@params[1]] == (@params[2] == 0)) when 1 # Variável value1 = 0 if Var_Config::Locais.include?(@params[1]) value1 = $game_variables[[@event_id, @params[1]]] else value1 = $game_variables[@params[1]] end if @params[2] == 0 value2 = @params[3] else if Var_Config::Locais.include?(@params[3]) value1 = $game_variables[[@event_id, @params[3]]] else value1 = $game_variables[@params[3]] end end # Aqui se definem os casos para as variáveis case @params[4] when 0 # value1 for igual ao value2 result = (value1 == value2) when 1 # value1 for maior ou igual ao value2 result = (value1 >= value2) when 2 # value1 for menor ou igual ao value2 result = (value1 <= value2) when 3 # value1 for maior que o value2 result = (value1 > value2) when 4 # value1 for menor que o value2 result = (value1 < value2) when 5 # value1 não for igual ao value2 result = (value1 != value2) end when 2 # Switch Local if @event_id > 0 key = [$game_map.map_id, @event_id, @params[1]] if @params[2] == 0 result = ($game_self_switches[key] == true) else result = ($game_self_switches[key] != true) end end when 3 # Temporizador if $game_system.timer_working sec = $game_system.timer / Graphics.frame_rate if @params[2] == 0 result = (sec >= @params[1]) else result = (sec <= @params[1]) end end when 4 # Aqui se definem os casos para Herói actor = $game_actors[@params[1]] if actor != nil case @params[2] when 0 # Se está no grupo result = ($game_party.actors.include?(actor)) when 1 # Nome result = (actor.name == @params[3]) when 2 # Habilidade result = (actor.skill_learn?(@params[3])) when 3 # Arma result = (actor.weapon_id == @params[3]) when 4 # Armadura result = (actor.armor1_id == @params[3] or actor.armor2_id == @params[3] or actor.armor3_id == @params[3] or actor.armor4_id == @params[3]) when 5 # Status result = (actor.state?(@params[3])) end end when 5 # Inimigo enemy = $game_troop.enemies[@params[1]] if enemy != nil case @params[2] when 0 # Apareceu result = (enemy.exist?) when 1 # Status result = (enemy.state?(@params[3])) end end when 6 # Herói character = get_character(@params[1]) if character != nil result = (character.direction == @params[2]) end when 7 # Ouro if @params[2] == 0 result = ($game_party.gold >= @params[1]) else result = ($game_party.gold <= @params[1]) end when 8 # Item result = ($game_party.item_number(@params[1]) > 0) when 9 # Arma result = ($game_party.weapon_number(@params[1]) > 0) when 10 # Armadura result = ($game_party.armor_number(@params[1]) > 0) when 11 # Tecla result = (Input.press?(@params[1])) when 12 # Script result = eval(@params[1]) end # Uma determinante é armazenada em partes @branch[@list[@index].indent] = result # Se o resultado da determinante for verdadeiro if @branch[@list[@index].indent] == true # Deletar dados da ramificação @branch.delete(@list[@index].indent) # Continuar return true end # Se não se coincidir com a condição: comando skip return command_skip endend#===============================================================================#===============================================================================#=> FIM DO SCRIPT INTERPRETER#===============================================================================#===============================================================================#=> SCRIPT QUE CUIDA DA JANELA DE MENSAGEM:#===============================================================================#===============================================================================if Var_Config::Mens; class Window_Message < Window_Selectable #----------------------------------------------------------------------------- #MÉTODO DE ATUALIZAÇÃO #----------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0 if $game_temp.choice_start == 0 x = 8 end if $game_temp.message_text != nil text = $game_temp.message_text begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) {$1} if Var_Config::Locais.include?($1.to_i) @v=$1.to_s;text.gsub!($1){$game_variables[[$e_id, @v.to_i]]} else @v=$1.to_s;text.gsub!($1){$game_variables[@v.to_i].to_s} unless $1.nil? end end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\\\/) { "\000" } text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" } while ((c = text.slice!(/./m)) != nil) if c == "\000" c = "\\" end if c == "\001" text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end if c == "\002" if @gold_window == nil @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end next end if c == "\n" if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end y += 1 x = 0 if y >= $game_temp.choice_start x = 8 end next end self.contents.draw_text(4 + x, 32 * y, 40, 32, c) x += self.contents.text_size(c).width end end if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max if Var_Config::Locais.include?($game_temp.num_input_variable_id) number = $game_variables[[$e_id, $game_temp.num_input_variable_id]] else number = $game_variables[$game_temp.num_input_variable_id] end @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end endend;end$varlocal_ss = true#===============================================================================#===============================================================================#=> FIM DO SCRIPT#===============================================================================#===============================================================================
Script : "line 339: TypeError ocurred:superclass mismatch for class Window_Message
Script "Variaveis Locais" line 310: NoMethodError Ocorred.undefined method `weapon_number' for #<Game_Party:0x7e285f4