注册会员 登录
Project1 返回首页

鼠窝 https://rpg.blue/?335626 [收藏] [复制] [分享] [RSS] ~外站脚本图书馆~

日志

环形菜单

热度 4已有 489 次阅读2014-5-18 13:39 |个人分类:外站脚本

#====================================================================
#Script: Ring Menu [ACE]
#By: Victor Gomez
#====================================================================
module Configuration
 #itens name, ["items","sair","equip" etc...]
 Item_name = [
 "Items",
 "Skill",
 "Equipamentos",
 "Status",
 "Formation",
 "Salvar",
 "Sair"
 ]
 #number max of options
 Item_max = 7
 #icons of options ["item","skill"...]
 Item_icon = [144,128,40,137,149,112,1]
 #activate ? ["item","skill"...]
 Item_hab = [true,true,true,true,true,true,true]
  end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================
class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
 super
 @win_local = Window_Local.new(0,0)
 px = $game_player.screen_x - 16
 py = $game_player.screen_y - 28
 @ring_menu = Window_RingMenu_Comando.new(px,py)
 create_status_window
 @status_window.visible = false
 create_gold_window
  end
  def update
 super
 @ring_menu.update
 @win_local.update
 if Input.trigger?(Input::C)
 case @ring_menu.indice
   when 0
  command_item
   when 1,2,3
  command_personal
   when 4
  command_formation
   when 5
    command_save
   when 6
  command_game_end
   end
 end
 if Input.trigger?(:<img src='http://www.rpgmakervxace.net/public/style_emoticons/<#EMO_DIR#>/cool.png' class='bbc_emoticon' alt='B)' />
   return_scene
 end
 if Input.trigger?(Input::UP) or  Input.trigger?(Input::LEFT) and @ring_menu.lol != false
   Sound.play_cursor
   @ring_menu.girar(3)
   return
 end
 if Input.trigger?(Input::DOWN) or  Input.trigger?(Input::RIGHT) and @ring_menu.lol != false
   Sound.play_cursor
   @ring_menu.girar(4)
   return
 end
  end
  def terminate
 super
 @ring_menu.dispose
 @win_local.dispose
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de comando
  #--------------------------------------------------------------------------
  def create_command_window
 @command_window = Window_MenuCommand.new
 @command_window.set_handler(:item,   method(:command_item))
 @command_window.set_handler(:skill,  method(:command_personal))
 @command_window.set_handler(:equip,  method(:command_personal))
 @command_window.set_handler(:status, method(:command_personal))
 @command_window.set_handler(:formation, method(:command_formation))
 @command_window.set_handler(:save,   method(:command_save))
 @command_window.set_handler(:game_end,  method(:command_game_end))
 @command_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de dinheiro
  #--------------------------------------------------------------------------
  def create_gold_window
 @gold_window = Window_Gold.new
 @gold_window.x = -20
 @gold_window.y = Graphics.height - @gold_window.height
 @gold_window.opacity = 0
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de atributos
  #--------------------------------------------------------------------------
  def create_status_window
 @status_window = Window_MenuStatus.new(160, 0)
  end
  #--------------------------------------------------------------------------
  # * Comando [Item]
  #--------------------------------------------------------------------------
  def command_item
 SceneManager.call(Scene_Item)
  end
  #--------------------------------------------------------------------------
  # * Comando [Habilidade] [Equipamentos] [Atributos]
  #--------------------------------------------------------------------------
  def command_personal
 @status_window.select_last
 @status_window.visible = true
 @ring_menu.lol = false
 @status_window.activate
 @status_window.set_handler(:ok,  method(:on_personal_ok))
 @status_window.set_handler(:cancel, method(:on_personal_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Formação]
  #--------------------------------------------------------------------------
  def command_formation
 @status_window.select_last
 @status_window.activate
 @status_window.set_handler(:ok,  method(:on_formation_ok))
 @status_window.set_handler(:cancel, method(:on_formation_cancel))
  end
  #--------------------------------------------------------------------------
  # * Comando [Salvar]
  #--------------------------------------------------------------------------
  def command_save
 SceneManager.call(Scene_Save)
  end
  #--------------------------------------------------------------------------
  # * Comando [Fim do Jogo]
  #--------------------------------------------------------------------------
  def command_game_end
 SceneManager.call(Scene_End)
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Confirmação]
  #--------------------------------------------------------------------------
  def on_personal_ok
 case @ring_menu.indice
 when 1
   @status_window.visible = false
   SceneManager.call(Scene_Skill)
 when 2
   @status_window.visible = false
   SceneManager.call(Scene_Equip)
 when 3
   @status_window.visible = false
   SceneManager.call(Scene_Status)
 end
  end
  #--------------------------------------------------------------------------
  # * Comandos individuais [Cancelamento]
  #--------------------------------------------------------------------------
  def on_personal_cancel
 @status_window.visible = false
 @ring_menu.lol = true
 @status_window.unselect
  end
  #--------------------------------------------------------------------------
  # * Mudança de Ordem [Confirmação]
  #--------------------------------------------------------------------------
  def on_formation_ok
 @status_window.visible = true
 if @status_window.pending_index >= 0
   $game_party.swap_order(@status_window.index,
        @status_window.pending_index)
   @status_window.pending_index = -1
   @status_window.redraw_item(@status_window.index)
 else
   @status_window.pending_index = @status_window.index
 end
 @status_window.activate
  end
  #--------------------------------------------------------------------------
  # * Mudança de Ordem [Cancelamento]
  #--------------------------------------------------------------------------
  def on_formation_cancel
 if @status_window.pending_index >= 0
   @status_window.pending_index = -1
   @status_window.activate
 else
   @status_window.unselect
   @status_window.visible = false
 end
  end
end
class Window_RingMenu_Comando < Window_Base
  DurIni = 30
  DurMov = 15
  RaioAnel = 64
  ModoIni = 1
  ModoEsp = 2
  ModoMD = 3
  ModoME = 4
  SE_Inicio = ""
  attr_accessor :lol
  attr_accessor :indice
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(centro_x,centro_y)
 super(0, 0, 544, 416)
 self.opacity = 0
 self.contents.font.size = 16
 @item_name = Configuration::Item_name
 @item_max = Configuration::Item_max
 @item_icon = Configuration::Item_icon
 @item_hab = Configuration::Item_hab
 @indice = 0
 @cx = centro_x - 12
 @cy = centro_y - 12
 inicia_menu
 refresh
 @lol = true
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #-------------------------------------------------------------------------- 
  def update
 super
 refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
 self.contents.clear
 case @modo
 when ModoIni
   refresh_inicio
 when ModoEsp
   refresh_espera
 when ModoMD
   refresh_mover(1)
 when ModoME
   refresh_mover(0)
 end
 sw = self.contents.width
 rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32)
 self.contents.draw_text(rect, @item_name[@indice],1)
  end
  #--------------------------------------------------------------------------
  # Abre o menu
  #--------------------------------------------------------------------------
  def refresh_inicio
 d1 = 2.0 * Math::PI / @item_max
 d2 = 1.0 * Math::PI / DurIni
 r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni
 for i in 0...@item_max
   j = i - @indice
   d = d1 * j + d2 * @passos
   x = @cx + ( r * Math.sin( d ) ).to_i
   y = @cy - ( r * Math.cos( d ) ).to_i
   desenha_item(x, y, i)
 end
 @passos -= 1
 if @passos < 1
   @modo = ModoEsp
 end
  end
  #--------------------------------------------------------------------------
  # Atualiza o menu
  #--------------------------------------------------------------------------
  def refresh_espera
 d = 2.0 * Math::PI / @item_max
 for i in 0...@item_max
   j = i - @indice
   x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i
   y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i
   desenha_item(x, y, i)
 end
  end
  #--------------------------------------------------------------------------
  # Movimenta o menu
  #--------------------------------------------------------------------------
  def refresh_mover(modo)
 d1 = 2.0 * Math::PI / @item_max
 d2 = d1 / DurMov
 d2 *= -1 if modo != 0
 for i in 0...@item_max
   j = i - @indice
   d = d1 * j + d2 * @passos
   x = @cx + ( RaioAnel * Math.sin( d ) ).to_i
   y = @cy - ( RaioAnel * Math.cos( d ) ).to_i
   desenha_item(x, y, i)
 end
 @passos -= 1
 if @passos < 1
   @modo = ModoEsp
 end
  end
  #--------------------------------------------------------------------------
  # Desenha o icone
  #--------------------------------------------------------------------------
  def desenha_item(x, y, i)
 if @indice == i
   self.cursor_rect.set(x-4, y-4, 32, 32)
   draw_icon(@item_icon[i], x, y, @item_hab[i])
 else
   draw_icon(@item_icon[i], x, y, @item_hab[i])
 end
  end
  #--------------------------------------------------------------------------
  # Inicia o menu
  #--------------------------------------------------------------------------
  def inicia_menu
 @modo = ModoIni
 @passos = DurIni
 if  SE_Inicio != nil and SE_Inicio != "" and @activate
   Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100)
 end
  end
  #--------------------------------------------------------------------------
  # Gira o menu
  #--------------------------------------------------------------------------
  def girar(modo)
 if modo == ModoMD
   @indice -= 1
   @indice = @item_hab.size - 1 if @indice < 0
 elsif modo == ModoME
   @indice += 1 and @activate
   @indice = 0 if @indice >= @item_hab.size
 else
   return
 end
 @modo = modo
 @passos = DurMov
  end
