quarta-feira, 3 de abril de 2013

RPGMAKERVXACE - Khas Self Switches


#-------------------------------------------------------------------------------
# * Khas Self Switches
#-------------------------------------------------------------------------------
# * By Khas Arcthunder
# * Version: 1.0
# * Released on: 11/09/2012
#
# * Blog: http://arcthunder.com/
# * Forum: http://rgssx.com/
# * Twitter: http://twitter.com/arcthunder
# * Youtube: http://youtube.com/user/darkkhas
#
#-------------------------------------------------------------------------------
# Terms of Use | Termos de Uso
#-------------------------------------------------------------------------------
# * ENGLISH
# Read updated terms of use at http://arcthunder.com/terms
#
# * PORTUGUES
# Leia os termos atualizados em http://arcthunder.com/termos
#
#-------------------------------------------------------------------------------
# How to use - English Instructions
#-------------------------------------------------------------------------------
# You can use Call Script with the following commands:
#
# Switch_Core.toggle(event_id,switch)
# Toggle a switch. If it's ON, this command will turn it to OFF. And if it's
# OFF, this command will turn it to ON.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
#
# Switch_Core.toggle(event_id,switch,map_id)
# Toggle a switch. If it's ON, this command will turn it to OFF. And if it's
# OFF, this command will turn it to ON.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
# map_id -> ID of the map
#
# Switch_Core.turn_on(event_id,switch)
# Turn ON command.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
#
# Switch_Core.turn_on(event_id,switch,map_id)
# Turn ON command.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
# map_id -> ID of the map
#
# Switch_Core.turn_off(event_id,switch)
# Turn OFF command.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
#
# Switch_Core.turn_off(event_id,switch,map_id)
# Turn OFF command.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
# map_id -> ID of the map
#
# Switch_Core.set(event_id,switch,value)
# Set command. If value is true, it will be turned ON. If value is false,
# it will be turned OFF.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
# value -> Can be true or false
#
# Switch_Core.set(event_id,switch,value,map_id)
# Set command. If value is true, it will be turned ON. If value is false,
# it will be turned OFF.
# event_id -> The ID of the event
# switch -> Can be "A", "B", "C" or "D"
# value -> Can be true or false
# map_id -> ID of the map
#
#-------------------------------------------------------------------------------
#
# Switch_Core.toggle_all(event_id)
# Toggle all the event's self switches.
# event_id -> The ID of the event
#
# Switch_Core.toggle_all(event_id,map_id)
# Toggle all the event's self switches.
# event_id -> The ID of the event
# map_id -> ID of the map
#
# Switch_Core.turn_on_all(event_id)
# Turn ON all the event's self switches.
# event_id -> The ID of the event
#
# Switch_Core.turn_on_all(event_id,map_id)
# Turn ON all the event's self switches.
# event_id -> The ID of the event
# map_id -> ID of the map
#
# Switch_Core.turn_off_all(event_id)
# Turn OFF all the event's self switches.
# event_id -> The ID of the event
#
# Switch_Core.turn_off_all(event_id,map_id)
# Turn OFF all the event's self switches.
# event_id -> The ID of the event
# map_id -> ID of the map
#
# Switch_Core.set_all(event_id,value)
# Set all command. If value is true, all self switches will be turned ON. If
# value is false, all self switches will be turned OFF.
# event_id -> The ID of the event
# value -> Can be true or false
#
# Switch_Core.set_all(event_id,value,map_id)
# Set all command. If value is true, all self switches will be turned ON. If
# value is false, all self switches will be turned OFF.
# event_id -> The ID of the event
# value -> Can be true or false
# map_id -> ID of the map
#
#-------------------------------------------------------------------------------
# Como usar - Instruções em Português
#-------------------------------------------------------------------------------
# Você pode usar o Chamar Script com os seguintes comandos:
#
# Switch_Core.toggle(event_id,switch)
# Alterna o switch. Se ele estiver ligado, será então desligado. Se ele estiver
# ligado, será então desligado.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
#
# Switch_Core.toggle(event_id,switch,map_id)
# Alterna o switch. Se ele estiver ligado, será então desligado. Se ele estiver
# ligado, será então desligado.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
# map_id -> ID do Mapa
#
# Switch_Core.turn_on(event_id,switch)
# Comando que liga o switch.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
#
# Switch_Core.turn_on(event_id,switch,map_id)
# Comando que liga o switch.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
# map_id -> ID do Mapa
#
# Switch_Core.turn_off(event_id,switch)
# Comando que desliga o switch.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
#
# Switch_Core.turn_off(event_id,switch,map_id)
# Comando que desliga o switch.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
# map_id -> ID do Mapa
#
# Switch_Core.set(event_id,switch,value)
# Comando que ajusta o switch. Se value for true, o switch será ligado. Se
# value for false, o switch será desligado.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
# value -> Pode ser true ou false
#
# Switch_Core.set(event_id,switch,value,map_id)
# Comando que ajusta o switch. Se value for true, o switch será ligado. Se
# value for false, o switch será desligado.
# event_id -> O ID do evento
# switch -> Pode ser "A", "B", "C" ou "D"
# value -> Pode ser true ou false
# map_id -> ID do Mapa
#
#-------------------------------------------------------------------------------
#
# Switch_Core.toggle_all(event_id)
# Alterna todos os switches locais do evento.
# event_id -> O ID do evento
#
# Switch_Core.toggle_all(event_id,map_id)
# Alterna todos os switches locais do evento.
# event_id -> O ID do evento
# map_id -> ID do Mapa
#
# Switch_Core.turn_on_all(event_id)
# Liga todos os switches do evento.
# event_id -> O ID do evento
#
# Switch_Core.turn_on_all(event_id,map_id)
# Liga todos os switches do evento.
# event_id -> O ID do evento
# map_id -> ID do Mapa
#
# Switch_Core.turn_off_all(event_id)
# Desliga todos os switches do evento.
# event_id -> O ID do evento
#
# Switch_Core.turn_off_all(event_id,map_id)
# Desliga todos os switches do evento.
# event_id -> O ID do evento
# map_id -> ID do Mapa
#
# Switch_Core.set_all(event_id,value)
# Ajusta todos os switches do evento.
# event_id -> O ID do evento
# value -> Pode ser true ou false
#
# Switch_Core.set_all(event_id,value,map_id)
# Ajusta todos os switches do evento.
# event_id -> O ID do evento
# value -> Pode ser true ou false
# map_id -> ID do Mapa
#
#-------------------------------------------------------------------------------
# Script
#-------------------------------------------------------------------------------
module Switch_Core
  Switch_Array = ["A","B","C","D"]
  def self.toggle(ei,si,mi=$game_map.map_id)
    $game_self_switches[[mi,ei,si]] = !$game_self_switches[[mi,ei,si]]
  end
  def self.turn_on(ei,si,mi=$game_map.map_id)
    $game_self_switches[[mi,ei,si]] = true
  end
  def self.turn_off(ei,si,mi=$game_map.map_id)
    $game_self_switches[[mi,ei,si]] = false
  end
  def self.set(ei,si,pi,mi=$game_map.map_id)
    $game_self_switches[[mi,ei,si]] = pi
  end
  def self.toggle_all(ei,mi=$game_map.map_id)
    Switch_Array.each {|key| toggle(ei,key,mi)}
  end
  def self.turn_on_all(ei,mi=$game_map.map_id)
    Switch_Array.each {|key| turn_on(ei,key,mi)}
  end
  def self.turn_off_all(ei,mi=$game_map.map_id)
    Switch_Array.each {|key| turn_off(ei,key,mi)}
  end
  def self.set_all(ei,pi,mi=$game_map.map_id)
    Switch_Array.each {|key| set(ei,key,pi,mi)}
  end
