设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 633|回复: 1
打印 上一主题 下一主题

[已经过期] 战斗指针脚本出现问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
453
在线时间
33 小时
注册时间
2017-10-4
帖子
38
跳转到指定楼层
1
发表于 2018-4-1 22:42:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 melatin 于 2018-4-1 22:59 编辑

用了这个战斗指针的脚本,选敌人时候没问题,但是选择己方的时候指针就不会动了,也无法选择己方的目标,但是实际上按键有反应是可以选择目标的……但指针在表现上就是无事发生,停在中间。
能帮忙看下嘛
  1. #==============================================================================
  2. # +++ MOG - 战斗指针 (3.3) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # https://atelierrgss.wordpress.com/
  6. #==============================================================================
  7. # 战斗选择目标时显示动态指针.
  8. #==============================================================================
  9. # 需要以下图片. (Graphics/System)
  10. #
  11. # Battle_Cursor.png
  12. # Battle_Cursor2.png *(需要脚本:"目标范围 EX")
  13. #
  14. #==============================================================================
  15. # 注意 - 请把本脚本放在脚本:"战斗图动态效果"之下
  16. #==============================================================================
  17. # ● Histórico (Version History)
  18. #==============================================================================
  19. # (3.3) - Correção do bug de não atualizar a index quando o battler é morto.
  20. # (3.2) - Melhoria de compatibilidade com Scope EX
  21. # (3.1) - Melhoria na posição dos battler aliados mortos. (MOG Sprite Actor)
  22. # (3.0) - Correção do cursor não acompanhar a posição do battler em movimento.
  23. #       - Apresentar o cursor na seleção de todos os alvos.
  24. #==============================================================================
  25. $imported = {} if $imported.nil?
  26. $imported[:mog_battle_cursor] = true

  27. #==============================================================================
  28. # ■ CURSOR SETTING
  29. #==============================================================================
  30. module MOG_BATTLE_CURSOR
  31.   #相对于目标的指针位置.
  32.   CURSOR_POSITION = [0, 0]
  33.   #目标名的位置.
  34.   CURSOR_NAME_POSITION = [-10, 35]
  35.   #指针是否左右滑动.
  36.   CURSOR_SLIDE_EFFECT = true
  37.   #指针是否上下浮动.
  38.   CURSOR_FLOAT_EFFECT = true
  39.   #指针的Z坐标.
  40.   CURSOR_Z = 50
  41.   #第二个指针的相对于目标的位置.
  42.   TARGET_CURSOR_2_POS = [0, -48]
  43.   #第二个指针是否有缩放效果.
  44.   TARGET_CURSOR_2_ZOOM_EFFECT = false
  45. end

  46. #==============================================================================
  47. # ■ Game Temp
  48. #==============================================================================
  49. class Game_Temp
  50.   
  51.   attr_accessor :battle_cursor
  52.   attr_accessor :battle_cursor_data
  53.   attr_accessor :target_skill
  54.   attr_accessor :battle_end
  55.   attr_accessor :sprite_visible
  56.   attr_accessor :battle_cursor_need_refresh
  57.   attr_accessor :battle_cursor_scope_refresh
  58.   attr_accessor :battle_cursor_target
  59.   attr_accessor :target_data
  60.   attr_accessor :target_cursor_need_refresh
  61.   attr_accessor :target_window_active
  62.   #--------------------------------------------------------------------------
  63.   # ● Initialize
  64.   #--------------------------------------------------------------------------  
  65.   alias mog_battle_cursor_initialize initialize
  66.   def initialize
  67.       @battle_cursor = [0,0,false,""] ; @target_skill = [] ; @battle_end = false
  68.       @battle_cursor_need_refresh = [false,false] ; @battle_cursor_target = [nil,nil]
  69.       @target_data = [nil,nil] ; @target_cursor_need_refresh = false
  70.       @target_window_active = [false,false] ; @battle_cursor_scope_refresh = false
  71.       mog_battle_cursor_initialize
  72.   end  
  73.   
  74.   #--------------------------------------------------------------------------
  75.   # ● Clear Target Temp
  76.   #--------------------------------------------------------------------------   
  77.   def clear_target_temp
  78.       $game_party.members.each {|t| t.target_temp = false } rescue nil
  79.       $game_troop.members.each {|t| t.target_temp = false } rescue nil   
  80.       @target_data = [nil,nil] ; @battle_cursor_target = [nil,nil]
  81.   end
  82.    
  83.   #--------------------------------------------------------------------------
  84.   # ● Sprite Visible
  85.   #--------------------------------------------------------------------------   
  86.   def sprite_visible
  87.       return false if $game_message.visible
  88.       return false if $game_temp.battle_end
  89.       return true
  90.   end
  91.   
  92. end

  93. #==============================================================================
  94. # ■ Spriteset Battle Cursor
  95. #==============================================================================
  96. class Sprite_Battle_Cursor < Sprite
  97.   include MOG_BATTLE_CURSOR
  98.   
  99.   #--------------------------------------------------------------------------
  100.   # ● Initialize
  101.   #--------------------------------------------------------------------------        
  102.   def initialize(viewport = nil)
  103.       super(viewport)
  104.       $game_temp.battle_cursor = [0,0,false,""] ; $game_temp.battle_end = false
  105.       self.bitmap = Cache.system("Battle_Cursor")
  106.       self.visible = $game_temp.battle_cursor[2] ; self.z = CURSOR_Z
  107.       @cw = self.bitmap.width / 2 ; @ch = [self.bitmap.height, Graphics.height - self.bitmap.height]
  108.       @cursor_name = Sprite.new ; @cursor_name.bitmap = Bitmap.new(120,32)
  109.       @cursor_name.z = self.z + 1 ; @cursor_name.bitmap.font.size = 16
  110.       @cursor_name_enemy = $game_temp.battle_cursor[3] ; @cs_x = 0
  111.       @cursor_name_position = [CURSOR_NAME_POSITION[0] ,CURSOR_NAME_POSITION[1]]
  112.       @cursor_float = [0,0] ;  refresh_cursor_name
  113.       @face_battler = SceneManager.face_battler? if $imported[:mog_battle_hud_ex]
  114.       @cs_x = (15 * MOG_SPRITE_ACTOR::SPRITE_ZOOM).truncate if $imported[:mog_sprite_actor]  
  115.   end

  116.   #--------------------------------------------------------------------------
  117.   # ● Dispose Sprite
  118.   #--------------------------------------------------------------------------         
  119.   def dispose
  120.       super
  121.       dispose_sprite_cursor
  122.   end
  123.   
  124.   #--------------------------------------------------------------------------
  125.   # ● Dispose Sprite Cursor
  126.   #--------------------------------------------------------------------------            
  127.   def dispose_sprite_cursor
  128.       @cursor_name.bitmap.dispose ; @cursor_name.dispose
  129.       self.bitmap.dispose ; $game_temp.clear_target_temp
  130.   end

  131.   #--------------------------------------------------------------------------
  132.   # ● Refresh Cursor Name
  133.   #--------------------------------------------------------------------------              
  134.   def refresh_cursor_name
  135.       @cursor_name_enemy = $game_temp.battle_cursor[3]
  136.       @cursor_name.bitmap.clear
  137.       @cursor_name.bitmap.draw_text(0,0,120,32,@cursor_name_enemy.to_s,1)
  138.   end

  139.   #--------------------------------------------------------------------------
  140.   # ● Update Sprite Cursor
  141.   #--------------------------------------------------------------------------              
  142.   def update_sprite_cursor
  143.       update_battle_camera_cursor if update_battle_cursor_r?
  144.       if force_hide? ; self.visible = false ; @cursor_name.visible = false ; return ; end
  145.       update_visible ; update_cursor_float_effect ; set_real_position
  146.       execute_move(0,self.x,$game_temp.battle_cursor[0])
  147.       execute_move(1,self.y,$game_temp.battle_cursor[1] + @cursor_float[1])
  148.       update_sprite_name
  149.       self.visible = false if !$game_temp.sprite_visible
  150.       @cursor_name.opacity = 0 if @cursor_name and !$game_temp.sprite_visible
  151.   end
  152.   
  153.   #--------------------------------------------------------------------------
  154.   # ● Process Cursor Move
  155.   #--------------------------------------------------------------------------
  156.   def process_cursor_move
  157.       return unless cursor_movable?
  158.       last_index = @index
  159.       cursor_move_index(1) if Input.repeat?(:DOWN)
  160.       cursor_move_index(-1) if Input.repeat?(:UP)
  161.       cursor_move_index(1) if Input.repeat?(:RIGHT)
  162.       cursor_move_index(-1) if Input.repeat?(:LEFT)
  163.       $game_temp.battle_cursor_data = $game_troop.alive_members[@index]
  164.       Sound.play_cursor if @index != last_index
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● Update Battle Cursor
  168.   #--------------------------------------------------------------------------              
  169.   def update_battle_cursor_r?
  170.       return false if $imported[:mog_battle_camera] == nil
  171.       if $imported[:mog_battle_hud_ex] and SceneManager.face_battler? and $game_temp.battle_cursor_target[0] != nil
  172.          self.ox = 0 ; self.oy = 0 ; @cursor_name.ox = 0 ; @cursor_name.oy = 0
  173.          return false
  174.       end   
  175.       return true
  176.    end   
  177.       
  178.   #--------------------------------------------------------------------------
  179.   # ● Update Battle Camera Cursor
  180.   #--------------------------------------------------------------------------              
  181.   def update_battle_camera_cursor
  182.       self.ox = $game_temp.viewport_oxy[0]
  183.       self.oy = $game_temp.viewport_oxy[1]
  184.       @cursor_name.ox = self.ox
  185.       @cursor_name.oy = self.oy
  186.   end

  187.   #--------------------------------------------------------------------------
  188.   # ● Set Real Position
  189.   #--------------------------------------------------------------------------              
  190.   def set_real_position  
  191.       return if $game_temp.target_data == [nil,nil]
  192.       return if $game_temp.battle_cursor_target == [nil,nil]
  193.       $game_temp.battle_cursor[0] = $game_temp.target_data[1].x - @cw + CURSOR_POSITION[0]
  194.       $game_temp.battle_cursor[1] = $game_temp.target_data[1].y + CURSOR_POSITION[1]
  195.       $game_temp.battle_cursor[1] -= ($game_temp.target_data[1].bitmap.height / 2) unless !$game_temp.target_data[1].bitmap
  196.       if $game_temp.target_data[0].is_a?(Game_Actor)
  197.          if $imported[:mog_sprite_actor] and $game_temp.target_data[0].dead?
  198.             if $game_temp.target_data[0].bact_sprite[5] == 6
  199.                $game_temp.battle_cursor[0] -= @cs_x
  200.             else
  201.                $game_temp.battle_cursor[0] += @cs_x
  202.             end   
  203.          end         
  204.          $game_temp.battle_cursor[1] -= @ch[0] if @face_battler and $game_temp.battle_cursor[1] > @ch[1]
  205.       end      
  206.   end
  207.    
  208.   #--------------------------------------------------------------------------
  209.   # ● Can Move Real Position?
  210.   #--------------------------------------------------------------------------               
  211.   def can_move_real_position?
  212.       return false if $game_temp.battle_cursor_data == nil
  213.       return false if $game_temp.battle_cursor_data.dead?
  214.       screen_x = $game_temp.battle_cursor_data.screen_x rescue nil
  215.       return false if screen_x == nil
  216.       return true
  217.   end   
  218.       
  219.   #--------------------------------------------------------------------------
  220.   # ● Force Hide
  221.   #--------------------------------------------------------------------------              
  222.   def force_hide?
  223.       return true if $game_temp.battle_cursor == nil
  224.       return true if $game_temp.battle_cursor[0] == nil
  225.       return true if $game_temp.battle_cursor[1] == nil   
  226.       return false
  227.   end
  228.   
  229.   #--------------------------------------------------------------------------
  230.   # ● Update Visible
  231.   #--------------------------------------------------------------------------               
  232.   def update_visible
  233.       $game_temp.battle_cursor_data = nil if !self.visible
  234.       if force_hide_battle_cursor?
  235.          self.visible = false ; return
  236.       end  
  237.       self.visible = $game_temp.battle_cursor[2]
  238.       (self.x = -64 ; self.y = -64) if !self.visible
  239.   end  
  240.   
  241.   #--------------------------------------------------------------------------
  242.   # ● Force Hide Battle Cursor
  243.   #--------------------------------------------------------------------------               
  244.   def force_hide_battle_cursor?
  245.       if $imported[:mog_sprite_actor] and !$game_temp.target_data.nil?
  246.          return true if !$game_temp.target_data[0].bact_sprite_visiblle
  247.       end  
  248.       return true if $imported[:mog_active_chain] and $game_temp.chain_action_phase
  249.       return true if $imported[:mog_atb_system] and BattleManager.actor == nil
  250.       return true if $imported[:mog_blitz_commands] and $game_temp.blitz_commands_phase
  251.       return false
  252.   end
  253.   
  254.   #--------------------------------------------------------------------------
  255.   # ● Update Sprite Name
  256.   #--------------------------------------------------------------------------               
  257.   def update_sprite_name
  258.       return if @cursor_name == nil
  259.       refresh_cursor_name  if @cursor_name_enemy != $game_temp.battle_cursor[3]
  260.       @cursor_name.x = self.x + @cursor_name_position[0]
  261.       @cursor_name.y = self.y + @cursor_name_position[1]
  262.       @cursor_name.opacity = self.opacity ; @cursor_name.visible = self.visible
  263.   end  
  264.   
  265.   #--------------------------------------------------------------------------
  266.   # ● Update Cursor Float Effect
  267.   #--------------------------------------------------------------------------              
  268.   def update_cursor_float_effect
  269.       return if !CURSOR_FLOAT_EFFECT
  270.       @cursor_float[0] += 1
  271.       case @cursor_float[0]
  272.         when 0..20  ; @cursor_float[1] += 1
  273.         when 21..40 ; @cursor_float[1] -= 1
  274.         else
  275.           @cursor_float[0] = 0 ;   @cursor_float[1] = 0
  276.       end        
  277.   end  
  278.   
  279.   #--------------------------------------------------------------------------
  280.   # ● Execute Move
  281.   #--------------------------------------------------------------------------      
  282.   def execute_move(type,cp,np)
  283.       sp = 5 + ((cp - np).abs / 5)
  284.       if cp > np
  285.          cp -= sp ; cp = np if cp < np
  286.       elsif cp < np
  287.          cp += sp ; cp = np if cp > np
  288.       end     
  289.        self.x = cp if type == 0 ; self.y = cp if type == 1
  290.   end      
  291.   
  292. end

  293. #==============================================================================
  294. # ■ Spriteset Battle
  295. #==============================================================================
  296. class Spriteset_Battle
  297.   
  298.   #--------------------------------------------------------------------------
  299.   # ● Initialize
  300.   #--------------------------------------------------------------------------      
  301.   alias mog_battle_cursor_initialize initialize
  302.   def initialize
  303.       mog_battle_cursor_initialize
  304.       create_cursor
  305.   end
  306.   
  307.   #--------------------------------------------------------------------------
  308.   # ● Dispose
  309.   #--------------------------------------------------------------------------      
  310.   alias mog_battle_cursor_dispose dispose
  311.   def dispose
  312.       mog_battle_cursor_dispose
  313.       dispose_battle_cursor
  314.   end
  315.   
  316.   #--------------------------------------------------------------------------
  317.   # ● Update
  318.   #--------------------------------------------------------------------------         
  319.   alias mog_battle_cursor_update update
  320.   def update
  321.       mog_battle_cursor_update
  322.       update_battle_cursor
  323.   end  
  324.   
  325.   #--------------------------------------------------------------------------
  326.   # ● Create_Cursor
  327.   #--------------------------------------------------------------------------        
  328.   def create_cursor
  329.       return if @battle_cursor != nil
  330.       $game_temp.clear_target_temp ; @battle_cursor = Sprite_Battle_Cursor.new
  331.   end
  332.   
  333.   #--------------------------------------------------------------------------
  334.   # ● Dispose Cursor
  335.   #--------------------------------------------------------------------------        
  336.   def dispose_battle_cursor
  337.       return if @battle_cursor == nil
  338.       @battle_cursor.dispose ; @battle_cursor = nil
  339.   end  
  340.   
  341.   #--------------------------------------------------------------------------
  342.   # ● Update Battle Cursor
  343.   #--------------------------------------------------------------------------         
  344.   def update_battle_cursor
  345.       return if @battle_cursor == nil
  346.       @battle_cursor.update_sprite_cursor
  347.   end
  348.   
  349. end

  350. #==============================================================================
  351. # ■ Battle Cursor Index
  352. #==============================================================================
  353. module Battle_Cursor_index
  354.   
  355.   include MOG_BATTLE_CURSOR
  356.   
  357.   #--------------------------------------------------------------------------
  358.   # ● Check Index Limit
  359.   #--------------------------------------------------------------------------      
  360.   def check_index_limit
  361.       self.index = 0 if self.index >= item_max
  362.       self.index = (item_max - 1) if self.index < 0
  363.   end      
  364.   
  365.   #--------------------------------------------------------------------------
  366.   # ● Set Cursor Position Enemy
  367.   #--------------------------------------------------------------------------   
  368.   def set_cursor_position_enemy
  369.       return if !self.active
  370.       self.index = 0 if $game_troop.alive_members[self.index].nil?
  371.       @fcursor = nil ; $game_temp.battle_cursor_need_refresh[1] = false
  372.       $game_temp.battle_cursor[0] = $game_troop.alive_members[self.index].screen_x + CURSOR_POSITION[0] rescue nil
  373.       $game_temp.battle_cursor[1] = $game_troop.alive_members[self.index].screen_y + CURSOR_POSITION[1] rescue nil
  374.       $game_temp.battle_cursor[3] = $game_troop.alive_members[self.index].name rescue nil
  375.       $game_temp.battle_cursor_data = $game_troop.alive_members[self.index]
  376.       return if $game_temp.battle_cursor_data == nil
  377.       enable_target_sprites($game_temp.battle_cursor_data.index)
  378.   end

  379.   #--------------------------------------------------------------------------
  380.   # ● Enable Target Sprites
  381.   #--------------------------------------------------------------------------   
  382.   def enable_target_sprites(target_index)  
  383.       return if $game_temp.target_skill.empty?
  384.       if $imported[:mog_atb_system] and !BattleManager.subject.nil?
  385.          $game_temp.battle_cursor_scope_refresh = true
  386.       end   
  387.       $game_temp.clear_target_temp ; battler = $game_temp.target_skill[1]
  388.       type = $game_temp.target_skill[0].is_a?(RPG::Skill) ? 0 : 1
  389.       target_index = $game_temp.battle_cursor_data.index
  390.       battler.make_action_temp($game_temp.target_skill[0].id, target_index,type)      
  391.       targets = battler.action_temp.make_targets.compact
  392.       targets.each {|t| t.target_temp = true }
  393.   end  
  394.    
  395.   #--------------------------------------------------------------------------
  396.   # ● Refresh Scope Targets
  397.   #--------------------------------------------------------------------------   
  398.   def refresh_scope_targets
  399.       targets = battler.action_temp.make_targets.compact
  400.       targets.each {|t| t.target_temp = true }
  401.   end
  402.   
  403.   #--------------------------------------------------------------------------
  404.   # ● Set Cursor Position Actor
  405.   #--------------------------------------------------------------------------   
  406.   def set_cursor_position_actor
  407.       return if !self.active
  408.       self.index = 0 if $game_party.members[self.index].nil?
  409.       @fcursor = nil ; $game_temp.battle_cursor_need_refresh[0] = false
  410.       $game_temp.battle_cursor[0] = $game_party.members[self.index].screen_x + CURSOR_POSITION[0] rescue nil
  411.       $game_temp.battle_cursor[1] = $game_party.members[self.index].screen_y + CURSOR_POSITION[1] rescue nil
  412.       $game_temp.battle_cursor[3] = $game_party.members[self.index].name rescue nil
  413.       $game_temp.battle_cursor_data = $game_party.members[self.index]
  414.       $game_temp.battle_cursor = [0,0,false,0] if $game_temp.battle_cursor[0] == nil
  415.       enable_target_sprites(self.index)
  416.   end  
  417.       
  418.   #--------------------------------------------------------------------------
  419.   # ● Process Cursor Move Index
  420.   #--------------------------------------------------------------------------  
  421.   def cursor_move_index(value = 0)
  422.       self.index += value ;  check_index_limit
  423.   end

  424. end

  425. #==============================================================================
  426. # ■ Window_BattleActor
  427. #==============================================================================
  428. class Window_BattleActor < Window_BattleStatus
  429.   include Battle_Cursor_index
  430.   
  431.   #--------------------------------------------------------------------------
  432.   # ● Update
  433.   #--------------------------------------------------------------------------  
  434.   alias mog_battle_cursor_actor_update update
  435.   def update
  436.       pre_index = self.index
  437.       mog_battle_cursor_actor_update
  438.       $game_temp.battle_cursor_target[0] = $game_party.members[self.index]
  439.       $game_temp.battle_cursor_target[0] = nil if !self.active      
  440.       set_cursor_position_actor if refresh_cursor_position?(pre_index)
  441.       $game_temp.target_window_active[0] = self.active
  442.   end
  443.   
  444.   #--------------------------------------------------------------------------
  445.   # ● Refresh Cursor Position
  446.   #--------------------------------------------------------------------------  
  447.   def refresh_cursor_position?(pre_index)
  448.       return true if pre_index != self.index
  449.       return true if @fcursor
  450.       return true if $game_temp.battle_cursor_need_refresh[0]
  451.       return false
  452.   end

  453.   #--------------------------------------------------------------------------
  454.   # ● Show
  455.   #--------------------------------------------------------------------------
  456.   alias mog_battle_cursor_show show
  457.   def show
  458.       if @info_viewport
  459.          set_cursor_position_actor ; $game_temp.battle_cursor[2] = true
  460.          @fcursor = true
  461.       end
  462.       mog_battle_cursor_show
  463.   end

  464.   #--------------------------------------------------------------------------
  465.   # ● Hide
  466.   #--------------------------------------------------------------------------
  467.   alias mog_battle_cursor_hide hide
  468.   def hide
  469.       $game_temp.battle_cursor[2] = false if @info_viewport
  470.       if $game_temp.target_window_active[1] == false
  471.          ($game_temp.clear_target_temp ; $game_temp.target_skill.clear) unless self.active
  472.       end
  473.       mog_battle_cursor_hide
  474.   end  
  475.   
  476.   #--------------------------------------------------------------------------
  477.   # ● Process Cursor Move
  478.   #--------------------------------------------------------------------------
  479.   def process_cursor_move
  480.       return unless cursor_movable?
  481.       last_index = @index
  482.       cursor_move_index(1) if Input.repeat?(:DOWN)
  483.       cursor_move_index(-1) if Input.repeat?(:UP)
  484.       cursor_move_index(1) if Input.repeat?(:RIGHT)
  485.       cursor_move_index(-1) if Input.repeat?(:LEFT)
  486.       $game_temp.battle_cursor_data = $game_party.members[self.index]
  487.       Sound.play_cursor if @index != last_index
  488.   end
  489.   
  490. end

  491. #==============================================================================
  492. # ■ Game Enemy
  493. #==============================================================================
  494. class Game_Enemy < Game_Battler
  495.   attr_accessor :index
  496. end

  497. #==============================================================================
  498. # ■ Game Troop
  499. #==============================================================================
  500. class Game_Troop < Game_Unit
  501.    
  502.   #--------------------------------------------------------------------------
  503.   # * Setup
  504.   #--------------------------------------------------------------------------
  505.   alias mog_battle_cursor_setup setup
  506.   def setup(troop_id)
  507.       mog_battle_cursor_setup(troop_id)
  508.       if can_sort_index?
  509.          @enemies.sort! {|a,b| a.screen_x <=> b.screen_x}
  510.          @enemies.each_with_index {|e, i| e.index = i }
  511.       end
  512.   end
  513.   
  514.   #--------------------------------------------------------------------------
  515.   # * Can Sort Index?
  516.   #--------------------------------------------------------------------------
  517.   def can_sort_index?
  518.       return false if @enemies.size < 3
  519.       return false if troop.pages.size > 1
  520.       return false if !troop.pages[0].list[0].parameters.empty? rescue false
  521.       return true
  522.   end
  523.   
  524. end

  525. #==============================================================================
  526. # ■ Window_BattleEnemy
  527. #==============================================================================
  528. class Window_BattleEnemy < Window_Selectable
  529.   include Battle_Cursor_index
  530.   
  531.   #--------------------------------------------------------------------------
  532.   # ● Update
  533.   #--------------------------------------------------------------------------  
  534.   alias mog_battle_cursor_enemy_update update
  535.   def update
  536.       pre_index = self.index
  537.       mog_battle_cursor_enemy_update
  538.       $game_temp.battle_cursor_target[1] = $game_troop.alive_members[self.index]
  539.       $game_temp.battle_cursor_target[1] = nil if !self.active
  540.       set_cursor_position_enemy if refresh_cursor_position?(pre_index)
  541.       $game_temp.target_window_active[1] = self.active
  542.   end
  543.   
  544.   #--------------------------------------------------------------------------
  545.   # ● Refresh Cursor Position
  546.   #--------------------------------------------------------------------------  
  547.   def refresh_cursor_position?(pre_index)
  548.       return true if pre_index != self.index
  549.       return true if @fcursor
  550.       return true if $game_temp.battle_cursor_need_refresh[1]
  551.       return false
  552.   end   
  553.       
  554.   #--------------------------------------------------------------------------
  555.   # ● Show
  556.   #--------------------------------------------------------------------------
  557.   alias mog_battle_cursor_show show
  558.   def show
  559.       if @info_viewport
  560.          set_cursor_position_enemy ; $game_temp.battle_cursor[2] = true
  561.          @fcursor = true
  562.       end
  563.       mog_battle_cursor_show
  564.   end
  565.   
  566.   #--------------------------------------------------------------------------
  567.   # ● Hide
  568.   #--------------------------------------------------------------------------
  569.   alias mog_battle_cursor_hide hide
  570.   def hide
  571.       $game_temp.battle_cursor[2] = false if @info_viewport
  572.       if $game_temp.target_window_active[0] == false
  573.       ($game_temp.clear_target_temp ; $game_temp.target_skill.clear) unless self.active
  574.       end
  575.       mog_battle_cursor_hide
  576.   end  
  577.    
  578.   #--------------------------------------------------------------------------
  579.   # ● Process Cursor Move
  580.   #--------------------------------------------------------------------------
  581.   def process_cursor_move
  582.       return unless cursor_movable?
  583.       last_index = @index
  584.       cursor_move_index(1) if Input.repeat?(:DOWN)
  585.       cursor_move_index(-1) if Input.repeat?(:UP)
  586.       cursor_move_index(1) if Input.repeat?(:RIGHT)
  587.       cursor_move_index(-1) if Input.repeat?(:LEFT)
  588.       $game_temp.battle_cursor_data = $game_troop.alive_members[@index]
  589.       Sound.play_cursor if @index != last_index
  590.   end
  591.       
  592. end

  593. #==============================================================================
  594. # ■ Window Selectable
  595. #==============================================================================
  596. class Window_Selectable < Window_Base  

  597.   #--------------------------------------------------------------------------
  598.   # * Process OK
  599.   #-------------------------------------------------------------------------
  600.   alias mog_target_cursor_process_ok process_ok
  601.   def process_ok
  602.       mog_target_cursor_process_ok
  603.       execute_target_selection if can_execute_target_selection?
  604.   end
  605.   
  606.   #--------------------------------------------------------------------------
  607.   # * Can Execute Target Selection
  608.   #-------------------------------------------------------------------------
  609.   def can_execute_target_selection?
  610.       return false if !SceneManager.scene_is?(Scene_Battle)
  611.       return false if !current_item_enabled?
  612.       return true if self.is_a?(Window_BattleSkill)
  613.       return true if self.is_a?(Window_BattleItem)
  614.       return true if self.is_a?(Window_ActorCommand) and self.index == 0
  615.       return false
  616.   end

  617.   #--------------------------------------------------------------------------
  618.   # * Execute Target Selection
  619.   #-------------------------------------------------------------------------
  620.   def execute_target_selection      
  621.       return if BattleManager.actor == nil
  622.       $game_temp.target_skill.clear
  623.       item = @data[index] rescue nil      
  624.       item = $data_skills[BattleManager.actor.attack_skill_id] rescue nil if self.is_a?(Window_ActorCommand)
  625.       return if item == nil
  626.       if [2,8,10].include?(item.scope) or item.note =~ /<Scope Range = (\d+) - (\d+) - (\d+) - (\d+)>/   
  627.          $game_temp.target_skill = [item,BattleManager.actor]
  628.       end   
  629.   end  

  630. end

  631. #==============================================================================
  632. # ■ Game Battler
  633. #==============================================================================
  634. class Game_Battler < Game_BattlerBase
  635.   
  636.   attr_accessor :target_temp
  637.   attr_accessor :action_temp
  638.   
  639.   #--------------------------------------------------------------------------
  640.   # * Initialize
  641.   #--------------------------------------------------------------------------
  642.   alias mog_target_cursor_initialize initialize
  643.   def initialize
  644.       @target_cursor_temp = false
  645.       mog_target_cursor_initialize
  646.   end
  647.   
  648.   #--------------------------------------------------------------------------
  649.   # ● Make Action Temp
  650.   #--------------------------------------------------------------------------
  651.   def make_action_temp(action_id,target_index,type)
  652.       return if action_id == nil
  653.       action = Game_Action.new(self, true)
  654.       action.set_skill(action_id) if type == 0
  655.       action.set_item(action_id) if type == 1
  656.       action.target_index = target_index
  657.       @action_temp = action
  658.   end     
  659.   
  660.   #--------------------------------------------------------------------------
  661.   # ● Make Action Temp
  662.   #--------------------------------------------------------------------------
  663.   alias mog_battle_cursor_item_apply item_apply
  664.   def item_apply(user, item)
  665.       mog_battle_cursor_item_apply(user, item)
  666.       if self == $game_temp.battle_cursor_target[1]
  667.          $game_temp.battle_cursor_need_refresh[0] = true
  668.          $game_temp.battle_cursor_need_refresh[1] = true
  669.       end
  670.   end  
  671.   
  672. end

  673. #==============================================================================
  674. # ■ Game BattlerBase
  675. #==============================================================================
  676. class Game_BattlerBase
  677.    attr_accessor :hidden
  678. end

  679. #==============================================================================
  680. # ■ Sprite Battler
  681. #==============================================================================
  682. class Sprite_Battler < Sprite_Base
  683.   include MOG_BATTLE_CURSOR
  684.   #--------------------------------------------------------------------------
  685.   # * Initialize
  686.   #--------------------------------------------------------------------------
  687.   alias mog_target_cursor_initialize initialize
  688.   def initialize(viewport, battler = nil)
  689.       mog_target_cursor_initialize(viewport, battler)
  690.       create_target_cursor
  691.   end
  692.   
  693.   #--------------------------------------------------------------------------
  694.   # * Create Target Cursor
  695.   #--------------------------------------------------------------------------
  696.   def create_target_cursor
  697.       @target_cursor = Sprite.new
  698.       @target_cursor.bitmap = Cache.system("Battle_Cursor2")
  699.       @target_cursor.ox = @target_cursor.bitmap.width / 2
  700.       @target_cursor.oy = @target_cursor.bitmap.height / 2
  701.       @target_cursor_org = [@target_cursor.ox,@target_cursor.oy]
  702.       @target_cursor.visible = false
  703.       @target_visible_old = @target_cursor.visible
  704.       @tc_pos = [TARGET_CURSOR_2_POS[0],TARGET_CURSOR_2_POS[1] + @target_cursor.oy]
  705.       @face_battler = SceneManager.face_battler? if $imported[:mog_battle_hud_ex]
  706.       @target_cursor_ch = [@target_cursor.bitmap.height, Graphics.height - @target_cursor.bitmap.height]
  707.   end
  708.   
  709.   #--------------------------------------------------------------------------
  710.   # * Dispose
  711.   #--------------------------------------------------------------------------
  712.   alias mog_target_cursor_dispose dispose
  713.   def dispose
  714.       dispose_target_cursor
  715.       mog_target_cursor_dispose
  716.   end
  717.   
  718.   #--------------------------------------------------------------------------
  719.   # * Dispose Target Cursor
  720.   #--------------------------------------------------------------------------
  721.   def dispose_target_cursor
  722.       return if @target_cursor == nil
  723.       @target_cursor.bitmap.dispose ; @target_cursor.dispose
  724.   end
  725.   
  726.   #--------------------------------------------------------------------------
  727.   # * Update Postion
  728.   #--------------------------------------------------------------------------
  729.   alias mog_target_cursor_update_position update_position
  730.   def update_position
  731.       mog_target_cursor_update_position
  732.       update_battler_cursor_xy
  733.       update_target_cursor
  734.   end
  735.   
  736.   #--------------------------------------------------------------------------
  737.   # * Update Battler Cursor
  738.   #--------------------------------------------------------------------------
  739.   def update_battler_cursor_xy
  740.       return if @battler == nil
  741.       return if $game_temp.battle_cursor_target[0] != nil and @battler != $game_temp.battle_cursor_target[0]
  742.       return if $game_temp.battle_cursor_target[1] != nil and @battler != $game_temp.battle_cursor_target[1]
  743.       $game_temp.target_data = [@battler,self]
  744.   end  
  745.   
  746.   #--------------------------------------------------------------------------
  747.   # * Update Target Cursor
  748.   #--------------------------------------------------------------------------
  749.   def update_target_cursor
  750.       return if @target_cursor == nil
  751.       refresh_zoom if @target_visible_old != @target_cursor.visible
  752.       @target_cursor.visible = can_target_cursor_visible?
  753.       return if !@target_cursor.visible
  754.       @target_cursor.x = self.x + @tc_pos[0]
  755.       @target_cursor.y = self.y + @tc_pos[1]
  756.       @target_cursor.y -= (self.bitmap.height / 2) if self.bitmap
  757.       if @battler.is_a?(Game_Actor) and @face_battler
  758.          @target_cursor.y -= @target_cursor_ch[0] if @target_cursor.y > @target_cursor_ch[1]
  759.       end           
  760.       @target_cursor.z = CURSOR_Z + 1
  761.       @target_cursor.opacity = 130 + rand(125)
  762.       @target_cursor.zoom_x -= 0.05 if @target_cursor.zoom_x > 1.00
  763.       @target_cursor.zoom_x = 1.00 if @target_cursor.zoom_x < 1.00
  764.       @target_cursor.zoom_y = @target_cursor.zoom_x      
  765.       update_battle_camera_cursor_t if update_battle_camera_cursor_t?
  766.   end
  767.   
  768.   #--------------------------------------------------------------------------
  769.   # * Update Battle Camera Cursor T
  770.   #--------------------------------------------------------------------------
  771.   def update_battle_camera_cursor_t?
  772.       return false if $imported[:mog_battle_camera] == nil
  773.       return false if @battler == nil
  774.       if $imported[:mog_battle_hud_ex] and SceneManager.face_battler?
  775.          return false if @battler.is_a?(Game_Actor)
  776.       end  
  777.       return true
  778.   end
  779.      
  780.   #--------------------------------------------------------------------------
  781.   # ● Update Battle Camera Cursor
  782.   #--------------------------------------------------------------------------              
  783.   def update_battle_camera_cursor_t
  784.       @target_cursor.ox = $game_temp.viewport_oxy[0] + @target_cursor_org[0]
  785.       @target_cursor.oy = $game_temp.viewport_oxy[1] + @target_cursor_org[1]
  786.   end  
  787.   
  788.   #--------------------------------------------------------------------------
  789.   # * Refresh Zoom
  790.   #--------------------------------------------------------------------------
  791.   def refresh_zoom
  792.       @target_visible_old = @target_cursor.visible
  793.       @target_cursor.zoom_x = 1.50 if TARGET_CURSOR_2_ZOOM_EFFECT
  794.       @target_cursor.zoom_y = @target_cursor.zoom_x
  795.   end
  796.   
  797.   #--------------------------------------------------------------------------
  798.   # * Can Target Cursor Visible?
  799.   #--------------------------------------------------------------------------
  800.   def can_target_cursor_visible?
  801.       return false if !$game_temp.battle_cursor[2]
  802.       return false if @battler.dead?
  803.       return false if @battler.hidden
  804.       return false if [email protected]_temp
  805.       return false if $game_message.visible
  806.       return false if $game_temp.battle_end
  807.       return false if $imported[:mog_sprite_actor] and [email protected]_sprite_visiblle
  808.       return false if $imported[:mog_active_chain] and $game_temp.chain_action_phase
  809.       return false if $imported[:mog_atb_system] and BattleManager.actor == nil
  810.       return false if $imported[:mog_blitz_commands] and $game_temp.blitz_commands_phase
  811.       return true
  812.   end
  813.   
  814. end

  815. #==============================================================================
  816. # ■ Scene Battle
  817. #==============================================================================
  818. class Scene_Battle < Scene_Base
  819.   
  820.   #--------------------------------------------------------------------------
  821.   # * On Skill OK
  822.   #--------------------------------------------------------------------------
  823.   def on_skill_ok
  824.       if $imported[:mog_atb_system]
  825.          return if BattleManager.actor == nil
  826.          @skill_window.visible = false unless !@status_window.visible
  827.       end
  828.       @skill = @skill_window.item
  829.       BattleManager.actor.input.set_skill(@skill.id)
  830.       BattleManager.actor.last_skill.object = @skill
  831.      if [0,11].include?(@skill.scope)
  832.         @skill_window.hide
  833.         if $imported[:mog_atb_system]
  834.            next_command
  835.            BattleManager.command_end
  836.            hide_base_window
  837.         end               
  838.       elsif @skill.for_opponent?
  839.           select_enemy_selection
  840.       else
  841.           select_actor_selection
  842.       end
  843.   end
  844.   
  845.   #--------------------------------------------------------------------------
  846.   # * On Item OK
  847.   #--------------------------------------------------------------------------
  848.   def on_item_ok
  849.       if $imported[:mog_atb_system]
  850.          return if BattleManager.actor == nil
  851.          @item_window.visible = false unless !@status_window.visible
  852.       end   
  853.       @item = @item_window.item
  854.       BattleManager.actor.input.set_item(@item.id)
  855.       if [0,11].include?(@item.scope)
  856.          @item_window.hide
  857.          next_command
  858.          if $imported[:mog_atb_system]
  859.             next_command
  860.             BattleManager.command_end
  861.             hide_base_window
  862.          end         
  863.       elsif @item.for_opponent?
  864.           select_enemy_selection
  865.       else
  866.           select_actor_selection
  867.       end
  868.       $game_party.last_item.object = @item
  869.   end  
  870.    
  871.   #--------------------------------------------------------------------------
  872.   # * Turn End
  873.   #--------------------------------------------------------------------------
  874.   alias mog_battle_cursor_turn_end turn_end
  875.   def turn_end
  876.       mog_battle_cursor_turn_end
  877.       if $game_temp.battle_cursor_scope_refresh
  878.          $game_temp.battle_cursor_scope_refresh = false
  879.          $game_temp.battle_cursor_need_refresh[0] = true
  880.          $game_temp.battle_cursor_need_refresh[1] = true
  881.       end        
  882.   end  
  883.   
  884. end  
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 13:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表