end
#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Faz modificações nescessarias para a exibição do nome do mapa
#==============================================================================
module DataManager
 def self.load_normal_database
 $data_actors  = load_data("Data/Actors.rvdata2")
 $data_classes    = load_data("Data/Classes.rvdata2")
 $data_skills  = load_data("Data/Skills.rvdata2")
 $data_items   = load_data("Data/Items.rvdata2")
 $data_weapons    = load_data("Data/Weapons.rvdata2")
 $data_armors  = load_data("Data/Armors.rvdata2")
 $data_enemies    = load_data("Data/Enemies.rvdata2")
 $data_troops  = load_data("Data/Troops.rvdata2")
 $data_states  = load_data("Data/States.rvdata2")
 $data_animations = load_data("Data/Animations.rvdata2")
 $data_tilesets   = load_data("Data/Tilesets.rvdata2")
 $data_common_events = load_data("Data/CommonEvents.rvdata2")
 $data_system  = load_data("Data/System.rvdata2")
 $data_mapinfos   = load_data("Data/MapInfos.rvdata2")
 $data_mapinfo = load_data("Data/MapInfos.rvdata2")
  end
end
#==============================================================================
# Window_Local
#------------------------------------------------------------------------------
# Cria a janela responsavel pela exibição do nome do mapa
#==============================================================================
class Window_Local < Window_Base
  #--------------------------------------------------------------------------
  # Inicia o objeto
  #--------------------------------------------------------------------------
  def initialize(x, y)
 super(x, y, 160, 96)
 self.opacity = 0
 refresh
  end
  #--------------------------------------------------------------------------
  # Atualiza o objeto
  #--------------------------------------------------------------------------
  def refresh
 self.contents.clear
 self.contents.font.color = normal_color
 self.contents.draw_text(4, 0, 120, 32, "Local:")
 self.contents.font.color = system_color
 self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2)
  end
end
1

鸡蛋
1

鲜花

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 12:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部