end

RPGMAKERVXACE - nome em cima do char - PARTE II


#ADICIONADO DEBAIXO DO PRINCIPAL
Show_Level = true

RPGMAKERVXACE - Item Popup


#===============================================================
# Item Popup
# Compativel com RMVXAce
# Autor: Raizen
# Comunidade : www.centrorpg.com
# É permitido postar em outros lugares contanto que não seja mudado
# as linhas dos créditos.
#===============================================================
# Item Popup
# Descrição: O Item Popup, é um efeito que ao receber itens
# no decorrer do jogo, ele será mostrado sobre o personagem
module Raizenpop
#Switch que ativa o script, sempre que não quiser que esteja
#ativado o efeito de popup, basta desligar o switch.
SWITCH = 1
# Ajuste em x, aqui da para posicionar a coordenada inicial que
# o item pop-up fará. Valores menores aproximam o Item popup para a direita.
PX = 40
# Ajuste em y, aqui da para posicionar a coordenada inicial que
# o item pop-up fará. Valores menores aproximam o Item popup para baixo.
PY = 90
# tempo que levará para sumir o item popup, o valor está em frames
# em que 60frames = 1 segundo
TIME = 40
# distancia que subirá o item popup, medido em pixels, sendo que o valor
# 0 desliga o movimento do item popup.
DIST = 50
# mostrar a quantidade de itens recebidos?
Mostrar = true
# Som que tocará quando for ativado o popup, caso não queira som algum coloque
# duas aspas desse modo "" . Caso queira adicionar algum som, colocar na pasta
# SE dentro da pasta Audio do projeto e colocar o nome do arquivo aqui.
SOUND = "Chime2"
# Som do popup de gold
SOUND2 = "Coin"
# Número do icone de gold.
ICON = 361
end
# Aqui começa o script, modifique apenas se sabe o que esta fazendo.
module SceneManager
  def self.raizen_initialize(item, n)
    @scene.raizen_initialize(item, n, Raizenpop::DIST)
  end
  def self.raizen_gold(n)
    @scene.raizen_gold(n, Raizenpop::DIST)
  end
end
class Window_Popup < Window_Base
  def initialize(x, y, item, n, jy)
    super(x, y, x + 544, y + 416)
    self.opacity = 0
    refresh(item, n, $game_player.screen_x - Raizenpop::PX, $game_player.screen_y - Raizenpop::PY + jy)
  end
  def refresh(item, n, x, y)
    self.contents.clear
    if n != 0
    self.contents.font.size = 16
    if item != 0 and item != nil
    draw_icon(item.icon_index, x, y)
    self.contents.draw_text(x + 0, y - 10, 100, 50, item.name, 1)
    self.contents.draw_text(x - 66, y + 10, 100, 50, "x", 2) if Raizenpop::Mostrar
    self.contents.draw_text(x - 46, y + 10, 100, 50, n, 2) if Raizenpop::Mostrar
    else
    draw_icon(Raizenpop::ICON, x, y)
    self.contents.draw_text(x + 26, y - 10, 100, 50, "x", 0) if Raizenpop::Mostrar
    self.contents.draw_text(x + 40, y - 10, 100, 50, n, 0) if Raizenpop::Mostrar
    end
    end
  end
