Project1

标题: 麻烦哪位高手帮改成VA可用。 [打印本页]

作者: skgame    时间: 2013-6-4 15:37
标题: 麻烦哪位高手帮改成VA可用。
RUBY 代码复制
  1. #==============================================================================
  2. #
  3. #==============================================================================
  4. #
  5. #==============================================================================
  6. # ■ Arrow_Base
  7. #------------------------------------------------------------------------------
  8. #  在战斗画面使用的箭头光标的活动块。本类作为
  9. # Arrow_Enemy 类与 Arrow_Actor 类的超级类使用。
  10. #==============================================================================
  11. class Arrow_Base < Sprite
  12.   #--------------------------------------------------------------------------
  13.   # ● 定义实例变量
  14.   #--------------------------------------------------------------------------
  15.   attr_reader   :index                    # 光标位置
  16.   attr_reader   :help_window              # 帮助窗口
  17.   #--------------------------------------------------------------------------
  18.   # ● 初始化对像
  19.   #     viewport : 显示端口
  20.   #--------------------------------------------------------------------------
  21.   def initialize(viewport)
  22.     super(viewport)
  23.     self.bitmap = Cache.system("Arrow")
  24.     self.ox = 16
  25.     self.oy = 64
  26.     self.z = 2500
  27.     @blink_count = 0
  28.     @index = 0
  29.     @help_window = nil
  30.     update
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置光标位置
  34.   #     index : 新的光标位置
  35.   #--------------------------------------------------------------------------
  36.   def index=(index)
  37.     @index = index
  38.     update
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 设置帮助窗口
  42.   #     help_window : 新的帮助窗口
  43.   #--------------------------------------------------------------------------
  44.   def help_window=(help_window)
  45.     @help_window = help_window
  46.     # 刷新帮助文本 (update_help 定义了继承目标)
  47.     if @help_window != nil
  48.       update_help
  49.     end
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 刷新画面
  53.   #--------------------------------------------------------------------------
  54.   def update
  55.     # 刷新点灭记数
  56.     @blink_count = (@blink_count + 1) % 12
  57.     # 设置传送源矩形
  58.     if @blink_count < 6
  59.       self.src_rect.set(0, 0, 32, 32)
  60.     else
  61.       self.src_rect.set(32, 0, 32, 32)
  62.     end
  63.     # 刷新帮助文本 (update_help 定义了继承目标)
  64.     if @help_window != nil
  65.       update_help
  66.     end
  67.   end
  68. end
  69. #==============================================================================
  70. # ■ Arrow_Enemy
  71. #------------------------------------------------------------------------------
  72. #  选择敌人的箭头光标。本类继承 Arrow_Base
  73. # 类。
  74. #==============================================================================
  75. class Arrow_Enemy < Arrow_Base
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取光标指向的敌人
  78.   #--------------------------------------------------------------------------
  79.   def enemy
  80.     return $game_troop.members[@index]
  81.   end
  82.  
  83.   def dispose
  84.     @enemy.loop_white_flash = false unless @enemy.nil?
  85.     super
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 刷新画面
  89.   #--------------------------------------------------------------------------
  90.   def update
  91.     super
  92.      if @enemy != enemy and enemy.exist?
  93.         @enemy.loop_white_flash = false unless @enemy.nil?  
  94.         enemy.loop_white_flash = true
  95.         @enemy = enemy
  96.       end   
  97.  
  98.     # 如果指向不存在的敌人就离开
  99.     $game_troop.members.size.times do
  100.       break if self.enemy.exist?
  101.       @index += 1
  102.       @index %= $game_troop.members.size
  103.     end
  104.     # 光标右
  105.     if Input.repeat?(Input::RIGHT) or Input.repeat?(Input::DOWN)
  106.       Sound.play_cursor
  107.       $game_troop.members.size.times do
  108.         @index += 1
  109.         @index %= $game_troop.members.size
  110.         break if self.enemy.exist?
  111.       end
  112.     end
  113.     # 光标左
  114.     if Input.repeat?(Input::LEFT) or Input.repeat?(Input::UP)
  115.      Sound.play_cursor
  116.       $game_troop.members.size.times do
  117.         @index += $game_troop.members.size - 1
  118.         @index %= $game_troop.members.size
  119.         break if self.enemy.exist?
  120.       end
  121.     end
  122.     # 设置活动块坐标
  123.     if self.enemy != nil
  124.       self.x = self.enemy.screen_x  
  125.       self.y = self.enemy.screen_y
  126.     end
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 刷新帮助文本
  130.   #--------------------------------------------------------------------------
  131.   def update_help
  132.     # 帮助窗口显示敌人的名字与状态
  133.     @help_window.set_enemy(self.enemy)
  134.   end
  135. end
  136.  
  137.  
  138. class Scene_Battle ##
  139.  
  140.  
  141.   #--------------------------------------------------------------------------
  142.   # ● 更新画面
  143.   #--------------------------------------------------------------------------
  144.   def update
  145.     super
  146.     update_basic(true)
  147.     update_info_viewport                  # 更新显示信息的视区
  148.     if $game_message.visible
  149.       @info_viewport.visible = false
  150.       @message_window.visible = true
  151.     end
  152.     unless $game_message.visible          # 在显示消息以外的情况
  153.       return if judge_win_loss            # 判断胜败
  154.       update_scene_change
  155.       if @enemy_arrow != nil
  156.         update_target_enemy_selection     # 选择敌方对象
  157.       elsif @target_actor_window != nil
  158.         update_target_actor_selection     # 选择对象角色
  159.       elsif @skill_window != nil
  160.         update_skill_selection            # 选择特技
  161.       elsif @item_window != nil
  162.         update_item_selection             # 选择物品
  163.       elsif @party_command_window.active
  164.         update_party_command_selection    # 选择同伴指令
  165.       elsif @actor_command_window.active
  166.         update_actor_command_selection    # 选择角色指令
  167.       else
  168.         process_battle_event              # 战斗处理
  169.         process_action                    # 战斗行动
  170.         process_battle_event              # 处理战斗事件
  171.       end
  172.     end
  173.   end
  174.  
  175.  
  176.   def set_window(visible)
  177.     if !@skill_window.nil?
  178.       @skill_window.visible = visible
  179.     elsif !@item_window.nil?
  180.       @item_window.visible = visible
  181.     end
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 开始选择对象的敌方角色
  185.   #--------------------------------------------------------------------------
  186.   def start_target_enemy_selection
  187.     set_window(false)
  188.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport3)
  189.     @enemy_window = Window_Enemy.new(176,0)
  190.     @enemy_arrow.help_window = @enemy_window
  191.     @actor_command_window.active = false
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 选择对象敌方角色结束
  195.   #--------------------------------------------------------------------------
  196.   def end_target_enemy_selection
  197.     @enemy_arrow.dispose
  198.     @enemy_arrow = nil
  199.     @enemy_window.dispose
  200.     set_window(true)
  201.     if @actor_command_window.index == 0
  202.       @actor_command_window.active = true
  203.     end
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 更新选择对象敌方角色
  207.   #--------------------------------------------------------------------------
  208.   def update_target_enemy_selection
  209.      @enemy_arrow.update
  210.     if Input.trigger?(Input::B)
  211.       Sound.play_cancel
  212.       end_target_enemy_selection
  213.     elsif Input.trigger?(Input::C)
  214.       Sound.play_decision
  215.       @active_battler.action.target_index = @enemy_arrow.enemy.index
  216.       end_target_enemy_selection
  217.       end_skill_selection
  218.       end_item_selection
  219.       next_actor
  220.     end
  221.   end
  222.  
  223. end
  224.  
  225. class Spriteset_Battle ##
  226.   def viewport3
  227.     return @viewport3
  228.   end   
  229. end
  230. class Game_Battler
  231.   attr_accessor :loop_white_flash              # 循环白色闪烁标记
  232. end
  233. class Sprite_Battler ##
  234.   alias old_setup_new_effect setup_new_effect
  235.   def setup_new_effect
  236.     if @battler.loop_white_flash and @effect_duration == 0
  237.       @battler.white_flash = true
  238.     end  
  239.     old_setup_new_effect
  240.   end
  241. end
  242.  
  243. #==============================================================================
  244. # ■ Window_Enemy
  245. #------------------------------------------------------------------------------
  246. #  显示敌人信息的窗口,光标Arrow用。
  247. #==============================================================================
  248. class Window_Enemy < Window_Base
  249.   #--------------------------------------------------------------------------
  250.   # ● 初始化窗口
  251.   #     x : 窗口的X坐标
  252.   #     y : 窗口的Y坐标
  253.   #--------------------------------------------------------------------------
  254.   def initialize(x, y)
  255.     super(x, y, 288, WLH * 2 + 32)
  256. #~     self.opacity = 0
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● 设置文本
  260.   #     text  : 窗口显示的字符串
  261.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  262.   #--------------------------------------------------------------------------
  263.   def set_text(text, align = 0)
  264.     # 如果文本和对齐方式的至少一方与上次的不同
  265.     if text != @text or align != @align
  266.       # 再描绘文本
  267.       self.contents.clear
  268.       self.contents.font.color = normal_color
  269.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  270.       @text = text
  271.       @align = align
  272.       @actor = nil
  273.     end
  274.     self.visible = true
  275.   end
  276.  
  277.  
  278.   #--------------------------------------------------------------------------
  279.   # ● 设置敌人
  280.   #     enemy : 要显示名字和状态的敌人
  281.   #--------------------------------------------------------------------------
  282.   def set_enemy(enemy)
  283.     if @enemy != enemy
  284.     text = enemy.name
  285.     set_text(text)
  286.     w = enemy.states.size * 24  
  287.     draw_actor_state(enemy, contents.width - w , 0, w)
  288.     draw_actor_hp(enemy, 0 , WLH  )
  289.     draw_actor_mp(enemy, contents.width - 120 , WLH )
  290.     @enemy = enemy
  291.     end
  292.   end
  293. end
  294. #==============================================================================
  295. #
  296. #==============================================================================


直接引用146行报错,麻烦高手改一下VA可用,非常感谢!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1