Project1

标题: cp条战斗出错。求助 [打印本页]

作者: qq1046617273    时间: 2012-10-6 08:04
标题: cp条战斗出错。求助
倒霉倒霉。
——————————
我用的cp制


cp制脚本
  1. #VX CP制战斗系统 V 1.00 BY SLICK
  2. $CP可见 = true
  3. #==============================================================================
  4. # ■ Game_Battler
  5. #------------------------------------------------------------------------------
  6. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  7. # 超级类来使用。
  8. #==============================================================================

  9. class Game_Battler
  10.   attr_accessor :cp
  11.   attr_accessor :turn_count
  12.   attr_accessor :my_turn    #轮到这个家伙行动了吗?
  13.   alias neoinitialize initialize
  14.   def initialize
  15.     @cp = 0
  16.     @turn_count = 0
  17.     @my_turn = false
  18.     neoinitialize
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 可以输入命令判定
  22.   #--------------------------------------------------------------------------
  23.   def inputable?
  24.     if @my_turn
  25.       return (not @hidden and restriction <= 1)
  26.     else
  27.       return false
  28.     end
  29.   end
  30. end

  31. #==============================================================================
  32. # ■ Game_Troop
  33. #------------------------------------------------------------------------------
  34. #  处理敌人队伍和战斗相关资料的类,也可执行如战斗事件管理之类的功能。
  35. # 本类的实例请参考 $game_troop。
  36. #==============================================================================

  37. class Game_Troop < Game_Unit
  38.   #--------------------------------------------------------------------------
  39.   # ● 增加回合数
  40.   #--------------------------------------------------------------------------
  41.   def increase_turn(enemy)
  42.     for page in troop.pages
  43.       if page.span == 1
  44.         @event_flags= false
  45.       end
  46.     end
  47.     enemy.turn_count += 1
  48.     aaa = []
  49.     for iii in $game_troop.members
  50.       aaa.push(iii.turn_count)
  51.     end
  52.     @turn_count = aaa.min
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 生成战斗行动
  56.   #--------------------------------------------------------------------------
  57.   def make_actions(enemy)
  58.     enemy.make_action
  59.   end
  60. end
  61. #==============================================================================
  62. # ■ Window_Blank
  63. #------------------------------------------------------------------------------
  64. #  用来放置CP的空白窗口。
  65. #==============================================================================

  66. class Window_Blank < Window_Base
  67.   #--------------------------------------------------------------------------
  68.   # ● 初始化对像
  69.   #--------------------------------------------------------------------------
  70.   def initialize
  71.     super(0, 0, 544, 24)
  72.     self.visible = $CP可见
  73.     self.z = 490   
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 生成窗口内容
  77.   #--------------------------------------------------------------------------
  78.   def create_contents
  79.    
  80.   end
  81. end

  82. #==============================================================================
  83. # ■ Scene_Battle
  84. #------------------------------------------------------------------------------
  85. #  处理战斗画面的类。
  86. #==============================================================================

  87. class Scene_Battle < Scene_Base

  88.   #--------------------------------------------------------------------------
  89.   # ● CP条生成
  90.   #--------------------------------------------------------------------------
  91.   def make_cp
  92.     @blank_window = Window_Blank.new
  93.     @cppic = {}
  94.     @baseicons = Cache.system("Iconset")
  95.     for iii in $game_party.members + $game_troop.members
  96.       @cppic[iii] = Sprite.new
  97.       @cppic[iii].bitmap = @baseicons
  98.       @cppic[iii].x = 4
  99.       @cppic[iii].y = 264
  100.       @cppic[iii].z = 510
  101.       @cppic[iii].zoom_x = 1.0
  102.       @cppic[iii].zoom_y = 1.0
  103.       @cppic[iii].opacity = 255
  104.       @cppic[iii].visible = $CP可见
  105.     end
  106.     refresh_cp
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # * 作战进程开始
  110.   #--------------------------------------------------------------------------
  111.   alias old_process_battle_start process_battle_start
  112.   def process_battle_start
  113.       old_process_battle_start
  114.     unless $game_party.all_dead?
  115.       make_cp
  116.     end
  117.   end
  118.     #--------------------------------------------------------------------------
  119.   # ● CP条更新
  120.   #--------------------------------------------------------------------------
  121.   def refresh_cp
  122.     @blank_window.x = 0   
  123. #    @basepic.x = 144 - @info_viewport.ox   
  124.     for iii in $game_party.members + $game_troop.members
  125.       if iii.is_a?(Game_Actor)
  126.         icon_index = $data_weapons[iii.weapon_id].icon_index
  127.         @cppic[iii].src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  128.       else
  129.         @cppic[iii].src_rect.set(312, 0, 24, 24)
  130.       end
  131.       if iii.hp > 0
  132.         @cppic[iii].visible = $CP可见
  133.       else
  134.         @cppic[iii].visible = false
  135.       end
  136.       @cppic[iii].x =  (iii.cp * 514 / 5000).to_i
  137.       @cppic[iii].y = 0
  138.     end
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● CP条消去
  142.   #--------------------------------------------------------------------------
  143.   def dispose_cp
  144.     for iii in $game_party.members + $game_troop.members
  145.       @cppic[iii].dispose
  146.     end
  147.     @baseicons.dispose
  148.     @blank_window.dispose
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 开始处理
  152.   #--------------------------------------------------------------------------
  153.   def start
  154.     super
  155.     $game_temp.in_battle = true
  156.     @spriteset = Spriteset_Battle.new
  157.     @message_window = Window_BattleMessage.new
  158.     @action_battlers = []

  159.     # 清空CP,所有人从零开始
  160.     for iii in $game_party.members + $game_troop.members
  161.       iii.cp = 0
  162.     end
  163.     for iii in $game_party.members + $game_troop.members
  164.       iii.turn_count = 0
  165.     end
  166.     # 谁的CP到顶了,谁才能动
  167.     @enable_go = nil
  168.     create_info_viewport
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 更新画面
  172.   #--------------------------------------------------------------------------
  173.   def update
  174.     super
  175.     update_basic(true)
  176.    
  177.    if @help_window != nil
  178.    if @help_window.visible
  179.      @blank_window.visible = false
  180.      
  181.    end
  182. else
  183.      @blank_window.visible = true

  184.    end
  185.     update_info_viewport                  # 更新资讯显示端口
  186.     if $CP可见
  187.       unless $game_party.all_dead?
  188.           refresh_cp
  189.       end
  190.     end
  191.     if $game_message.visible
  192.       @info_viewport.visible = false
  193.       @message_window.visible = true
  194.     end
  195.     unless $game_message.visible          # 除非讯息显示中
  196.       if judge_win_loss
  197.         @cp_hide = true
  198.         unless $game_party.all_dead?
  199.           refresh_cp
  200.         end
  201.       end
  202.       return if judge_win_loss            # 判断胜负结果
  203.       update_scene_change
  204.       if @target_enemy_window != nil
  205.         update_target_enemy_selection     # 选择目标敌人
  206.       elsif @target_actor_window != nil
  207.         update_target_actor_selection     # 选择目标角色
  208.       elsif @skill_window != nil
  209.         update_skill_selection            # 选择技能
  210.       elsif @item_window != nil
  211.         update_item_selection             # 选择物品
  212.       elsif @party_command_window.active
  213.         update_party_command_selection    # 选择队伍命令
  214.       elsif @actor_command_window.active
  215.         update_actor_command_selection    # 选择角色命令
  216.       else
  217. # 等待:每个人的CP向前添加 =====================================================
  218.         fullflag = false
  219.         for iii in $game_troop.members + $game_party.members
  220.           iii.cp += iii.agi * 1         
  221.           if iii.cp >= 5000
  222.             iii.cp -= 5000
  223.             @enable_go = iii
  224.             iii.my_turn = true
  225.             fullflag = true
  226.             break
  227.           end         
  228.         end
  229. # ==============================================================================
  230.         unless fullflag
  231.           return
  232.         end

  233.         process_battle_event              # 战斗事件处理
  234.         process_action                    # 战斗行动        
  235.         process_battle_event              # 战斗事件处理
  236.         if @enable_go.is_a?(Game_Actor)
  237.           @status_window.refresh
  238.           start_party_command_selection
  239.         else
  240.           $game_troop.make_actions(@enable_go)
  241.           start_main
  242.         end
  243.         @enable_go = nil
  244.       end
  245.     end
  246.   end

  247.    #--------------------------------------------------------------------------
  248.   # * 开始接收队伍选单项目选择指令输入资讯
  249.   #--------------------------------------------------------------------------
  250.   def start_party_command_selection
  251.     if $game_temp.in_battle
  252.       @status_window.refresh
  253.       @status_window.index = @actor_index = -1
  254.       @active_battler = nil
  255.       @info_viewport.visible = true
  256.       @message_window.visible = false
  257.       @party_command_window.refresh
  258.       @party_command_window.active = true
  259.       @party_command_window.index = 0
  260.       @actor_command_window.active = false
  261.       $game_party.clear_actions
  262.       if $game_troop.surprise or not $game_party.inputable?
  263.         start_main
  264.       end
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 开始执行战斗处理
  269.   #--------------------------------------------------------------------------
  270.   def start_main
  271.    
  272.     for member in $game_troop.members
  273.       $game_troop.increase_turn(member)
  274.     end
  275.     @info_viewport.visible = false
  276.     @info_viewport.ox = 0
  277.     @message_window.visible = true
  278.     @party_command_window.active = false
  279.     @actor_command_window.active = false
  280.     @status_window.index = @actor_index = -1
  281.     @active_battler = nil
  282.     @message_window.clear
  283.     for member in $game_troop.members
  284.       $game_troop.make_actions(member)
  285.     end
  286.    
  287.     make_action_orders
  288.     wait(20)
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # * 关于撤退的处理
  292.   #--------------------------------------------------------------------------
  293.   def process_escape
  294.     @info_viewport.visible = false
  295.     @message_window.visible = true
  296.     text = sprintf(Vocab::EscapeStart, $game_party.name)
  297.     $game_message.texts.push(text)
  298.     if $game_troop.preemptive
  299.       success = true
  300.     else
  301.       success = (rand(100) < @escape_ratio)
  302.     end
  303.     Sound.play_escape
  304.     if success
  305.       wait_for_message
  306.       if @blank_window != nil
  307.         dispose_cp
  308.       end
  309.       battle_end(1)
  310.     else
  311.       @escape_ratio += 10
  312.       $game_message.texts.push('\.' + Vocab::EscapeFailure)
  313.       wait_for_message
  314.       $game_party.clear_actions
  315.       start_main
  316.     end
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # * 关于作战胜利的处理
  320.   #--------------------------------------------------------------------------
  321.   alias old_process_victory process_victory
  322.   def process_victory
  323.     if @blank_window != nil
  324.       dispose_cp
  325.     end
  326.     old_process_victory
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # * 关于作战失败的处理
  330.   #--------------------------------------------------------------------------
  331.   alias old_process_defeat process_defeat
  332.   def process_defeat
  333.     if @blank_window != nil
  334.       dispose_cp
  335.     end
  336.     old_process_defeat
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 生成行动顺序
  340.   #--------------------------------------------------------------------------
  341.   def make_action_orders
  342.     @action_battlers = []
  343.     for iii in $game_troop.members + $game_party.members
  344.       if iii.my_turn
  345.         @action_battlers.push(iii)
  346.         iii.my_turn = false
  347.       end
  348.     end
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 回合结束
  352.   #--------------------------------------------------------------------------
  353.   def turn_end
  354.     $game_troop.turn_ending = true
  355.     $game_party.slip_damage_effect
  356.     $game_troop.slip_damage_effect
  357.     $game_party.do_auto_recovery
  358.     $game_troop.preemptive = false
  359.     $game_troop.surprise = false
  360.     process_battle_event
  361.     $game_troop.turn_ending = false
  362.   end  
  363. end

  364. #==============================================================================
  365. # ■ Window_Help
  366. #------------------------------------------------------------------------------
  367. #  特技及物品的说明、角色的状态显示的窗口。
  368. #==============================================================================

  369. class Window_Help < Window_Base
  370.   #--------------------------------------------------------------------------
  371.   # ● 初始化对象
  372.   #--------------------------------------------------------------------------
  373.   def initialize
  374.     super(0, 0, 544, WLH + 32)
  375.     self.z = 9999
  376.   end
  377. end

复制代码
dsu_plus_rewardpost_czw
作者: fxwd    时间: 2012-10-6 16:17
兄弟。。。你的脚本放错位置了,应该把这个脚本放到main的上面。。。
作者: Luciffer    时间: 2012-10-7 20:49
SIDEVIIEW嫌疑最大,交换一下脚本放置位置再试试




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