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

Project1

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

[已经过期] 关于改了分辨率之后的一些问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2012-11-7
帖子
44
跳转到指定楼层
1
发表于 2013-4-25 18:23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位大神请看这张图片- -
第一个问题- -,那个战斗选项框。。。我试了好久。。。木有能成功改到底下。。。
第二个问题。。:1024*768分辨率的背景图,和游戏是一个分辨率的,可是最后边有一小条黑边。。。不知怎么解决。
以下是自己修改了一些数据的战斗系统代码。。。求分析。。
  1. #=============================================================================
  2. #★Zhong RMVX 半即时战斗系统 1.02a版★
  3. #-----------------------------------------------------------------------------
  4. #★Scene_CP核心部分参考自 : 神思  《战斗真位移》战斗系统
  5. #★作者: Zhong_zw
  6. #★联系方式: 66rpg.com论坛短信 或 [email protected]
  7. #★游戏中如若引用本脚本,请保留以上信息,并作相关说明.
  8. #☆如若转载本脚本请联系本人☆
  9. #=============================================================================
  10. #=============================================================================
  11. #☆1.01版修正问题:
  12. #1、物品、特技窗口选择我方人物时,头像重叠
  13. #2、连续伤害及自动回复效果无效。
  14. #☆1.02版修正问题:
  15. #1、减少刷新次数,提高速度
  16. #2、修正被打击时有可能退到cp槽外
  17. #☆1.02a版修正问题:
  18. #1、复活问题.
  19. #2、头像刷新问题.
  20. #☆使用方法说明☆
  21. #☆使用方法基本与我之前发的朴素横版战斗相同
  22. #☆动画设置:
  23. #1、武器、特技、物品的施展动画直接在其备注填入动画id即可。如果为空即不显示施展动画。
  24. #2、敌人普通攻击动画,在其备注里填写格式如下:
  25. #  a1=XX #施展动画id
  26. #  a2=XX #对方动画id
  27. #如果为空即使用默认普通动画(画面震动).
  28. #☆战斗图设置:
  29. #3、角色战斗图的的命名方式是角色id后面加上_z,如1_z.存放在Battlers文件夹。
  30. #4、默认待机图为两帧,只要在Battlers文件夹里放一个“战斗图名+待“的文件,就会自动循环播放
  31. #这两个战斗图,如1_b待,没有则没待机动作。
  32. #☆战斗背景设置:
  33. #5、在Graphics目录下新建Battlebacks文件夹。
  34. #6、战斗时先搜索文件夹内是否有与角色所在区域同名的战斗图,如果没有则搜索文件夹里是否
  35. #存在与地图同名的图片。
  36. #7、简而言之,你须储存与你地图同名的战斗背景在Battlebacks,如果想在同一幅地图实现不同地域
  37. #战斗背景不同,就在Battlebacks文件夹里储存与这个地域同名的战斗背景.至少保证战斗的地图
  38. #都有一幅该地图同名的战斗背景,不然战斗时会提示找不到地图.(可参考《拉尔夫战记》或朴素横版的范例)
  39. #☆CP条设置:
  40. #8、CP条:在system文件夹里储存一个命名为"cp条"的图片,默认长度为327,如果需要可在Scene_CP类里调整相
  41. #关参数.
  42. #9、角色cp图命名方式是"角色id+_cp",如:1_cp,角色活跃cp图命名方式是"角色id+_a_cp",如1_a_cp,
  43. #敌人cp图命名方式是"敌人名 + _敌人cp",如史莱姆_敌人cp,敌人活跃cp图是"敌人名+_a_cp".
  44. #亦可在system文件夹里储存名为"敌人cp"的图片,作为敌人的统一cp图,活跃图名为"a_敌人cp",默认如果找不到敌人相关cp图就直接
  45. #用这张图片.
  46. #☆选择光标设置
  47. #10、在system文件夹里储存名为"光标"的图片作为选择光标.
  48. #=============================================================================
  49. #================================================
  50. #★战斗者类
  51. #================================================
  52. class Game_Battler
  53.    attr_accessor :cp
  54.    attr_accessor :cp_total
  55.    attr_accessor :cp_turn #角色能不行动时,计算角色实际cp爆满次数,用以代替回合,计算状态解除时机
  56.    #=======================================
  57.   attr_accessor :animation2_id   
  58.   attr_accessor :act_status
  59.   attr_accessor :damage
  60.   attr_accessor :damage_pop
  61.   attr_accessor :slip_damage
  62.   attr_accessor :auto_damage
  63.   #=========================================
  64.    
  65.    alias oldinitialize  initialize
  66.    def initialize
  67.      @cp = 0
  68.      @cp_total = false
  69.      @cp_turn = 0
  70.      @damage = nil
  71.      @damage_pop = false
  72.      @act_status = 0
  73.      @slip_damage = 0
  74.      @auto_damage = 0
  75.      oldinitialize
  76.    end
  77.   def maxcp
  78.     return 100
  79.   end  
  80.   #--------------------------------------------------------------------------
  81.   # ● 应用连续伤害效果
  82.   #--------------------------------------------------------------------------
  83.   def slip_damage_effect
  84.     if slip_damage? and @hp > 0
  85.       @hp_damage = apply_variance(maxhp / 10, 10)
  86.       @hp_damage = @hp - 1 if @hp_damage >= @hp
  87.       @slip_damage = @hp_damage
  88.       self.hp -= @hp_damage
  89.     end
  90.   end

  91. end #class   
  92. #===============================================
  93. #★角色队伍类
  94. #===============================================
  95. class Game_Party < Game_Unit
  96. attr_accessor :actor_battler
  97. alias oldinitialize initialize
  98. def initialize
  99.   oldinitialize
  100.   @actor_battler = []
  101. end
  102. end #class  
  103. #================================================
  104. #★敌人队伍类
  105. #================================================
  106. class Game_Troop < Game_Unit
  107.   attr_accessor :enemy_battler
  108. alias  oldinitialize initialize
  109. def initialize
  110.    oldinitialize
  111.    @enemy_battler = []
  112. end  

  113. end#class
  114. #================================================
  115. #★cp条处理类
  116. #================================================

  117. class Scene_CP
  118.     attr_accessor :stop
  119.     attr_accessor :in_battler
  120.     attr_accessor :cp_battler
  121.     BATTLE_SPEED = 0.8
  122.     def initialize
  123.       [url=home.php?mod=space&uid=76426]@stop[/url] = false
  124.       @all_agi = 0
  125.       @v =  Viewport.new(0, 0, 1024, 90)
  126.       @count = 0
  127.       @cpline = Sprite.new(@v)
  128.       @cpline.bitmap = Bitmap.new(1024,768)
  129.       bitmap = Bitmap.new("Graphics/system/cp条2")
  130.       @cpline.bitmap.blt(105,80,bitmap,bitmap.rect)
  131.       @cp_battler = {}
  132.       for battler in $game_party.members + $game_troop.members
  133.         @all_agi += battler.agi
  134.         @cp_battler[battler] = Sprite_cpbattler.new
  135.         if battler.is_a?(Game_Actor)
  136.           @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{battler.id.to_s}_cp")
  137.           @cp_battler[battler].bitmap.blt(80,60,@cp_battler[battler].bitmap,@cp_battler[battler].bitmap.rect)
  138.         else
  139.           name = battler.original_name + "_敌人cp"
  140.           if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
  141.              @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
  142.           else
  143.              @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/敌人cp")
  144.           end
  145.              @cp_battler[battler].bitmap.blt(80,60, @cp_battler[battler].bitmap,  @cp_battler[battler].bitmap.rect)
  146.         end  
  147.         @cp_battler[battler].z = 101
  148.         @cp_battler[battler].visible = false
  149.         
  150.       end
  151.     end   
  152.    
  153.     #===========================================
  154.    
  155.    
  156.    
  157.    
  158.     #===========================================
  159.    
  160.    
  161.     def update
  162.       #@cp_battler.each{|key,value|
  163.       #if value.disposed? or value.opacity == 0
  164.       #  @cp_battler.delete(key)
  165.       #  next
  166.       #end
  167.       #value.update}
  168.       return if @stop
  169.       
  170.       
  171.       for battler in $game_party.members + $game_troop.members
  172.         if (@cp_battler[battler].disposed? or @cp_battler[battler].opacity == 0) and battler.dead?
  173.           @cp_battler.delete(@cp_battler[battler])
  174.           next
  175.         end  
  176.         if battler.dead?
  177.          if  @cp_battler.include?(battler)
  178.               @cp_battler[battler].collapse = true
  179.           end   
  180.           battler.cp = 0
  181.           next
  182.         end  
  183.        battler.cp = [[battler.cp + BATTLE_SPEED*10*battler.agi / @all_agi,0].max,battler.maxcp].min if battler.movable?
  184.        battler.cp_turn = [[battler.cp_turn+BATTLE_SPEED*10*battler.agi / @all_agi, 0].max,battler.maxcp].min
  185.        if battler.cp == battler.maxcp
  186.            if battler.is_a?(Game_Actor)
  187.               @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{battler.id.to_s}_a_cp")
  188.               @cp_battler[battler].bitmap.blt(80,60,@cp_battler[battler].bitmap,@cp_battler[battler].bitmap.rect)
  189.             
  190.            else
  191.             name = battler.original_name + "_a_cp"
  192.             if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
  193.             @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
  194.             else
  195.             @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/a_敌人cp")
  196.             end
  197.             @cp_battler[battler].bitmap.blt(80,60,  @cp_battler[battler].bitmap,  @cp_battler[battler].bitmap.rect)
  198.           end  
  199.             @cp_battler[battler].z = 101
  200.             battler.cp_total = true
  201.       elsif battler.cp_total == true
  202.           if battler.is_a?(Game_Actor)
  203.              @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{battler.id.to_s}_cp")
  204.              @cp_battler[battler].bitmap.blt(80,60,@cp_battler[battler].bitmap,@cp_battler[battler].bitmap.rect)
  205.            else
  206.                 name = battler.original_name + "_敌人cp"
  207.              if FileTest.exist?("Graphics/system/#{name}.jpg") or FileTest.exist?("Graphics/system/#{name}.png") or FileTest.exist?("Graphics/system/#{name}.bmp")
  208.                  @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/#{name}")
  209.                
  210.              else
  211.                  @cp_battler[battler].bitmap = Bitmap.new("Graphics/system/敌人cp")
  212.                
  213.              end
  214.                
  215.                @cp_battler[battler].bitmap.blt(80,60, @cp_battler[battler].bitmap, @cp_battler[battler].bitmap.rect)
  216.             end
  217.             battler.cp_total = false
  218.             @cp_battler[battler].z = 105
  219.             
  220.       end
  221.          
  222.       @cp_battler[battler].visible = true if @cp_battler[battler].visible == false
  223.       @cp_battler[battler].opacity = 255
  224.       @cp_battler[battler].y = 90
  225.       @cp_battler[battler].x = 85+750*battler.cp/battler.maxcp
  226.       if battler.cp_turn == battler.maxcp
  227.         battler.remove_states_auto unless battler.movable?
  228.         battler.slip_damage_effect
  229.         battler.do_auto_recovery if battler.is_a?(Game_Actor)
  230.         battler.damage_pop = true if battler.slip_damage != 0 or battler.auto_damage != 0
  231.         battler.cp_turn = 0
  232.       end  
  233.       if battler.cp == battler.maxcp
  234.          if battler.is_a?(Game_Actor)
  235.            $game_party.actor_battler.push(battler)
  236.          else
  237.            battler.make_action
  238.            $game_troop.enemy_battler.push(battler)
  239.            battler.make_action
  240.           end   
  241.       else
  242.         next
  243.       end  
  244.       
  245.       
  246.       
  247.    end     
  248. end

  249.   def dispose
  250.     for j in 0..25
  251.     @cpline.opacity -= 10
  252.     for i in @cp_battler.values
  253.       unless i.disposed?
  254.       i.opacity -= 10
  255.       end
  256.     end  
  257.      Graphics.update
  258.     end  
  259.     @v.dispose
  260.     @cpline.dispose
  261.     for i in @cp_battler.values
  262.       i.dispose
  263.     end
  264.   end  
  265. end
  266.   
  267.   
  268.   
  269.   
  270.   
  271.   
  272.   
  273.   
  274.   class Sprite_cpbattler < Sprite
  275.     attr_accessor :collapse
  276.    
  277.     def initialize (viewport = nil)
  278.       super (viewport)
  279.      
  280.       @effect_duration = 0        
  281.       @collapse = false
  282.     end
  283.     def update
  284.        super
  285.   
  286.      if self.collapse == true and self.opacity != 0
  287.       @effect_type = 5
  288.       @effect_duration = 48
  289.       self.color.set(255, 128, 128, 128)
  290.       for i in 0..48
  291.       self.opacity = 256 - (48 - @effect_duration) * 6
  292.       if self.opacity == 0
  293.    
  294.       break
  295.       end  
  296.       Graphics.update
  297.       @effect_duration -= 1
  298.       end
  299.      
  300.       self.collapse = false
  301.       self.color.set(255,255,255,5)
  302.      end
  303.      
  304.     end
  305.    
  306. def dispose
  307.      if self.bitmap != nil
  308.       self.bitmap.dispose
  309.      end
  310.    
  311.     super
  312.   end
  313.       
  314. end  

  315. #==========================================================================
  316. #
  317. #==========================================================================
  318. class Scene_Battle < Scene_Base
  319.   
  320.   #--------------------------------------------------------------------------
  321.   # ● 開始処理
  322.   #--------------------------------------------------------------------------
  323.   def start
  324.     super
  325.     #======================
  326.     @select_input = true
  327.     #======================
  328.     $game_temp.in_battle = true
  329.     #=============================================
  330.     unless  $BTEST
  331.       @battleback = nil
  332.       for area in  $data_areas.values
  333.          if $game_player.in_area?(area)
  334.              name = area.name
  335.              @battleback = Cache.battleback("#{name}")if FileTest.exist?("Graphics/Battlebacks/#{name}.jpg") or FileTest.exist?("Graphics/Battlebacks/#{name}.jpg") or FileTest.exist?("Graphics/Battlebacks/#{name}.bmp")
  336.                break
  337.           end
  338.       end     
  339.         if @battleback == nil
  340.              name = $game_map.name
  341.              @battleback = Cache.battleback("#{name}")
  342.         end      
  343.       $game_temp.background_bitmap  = @battleback
  344.     end
  345.    #==================================================
  346.     @spriteset = Spriteset_Battle.new
  347.     @message_window = Window_BattleMessage.new
  348.     @message_window.visible = false
  349.     @action_battlers = []
  350.     @cp_battle = Scene_CP.new
  351.     @cp_battle.stop = false
  352.     create_info_viewport
  353.    
  354.    
  355.     @select_icon = Sprite.new
  356.     @select_icon.z = 148
  357.     @select_icon.bitmap = Bitmap.new("Graphics/system/光标")
  358.     @select_icon.opacity = 240
  359.     @select_icon.visible = false
  360.     @c_c = 0
  361.    
  362.    
  363.   end
  364.   
  365.   #==============================================================
  366.   #★ 定义光标刷新
  367.   #==============================================================
  368.    
  369.   def select_icon_update(s_sw = false)
  370.     if s_sw == false
  371.       @select_icon.visible = false
  372.     else
  373.       @select_icon.visible = true
  374.       @select_icon.x = $game_troop.members[@target_enemy_window.enemy.index].screen_x
  375.       @select_icon.y = $game_troop.members[@target_enemy_window.enemy.index].screen_y - 30
  376.       
  377.       if @c_c%2 == 0
  378.       @select_icon.opacity += 30
  379.       else
  380.       @select_icon.opacity -= 30  
  381.       end
  382.     end  
  383.    
  384.   end   
  385.   
  386.   
  387.   #=================================================
  388.   #★主刷新部分
  389.   #=================================================
  390.   
  391.   
  392.   def update
  393.     super
  394.    
  395.     @c_c += 1
  396.   
  397.     update_basic(true)
  398.     update_info_viewport               
  399.       return if judge_win_loss            
  400.       update_scene_change
  401.       if @target_enemy_window != nil
  402.         update_target_enemy_selection     
  403.       elsif @target_actor_window != nil
  404.         update_target_actor_selection     
  405.       elsif @skill_window != nil
  406.         update_skill_selection            
  407.       elsif @item_window != nil
  408.         update_item_selection            
  409.       
  410.       elsif @actor_command_window.active
  411.         update_actor_command_selection   
  412.       #=================================
  413.       elsif @cp_battle.stop ==  false
  414.         active_battler_update
  415.       #=================================  
  416.       else
  417.         process_battle_event            
  418.         process_action                    
  419.         process_battle_event              
  420.       end
  421.       
  422.     #end
  423.   
  424.       
  425.   end
  426.   #================================================
  427.   #★战斗初始化
  428.   #===============================================
  429.   
  430.   def start_party_command_selection
  431.     if $game_temp.in_battle
  432.       @status_window.refresh
  433.       @status_window.index = @actor_index = -1
  434.       @active_battler = nil
  435.      
  436.      @actor_command_window.active = false
  437.       $game_party.clear_actions
  438.    
  439.     for i in 0..$game_party.members.size-1
  440.       if $game_party.members[i].act_status != -1
  441.         $game_party.members[i].act_status = -1
  442.       end  
  443.     end
  444.    
  445.       if $game_troop.surprise or not $game_party.inputable?
  446.         start_main
  447.       end
  448.     end
  449.   end
  450.   
  451.   #=============================================
  452.   #★角色回合的处理函数
  453.   #=============================================
  454.   
  455.   
  456.   def next_actor
  457.    
  458.     for i in 0..$game_party.members.size-1
  459.       if $game_party.members[i].act_status != -1
  460.         $game_party.members[i].act_status = -1
  461.       end  
  462.     end
  463.   
  464.     @info_viewport.visible = true
  465.     @status_window.refresh
  466.     @now_face = -1
  467.     @actor_command_window.update
  468.     @status_window.update
  469.   
  470.     loop do
  471.    
  472.       if @actor_index == @actor_battler.size - 1
  473.       
  474.         start_main
  475.         return
  476.         
  477.       end   
  478.       @actor_index += 1
  479.       index = 0
  480.       for battler in $game_party.members
  481.         if battler == @actor_battler[@actor_index]
  482.           break
  483.         else
  484.           index += 1
  485.         end
  486.       end  
  487.       @status_window.index = index
  488.      
  489.        if @active_battler != nil and @active_battler != @actor_battler[@actor_index] and @active_battler.is_a?(Game_Actor)
  490.         @active_battler.act_status = -1
  491.       end
  492.       
  493.       @active_battler = @actor_battler[@actor_index]
  494.      
  495.      
  496.       @active_battler.act_status = 1
  497.      
  498.       if @active_battler.auto_battle
  499.         @active_battler.make_action
  500.         next
  501.       end
  502.       break if @active_battler.inputable?
  503.     end
  504.     start_actor_command_selection
  505.   end
  506.   
  507.   #===================================================
  508.   #★激活角色指令窗口
  509.   #===================================================
  510.   
  511.   def start_actor_command_selection
  512.     @actor_command_window.setup(@active_battler)
  513.     @actor_command_window.active = true
  514.     @actor_command_window.index = 0
  515.   end
  516.   
  517.   #==============================================
  518.   #★指令窗口刷新
  519.   #==============================================
  520.    def update_actor_command_selection
  521.    
  522.     if Input.trigger?(Input::C)
  523.       case @actor_command_window.index
  524.       when 0  # 攻击
  525.         Sound.play_decision
  526.         @active_battler.action.set_attack
  527.         start_target_enemy_selection
  528.       when 1  # 特技
  529.         Sound.play_decision
  530.         start_skill_selection
  531.       when 2  # 防御
  532.         Sound.play_decision
  533.         @active_battler.action.set_guard
  534.         next_actor
  535.         @active_battler.cp = 0
  536.       when 3  # 物品
  537.         Sound.play_decision
  538.         start_item_selection
  539.       
  540.       when 4 #逃跑
  541.         if $game_troop.can_escape == false
  542.           Sound.play_buzzer
  543.           return
  544.         end
  545.         Sound.play_decision
  546.         process_escape
  547.     end
  548.     end
  549.   end
  550.   
  551.   #====================================
  552.   #★选择敌人
  553.   #====================================
  554.   def start_target_enemy_selection
  555.      if @skill_window != nil
  556.       @skill_window.visible = false
  557.     end
  558.     if @item_window != nil
  559.       @item_window.visible = false
  560.     end  
  561.     @target_enemy_window = Window_TargetEnemy.new
  562.     @target_enemy_window.opacity = 0
  563.     @target_enemy_window.contents_opacity = 0
  564.     #@target_enemy_window.y = @info_viewport.rect.y
  565.     #@info_viewport.rect.x += @target_enemy_window.width
  566.     #@info_viewport.ox += @target_enemy_window.width
  567.     @actor_command_window.active = false
  568.   
  569.     select_icon_update(true)
  570.   end
  571.   #===========================================================
  572.   #★结束敌人选择
  573.   #===========================================================
  574.    def end_target_enemy_selection
  575.     #@info_viewport.rect.x -= @target_enemy_window.width
  576.     #@info_viewport.ox -= @target_enemy_window.width
  577.     @target_enemy_window.dispose
  578.     @target_enemy_window = nil
  579.    
  580.     select_icon_update
  581.    
  582.     if @actor_command_window.index == 0
  583.       @actor_command_window.active = true
  584.     end
  585.   end  
  586.   #=======================================================
  587.   #★敌人选择刷新
  588.   #=======================================================
  589.   def update_target_enemy_selection
  590.    @target_enemy_window.update
  591.    
  592.     select_icon_update(true)

  593.     if Input.trigger?(Input::B)
  594.       Sound.play_cancel
  595.       if @skill_window != nil
  596.         @skill_window.visible = true
  597.       end
  598.       if @item_window != nil
  599.         @item_window.visible = true
  600.       end  
  601.       end_target_enemy_selection
  602.     elsif Input.trigger?(Input::C)
  603.       Sound.play_decision
  604.       @active_battler.action.target_index = @target_enemy_window.enemy.index
  605.       end_target_enemy_selection
  606.       end_skill_selection
  607.       end_item_selection
  608.       next_actor
  609.       @active_battler.cp = 0
  610.     end
  611.   end
  612.   
  613.   #======================================================
  614.   #★己方选择
  615.   #======================================================
  616.   def start_target_actor_selection
  617.     @target_actor_window = Window_BattleStatus.new
  618.     @target_actor_window.index = 0
  619.     @target_actor_window.active = true
  620.     @target_actor_window.y = @info_viewport.rect.y
  621.     @target_actor_window.draw_actorface($game_party.members[@target_actor_window.index])
  622.     @info_viewport.rect.x += @target_actor_window.width
  623.     @info_viewport.ox += @target_actor_window.width
  624.     @actor_command_window.active = false
  625.     #=====================
  626.     #☆减少刷新次数
  627.     #=====================
  628.     @last_index = -1
  629.   end
  630.   #==================================================
  631.   #★己方选择结束处理
  632.   #==================================================
  633.   def end_target_actor_selection
  634.     @info_viewport.rect.x -= @target_actor_window.width
  635.     @info_viewport.ox -= @target_actor_window.width
  636.     @target_actor_window.dispose
  637.     @target_actor_window = nil
  638.     #=====================
  639.     #☆减少刷新次数
  640.     #=====================
  641.     @last_index = -1
  642.   end
  643.   #===================================================
  644.   #★己方选择刷新
  645.   #===================================================
  646.   def update_target_actor_selection
  647.     if @last_index != @target_actor_window.index
  648.      @target_actor_window.refresh
  649.      @target_actor_window.draw_actorface($game_party.members[@target_actor_window.index])
  650.      @last_index = @target_actor_window.index
  651.     end
  652.     @target_actor_window.update
  653.     if Input.trigger?(Input::B)
  654.       Sound.play_cancel
  655.       end_target_actor_selection
  656.     elsif Input.trigger?(Input::C)
  657.       Sound.play_decision
  658.       @active_battler.action.target_index = @target_actor_window.index
  659.      
  660.       end_target_actor_selection
  661.       end_skill_selection
  662.       end_item_selection
  663.       next_actor
  664.        @active_battler.cp = 0
  665.     end
  666.   end
  667.   #============================================
  668.   #★特技使用决定  处理
  669.   #===========================================
  670.   
  671.   
  672.   def determine_skill
  673.     @active_battler.action.set_skill(@skill.id)
  674.     @skill_window.active = false
  675.     if @skill.need_selection?
  676.       if @skill.for_opponent?
  677.         start_target_enemy_selection
  678.       else
  679.         start_target_actor_selection
  680.       end
  681.     else
  682.       end_skill_selection
  683.       next_actor
  684.       @active_battler.cp = 0
  685.     end
  686.   end
  687.   #=========================================
  688.   #★物品使用决定  处理
  689.   #=========================================
  690.   
  691.   
  692.   def determine_item
  693.     @active_battler.action.set_item(@item.id)
  694.     @item_window.active = false
  695.     if @item.need_selection?
  696.       if @item.for_opponent?
  697.         start_target_enemy_selection
  698.       else
  699.         start_target_actor_selection
  700.       end
  701.     else
  702.       end_item_selection
  703.       next_actor
  704.        @active_battler.cp = 0
  705.     end
  706.   end
  707.   
  708.   #===============================================
  709.   #★各窗口视口生成
  710.   #===============================================
  711.   def create_info_viewport
  712.     @info_viewport = Viewport.new(0, 288, 1024, 256)
  713.     @info_viewport.z = 100
  714.     @status_window = Window_BattleStatus.new
  715.     @actor_command_window = Window_ActorCommand.new
  716.     @status_window.viewport = @info_viewport
  717.     @actor_command_window.viewport = @info_viewport
  718.     @status_window.x = 0
  719.     @actor_command_window.x = 416
  720.     @status_window.y = 128
  721.     @actor_command_window.y = 128
  722.     @info_viewport.visible = false
  723.     #========================
  724.     #☆减少头像刷新用
  725.     #========================
  726.     @now_face = -1
  727.    
  728.   end
  729.   #================================================
  730.   #★视口释放
  731.   #================================================
  732.   def dispose_info_viewport
  733.     @status_window.dispose
  734.     @actor_command_window.dispose
  735.     @info_viewport.dispose
  736.     #========================
  737.     #☆减少头像刷新用
  738.     #========================
  739.     @now_face = -1
  740.     if @window_egi != nil
  741.      @window_egi.dispose
  742.     end
  743.   end
  744.   #======================================================
  745.   #★视口刷新
  746.   #======================================================
  747.   
  748.   
  749.   def update_info_viewport
  750.    
  751.     @actor_command_window.update
  752.    
  753.   
  754.     if @active_battler != nil and @active_battler.is_a?(Game_Actor) and @active_battler.id != @now_face
  755.       @status_window.draw_actorface(@active_battler)
  756.       @now_face = @active_battler.id
  757.     end  
  758.    
  759.    
  760.     @status_window.update
  761.    
  762.    
  763.    
  764.     if @actor_command_window.active and   @actor_command_window.y > 0
  765.      @actor_command_window.y -= 8
  766.      @status_window.y -= 8
  767.    
  768.    
  769.     end

  770.   end
  771.   
  772.   #================================================
  773.   #★战斗开始 处理
  774.   #================================================
  775.   
  776.   def process_battle_start
  777.    
  778.    
  779.     if $game_troop.preemptive
  780.      
  781.       for battler in $game_party.members
  782.          battler.cp = battler.maxcp
  783.        end  
  784.        $game_troop.preemptive = false
  785.     elsif $game_troop.surprise
  786.       
  787.       for battler in $game_troop.members
  788.         battler.cp = battler.maxcp
  789.       end
  790.       $game_troop.surprise = false
  791.     end
  792.    
  793.     make_escape_ratio
  794.     process_battle_event
  795.    
  796.     #===========================================
  797.     @status_window.refresh
  798.     @status_window.index = @actor_index = -1
  799.    
  800.     #=====================
  801.     @cp_battle.stop = false
  802.     #=====================
  803.   
  804.   end
  805.   #==========================================
  806.   #★逃走处理
  807.   #==========================================
  808.   def process_escape
  809.     @info_viewport.visible = false
  810.    
  811.     if $game_troop.preemptive
  812.       success = true
  813.     else
  814.       success = (rand(100) < @escape_ratio)
  815.     end
  816.     Sound.play_escape
  817.     if success
  818.       #=============================
  819.       @cp_battle.dispose
  820.       #=============================
  821.       for battler in $game_party.members
  822.         battler.cp = 0
  823.       end  
  824.      
  825.       battle_end(1)
  826.     else
  827.       @escape_ratio += 10
  828.      
  829.       @active_battler.cp = 0
  830.       @active_battler.action.clear
  831.       next_actor   
  832.     end
  833.   end
  834.   #========================================
  835.   #★胜利处理
  836.   #========================================
  837.   def process_victory
  838.     @info_viewport.visible = false
  839.    
  840.     RPG::BGM.stop
  841.     $game_system.battle_end_me.play
  842.     for battler in $game_troop.members
  843.       if battler.dead?
  844.          if  @cp_battle.cp_battler.include?(battler)
  845.               @cp_battle.cp_battler[battler].collapse = true
  846.               
  847.               next
  848.           end  
  849.        end     
  850.     end
  851.      @cp_battle.cp_battler.each{|key,value|
  852.       if value.disposed?
  853.         @cp_battler.delete(key)
  854.         next
  855.       end
  856.       value.update}
  857.     #=============================
  858.     @cp_battle.dispose
  859.     #=============================
  860.    for battler in $game_party.members
  861.      battler.cp = 0
  862.     end
  863.     unless $BTEST
  864.       $game_temp.map_bgm.play
  865.       $game_temp.map_bgs.play
  866.     end
  867.     display_exp_and_gold
  868.     display_drop_items
  869.     display_level_up
  870.     battle_end(0)
  871.   end
  872.    
  873.   #=================================
  874.   #★失败处理
  875.   #=================================
  876.   def process_defeat
  877.     @cp_battle.dispose
  878.     for battler in $game_party.members + $game_troop.members
  879.      battler.cp = 0
  880.     end
  881.     @info_viewport.visible = false
  882.    
  883.     battle_end(2)
  884.    
  885.   end
  886.   
  887.   #=============================================================================
  888.   #★CP战斗的主要刷新★
  889.   #=============================================================================
  890.   
  891.    def active_battler_update
  892.    
  893.     #===================================
  894.     @actor_battler = []
  895.     @enemy_battler = []
  896.     $game_party.actor_battler = []
  897.     $game_troop.enemy_battler = []
  898.     #===================================
  899.     @cp_battle.update
  900.     @actor_battler = $game_party.actor_battler
  901.     @enemy_battler = $game_troop.enemy_battler
  902.     #for battler in $game_party.members + $game_troop.members
  903.       
  904.     #end
  905.     if @actor_battler.size != 0
  906.       @cp_battle.stop = true
  907.       next_actor
  908.       Audio.se_play("Audio/SE/Jump2",100,100)
  909.     elsif @enemy_battler.size != 0  
  910.    
  911.     #================
  912.     @cp_battle.stop = true
  913.     start_main
  914.     #================
  915.    
  916.    
  917.      
  918.    end
  919.   
  920. end

  921. #=============================================================
  922. #=============================================================
  923.   #====================================================
  924.   #★战斗主处理
  925.   #====================================================
  926.    def start_main
  927.    
  928.     for i in 0..$game_party.members.size-1
  929.       if $game_party.members[i].act_status != 0
  930.         $game_party.members[i].act_status = 0
  931.       end  
  932.     end
  933.    
  934.    
  935.    
  936.     if @info_viewport.visible
  937.     @info_viewport.visible = false
  938.     @status_window.y = 128
  939.     @actor_command_window.y = 128
  940.     end
  941.    

  942.     @actor_command_window.active = false
  943.     @status_window.index = @actor_index = -1
  944.     @active_battler = nil
  945.   
  946.     make_action_orders
  947.     wait(20)
  948.    #=============================
  949.   
  950.    while @action_battlers.size != 0 and judge_win_loss == false
  951.    process_action
  952.    end
  953.    @cp_battle.stop = false
  954.    #=============================
  955.    
  956. end
  957. #=====================================
  958. #★行动顺序生成
  959. #=====================================


  960. def make_action_orders
  961.     @action_battlers = []
  962.    
  963.     unless $game_troop.surprise
  964.       @action_battlers += @actor_battler if @actor_battler.size != 0
  965.     end
  966.    
  967.    
  968.     unless $game_troop.preemptive
  969.       @action_battlers += @enemy_battler if @enemy_battler.size != 0
  970.     end
  971.     for battler in @action_battlers
  972.       battler.action.make_speed
  973.     end
  974.     @action_battlers.sort! do |a,b|
  975.       b.action.speed - a.action.speed
  976.     end
  977.   end
  978. #====================================
  979. #★战斗行动处理
  980. #====================================
  981. def process_action
  982.     return if judge_win_loss
  983.     return if $game_temp.next_scene != nil
  984.     set_next_active_battler
  985.    
  986.     return if @active_battler == nil
  987.     return if @active_battler.dead?
  988.    
  989.     @active_battler.white_flash = true
  990.     unless @active_battler.action.forcing
  991.       @active_battler.action.prepare
  992.     end
  993.     if @active_battler.action.valid?
  994.       execute_action
  995.     end
  996.     unless @active_battler.action.forcing
  997.      
  998.       remove_states_auto
  999.       display_current_state
  1000.     end
  1001.     @active_battler.white_flash = false
  1002.    
  1003.   end

  1004.   #=================================
  1005.   #★攻击行动 执行
  1006.   #=================================
  1007.   def execute_action_attack
  1008.    
  1009.     targets = @active_battler.action.make_targets
  1010.     display_attack_animation(targets)
  1011.     wait(20)
  1012.     for target in targets
  1013.       target.attack_effect(@active_battler)
  1014.       display_action_effects(target)
  1015.     end
  1016.     #=====================
  1017.     @active_battler.cp = 0
  1018.     #=====================
  1019.    end
  1020.   #===============================
  1021.   #★防御行动   执行
  1022.   #===============================
  1023.    
  1024.    
  1025.    def execute_action_guard
  1026.    
  1027.     wait(45)
  1028.     #=====================
  1029.     @active_battler.cp = 0
  1030.     #=====================
  1031.   end
  1032.    #===============================
  1033.    #★逃走  执行
  1034.    #===============================
  1035.   
  1036.   def execute_action_escape
  1037.    
  1038.     @active_battler.escape
  1039.     Sound.play_escape
  1040.     wait(45)
  1041.     #=====================
  1042.     @active_battler.cp = 0
  1043.     #=====================
  1044.   end
  1045.   #====================================
  1046.   #★待机  执行
  1047.   #====================================
  1048.   def execute_action_wait
  1049.    
  1050.     wait(45)
  1051.     #=====================
  1052.     @active_battler.cp = 0
  1053.     #=====================
  1054.   end
  1055.   
  1056.   #============================
  1057.   #★特技   执行
  1058.   #============================
  1059.   def execute_action_skill
  1060.     skill = @active_battler.action.skill
  1061.    
  1062.     targets = @active_battler.action.make_targets
  1063.    
  1064.    
  1065.     user = @active_battler.action.skill_user
  1066.     if skill.animation2_id != 0
  1067.       display_animation(user,skill.animation2_id)
  1068.     end  
  1069.     display_animation(targets, skill.animation_id)
  1070.    
  1071.     wait_for_animation
  1072.    
  1073.     @active_battler.mp -= @active_battler.calc_mp_cost(skill)
  1074.     $game_temp.common_event_id = skill.common_event_id
  1075.     for target in targets
  1076.       target.skill_effect(@active_battler, skill)
  1077.       display_action_effects(target, skill)
  1078.     end
  1079.     #=====================
  1080.     @active_battler.cp = 0
  1081.     #=====================
  1082.   end
  1083.   
  1084.   #==============================
  1085.   #★物品行动 执行
  1086.   #==============================
  1087.   
  1088.   def execute_action_item
  1089.     item = @active_battler.action.item
  1090.    
  1091.    
  1092.     user = @active_battler.action.skill_user
  1093.     if item.animation2_id != 0
  1094.       display_animation(user,item.animation2_id)
  1095.     end  
  1096.    
  1097.    
  1098.     targets = @active_battler.action.make_targets
  1099.     display_animation(targets, item.animation_id)
  1100.    
  1101.     wait_for_animation
  1102.    
  1103.     $game_party.consume_item(item)
  1104.     $game_temp.common_event_id = item.common_event_id
  1105.     for target in targets
  1106.       target.item_effect(@active_battler, item)
  1107.       display_action_effects(target, item)
  1108.     end
  1109.     #=====================
  1110.     @active_battler.cp = 0
  1111.     #=====================
  1112.   end
  1113.   #===========================
  1114.   #★行动动画显示
  1115.   #animation_id :-1 为普通攻击
  1116.   #===========================
  1117.   def display_animation(targets, animation_id)
  1118.     if animation_id < 0
  1119.       display_attack_animation(targets)
  1120.     else
  1121.       display_normal_animation(targets, animation_id)
  1122.     end
  1123.     wait(20)
  1124.    
  1125.   end
  1126.   #====================================
  1127.   #★普通攻击的动画显示
  1128.   #====================================
  1129.   def display_attack_animation(targets)

  1130.     if @active_battler.is_a?(Game_Enemy)
  1131.         user = @active_battler.action.skill_user
  1132.       if @select_input == true
  1133.         a1 = 0
  1134.         a2 = 0
  1135.         eval(@active_battler.note)
  1136.         display_normal_animation(user,a1)if   a1 != 0
  1137.         display_normal_animation(targets,a2)if  a2 !=0
  1138.         Sound.play_enemy_attack if   a1 == 0 and a2 == 0
  1139.         wait(15, true) if  a1 == 0 and  a2 == 0
  1140.       elsif @active_battler.animation1_id != 0 or @active_battler.animation2_id != 0
  1141.             display_normal_animation(user,@active_battler.animation1_id)if @active_battler.animation1_id != 0
  1142.             display_normal_animation(targets,@active_battler.animation2_id)if @active_battler.animation2_id != 0
  1143.             Sound.play_enemy_attack if  @active_battler.animation1_id == 0 and @active_battler.animation2_id == 0
  1144.             wait(15, true) if  @active_battler.animation1_id == 0 and @active_battler.animation2_id == 0
  1145.        end     
  1146.    
  1147.    
  1148.    else
  1149.       aid1 = @active_battler.atk_animation_id
  1150.       aid2 = @active_battler.atk_animation_id2
  1151.      
  1152.       user = @active_battler.action.skill_user
  1153.       if @active_battler.act_animation_id != 0
  1154.         display_normal_animation(user,@active_battler.act_animation_id)
  1155.       end  
  1156.      
  1157.    
  1158.       
  1159.       display_normal_animation(targets, aid1, false)
  1160.       display_normal_animation(targets, aid2, true)
  1161.     end
  1162.     wait_for_animation
  1163.   end
  1164.   
  1165.   #========================================
  1166.   #★显示行动结果
  1167.   #========================================
  1168.    def display_action_effects(target, obj = nil)
  1169.     unless target.skipped
  1170.      
  1171.       wait(5)
  1172.       #=======================
  1173.       target.damage_pop = true
  1174.       #=======================
  1175.       display_critical(target, obj)
  1176.       display_damage(target, obj)
  1177.       display_state_changes(target, obj)
  1178.    
  1179.     end
  1180.   end
  1181.   
  1182.   #======================================
  1183.   #★显示HP伤害
  1184.   #======================================
  1185.   
  1186.   
  1187.   def display_hp_damage(target, obj = nil)
  1188.      
  1189.     if target.hp_damage == 0               
  1190.       return if obj != nil and obj.damage_to_mp
  1191.       return if obj != nil and obj.base_damage == 0
  1192.       
  1193.     elsif target.absorbed                   # 吸収
  1194.      
  1195.        #=====================================
  1196.       @active_battler.damage_pop = true
  1197.       @active_battler.damage = target.hp_damage
  1198.      
  1199.       target.cp -= target.hp_damage/100
  1200.       @cp_battle.cp_battler[target].x = [95+300*target.cp/target.maxcp,95].max
  1201.      if target.dead?
  1202.          @cp_battle.cp_battler[target].collapse = true
  1203.          target.cp = 0
  1204.          @cp_battle.cp_battler[target].update
  1205.       end
  1206.       
  1207.       
  1208.    
  1209.       #=====================================
  1210.     elsif target.hp_damage > 0            
  1211.      
  1212.       if target.actor?
  1213.       
  1214.         Sound.play_actor_damage
  1215.         $game_troop.screen.start_shake(5, 5, 10)
  1216.       else
  1217.       
  1218.         Sound.play_enemy_damage
  1219.         target.blink = true
  1220.       end
  1221.       #=====================================
  1222.       
  1223.       target.cp -= target.hp_damage/100
  1224.       @cp_battle.cp_battler[target].x = [95 + 300*target.cp/target.maxcp,95].max
  1225.       
  1226.       if target.dead?
  1227.          @cp_battle.cp_battler[target].collapse = true
  1228.          target.cp = 0
  1229.          @cp_battle.cp_battler[target].update
  1230.       end
  1231.       
  1232.      
  1233.       #wait(10)
  1234.       #=====================================
  1235.     else                                    
  1236.      
  1237.       Sound.play_recovery
  1238.     end
  1239.    
  1240.   end
  1241.   #--------------------------------------------------------------------------
  1242.   # ● MP 伤害表示
  1243.   #--------------------------------------------------------------------------
  1244.   def display_mp_damage(target, obj = nil)
  1245.     return if target.dead?
  1246.     return if target.mp_damage == 0
  1247.    
  1248.     if target.absorbed                      # 吸收
  1249.       
  1250.       #=====================================
  1251.       @active_battler.damage_pop = true
  1252.       @active_battler.damage = - target.mp_damage
  1253.      
  1254.       
  1255.       target.cp -= target.mp_damage/100
  1256.       @cp_battle.cp_battler[target].x = [95+300*target.cp/target.maxcp,95].max
  1257.       
  1258.       #=====================================
  1259.     elsif target.mp_damage > 0              
  1260.    
  1261.      #=====================================
  1262.       target.cp -= target.mp_damage/100
  1263.       @cp_battle.cp_battler[target].x = [95+300*target.cp/target.maxcp,95].max
  1264.       
  1265.       #=====================================
  1266.     else                                    
  1267.    
  1268.       Sound.play_recovery
  1269.     end
  1270.    
  1271.   end
  1272.   #=======================================
  1273.   #★重定义对话窗口刷新
  1274.   #=======================================
  1275.   def wait_for_message
  1276.    wait(45)
  1277.   end
  1278.   
  1279.   #================================================
  1280.   #★经验金钱获得物品提示窗口(原方法重定义)
  1281.   #================================================
  1282.   def display_exp_and_gold
  1283.     exp=$game_troop.exp_total
  1284.     gold=$game_troop.gold_total
  1285.     $game_party.gain_gold(gold)
  1286.     drop_items = $game_troop.make_drop_items
  1287.     @window_egi = Window_egi.new(exp,gold,drop_items)
  1288.     @window_egi.openness=0
  1289.     wait(15)
  1290.     loop do
  1291.       if @window_egi.openness <= 255
  1292.        @window_egi.openness+=48
  1293.       end
  1294.       if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  1295.         break
  1296.       end
  1297.       Graphics.update
  1298.       Input.update
  1299.       
  1300.       
  1301.     end
  1302.    
  1303.     loop do
  1304.       @window_egi.openness -= 48 if @window_egi.openness >= 0
  1305.       Graphics.update
  1306.       if @window_egi.openness <= 0
  1307.         break
  1308.       end  
  1309.     end #loop
  1310.    
  1311.   end

  1312.   alias oldstart_skill_selection  start_skill_selection
  1313.   def start_skill_selection
  1314.     oldstart_skill_selection
  1315.     @skill_window.z = 3000
  1316.     @skill_window.help_window.z = 3000
  1317.    
  1318.   end  
  1319.   alias oldstart_item_selection  start_item_selection
  1320.   def start_item_selection
  1321.     oldstart_item_selection
  1322.     @item_window.z=3000
  1323.     @item_window.help_window.z = 3000
  1324.   end  
  1325.   

  1326.   
  1327. end #class


  1328. #=====================================================
  1329. #★战斗状态窗口类
  1330. #=====================================================


  1331. class Window_BattleStatus < Window_Selectable
  1332.   
  1333.   
  1334.   def draw_item(index)
  1335.     rect = item_rect(index)
  1336.     rect.x += 4
  1337.     rect.width -= 8
  1338.     self.contents.clear_rect(rect)
  1339.     self.contents.font.color = normal_color
  1340.     actor = $game_party.members[index]
  1341.     draw_actor_name(actor, 96, rect.y)
  1342.     draw_actor_state(actor, 114+48, rect.y, 48)
  1343.     draw_actor_hp(actor, 174, rect.y, 120)
  1344.     draw_actor_mp(actor, 310, rect.y, 70)
  1345.   end
  1346.   #=======================================================================
  1347.   #★定义角色头像的描绘
  1348.   #=======================================================================
  1349.    def draw_actorface(actor)
  1350.       
  1351.     draw_face(actor.face_name, actor.face_index, 5, 5, size = 80)
  1352.   end
  1353.   #=========================================================================
  1354.   
  1355.   def update_cursor
  1356.      super
  1357.      self.cursor_rect.width = self.width - 120
  1358.      self.cursor_rect.x = 90
  1359.      
  1360.   end  
  1361.   #========================================================================
  1362. end #class

  1363. #=================================================
  1364. #★战斗图处理的类
  1365. #=================================================

  1366. class Sprite_Battler < Sprite_Base
  1367.   
  1368. #=================================
  1369. #★刷新
  1370. #=================================
  1371. def update
  1372.     super
  1373.     if @battler == nil
  1374.       self.bitmap = nil
  1375.     else
  1376.       @use_sprite = @battler.use_sprite?
  1377.       if @use_sprite
  1378.         self.x = @battler.screen_x
  1379.         self.y = @battler.screen_y
  1380.         self.z = @battler.screen_z
  1381.         update_battler_bitmap
  1382.         if @battler.act_status == 1
  1383.          if self.opacity <280
  1384.            self.opacity += 20
  1385.         end
  1386.       elsif @battler.act_status == -1
  1387.          if self.opacity > 125
  1388.            self.opacity -= 20
  1389.          end  
  1390.       elsif  (@battler.dead? or   @battler.hidden) and @battler.collapse == false
  1391.       
  1392.       else
  1393.         self.opacity = 255
  1394.       end  
  1395.       end
  1396.       
  1397.       setup_new_effect
  1398.       update_effect
  1399.      
  1400.     end
  1401.   end  
  1402. #===============================
  1403. #
  1404. #===============================
  1405.   def update_battler_bitmap
  1406.     if @battler.battler_name != @battler_name or
  1407.        @battler.battler_hue != @battler_hue
  1408.       @battler_name = @battler.battler_name
  1409.       @battler_hue = @battler.battler_hue
  1410.       self.bitmap = Cache.battler(@battler_name, @battler_hue)
  1411.       @width = bitmap.width
  1412.       @height = bitmap.height
  1413.       self.ox = @width / 2
  1414.       self.oy = @height
  1415.       if (@battler.dead? or @battler.hidden) and @battler.collapse == false
  1416.         
  1417.       end
  1418.     end
  1419.     if @battler.is_a?(Game_Actor)
  1420.       count = 40
  1421.     else
  1422.       count = 44
  1423.     end  
  1424.    
  1425.    
  1426.     if Graphics.frame_count%count <= 19
  1427.       self.bitmap = Cache.battler(@battler_name,@battler_hue)
  1428.       @width = bitmap.width
  1429.       @height = bitmap.height
  1430.       self.ox = @width / 2
  1431.       self.oy = @height
  1432.     else
  1433.       b_name = @battler_name + "待"
  1434.        if FileTest.exist?("Graphics/Battlers/#{b_name}.png") or FileTest.exist?("Graphics/Battlers/#{b_name}.jpg")  or  FileTest.exist?("Graphics/Battlers/#{b_name}.bmp")
  1435.          self.bitmap = Cache.battler(b_name,@battler_hue)
  1436.          @width = bitmap.width
  1437.          @height = bitmap.height
  1438.          self.ox = @width/2
  1439.          self.oy = @height
  1440.        end
  1441.     end      
  1442.       
  1443.    
  1444.   end
  1445.   
  1446. #==================================
  1447. #
  1448. #==================================
  1449. def setup_new_effect
  1450.     if @battler.white_flash
  1451.       @effect_type = WHITEN
  1452.       @effect_duration = 16
  1453.       @battler.white_flash = false
  1454.     end
  1455.    
  1456.     if @battler.blink
  1457.       @effect_type = BLINK
  1458.       @effect_duration = 20
  1459.       @battler.blink = false
  1460.     end
  1461.     if not @battler_visible and @battler.exist?
  1462.       @effect_type = APPEAR
  1463.       @effect_duration = 16
  1464.       @battler_visible = true
  1465.     end
  1466.     if @battler.damage_pop and not (@battler.collapse or @battler.hidden)
  1467.       if @battler.damage != nil
  1468.         s_1 = @battler.damage > 0 ? 0 : 1
  1469.         @battler.damage = @battler.damage > 0 ? [email protected] : @battler.damage
  1470.       end  
  1471.       
  1472.       damage(@battler.damage,@battler.critical,s_1) if @battler.damage != 0 and @battler.damage != nil
  1473.       damage(@battler.hp_damage,@battler.critical,0) if @battler.hp_damage != 0
  1474.       damage(@battler.mp_damage,@battler.critical,1) if @battler.mp_damage != 0
  1475.       damage("失误",@battler.critical) if @battler.missed
  1476.       damage("MISS",@battler.critical) if @battler.evaded
  1477.       damage(@battler.slip_damage - @battler.auto_damage,@battler.critical) if @battler.slip_damage != 0 or @battler.auto_damage != 0
  1478.       @battler.slip_damage = 0
  1479.       @battler.auto_damage = 0
  1480.       @battler.damage = nil
  1481.       @battler.damage_pop = false
  1482.     end
  1483.     if @battler_visible and @battler.hidden
  1484.       @effect_type = DISAPPEAR
  1485.       @effect_duration = 32
  1486.       @battler_visible = false
  1487.     end
  1488.     if @battler.collapse and self.opacity != 0
  1489.       @effect_type = COLLAPSE
  1490.       @effect_duration = 48
  1491.       @battler.collapse = false
  1492.       @battler_visible = false
  1493.     end
  1494.     if @battler.animation_id != 0 and @battler.collapse == false
  1495.       self.opacity = 255
  1496.       animation = $data_animations[@battler.animation_id]
  1497.       mirror = @battler.animation_mirror
  1498.       start_animation(animation, mirror)
  1499.       @battler.animation_id = 0
  1500.     end
  1501.    
  1502.       
  1503.   end
  1504. #=========================================
  1505. #
  1506. #=========================================
  1507.   
  1508.   

  1509.   
  1510.   
  1511. end #class  








  1512. #=================================================
  1513. #★处理战斗行动的类
  1514. #=================================================
  1515. class Game_BattleAction

  1516.   def skill_user
  1517.     targets = []
  1518.     targets.push(battler)
  1519.      
  1520.      return targets.compact
  1521.    end
  1522.   

  1523.   
  1524.    
  1525. end#class  
  1526. #=======================================================
  1527. #★处理敌人的类
  1528. #
  1529. #=======================================================

  1530. class Game_Enemy < Game_Battler
  1531. def note
  1532.     return $data_enemies[@enemy_id].note
  1533. end  

  1534.   
  1535. end#class
  1536. #======================================================
  1537. #★角色处理类
  1538. #======================================================
  1539. class Game_Actor < Game_Battler

  1540.   def setup(actor_id)
  1541.     actor = $data_actors[actor_id]
  1542.     @actor_id = actor_id
  1543.     @name = actor.name
  1544.     #--------------------------------------------
  1545.     #★添加战斗图名称,以便战斗中获取战斗图
  1546.     #--------------------------------------------
  1547.     @battler_name = actor_id.to_s + "_z"
  1548.     @battler_hue = 0
  1549.     @flash = false
  1550.     @character_name = actor.character_name
  1551.     @character_index = actor.character_index
  1552.     @face_name = actor.face_name
  1553.     @face_index = actor.face_index
  1554.     @class_id = actor.class_id
  1555.     @weapon_id = actor.weapon_id
  1556.     @armor1_id = actor.armor1_id
  1557.     @armor2_id = actor.armor2_id
  1558.     @armor3_id = actor.armor3_id
  1559.     @armor4_id = actor.armor4_id
  1560.     @level = actor.initial_level
  1561.     @exp_list = Array.new(101)
  1562.     make_exp_list
  1563.     @exp = @exp_list[@level]
  1564.     @skills = []
  1565.     for i in self.class.learnings
  1566.       learn_skill(i.skill_id) if i.level <= @level
  1567.     end
  1568.     clear_extra_values
  1569.     recover_all
  1570.   end
  1571.   #--------------------------------------------------------------------------
  1572.   # ● 执行自动回复 (回合结束时调用)
  1573.   #--------------------------------------------------------------------------
  1574.   def do_auto_recovery
  1575.     if auto_hp_recover and not dead?
  1576.       self.hp += maxhp / 20
  1577.       @auto_damage = maxhp / 20
  1578.     end
  1579.   end
  1580.   #==========================================================================
  1581.   #★ 定义武器的行动方动画id,默认为第一武器的id
  1582.   #==========================================================================
  1583.   
  1584.   def act_animation_id
  1585.     return weapons[0] == nil ? 0 : weapons[0].animation2_id
  1586.   end  
  1587.   
  1588.   #==========================================================================
  1589.   #==========================================================================
  1590.   #==========================================================================
  1591.   #★定义角色战斗图 X 坐标
  1592.   #==========================================================================
  1593.   def screen_x
  1594.    if self.index != nil
  1595.     case index
  1596.      when 0
  1597.       return 844
  1598.      when 1
  1599.       return 834
  1600.      when 2
  1601.       return 824
  1602.      when 3
  1603.       return 814
  1604.     end  
  1605.   else
  1606.    return 0
  1607.   end
  1608. end
  1609.   #========================================================================
  1610.   #★定义角色战斗图 Y 坐标
  1611.   #========================================================================
  1612.   def screen_y
  1613.     if self.index != nil
  1614.       case index
  1615.        when 0
  1616.          return 590
  1617.        when 1
  1618.          return 510
  1619.        when 2
  1620.          return 430
  1621.        when 3
  1622.          return 350
  1623.        end
  1624.     else   
  1625.    
  1626.     return 430
  1627.    end
  1628.   end  
  1629.   
  1630.   #========================================================================
  1631.   #★定义角色战斗图 Z 坐标
  1632.   #========================================================================   
  1633.   def screen_z
  1634.      if self.index != nil
  1635.       return 4 - self.index
  1636.     else
  1637.       return 0
  1638.     end
  1639.   end
  1640.   
  1641.   

  1642.   
  1643.   def use_sprite?
  1644.     return true
  1645.   end
  1646.   
  1647. end#class




  1648. #==========================================================
  1649. #★模块定义
  1650. #==========================================================
  1651.   module RPG
  1652.   class BaseItem
  1653.     def animation2_id
  1654.       return @note != nil ? @note.to_i : 0
  1655.     end
  1656.   end  
  1657.    class Enemy
  1658.      def animation1_id
  1659.        animation1_id = @note.split(/,/)[0]
  1660.        return animation1_id != nil ? animation1_id.to_i : 0
  1661.      end
  1662.      def animation2_id
  1663.        animation2_id = @note.split(/,/)[1]
  1664.        return animation2_id != nil ? animation2_id.to_i : 0
  1665.      end
  1666.     end
  1667.    
  1668.   end
  1669.   
  1670.   
  1671. #======================================================
  1672. #★精灵类主模块_伤害部分的添加
  1673. #======================================================
  1674. class Sprite_Base < Sprite
  1675.   def initialize(viewport = nil)
  1676.     super(viewport)
  1677.     @use_sprite = true         
  1678.     @animation_duration = 0     
  1679.     #=============
  1680.     @_damage_duration = 0
  1681.     #=============
  1682.   end
  1683. alias oldupdate update
  1684.   def update
  1685.     oldupdate
  1686.     #================
  1687.     damge_update
  1688.     #================

  1689.   end

  1690. alias olddispose dispose
  1691.    def dispose
  1692.      olddispose
  1693.      
  1694.     #===============
  1695.     dispose_damage
  1696.     #===============
  1697.    end
  1698.   
  1699. #==========================================================================
  1700. #★定义伤害处理
  1701. #==========================================================================

  1702.    def damage(value, critical,type = 0)
  1703.       dispose_damage
  1704.       if value.is_a?(Numeric)
  1705.         damage_string = value.abs.to_s
  1706.       else
  1707.         damage_string = value.to_s
  1708.       end
  1709.       bitmap = Bitmap.new(160, 48)
  1710.       bitmap.font.name = "黑体"
  1711.       bitmap.font.size = 25
  1712.       bitmap.font.color.set(0, 0, 0)
  1713.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  1714.       bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
  1715.       bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
  1716.       bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
  1717.       if value.is_a?(Numeric) and value < 0
  1718.         case type
  1719.          when 0
  1720.            bitmap.font.color.set(176, 255, 144)
  1721.          when 1
  1722.            bitmap.font.color.set(0,100,255)
  1723.          end  
  1724.       else
  1725.         case type
  1726.         when 0
  1727.         bitmap.font.color.set(255, 255, 255)
  1728.         when 1
  1729.           bitmap.font.color.set(200,0,185)
  1730.         end  
  1731.       end
  1732.       
  1733.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  1734.       if critical and type == 0
  1735.         bitmap.font.size = 18
  1736.         bitmap.font.color.set(0, 0, 0)
  1737.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  1738.         bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
  1739.         bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
  1740.         bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
  1741.         bitmap.font.color.set(255, 255, 255)
  1742.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  1743.       end
  1744.       @_damage_sprite = ::Sprite.new(self.viewport)
  1745.       @_damage_sprite.bitmap = bitmap
  1746.       @_damage_sprite.ox = 80
  1747.       @_damage_sprite.oy = 20
  1748.       @_damage_sprite.x = self.x
  1749.       @_damage_sprite.y = self.y - self.oy / 2
  1750.       @_damage_sprite.z = 3000
  1751.       @_damage_duration = 40
  1752.     end
  1753.    
  1754.     #===================================================
  1755.     #
  1756.     #===================================================
  1757.     def dispose_damage
  1758.       if @_damage_sprite != nil
  1759.         @_damage_sprite.bitmap.dispose
  1760.         @_damage_sprite.dispose
  1761.         @_damage_sprite = nil
  1762.         @_damage_duration = 0
  1763.       end
  1764.     end
  1765.     #=============================================
  1766.     #
  1767.     #=============================================
  1768.     def damge_update
  1769.        if @_damage_duration > 0
  1770.         @_damage_duration -= 1
  1771.         case @_damage_duration
  1772.         when 38..39
  1773.           @_damage_sprite.y -= 4
  1774.         when 36..37
  1775.           @_damage_sprite.y -= 2
  1776.         when 34..35
  1777.           @_damage_sprite.y += 2
  1778.         when 28..33
  1779.           @_damage_sprite.y += 4
  1780.         end
  1781.         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  1782.         if @_damage_duration == 0
  1783.           dispose_damage
  1784.         end
  1785.       end
  1786.    end
  1787.   
  1788.   

  1789. end#class
  1790. #=======================================================
  1791. #★战斗经验、金钱、物品提示窗口
  1792. #=======================================================
  1793. class Window_egi<Window_Base
  1794. #====================================
  1795. #●初始化
  1796. #====================================
  1797. def initialize(exp, gold,item)
  1798.    
  1799.    
  1800.     @exp=exp
  1801.     @gold=gold
  1802.     @item=item
  1803.     @item_name = {}
  1804.     n=0
  1805.     m=0
  1806.     if @item != nil
  1807.      for itn in @item
  1808.       if @item_name[itn.name]==nil
  1809.          @item_name[itn.name]=0
  1810.          m+=1
  1811.        end
  1812.      end
  1813.     end
  1814.     if @gold>0
  1815.       m+=1
  1816.     end  
  1817.     super(412,284, 200,32*m+112 )
  1818.     self.opacity = 150
  1819.    
  1820.     refresh
  1821.   end
  1822.   #--------------------------------------------------------------------------
  1823.   # ● 刷新
  1824.   #--------------------------------------------------------------------------
  1825. def refresh
  1826.     self.contents.clear
  1827.     self.contents.font.size=19
  1828.     if @exp > 0
  1829.      self.contents.font.color = Color.new(255,255,0,255)
  1830.      self.contents.draw_text(6,8,64,32,"获得经验:")
  1831.      self.contents.font.color = Color.new(255,255,255,255)
  1832.      self.contents.draw_text(80,8,32,32,sprintf("%4s",@exp))
  1833.    
  1834.    elsif @exp == 0
  1835.      self.contents.font.color = Color.new(255,0,0,0)
  1836.      self.contents.draw_text(6,8,32,32,"没有获得经验!")
  1837.      
  1838.    end
  1839.    if @gold>0
  1840.      self.contents.font.color = Color.new(255,255,0,255)
  1841.      self.contents.draw_text(6,40,64,32,"获得金钱:")
  1842.      self.contents.font.color = Color.new(255,255,255,255)
  1843.      self.contents.draw_text(80,40,32,32,sprintf("%4s",@gold)+Vocab::gold)
  1844.    end  
  1845.    if @item_name.size != 0
  1846.    self.contents.font.size = 20
  1847.    self.contents.font.color = Color.new(255,255,0)
  1848.    self.contents.draw_text(25,72,64,32,"获得物品")
  1849.    i=0
  1850.    for itn in @item
  1851.      if @item_name[itn.name] == 0
  1852.        draw_icon(itn.icon_index ,6 ,106+i*32 , true)
  1853.        i+=1
  1854.      end  
  1855.      @item_name[itn.name]+=1
  1856.    end  
  1857.    i=0
  1858.    self.contents.font.size = 18
  1859.    self.contents.font.color = Color.new(255,255,255,255)
  1860.    for itn in @item_name
  1861.      self.contents.draw_text(30,106+i*32,64,32,itn[0].to_s + " × "+itn[1].to_s)
  1862.      i+=1
  1863.    end
  1864.    end
  1865.   
  1866.    
  1867.    
  1868. end
  1869.    
  1870.    
  1871. end#class  

  1872. module Cache
  1873.   def self.battleback(filename)
  1874.      load_bitmap("Graphics/Battlebacks/", filename)
  1875.    end   
  1876. end   
  1877.   
  1878. #=====================================================
  1879. #添加战斗背景的相关定义
  1880. #=====================================================
  1881. class Game_Map
  1882.   attr_accessor :name   
  1883.     def setup(map_id)
  1884.     @map_id = map_id
  1885.     @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
  1886.     @mapinfo = load_data("Data/MapInfos.rvdata")
  1887.     #============================
  1888.     @name = @mapinfo[@map_id].name
  1889.     #============================
  1890.     @display_x = 0
  1891.     @display_y = 0
  1892.     @passages = $data_system.passages
  1893.     referesh_vehicles
  1894.     setup_events
  1895.     setup_scroll
  1896.     setup_parallax
  1897.     @need_refresh = false
  1898.    end #class
  1899.   
  1900.   
  1901.    def area(old_name,new_name)
  1902.   
  1903.     for area in  $data_areas.values
  1904.       if area.name == old_name and area.map_id == @map_id
  1905.         area.name == new_name
  1906.       end
  1907.     end
  1908.   end  
  1909. end #class

  1910. class Spriteset_Battle

  1911.   def create_battleback
  1912.      source = $game_temp.background_bitmap
  1913.      bitmap = Bitmap.new(1024, 768)
  1914.      bitmap.blt(0,0,source,source.rect)
  1915.      @battleback_sprite = Sprite.new(@viewport1)
  1916.      @battleback_sprite.bitmap = bitmap
  1917.      @battleback_sprite.ox = 272
  1918.      @battleback_sprite.oy = 208
  1919.      @battleback_sprite.x = 260
  1920.      @battleback_sprite.y = 208
  1921.    end
  1922.   alias oldcreate_battlefloor create_battlefloor
  1923.   def create_battlefloor
  1924.    oldcreate_battlefloor
  1925.    @battlefloor_sprite.opacity = 0
  1926.   end
  1927. end#class