end
class Game_Interpreter
  def command_125
    value = operate_value(@params[0], @params[1], @params[2])
    $game_party.gain_gold_raizen(value)
  end
  def command_126
    value = operate_value(@params[1], @params[2], @params[3])
    $game_party.gain_item_raizen($data_items[@params[0]], value)
  end
  def command_127
    value = operate_value(@params[1], @params[2], @params[3])
    $game_party.gain_item_raizen($data_weapons[@params[0]], value, @params[4])
  end
  def command_128
    value = operate_value(@params[1], @params[2], @params[3])
    $game_party.gain_item_raizen($data_armors[@params[0]], value, @params[4])
  end
end
class Game_Party < Game_Unit
  def gain_item_raizen(item, amount, include_equip = false)
    container = item_container(item.class)
    return unless container
    last_number = item_number(item)
    new_number = last_number + amount
    container[item.id] = [[new_number, 0].max, max_item_number(item)].min
    container.delete(item.id) if container[item.id] == 0
    if include_equip && new_number < 0
      discard_members_equip(item, -new_number)
    end
    $game_map.need_refresh = true
    if $game_switches[Raizenpop::SWITCH]
        SceneManager.raizen_initialize(item, amount)
        RPG::SE.new(Raizenpop::SOUND).play
    end
  end
      def gain_gold_raizen(amount)
      @gold = [[@gold + amount, 0].max, max_gold].min
        if $game_switches[Raizenpop::SWITCH]
        SceneManager.raizen_gold(amount)
        RPG::SE.new(Raizenpop::SOUND2).play
        end
      end
    end
class Scene_Map < Scene_Base
  alias initializeraizen start
  def start
  @popup = Window_Popup.new(0, 0, 0, 0, 0)
  initializeraizen
end
  def raizen_initialize(item, n, jy)
  @popup.refresh(item, n, $game_player.screen_x - Raizenpop::PX, $game_player.screen_y - Raizenpop::PY + jy)
  @item22 = item ; @n22 = n ; @jy22 = jy
  end
  def raizen_gold(g, jy)
  @popup.refresh(0, g, $game_player.screen_x - Raizenpop::PX, $game_player.screen_y - Raizenpop::PY + jy)
  @n22 = g ; @jy22 = jy ; @item22 = 0
end
alias raizen_update update
  def update
    raizen_update
    if @n22 != nil
    @jy22 -= 1
    @contador22 = 0 if @jy22 == 2
      if @jy22 >= 0
      raizen_initialize(@item22, @n22, @jy22)
      else
      @contador22 += 1
        if @contador22 <= Raizenpop::TIME
        raizen_initialize(@item22, @n22, 0)
      else
        raizen_initialize(@item22, 0, 0)
        @gold = nil
        @n22 = nil
        @item22 = nil
        end
      end
    end
  end
end

RPGMAKERVXACE - Apresenta o um texto em cima do evento.


#==============================================================================
# +++ MOG - Event Text Popup (v1.0) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Apresenta o um texto em cima do evento.
#==============================================================================
# Para ativa basta colocar um comentário com o prefixo:
#
# <Text - X>
#
# X - Texto apresentado no evento.
#
# Exemplo
#
# <Text - Teleport>
# <Text - Save Point>
#
#==============================================================================
module MOG_EVENT_TEXT_POPUP
  #Definição da fonte.
  FONT_NAME = "Verdana"
  FONT_SIZE = 16
  FONT_BOLD = true
  FONT_COLOR = Color.new(255,255,255)
  #Definição da prioridade do Texto
  SCREEN_Z = 1
end

#==============================================================================
# ■ Game CharacterBase
#==============================================================================
class Game_CharacterBase
  attr_accessor :text
  attr_accessor :opacity
  attr_accessor :erased
end

#==============================================================================
# ■ Game Event
#==============================================================================
class Game_Event < Game_Character
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------                    
  alias mog_event_text_initialize initialize
  def initialize(map_id, event)
      mog_event_text_initialize(map_id, event)
  end
 
 #--------------------------------------------------------------------------
 # ● Setup Page Setting
 #--------------------------------------------------------------------------                    
  alias mog_event_text_setup_page_settings setup_page_settings
  def setup_page_settings
      mog_event_text_setup_page_settings
      setup_event_text
  end
   
 #--------------------------------------------------------------------------
 # ● Setup Event Text
 #--------------------------------------------------------------------------                      
  def setup_event_text
      return if @list == nil
      for command in @list
      if command.code == 108
         if command.parameters[0] =~ /<Text = ([^>]*)>/
            @text = $1
         end
       end
      end
  end
end

#==============================================================================
# ■ Sprite Character Text
#==============================================================================
class Sprite_Character_Text < Sprite_Base
 
  include MOG_EVENT_TEXT_POPUP
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------                    
  def initialize(viewport = nil,character,sprite)
      super(viewport)
      text_size = character.text.to_s.split(//)
      w = 32 + (FONT_SIZE / 2) * text_size.size rescue nil
      w = 32 if w == nil or w < 32
      self.bitmap = Bitmap.new(w,32)
      self.bitmap.font.name = FONT_NAME
      self.bitmap.font.size = FONT_SIZE
      self.bitmap.font.bold = FONT_BOLD
      self.bitmap.font.color = FONT_COLOR
      self.bitmap.draw_text(0,0,self.width,self.height,character.text.to_s,1) rescue nil
      update_position(character,sprite)
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------                    
  def dispose
      super
      self.bitmap.dispose
  end

 #--------------------------------------------------------------------------
 # ● Update Position
 #--------------------------------------------------------------------------                    
  def update_position(character,sprite)
      if character.erased
         self.visible = false
         return
      end
      self.x = character.screen_x - self.width / 2
      self.y = character.screen_y - (sprite.height + self.height)
      self.z = character.screen_z + SCREEN_Z
      self.visible = character.transparent == true ? false : true
      self.opacity = character.opacity
  end
 
end

#==============================================================================
# ■ Sprite Character
#==============================================================================
class Sprite_Character < Sprite_Base

 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------                  
  alias mog_event_text_initialize initialize
  def initialize(viewport, character = nil)
      mog_event_text_initialize(viewport, character)
      @character_text = ""
      create_event_text
  end
 
 #--------------------------------------------------------------------------
 # ● Create Event Text
 #--------------------------------------------------------------------------                    
  def create_event_text
      return if @character == nil
      return if @character.text == nil
      return if @character.text == @character_text
      dispose_event_text
      @event_text = Sprite_Character_Text.new(viewport,@character,self)
      @character_text = @character.text
  end

 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------                  
  alias mog_event_text_dispose dispose
  def dispose
      mog_event_text_dispose
      dispose_event_text
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose Event Text
 #--------------------------------------------------------------------------                    
  def dispose_event_text
      return if @event_text == nil
      @event_text.dispose
      @event_text = nil
  end
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------                    
  alias mog_event_text_update update
  def update
      mog_event_text_update
      create_event_text
      update_event_text
  end
 
 #--------------------------------------------------------------------------
 # ● Update Event Text
 #--------------------------------------------------------------------------                    
  def update_event_text
      return if @event_text == nil
      @event_text.update_position(@character,self)
  end
   
end

$mog_rgss3_event_text_popup = true

RPGMAKERVXACE - VXAce_SP1


# =================================================
# ■ VXAce_SP1
# -------------------------------------------------
# Eu Corrigido um bug no script pré-definido.
#Usuário material definido script,
# Por favor, lugar abaixo nesta seção como uma regra geral.
# =================================================

# -------------------------------------------------
# [Modificações]
# -------------------------------------------------
# ● em caso alterações de estado de comando,
#a libertação real, ao mesmo tempo, com a adição de um mesmo estado
# Quando a linha, eu reparado um bug que a adição posterior de dois falhar.
# Comando de evento
#● na animação ver a animação, da carta apresentada
# Corrigido um bug que eu não quero para sincronizar fracasso de rolagem.
# ● eu reparado um bug onde a ação de combate automático
#não está selecionado corretamente.
# Equipamento
#● por equipamentos que já não pode ser removido,
#nenhum outro equipamento pode ser equipado com ainda mais
# Quando é, eu reparado um bug que o equipamento enquanto o seu crescimento.
# ● o problema que uma carga extra no comando
#após a execução do evento [Imagem Clear]
# Eu fixo.
# ● Com a opção marcada para rota de migração
#[Se você não pode mover o skip] para
# Se você entrar em contato com o evento de disparo
#[contato do jogador, o evento está em andamento
# Corrigido um bug que eu começar a reservar eu teria sido tão bem.
# ● Corrigido um bug que não reflete a eficácia do Estado
#contra a habilidade mágica que foi refletido
# Eu era.
# ● Mesmo que você tenha ativado as configurações padrão
#em fontes em negrito ou itálico, o estado de tela
# Eu reparado um bug que volta a um estado inválido,
#como quando você mudar a superfície.
# -------------------------------------------------
class Game_Battler
  attr_accessor :magic_reflection
  #--------------------------------------------------------------------------
  # ● A determinação da relação de oposição
  #--------------------------------------------------------------------------
  alias vxace_sp1_opposite? opposite?
  def opposite?(battler)
    vxace_sp1_opposite?(battler) || battler.magic_reflection
  end
end
#------------------------------------------------------------------------------
class Game_Actor
  #--------------------------------------------------------------------------
  # ● Remover o material não pode ser equipado com
  #     item_gain : Equipamento devolvido ao partido que foi removido
  #--------------------------------------------------------------------------
  alias vxace_sp1_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
  end
  #--------------------------------------------------------------------------
  # ● Criar combate automático em combate
  #--------------------------------------------------------------------------
  def make_auto_battle_actions
    @actions.size.times do |i|
      @actions[i] = make_action_list.max_by {|action| action.value }
    end
  end
end
#------------------------------------------------------------------------------
class Game_Player
  #--------------------------------------------------------------------------
  # ● Iniciando o mapa do evento
  #   triggers : Matriz de gatilho
  #   normal   : Prioridade ou de outra forma ou [mesmo que de caráter normal]
  #--------------------------------------------------------------------------
  alias vxace_sp1_start_map_event start_map_event
  def start_map_event(x, y, triggers, normal)
    return if $game_map.interpreter.running?
    vxace_sp1_start_map_event(x, y, triggers, normal)
  end
end
#------------------------------------------------------------------------------
class Game_Picture
  #--------------------------------------------------------------------------
  # ● Imagem clara
  #--------------------------------------------------------------------------
  alias vxace_sp1_erase erase
  def erase
    vxace_sp1_erase
    @origin = 0
  end
end
#------------------------------------------------------------------------------
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● Mudança de estado
  #--------------------------------------------------------------------------
  alias vxace_sp1_command_313 command_313
  def command_313
    vxace_sp1_command_313
    $game_party.clear_results
  end
end
#------------------------------------------------------------------------------
class Sprite_Character
  #--------------------------------------------------------------------------
  # ● Local de atualização
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_position update_position
  def update_position
    move_animation(@character.screen_x - x, @character.screen_y - y)
    vxace_sp1_update_position
  end
  #--------------------------------------------------------------------------
  # ● Movendo animação
  #--------------------------------------------------------------------------
  def move_animation(dx, dy)
    if @animation && @animation.position != 3
      @ani_ox += dx
      @ani_oy += dy
      @ani_sprites.each do |sprite|
        sprite.x += dx
        sprite.y += dy
      end
    end
  end
end
#------------------------------------------------------------------------------
class Sprite_Picture
  #--------------------------------------------------------------------------
  # ● Atualização do bitmap de origem
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_bitmap update_bitmap
  def update_bitmap
    if @picture.name.empty?
      self.bitmap = nil
    else
      vxace_sp1_update_bitmap
    end
  end
end
#------------------------------------------------------------------------------
class Window_Base
  #--------------------------------------------------------------------------
  # ● Redefinir as configurações de fonte
  #--------------------------------------------------------------------------
  alias vxace_sp1_reset_font_settings reset_font_settings
  def reset_font_settings
    vxace_sp1_reset_font_settings
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
  end
end
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● Ativação reflexa da magia
  #--------------------------------------------------------------------------
  alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
    @subject.magic_reflection = true
    vxace_sp1_invoke_magic_reflection(target, item)
    @subject.magic_reflection = false
  end
end

RPGMAKERVXACE - PACOTE DE CORREÇÕES PARA RMVXACE DO YANFLY:


#==============================================================================
# PACOTE DE CORREÇÕES PARA RMVXACE DO YANFLY:
# Pacote com algumas correções básicas para RMVXAce, tirando as modificações e
# possibilidades de customização do script original. Essencial para corrigir
# vários bugs do jogo já presentes na engine padrão do RGSS3;
# Baseado no "Yanfly Engine Ace - Ace Core Engine v1.00 Versão Traduzida".
#
# Todos os créditos vão para:
# - Yanfly (http://yanflychannel.wordpress.com/)
# Tradução do cabeçalho para Português por:
# - Tradutor (http://makercafe.blogspot.com/)
# Edições e adaptações por:
# - Rafael_Sol_Maker (http://www.condadobraveheart.com/)
#
#==============================================================================


#==============================================================================
# INSTRUÇÕES:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Para instalar este script, abra seu editor de scripts copie e cole este script
# em um slot aberto abaixo de "Scripts Adicionais", mas acima de Main. Lembre-se
# de salvar.
#
#==============================================================================
# COMPATIBILIDADE:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Este script é feito estritamente para o RPG Maker VX Ace. É improvável que
# seja executado com o RPG Maker VX sem que precise de ajustes.
#
#==============================================================================


#==============================================================================
# CONTEÚDOS DO SCRIPT:
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Correção de Erro: Sobreposição da Animação
# -----------------------------------------------------------------------------
# - É o mesmo erro do VX. Quando uma animação de tela inteira é reproduzida
# contra um grupo de inimigos, o bitmap da animação é na verdade reproduzido
# várias vezes, causando uma extrema sobreposição quando há muitos inimigos na
# tela. Essa correção fará com que a animação se reproduza apenas uma vez.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Correção da Ordem do Turno da Batalha
# -----------------------------------------------------------------------------
# - Mesmo erro do VX. Para aqueles que usam o sistema de batalha padrão, uma vez
# que um turno começou, a ordem de ação se configura e é inalterada durante o
# restante do turno. Quaisquer alterações na AGI do combatente não serão feitas,
# mesmo que o combatente receba um acréscimo ou decréscimo na AGI.
# Essa correção faz com que a AGI seja atualizada corretamente a cada ação.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Correção da Sobreposição dos Medidores
# -----------------------------------------------------------------------------
# - Mesmo erro do VX. Quando algumas variáveis excedem determinados valores, os
# medidores podem extrapolar a largura para a qual eles foram originalmente
# projetados. Essa correção irá evitar que os medidores passem da largura
# máxima. (N.E.: E ainda coloca uma borda em volta deles!)
#
# -----------------------------------------------------------------------------
# Correção de Erro: Rolagem do Menu Segurando L e R
# -----------------------------------------------------------------------------
# - Antes, no VX, você podia navegar através de menus rapidamente pressionando
# os botões L e R (Q e W no teclado). Essa correção recupera a capacidade de
# percorrer os menus dessa forma.
#
# -----------------------------------------------------------------------------
# Correção de Erro: Rolagem no Mapa, Se Menor que a Tela
# -----------------------------------------------------------------------------
# - Uma pequena correção que permita que mapas menores que a tela (17x13, na
# resolução padrão) apresentem erros na hora do movimento da tela , o "scroll".
# É útil principalmente para quem utiliza a resolução de 640x480, e faz mapas
# do tamanho mínimo que o editor permite.
#
#==============================================================================


#==============================================================================
# ¦ BattleManager
#==============================================================================


module BattleManager

  #--------------------------------------------------------------------------
  # overwrite method: turn_start
  #--------------------------------------------------------------------------
  def self.turn_start
    @phase = :turn
    clear_actor
    $game_troop.increase_turn
    @performed_battlers = []
    make_action_orders
  end

  #--------------------------------------------------------------------------
  # overwrite method: next_subject
  #--------------------------------------------------------------------------
  def self.next_subject
    @performed_battlers = [] if @performed_battlers.nil?
    loop do
      @action_battlers -= @performed_battlers
      battler = @action_battlers.shift
      return nil unless battler
      next unless battler.index && battler.alive?
      return battler
    end
  end

end # BattleManager


#==============================================================================
# ¦ Game_Battler
#==============================================================================


class Game_Battler < Game_BattlerBase

  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :pseudo_ani_id

  #--------------------------------------------------------------------------
  # alias method: clear_sprite_effects
  #--------------------------------------------------------------------------
  alias game_battler_clear_sprite_effects_ace clear_sprite_effects
  def clear_sprite_effects
    game_battler_clear_sprite_effects_ace
    @pseudo_ani_id = 0
  end

end # Game_Battler


#==============================================================================
# ¦ Game_Troop
#==============================================================================


class Game_Troop < Game_Unit

  #--------------------------------------------------------------------------
  # overwrite method: setup
  #--------------------------------------------------------------------------
  def setup(troop_id)
    clear
    @troop_id = troop_id
    @enemies = []
    troop.members.each do |member|
      next unless $data_enemies[member.enemy_id]
      enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
      enemy.hide if member.hidden
      enemy.screen_x = member.x + (Graphics.width - 544)/2
      enemy.screen_y = member.y + (Graphics.height - 416)
      @enemies.push(enemy)
    end
    init_screen_tone
    make_unique_names
  end

end # Game_Troop


#==============================================================================
# ¦ Game_Map
#==============================================================================


class Game_Map

  #--------------------------------------------------------------------------
  # overwrite method: scroll_down
  #--------------------------------------------------------------------------
  def scroll_down(distance)
    if loop_vertical?
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
    else
      last_y = @display_y
      dh = Graphics.height > height * 32 ? height : (Graphics.height / 32)
      @display_y = [@display_y + distance, (height - dh) * 256].min
      @parallax_y += @display_y - last_y
    end
  end

  #--------------------------------------------------------------------------
  # overwrite method: scroll_right
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    if loop_horizontal?
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
    else
      last_x = @display_x
      dw = Graphics.width > width * 32 ? width : (Graphics.width / 32)
      @display_x = [@display_x + distance, (width - dw) * 256].min
      @parallax_x += @display_x - last_x
    end
  end

end # Game_Map


#==============================================================================
# ¦ Game_Event
#==============================================================================


class Game_Event < Game_Character

  #--------------------------------------------------------------------------
  # overwrite method: near_the_screen?
  #--------------------------------------------------------------------------
  def near_the_screen?(dx = nil, dy = nil)
    dx = [Graphics.width, $game_map.width * 256].min/32 - 5 if dx.nil?
    dy = [Graphics.height, $game_map.height * 256].min/32 - 5 if dy.nil?
    ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32
    ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32
    ax >= -dx && ax <= dx && ay >= -dy && ay <= dy
  end

end # Game_Event


#==============================================================================
# ¦ Sprite_Base
#==============================================================================


class Sprite_Base < Sprite

  #--------------------------------------------------------------------------
  # new method: start_pseudo_animation
  #--------------------------------------------------------------------------
  def start_pseudo_animation(animation, mirror = false)
    dispose_animation
    @animation = animation
    return if @animation.nil?
    @ani_mirror = mirror
    set_animation_rate
    @ani_duration = @animation.frame_max * @ani_rate + 1
    @ani_sprites = []
  end

end # Sprite_Base


#==============================================================================
# ¦ Sprite_Battler
#==============================================================================


class Sprite_Battler < Sprite_Base

  #--------------------------------------------------------------------------
  # alias method: setup_new_animation
  #--------------------------------------------------------------------------
  alias sprite_battler_setup_new_animation_ace setup_new_animation
  def setup_new_animation
    sprite_battler_setup_new_animation_ace
    return if @battler.pseudo_ani_id <= 0
    animation = $data_animations[@battler.pseudo_ani_id]
    mirror = @battler.animation_mirror
    start_pseudo_animation(animation, mirror)
    @battler.pseudo_ani_id = 0
  end

end # Sprite_Battler


#==============================================================================
# ¦ Spriteset_Map
#==============================================================================


class Spriteset_Map

  #--------------------------------------------------------------------------
  # overwrite method: create_viewports
  #--------------------------------------------------------------------------
  def create_viewports
    if Graphics.width > $game_map.width * 32 and !$game_map.loop_horizontal?
      dx = (Graphics.width - $game_map.width * 32) / 2
    else
      dx = 0
    end
    dw = [Graphics.width, $game_map.width * 32].min
    dw = Graphics.width if $game_map.loop_horizontal?
    if Graphics.height > $game_map.height * 32 and !$game_map.loop_vertical?
      dy = (Graphics.height - $game_map.height * 32) / 2
    else
      dy = 0
    end
    dh = [Graphics.height, $game_map.height * 32].min
    dh = Graphics.height if $game_map.loop_vertical?
    @viewport1 = Viewport.new(dx, dy, dw, dh)
    @viewport2 = Viewport.new(dx, dy, dw, dh)
    @viewport3 = Viewport.new(dx, dy, dw, dh)
    @viewport2.z = 50
    @viewport3.z = 100
  end

end # Spriteset_Map


#==============================================================================
# ¦ Window_Base
#==============================================================================


class Window_Base < Window

  #--------------------------------------------------------------------------
  # overwrite method: draw_gauge
  #--------------------------------------------------------------------------
  def draw_gauge(dx, dy, dw, rate, color1, color2)
    dw -= 2
    fill_w = [(dw * rate).to_i, dw].min
    gauge_h = 6
    gauge_y = dy + line_height - 2 - gauge_h
    outline_colour = gauge_back_color
    outline_colour.alpha = translucent_alpha
    contents.fill_rect(dx, gauge_y - 1, dw + 2, gauge_h + 2, outline_colour)
    dx += 1
    contents.fill_rect(dx, gauge_y, dw, gauge_h, gauge_back_color)
    contents.gradient_fill_rect(dx, gauge_y, fill_w, gauge_h, color1, color2)
  end

end # Window_Base


#==============================================================================
# ¦ Window_Selectable
#==============================================================================


class Window_Selectable < Window_Base

  #--------------------------------------------------------------------------
  # overwrite method: process_cursor_move
  #--------------------------------------------------------------------------
  def process_cursor_move
    return unless cursor_movable?
    last_index = @index
    cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
    cursor_up   (Input.trigger?(:UP))    if Input.repeat?(:UP)
    cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
    cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
    cursor_pagedown   if !handle?(:pagedown) && Input.repeat?(:R)
    cursor_pageup     if !handle?(:pageup)   && Input.repeat?(:L)
    Sound.play_cursor if @index != last_index
  end
 
end # Window_Selectable


#==============================================================================
# ¦ Scene_Battle
#==============================================================================


class Scene_Battle < Scene_Base

  #--------------------------------------------------------------------------
  # overwrite method: show_normal_animation
  #--------------------------------------------------------------------------
  def show_normal_animation(targets, animation_id, mirror = false)
    animation = $data_animations[animation_id]
    return if animation.nil?
    ani_check = false
    targets.each do |target|
      if ani_check
        target.pseudo_ani_id = animation_id
      else
        target.animation_id = animation_id
      end
      target.animation_mirror = mirror
      abs_wait_short unless animation.to_screen?
      ani_check = true if animation.to_screen?
    end
    abs_wait_short if animation.to_screen?
  end

end # Scene_Battle


#==============================================================================
#
# FIM DO ARQUIVO
#
#==============================================================================

terça-feira, 2 de abril de 2013

O satélite Hispasat está deixando de ser utilizado


Todos sabemos que o satélite Hispasat está deixando de ser utilizado para o envio de keys e o desligamento será gradativo, sendo que os canais começarão a cair um após o outro. Isso está sendo bem divulgado e nem vale a pena entrar em maiores explicações. O mesmo acontecerá com o Satmex em breve.

Os fabricantes de decos estão se dando por conta que o sistema via satélite é extremamente frágil e o sistema por internet muito perigoso. No mês de Janeiro houve uma importante reunião na Alemanha com os principais fabricantes de decos (notícia completa aqui: http://www.g-i-n.net/events/9th-confere ... -symposium). Eles decidiram fazer uma mudança radical no sistema de distribuição de keys para não mais ter que passar por estes problemas e limitações.

A proposta é um sistema PRIVADO de envio de keys, pago pelos fabricantes e que não dependa de nenhum fornecedor que poderia deixá-los na mão. Surge então o sistema batizado de RHAIFHAI que enviará as keys por rádio, a partir de um ponto central na américa do sul. Possivelmente ficará na Bolívia ou mesmo na região de Cuiabá. Os transmissores seguirão o padrão de transmissões de Ondas Curtas com uma potência de irradiação inicial de 14.000 Watts suficiente para cobrir a América do Sul.

Obviamente, uma nova antena para as keys será necessária (já que não será mais por satélite). Eles sugeriram um padrão que pode ser construído até mesmo em casa:

Os dongles deverão ser substituídos por outros capazes de receber dados em Ondas Curtas. Os fabricantes liberaram a foto do primeiro dongle do novo sistema, para a turma perceber que a coisa é séria e está em adiantado estágio de implantação:

O custo deste novo dongle deverá ser um terço do preço dos de satélite. Isso é uma boa notícia, já que haverá o custo adicional da nova antena. Infezlimente, não haverá adaptador para os dongles atuais, pois eles são totalmente incompatíveis com o novo sistema. Decos com dongle interno deverão usar o novo dongle (aguardem atualizações, com certeza!). Outra boa notícia é que será possível escutar música diretamente pelo dongle (com fones de ouvido) enquanto se assiste qualquer canal de tv, já que ele pegará também estações comerciais abertas de rádio em Ondas Curtas. Não sei se alguém usará este recurso, mas ele estará presente.

Até o momento, o único deco que está em condições de aceitar o novo protocolo é o Newgen, que esteve fora do ar por algumas semanas justamente para o teste desta nova tecnologia. E pelos testes, promete MUITO! A estabilidade é garantida em 99%. Inicialmente, funcionará para Azbox, Azamerica, Tocomsat, Duosat, Phantom, HD Duo, Probox e Prosat. Estão previstos para a segunda etapa os decos Superbox, Openbox e Showbox. Outros decos dependerão da negociação entre os fabricantes e a aliança dos fabricantes que desenvolveram esta solução, sem data para ocorrer.

Com isso, ficamos livres dos sustos que temos vivido, com satélites deixando de enviar keys. E o envio das keys não sofrerá interferência em dias de chuva, já que não serão transmitidas por um satélite.

Mas... (sempre tem um "mas") nem tudo são flores. A fim de evitar o uso indevido destas keys, todos os decos das marcas indicadas deverão ser cadastrados. Para isso, o número serial deverá ser informado. Isso não representa perigo, pois nada mais é registrado além do número serial (sem nome, telefone, etc). Os fabricantes inclusive criaram uma página onde o próprio usuário pode cadastrar o número serial de seu aparelho.

Todos sabemos que o satélite Hispasat está deixando de ser utilizado para o envio de keys e o desligamento será gradativo, sendo que os canais começarão a cair um após o outro. Isso está sendo bem divulgado e nem vale a pena entrar em maiores explicações. O mesmo acontecerá com o Satmex em breve.

Os fabricantes de decos estão se dando por conta que o sistema via satélite é extremamente frágil e o sistema por internet muito perigoso. No mês de Janeiro houve uma importante reunião na Alemanha com os principais fabricantes de decos (notícia completa aqui: http://www.g-i-n.net/events/9th-confere ... -symposium). Eles decidiram fazer uma mudança radical no sistema de distribuição de keys para não mais ter que passar por estes problemas e limitações.

A proposta é um sistema PRIVADO de envio de keys, pago pelos fabricantes e que não dependa de nenhum fornecedor que poderia deixá-los na mão. Surge então o sistema batizado de RHAIFHAI que enviará as keys por rádio, a partir de um ponto central na américa do sul. Possivelmente ficará na Bolívia ou mesmo na região de Cuiabá. Os transmissores seguirão o padrão de transmissões de Ondas Curtas com uma potência de irradiação inicial de 14.000 Watts suficiente para cobrir a América do Sul.

Obviamente, uma nova antena para as keys será necessária (já que não será mais por satélite). Eles sugeriram um padrão que pode ser construído até mesmo em casa:

Os dongles deverão ser substituídos por outros capazes de receber dados em Ondas Curtas. Os fabricantes liberaram a foto do primeiro dongle do novo sistema, para a turma perceber que a coisa é séria e está em adiantado estágio de implantação:

O custo deste novo dongle deverá ser um terço do preço dos de satélite. Isso é uma boa notícia, já que haverá o custo adicional da nova antena. Infezlimente, não haverá adaptador para os dongles atuais, pois eles são totalmente incompatíveis com o novo sistema. Decos com dongle interno deverão usar o novo dongle (aguardem atualizações, com certeza!). Outra boa notícia é que será possível escutar música diretamente pelo dongle (com fones de ouvido) enquanto se assiste qualquer canal de tv, já que ele pegará também estações comerciais abertas de rádio em Ondas Curtas. Não sei se alguém usará este recurso, mas ele estará presente.

Até o momento, o único deco que está em condições de aceitar o novo protocolo é o Newgen, que esteve fora do ar por algumas semanas justamente para o teste desta nova tecnologia. E pelos testes, promete MUITO! A estabilidade é garantida em 99%. Inicialmente, funcionará para Azbox, Azamerica, Tocomsat, Duosat, Phantom, HD Duo, Probox e Prosat. Estão previstos para a segunda etapa os decos Superbox, Openbox e Showbox. Outros decos dependerão da negociação entre os fabricantes e a aliança dos fabricantes que desenvolveram esta solução, sem data para ocorrer.

Com isso, ficamos livres dos sustos que temos vivido, com satélites deixando de enviar keys. E o envio das keys não sofrerá interferência em dias de chuva, já que não serão transmitidas por um satélite.

Mas... (sempre tem um "mas") nem tudo são flores. A fim de evitar o uso indevido destas keys, todos os decos das marcas indicadas deverão ser cadastrados. Para isso, o número serial deverá ser informado. Isso não representa perigo, pois nada mais é registrado além do número serial (sem nome, telefone, etc). Os fabricantes inclusive criaram uma página onde o próprio usuário pode cadastrar o número serial de seu aparelho.