复制代码
感谢各位的帮助!

点评

必须上工程才能解决。  发表于 2013-4-25 19:22

评分

参与人数 1星屑 -5 收起 理由
怪蜀黍 -5 一帖多问

查看全部评分

Lv1.梦旅人

彭格列I世

梦石
0
星屑
168
在线时间
566 小时
注册时间
2012-8-17
帖子
1614
2
发表于 2013-4-25 18:31:34 | 只看该作者
二次元是不可以和三次元混在一起的...你这样是侮辱二次元!!

评分

参与人数 1星屑 -10 收起 理由
怪蜀黍 -10 被举报为纯水

查看全部评分


赏金猎人 -- Bounty Hunter 预告贴(点击图片或者这里进入
交流群组:321810846

小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
小刀的论坛!!点击这里!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2012-11-7
帖子
44
3
 楼主| 发表于 2013-4-25 20:43:58 | 只看该作者
小小刀886 发表于 2013-4-25 18:31
二次元是不可以和三次元混在一起的...你这样是侮辱二次元!!

= =随手找了张背景图而已。。。汗。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2012-11-7
帖子
44
4
 楼主| 发表于 2013-4-25 21:13:36 | 只看该作者
http://pan.baidu.com/share/link?shareid=407252&uk=1695016926


= =传到网盘了。。。
发两个问题真是太抱歉了- -
跪求大神帮改。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-23 02:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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