Project1

标题: 求三个脚本 [打印本页]

作者: 霸下    时间: 2010-8-19 20:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 六祈    时间: 2010-8-19 20:30
回复 霸下 的帖子
还是那句话,你要自己会用搜索,第二个其实就是cp制
作者: 497406594    时间: 2010-8-19 20:31
第二个脚本  感觉像RTAB脚本比较有用
第三个 可以自己去搜下

第一个无能为力
作者: 霸下    时间: 2010-8-19 20:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: 霸下    时间: 2010-8-19 20:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: Wind2010    时间: 2010-8-19 20:37
本帖最后由 Wind2010 于 2010-8-19 20:39 编辑

这是第一个脚本
  1. #==============================================================================
  2. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  3. #==============================================================================


  4. # ————————————————————————————————————
  5. # 本脚本来自[url]www.66rpg.com[/url],转载请保留此信息
  6. # ————————————————————————————————————

  7. #==============================================================================
  8. # ■ Game_Player
  9. #==============================================================================
  10. class Game_Player
  11.   #--------------------------------------------------------------------------
  12.   # ● フレーム更新
  13.   #--------------------------------------------------------------------------
  14.   alias old_update update
  15.   def update
  16.     unless moving? or $game_system.map_interpreter.running? or
  17.       @move_route_forcing or $game_temp.message_window_showing
  18.       if Input.press?(Input::C)
  19.       # 速度変更
  20.         @move_speed = 4
  21.       else
  22.         @move_speed = 3
  23.       end
  24.     end
  25.     old_update
  26.   end
  27. end

  28. #==============================================================================
  29. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  30. #==============================================================================
复制代码

作者: 霸下    时间: 2010-8-19 20:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: Wind2010    时间: 2010-8-19 20:51
加点脚本
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. # 设定说明:
  5. # 在数据库的角色一栏里的名称加上如下的信息,如:
  6. #
  7. # 阿尔西斯,9999,5555,999,55,60,36
  8. #          HP   SP   力  巧 速 魔
  9. #
  10. # 如果某一项不想受限制,则可输入
  11. #
  12. # 阿尔西斯,,5555,,,60,36
  13. #
  14. # 也就是只需要把受限的属性最大值写出即可
  15. #
  16. # 还有就是,如果都不受限……(那似乎就没必要用这个了)
  17. # 也要在名字后面加上6个半角的逗号……
  18. #
  19. # 阿尔西斯,,,,,,
  20. #
  21. # 这样就可以一直加下去……上万也没问题,不过前提是在相关的类中已经扩大上限。
  22. # 默认的 HP SP 最大为9999 其余四项为999。

  23. module RPG
  24. class Actor
  25.    def name
  26.      name = @name.split(/,/)[0]
  27.      return name != nil ? name : ''
  28.    end
  29.    
  30.    def max_hp_stars
  31.      max_hp = @name.split(/,/)[1]
  32.      return max_hp != nil ? max_hp.to_i : 0
  33.    end
  34.    
  35.    def max_sp_stars
  36.      max_sp = @name.split(/,/)[2]
  37.      return max_sp != nil ? max_sp.to_i : 0
  38.    end
  39.    
  40.    def max_str_stars
  41.      max_str = @name.split(/,/)[3]
  42.      return max_str != nil ? max_str.to_i : 0
  43.    end
  44.    
  45.    def max_dex_stars
  46.      max_dex = @name.split(/,/)[4]
  47.      return max_dex != nil ? max_dex.to_i : 0
  48.    end
  49.    
  50.    def max_agi_stars
  51.      max_agi = @name.split(/,/)[5]
  52.      return max_agi != nil ? max_agi.to_i : 0
  53.    end
  54.    
  55.    def max_int_stars
  56.      max_int = @name.split(/,/)[6]
  57.      return max_int != nil ? max_int.to_i : 0
  58.    end
  59. end
  60. end

  61. # 脚本使用设定:

  62. LEVEL_UP_POINT = 5  # 每升一级所增加的点数
  63. LEVEL_UP_VARIABLE = 100  # 储存角色点数的变量编号与角色id编号的差值
  64.                         # 默认情况 = 100,
  65.                         # 则是数据库里1号角色的加点数存于101号变量
  66.                         # 3号角色的加点数存于103号变量。
  67.                         # 你可以直接操作变量赠与角色可分配点数

  68. # 每增加一次点数,各项能力值的变化:357-410行
  69.                         
  70. # 使用方法介绍:

  71. # 本脚本不会取代原有升级功能,只是一个附加功能。也就是说,默认的升级还在,但可以用
  72. # 这个功能手动追加点数。如果你想纯粹使用手动加点(而升级不提升能力),只要把数据库中
  73. # 角色升级能力,1-99级全部等于一个相同数值就行了。

  74. # 呼唤加点场景的方法:$scene = Scene_Lvup.new(角色编号,返回菜单编号)。
  75. # 默认都是0号

  76. # 加点场景中,page up,page down换人,如果想加点完毕后返回地图,
  77. # 464行$scene = Scene_Menu.new(0)改为$scene = Scene_Map.new

  78. # 推荐脚本搭配:魔法商店脚本,两者结合,制作自由型RPG

  79. #==============================================================================
  80. # ■ Window_Command
  81. #------------------------------------------------------------------------------
  82. #  一般的命令选择行窗口。(追加定义)
  83. #==============================================================================
  84. class Window_Command < Window_Selectable
  85. #--------------------------------------------------------------------------
  86. # ● 项目有效化
  87. #     index : 项目编号
  88. #--------------------------------------------------------------------------
  89. def able_item(index)
  90.    draw_item(index, normal_color)
  91. end
  92. end
  93. #==============================================================================
  94. # ■ Game_Actor
  95. #------------------------------------------------------------------------------
  96. #  处理角色的类。(再定义)
  97. #==============================================================================
  98. class Game_Actor < Game_Battler
  99. #--------------------------------------------------------------------------
  100. # ● 更改 EXP
  101. #     exp : 新的 EXP
  102. #--------------------------------------------------------------------------
  103. def exp=(exp)

  104.    # 升级
  105.    if @actor_id > 20 and $game_actors[self.zhuren].level + 6 <= self.level
  106.      @exp = @exp
  107.      return
  108.    else
  109.      @exp = [[exp, 9999999].min, 0].max
  110.    end
  111.    
  112.    
  113.    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  114.      @level += 1
  115.      @qianli += 5

  116.      # 增加4点可自由分配的点数
  117.      $game_variables[self.id + LEVEL_UP_VARIABLE] += LEVEL_UP_POINT
  118.      # 学会特技
  119.      for j in $data_classes[@class_id].learnings
  120.        if j.level == @level
  121.          learn_skill(j.skill_id)
  122.        end
  123.      end
  124.      if @actor_id > 20 and $game_actors[self.zhuren].level + 6 <= self.level
  125.        break
  126.      end
  127.    end
  128.    # 降级
  129.    #if @actor_id == 88
  130.    #  p $game_actors[self.zhuren].level
  131.    #  p self.level
  132.    #end
  133.    if @actor_id > 20 and $game_actors[self.zhuren].level + 6 <= self.level
  134.      @exp = @exp
  135.      return
  136.    end
  137.    while @exp < @exp_list[@level]
  138.     # p self.name
  139.      @level -= 1
  140.      @qianli -= 5
  141.      @qianli = [@qianli, 0].max
  142.    end
  143.    # 修正当前的 HP 与 SP 超过最大值
  144.    @hp = [@hp, self.maxhp].min
  145.    @sp = [@sp, self.maxsp].min
  146. end
  147. end
  148. #==============================================================================
  149. # ■ Window_Base
  150. #------------------------------------------------------------------------------
  151. #  游戏中全部窗口的超级类(追加定义)
  152. #==============================================================================
  153. class Window_Base < Window
  154. #--------------------------------------------------------------------------
  155. # ● 描绘 HP
  156. #     actor : 角色
  157. #     x     : 描画目标 X 坐标
  158. #     y     : 描画目标 Y 坐标
  159. #     width : 描画目标的宽
  160. #--------------------------------------------------------------------------
  161. def draw_actor_hp_lvup(actor, x, y)
  162.    self.contents.font.color = system_color
  163.    self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.hp)
  164.    if $temp_hp == 0
  165.      self.contents.font.color = normal_color
  166.      self.contents.draw_text(x + 120 , y, 48, 32, actor.maxhp.to_s, 2)
  167.    else
  168.      maxhp = actor.maxhp + $temp_hp
  169.      self.contents.font.color = Color.new(255, 128, 128, 255)
  170.      self.contents.draw_text(x + 120 , y, 48, 32, maxhp.to_s ,2)
  171.      self.contents.font.color = normal_color      
  172.      self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  173.      if $temp_hp >=0
  174.        self.contents.font.color = Color.new(255, 128, 128, 255)
  175.        self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  176.      else
  177.        self.contents.font.color = Color.new(255,255,0,255)
  178.        self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  179.      end
  180.      self.contents.draw_text(x + 200, y, 36, 32, $temp_hp.to_s, 2)
  181.      self.contents.font.color = normal_color
  182.      self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  183.    end
  184. end
  185. #--------------------------------------------------------------------------
  186. # ● 描绘 SP
  187. #     actor : 角色
  188. #     x     : 描画目标 X 坐标
  189. #     y     : 描画目标 Y 坐标
  190. #     width : 描画目标的宽
  191. #--------------------------------------------------------------------------
  192. def draw_actor_sp_lvup(actor, x, y)
  193.    self.contents.font.color = system_color
  194.    self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.sp)
  195.    if $temp_sp == 0
  196.      self.contents.font.color = normal_color
  197.      self.contents.draw_text(x + 120 , y, 48, 32, actor.maxsp.to_s, 2)
  198.    else
  199.      maxsp = actor.maxsp + $temp_sp
  200.      self.contents.font.color = Color.new(255, 128, 128, 255)
  201.      self.contents.draw_text(x + 120 , y, 48, 32, maxsp.to_s ,2)
  202.      self.contents.font.color = normal_color      
  203.      self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  204.      if $temp_sp >=0
  205.        self.contents.font.color = Color.new(255, 128, 128, 255)
  206.        self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  207.      else
  208.        self.contents.font.color = Color.new(255,255,0,255)
  209.        self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  210.      end
  211.      self.contents.draw_text(x + 200, y, 36, 32, $temp_sp.to_s, 2)
  212.      self.contents.font.color = normal_color
  213.      self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  214.      


  215.    end
  216. end
  217. #--------------------------------------------------------------------------
  218. # ● 描绘能力值
  219. #     actor : 角色
  220. #     x     : 描画目标 X 坐标
  221. #     y     : 描画目标 Y 坐标
  222. #     type  : 能力值种类 (0~4)
  223. #--------------------------------------------------------------------------
  224. def draw_actor_lvup(actor, x, y, type)   
  225.    # 定义数字颜色
  226.    lvup = normal_color
  227.    upcolor = Color.new(255, 128, 128, 255)
  228.    self.contents.font.color = normal_color   
  229.    case type
  230.    when 0
  231.      parameter_name = $data_system.words.str
  232.      parameter_value = actor.str
  233.      parameter_value_temp = parameter_value + $temp_str
  234.      if $temp_str != 0
  235.        lvup = upcolor
  236.        self.contents.draw_text(x + 256, y, 16, 32, "(")
  237.        if $temp_str >= 0
  238.          self.contents.font.color = lvup
  239.          self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  240.        else
  241.          self.contents.font.color = Color.new(255,255,0,255)
  242.          self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  243.        end        
  244.        self.contents.draw_text(x + 272, y, 80, 32, $temp_str.abs.to_s,1)
  245.        self.contents.font.color = normal_color
  246.        self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  247.      end
  248.    when 1
  249.      parameter_name = $data_system.words.dex
  250.      parameter_value = actor.dex
  251.      parameter_value_temp = parameter_value + $temp_dex
  252.      if $temp_dex != 0
  253.        lvup = upcolor
  254.        self.contents.draw_text(x + 256, y, 16, 32, "(")
  255.        if $temp_dex >= 0
  256.          self.contents.font.color = lvup
  257.          self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  258.        else
  259.          self.contents.font.color = Color.new(255,255,0,255)
  260.          self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  261.        end        
  262.        self.contents.draw_text(x + 272, y, 80, 32, $temp_dex.abs.to_s,1)
  263.        self.contents.font.color = normal_color
  264.        self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  265.       
  266.    
  267.       
  268.       
  269.      end
  270.    when 2
  271.      parameter_name = $data_system.words.agi
  272.      parameter_value = actor.agi
  273.      parameter_value_temp = parameter_value + $temp_agi
  274.      if $temp_agi != 0
  275.        lvup = upcolor
  276.        self.contents.draw_text(x + 256, y, 16, 32, "(")
  277.        if $temp_agi >= 0
  278.          self.contents.font.color = lvup
  279.          self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  280.        else
  281.          self.contents.font.color = Color.new(255,255,0,255)
  282.          self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  283.        end        
  284.        self.contents.draw_text(x + 272, y, 80, 32, $temp_agi.abs.to_s,1)
  285.        self.contents.font.color = normal_color
  286.        self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  287.      end
  288.    when 3
  289.      parameter_name = $data_system.words.int
  290.      parameter_value = actor.int
  291.      parameter_value_temp = parameter_value + $temp_int
  292.      if $temp_int != 0
  293.        lvup = upcolor
  294.        self.contents.draw_text(x + 256, y, 16, 32, "(")
  295.        if $temp_int >= 0
  296.          self.contents.font.color = lvup
  297.          self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  298.        else
  299.          self.contents.font.color = Color.new(255,255,0,255)
  300.          self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  301.        end        
  302.        self.contents.draw_text(x + 272, y, 80, 32, $temp_int.abs.to_s,1)
  303.        self.contents.font.color = normal_color
  304.        self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  305.      end
  306.    when 4
  307.      parameter_name = "剩余点数"
  308.      parameter_value = $point
  309.      if $point != 0
  310.        lvup = upcolor
  311.      end
  312.    when 5
  313.      parameter_name = $data_system.words.pdef
  314.      parameter_value = actor.pdef
  315.      parameter_value_temp = parameter_value + $temp_dex
  316.      if $temp_dex != 0
  317.        lvup = upcolor
  318.        self.contents.draw_text(x + 256, 96, 16, 32, "(")
  319.        if $temp_dex >= 0
  320.          self.contents.font.color = lvup
  321.          self.contents.draw_text(x + 272, 96, 80, 32, "+",0)
  322.        else
  323.          self.contents.font.color = Color.new(255,255,0,255)
  324.          self.contents.draw_text(x + 272, 96, 80, 32, "-",0)
  325.        end        
  326.        self.contents.draw_text(x + 272, 96, 80, 32, $temp_dex.abs.to_s,1)
  327.        self.contents.font.color = normal_color
  328.        self.contents.draw_text(x + 272, 96, 80, 32, ")", 2)
  329.       
  330.    
  331.       
  332.       
  333.      end

  334.     end

  335.    
  336.    self.contents.font.color = system_color
  337.    self.contents.draw_text(x, y, 120, 32, parameter_name)
  338.    self.contents.font.color = normal_color
  339.    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s)   
  340.    if type != 4
  341.      self.contents.draw_text(x + 150, y, 36, 32, "→")
  342.    end  
  343.    self.contents.font.color = lvup
  344.    self.contents.draw_text(x + 180, y, 60, 32, parameter_value_temp.to_s)
  345.    self.contents.font.color = normal_color        
  346. end
  347. end
  348. #==============================================================================
  349. # ■ Window_lvup
  350. #------------------------------------------------------------------------------
  351. #  显示升级状态窗口。
  352. #==============================================================================
  353. class Window_Lvup < Window_Base
  354. #--------------------------------------------------------------------------
  355. # ● 初始化对像
  356. #     actor : 角色
  357. #--------------------------------------------------------------------------
  358. def initialize(actor)
  359.    super(0, 0, 512, 320)
  360.    self.contents = Bitmap.new(width - 32, height - 32)
  361.    @actor = actor
  362.    refresh
  363. end  
  364. #--------------------------------------------------------------------------
  365. # ● 刷新
  366. #--------------------------------------------------------------------------
  367. def refresh
  368.    self.contents.clear
  369.    draw_actor_graphic(@actor, 40, 112)
  370.    draw_actor_name(@actor, 4, 0)
  371.    draw_actor_class(@actor, 4 + 144, 0)
  372.    draw_actor_level(@actor, 96, 32)
  373.    draw_actor_state(@actor, 96, 64)   
  374.    draw_actor_hp_lvup(@actor, 96+128, 32)
  375.    draw_actor_sp_lvup(@actor, 96+128, 64)
  376.    draw_actor_lvup(@actor, 96, 128, 0)
  377.    draw_actor_lvup(@actor, 96, 160, 1)
  378.    draw_actor_lvup(@actor, 96, 192, 2)
  379.    draw_actor_lvup(@actor, 96, 224, 3)
  380.    draw_actor_lvup(@actor, 96, 256, 4)
  381.    draw_actor_lvup(@actor, 96, 96, 5)
  382. end
  383. end
  384. #==============================================================================
  385. # ■ Window_Help
  386. #------------------------------------------------------------------------------
  387. #  特技及物品的说明、角色的状态显示的窗口。
  388. #==============================================================================
  389. class Window_Lvup_Help < Window_Base
  390. #--------------------------------------------------------------------------
  391. # ● 初始化对像
  392. #--------------------------------------------------------------------------
  393. def initialize
  394.    super(0, 320, 640, 160)
  395.    self.contents = Bitmap.new(width - 32, height - 32)
  396.    @test = "" #——这个东西用来检测,节约内存专用
  397. end  
  398. #--------------------------------------------------------------------------
  399. # ● 设置文本
  400. #--------------------------------------------------------------------------
  401. def lvup_text(text1, text2 = nil, text3 = nil, text4 = nil)
  402.    if @test != text1
  403.      @test = text1
  404.    else
  405.      return
  406.    end   
  407.    self.contents.clear
  408.    self.contents.font.color = normal_color
  409.    self.contents.draw_text(4, 0, self.width - 40, 32, text1)
  410.    if text2 != nil
  411.      self.contents.draw_text(4 , 32, self.width - 40, 32, text2)
  412.    end
  413.    self.contents.font.size -= 4
  414.    if text3 != nil
  415.      self.contents.draw_text(4 , 64, self.width - 40, 32, text3)
  416.    end
  417.    if text4 != nil
  418.      self.contents.draw_text(4 , 96, self.width - 40, 32, text4)
  419.    end
  420.    self.contents.font.size += 4
  421. end
  422. end
  423. #==============================================================================
  424. # ■ Scene_lvup
  425. #------------------------------------------------------------------------------
  426. #  处理升级画面的类。
  427. #==============================================================================
  428. class Scene_Lvup
  429. #--------------------------------------------------------------------------
  430. # ● 初始化对像
  431. #     actor_index : 角色索引
  432. #     menu_index : 选项起始位置
  433. #--------------------------------------------------------------------------
  434. def initialize(actor_index = 0 , menu_index = 0)
  435.    @actor_index = actor_index
  436.    @menu_index = menu_index
  437. end
  438. #--------------------------------------------------------------------------
  439. # ● 主处理
  440. #--------------------------------------------------------------------------
  441. def main
  442.   s1 = "增加体力"
  443.     s2 = "增加力量"
  444.     s3 = "增加罡气"
  445.     s4 = "增加敏捷"
  446.     s5 = "增加仙力"
  447.    s6 = "确认加点"
  448.    s7 = "点数重置"
  449.    @command_window = Window_Command.new(128, [s1, s2, s3, s4, s5, s6, s7])
  450.    @command_window.index = @menu_index
  451.    # 获取角色
  452.    @actor = $game_party.actors[@actor_index]
  453.    # 将角色的剩余点数带入
  454.    $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  455.    # 初始化临时量
  456.    $temp_str = 0
  457.    $temp_dex = 0
  458.    $temp_pdef = 0
  459.    $temp_agi = 0
  460.    $temp_int = 0
  461.    $temp_hp = 0
  462.    $temp_sp = 0
  463.    #=========================================================================
  464.    # 特别提示:这些设置也可以使用小数,但是可能出现0值意外错误
  465.    #  (各种编程语言都有这种意外),建议还是使用整数,正负不限
  466.    #=========================================================================
  467.     # 每提升一次力量,提升多少附加能力
  468.     #=========================================================================
  469.     @str_hp = 0     # 每提升一次力量附加提升多少HP
  470.     @str_sp =  0   # 每提升一次力量附加提升多少SP
  471.     @str_dex = 0   # 每提升一次力量附加提升多少灵巧
  472.     @str_agi = 0    # 每提升一次力量附加提升多少速度
  473.     @str_int = 0    # 每提升一次力量附加提升多少魔力
  474.     @str_str = 1   # 每提升一次力量附加提升多少力量
  475.     #=========================================================================
  476.     # 每提升一次灵巧,提升多少附加能力
  477.     #=========================================================================
  478.     @dex_hp = 0     # 每提升一次灵巧附加提升多少HP
  479.     @dex_sp = 0    # 每提升一次灵巧附加提升多少SP
  480.     @dex_str = 0   # 每提升一次灵巧附加提升多少力量
  481.     @dex_agi = 0    # 每提升一次灵巧附加提升多少速度
  482.     @dex_int = 0    # 每提升一次灵巧附加提升多少魔力
  483.     @dex_dex = 1.5   # 每提升一次灵巧附加提升多少灵巧
  484.     #=========================================================================
  485.     # 每提升一次速度,提升多少附加能力
  486.     #=========================================================================
  487.     @agi_hp = 0     # 每提升一次速度附加提升多少HP
  488.     @agi_sp = 0     # 每提升一次速度附加提升多少SP
  489.     @agi_str = 0    # 每提升一次速度附加提升多少力量
  490.     @agi_dex = 0    # 每提升一次速度附加提升多少灵巧
  491.     @agi_int = 0   # 每提升一次速度附加提升多少魔力
  492.     @agi_agi = 1   # 每提升一次速度附加提升多少速度
  493.     #=========================================================================
  494.     # 每提升一次魔力,提升多少附加能力
  495.     #=========================================================================
  496.     @int_hp = 0     # 每提升一次魔力附加提升多少HP
  497.     @int_sp = 7    # 每提升一次魔力附加提升多少SP
  498.     @int_str = 0  # 每提升一次魔力附加提升多少力量
  499.     @int_dex = 0   # 每提升一次魔力附加提升多少灵巧
  500.     @int_agi = 0   # 每提升一次魔力附加提升多少速度
  501.     @int_int = 1   # 每提升一次魔力附加提升多少魔力
  502.     #=========================================================================
  503.     # 每提升一次体力,提升多少附加能力
  504.     #=========================================================================
  505.     @hp = 10       # 每提升一次体力提升多少HP
  506.     @sp = 0       # 每提升一次体力提升多少SP
  507.     @hp_str = 0   # 每提升一次体力提升多少力量
  508.     @hp_dex = 0   # 每提升一次体力提升多少速度
  509.     @hp_agi = 0   # 每提升一次体力提升多少灵巧
  510.     @hp_int = 0   # 每提升一次体力提升多少魔力   
  511.     # 定义说明文字
  512.     @text_hp_sc = "【提高10点气血上限】"
  513.     @text_str_sc = $data_system.words.str + "【提高1点伤害】"
  514.     @text_dex_sc = $data_system.words.dex + "【提高1.5点防御】【提高物理命中】【提高必杀率】"
  515.     @text_agi_sc = $data_system.words.agi + "【提高1点速度】【提高躲避】"
  516.     @text_int_sc = $data_system.words.int + "【提升7点魔法上限】【提高1点灵力】"
  517.    @text_save = "保存分配情况并返回游戏"
  518.    @text_reset= "重新分配能力点数"
  519.    @text_2 = "每增加一次此项能力值,可以提升能力值"
  520.    @text_hp = "最大" + $data_system.words.hp + "值"
  521.    @text_sp = "最大" + $data_system.words.sp + "值"
  522.    @text_str = "最大" + $data_system.words.str + "值"
  523.    @text_dex = "最大" + $data_system.words.dex + "值"
  524.    @text_agi = "最大" + $data_system.words.agi + "值"
  525.    @text_int = "最大" + $data_system.words.int + "值"
  526.    s_disable
  527.    # 生成状态窗口
  528.    @lvup_window = Window_Lvup.new(@actor)
  529.    @lvup_window.x = 128
  530.    @lvup_window.y = 0   
  531.    # 生成帮助窗口并初始化帮助文本
  532.    @help_window = Window_Lvup_Help.new   
  533.    # 执行过渡
  534.    Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition)
  535.    # 主循环
  536.    loop do
  537.      # 刷新游戏画面
  538.      Graphics.update
  539.      # 刷新输入信息
  540.      Input.update
  541.      # 刷新画面
  542.      update
  543.      # 如果切换画面就中断循环
  544.      if $scene != self
  545.        break
  546.      end
  547.    end
  548.    # 准备过渡
  549.    Graphics.freeze
  550.    # 释放窗口
  551.    @command_window.dispose
  552.    @lvup_window.dispose
  553.    @help_window.dispose
  554. end
  555. #--------------------------------------------------------------------------
  556. # ● 刷新画面
  557. #--------------------------------------------------------------------------
  558. def update
  559.    # 刷新窗口
  560.    @command_window.update
  561.    # 选项明暗判断(因为太消耗资源,所以屏蔽掉了)
  562.    s_disable
  563.    @lvup_window.update
  564.    #=============================================================
  565.    # 按下 B 键的情况下
  566.    #=============================================================
  567.    if Input.trigger?(Input::B)
  568.      # 演奏取消 SE
  569.      $game_system.se_play($data_system.cancel_se)
  570.      # 切换到地图画面
  571.      #$scene = Scene_Map.new
  572.      $scene = Scene_Menu.new(6)
  573.      return
  574.    end
  575.    #=============================================================
  576.    # 按下 C 键的情况下
  577.    #=============================================================
  578.    if Input.trigger?(Input::C)      
  579.      if @command_window.index == 5
  580.          # 演奏确定 SE
  581.        $game_system.se_play($data_system.decision_se)
  582.        # 将角色的剩余点数带回
  583.        $game_variables[@actor.id + LEVEL_UP_VARIABLE] = $point
  584.        # 将角色点数实际加上
  585.        @actor.str += $temp_str
  586.        @actor.dex += $temp_dex
  587.        @actor.agi += $temp_agi
  588.        @actor.int += $temp_int
  589.        @actor.maxhp += $temp_hp
  590.        @actor.maxsp += $temp_sp
  591.        @actor.maxhp = $data_actors[@actor.id].max_hp_stars if @actor.maxhp >= $data_actors[@actor.id].max_hp_stars and $data_actors[@actor.id].max_hp_stars != 0
  592.        @actor.maxsp = $data_actors[@actor.id].max_sp_stars if @actor.maxsp >= $data_actors[@actor.id].max_sp_stars and $data_actors[@actor.id].max_sp_stars != 0
  593.        @actor.str = $data_actors[@actor.id].max_str_stars if @actor.str >= $data_actors[@actor.id].max_str_stars and $data_actors[@actor.id].max_str_stars != 0
  594.        @actor.dex = $data_actors[@actor.id].max_dex_stars if @actor.dex >= $data_actors[@actor.id].max_dex_stars and $data_actors[@actor.id].max_dex_stars != 0
  595.        @actor.agi = $data_actors[@actor.id].max_agi_stars if @actor.agi >= $data_actors[@actor.id].max_agi_stars and $data_actors[@actor.id].max_agi_stars != 0
  596.        @actor.int = $data_actors[@actor.id].max_int_stars if @actor.int >= $data_actors[@actor.id].max_int_stars and $data_actors[@actor.id].max_int_stars != 0
  597.        # 切换到地图画面
  598.        $scene = Scene_Lvup.new(@actor_index)
  599.        return
  600.      end
  601.      if @command_window.index == 6
  602.          # 演奏确定 SE
  603.        $game_system.se_play($data_system.cancel_se)
  604.          # 将角色的剩余点数带入
  605.        $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  606.          # 初始化临时量
  607.        $temp_str = 0
  608.        $temp_dex = 0
  609.        $temp_agi = 0
  610.        $temp_int = 0
  611.        $temp_hp = 0
  612.        $temp_sp = 0
  613.        @lvup_window.refresh
  614.        return
  615.      end
  616.      if $point == 0
  617.        # 演奏冻结 SE
  618.        $game_system.se_play($data_system.buzzer_se)
  619.        return
  620.      end
  621.      case @command_window.index
  622.      when 0
  623.        if flag(0)
  624.          $game_system.se_play($data_system.buzzer_se)
  625.          return
  626.        end
  627.        # 演奏确定 SE
  628.        $game_system.se_play($data_system.decision_se)
  629.        $temp_hp += flag(0) ? 0 : @hp
  630.        $temp_sp += flag(5) ? 0 : @sp
  631.        $temp_str += flag(1) ? 0 : @hp_str
  632.        $temp_dex += flag(2) ? 0 : @hp_dex
  633.        $temp_agi += flag(3) ? 0 : @hp_agi
  634.        $temp_int += flag(4) ? 0 :@hp_int
  635.        judge
  636.        $point -= 1
  637.        @lvup_window.refresh
  638.        s_disable
  639.        return
  640.      when 1
  641.        if flag(1)
  642.          $game_system.se_play($data_system.buzzer_se)
  643.          return
  644.        end
  645.        # 演奏确定 SE
  646.        $game_system.se_play($data_system.decision_se)
  647.        $temp_hp += flag(0) ? 0 : @str_hp
  648.        $temp_sp += flag(5) ? 0 : @str_sp
  649.        $temp_str += flag(1) ? 0 : @str_str
  650.        $temp_dex += flag(2) ? 0 : @str_dex
  651.        $temp_agi += flag(3) ? 0 : @str_agi
  652.        $temp_int += flag(4) ? 0 :@str_int
  653.        judge
  654.        $point -= 1
  655.        @lvup_window.refresh
  656.        s_disable
  657.        return
  658.      when 2
  659.        if flag(2)
  660.          $game_system.se_play($data_system.buzzer_se)
  661.          return
  662.        end
  663.        # 演奏确定 SE
  664.        $game_system.se_play($data_system.decision_se)
  665.        $temp_hp += flag(0) ? 0 : @dex_hp
  666.        $temp_sp += flag(5) ? 0 : @dex_sp
  667.        $temp_str += flag(1) ? 0 : @dex_str
  668.        $temp_dex += flag(2) ? 0 : @dex_dex
  669.        $temp_agi += flag(3) ? 0 : @dex_agi
  670.        $temp_int += flag(4) ? 0 :@dex_int
  671.        judge
  672.        $point -= 1
  673.        @lvup_window.refresh
  674.        s_disable
  675.        return
  676.      when 3
  677.        if flag(3)
  678.          $game_system.se_play($data_system.buzzer_se)
  679.          return
  680.        end
  681.        # 演奏确定 SE
  682.        $game_system.se_play($data_system.decision_se)
  683.        $temp_hp += flag(0) ? 0 : @agi_hp
  684.        $temp_sp += flag(5) ? 0 : @agi_sp
  685.        $temp_str += flag(1) ? 0 : @agi_str
  686.        $temp_dex += flag(2) ? 0 : @agi_dex
  687.        $temp_agi += flag(3) ? 0 : @agi_agi
  688.        $temp_int += flag(4) ? 0 :@agi_int
  689.        judge
  690.        $point -= 1
  691.        @lvup_window.refresh
  692.        s_disable
  693.        return
  694.      when 4
  695.        if flag(4)
  696.          $game_system.se_play($data_system.buzzer_se)
  697.          return
  698.        end
  699.        # 演奏确定 SE
  700.        $game_system.se_play($data_system.decision_se)
  701.        $temp_hp += flag(0) ? 0 : @int_hp
  702.        $temp_sp += flag(5) ? 0 : @int_sp
  703.        $temp_str += flag(1) ? 0 : @int_str
  704.        $temp_dex += flag(2) ? 0 : @int_dex
  705.        $temp_agi += flag(3) ? 0 : @int_agi
  706.        $temp_int += flag(4) ? 0 :@int_int
  707.        judge
  708.        $point -= 1
  709.        @lvup_window.refresh
  710.        s_disable
  711.        return
  712.      end
  713.    end
  714.    #=============================================================
  715.    # 什么都没有按下的情况
  716.    #=============================================================
  717.    case @command_window.index   
  718.    when 0  # 增加体力
  719.      temptext1 = @text_hp + @hp.to_s + "点   " + @text_str + @hp_str.to_s + "点   " + @text_dex + @hp_dex.to_s + "点"
  720.      temptext2 = @text_sp + @sp.to_s + "点   " + @text_agi + @hp_agi.to_s + "点   " + @text_int + @hp_int.to_s + "点"
  721.      @help_window.lvup_text(@text_hp_sc , @text_2 , temptext1 , temptext2)
  722.    when 1  # 增加力量
  723.      temptext1 = @text_hp + @str_hp.to_s + "点   " + @text_str + @str_str.to_s + "点   " + @text_dex + @str_dex.to_s + "点"
  724.      temptext2 = @text_sp + @str_sp.to_s + "点   " + @text_agi + @str_agi.to_s + "点   " + @text_int + @str_int.to_s + "点"
  725.      @help_window.lvup_text(@text_str_sc , @text_2 , temptext1 , temptext2)
  726.    when 2  # 增加灵巧
  727.      temptext1 = @text_hp + @dex_hp.to_s + "点   " + @text_str + @dex_agi.to_s + "点   " + @text_dex + @dex_dex.to_s + "点"
  728.      temptext2 = @text_sp + @dex_sp.to_s + "点   " + @text_agi + @dex_agi.to_s + "点   " + @text_int + @dex_int.to_s + "点"
  729.      @help_window.lvup_text(@text_dex_sc , @text_2 , temptext1 , temptext2)
  730.    when 3  # 增加速度
  731.      temptext1 = @text_hp + @agi_hp.to_s + "点   " + @text_str + @agi_str.to_s + "点   " + @text_dex + @agi_dex.to_s + "点"
  732.      temptext2 = @text_sp + @agi_sp.to_s + "点   " + @text_agi + @agi_agi.to_s + "点   " + @text_int + @agi_int.to_s + "点"
  733.      @help_window.lvup_text(@text_agi_sc , @text_2 , temptext1 , temptext2)
  734.    when 4  # 增加魔力
  735.      temptext1 = @text_hp + @int_hp.to_s + "点   " + @text_str + @int_str.to_s + "点   " + @text_dex + @int_dex.to_s + "点"
  736.      temptext2 = @text_sp + @int_sp.to_s + "点   " + @text_agi + @int_agi.to_s + "点   " + @text_int + @int_int.to_s + "点"
  737.      @help_window.lvup_text(@text_int_sc , @text_2 , temptext1 , temptext2)
  738.    when 5 # 保存设定
  739.      @help_window.lvup_text(@text_save)
  740.    when 6 # 点数重置
  741.      @help_window.lvup_text(@text_reset)     
  742.    end
  743.    #=============================================================
  744.    # 按下R与L换人的情况
  745.    #=============================================================      
  746.    if Input.trigger?(Input::R)
  747.      # 演奏光标 SE
  748.      $game_system.se_play($data_system.cursor_se)
  749.      # 移至下一位角色
  750.      @actor_index += 1
  751.      @actor_index %= $game_party.actors.size
  752.      # 切换到别的状态画面
  753.      $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  754.      return
  755.    end
  756.    # 按下 L 键的情况下
  757.    if Input.trigger?(Input::L)
  758.      # 演奏光标 SE
  759.      $game_system.se_play($data_system.cursor_se)
  760.      # 移至上一位角色
  761.      @actor_index += $game_party.actors.size - 1
  762.      @actor_index %= $game_party.actors.size
  763.      # 切换到别的状态画面
  764.      $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  765.      return
  766.    end
  767. end
  768. #--------------------------------------------------------------------------
  769. # ● 指数超标判断
  770. #--------------------------------------------------------------------------
  771. def flag(i)
  772.    case i
  773.    when 0 # hp
  774.      if $data_actors[@actor.id].max_hp_stars == 0
  775.        return false
  776.      else
  777.        return @actor.maxhp + $temp_hp >= $data_actors[@actor.id].max_hp_stars
  778.      end
  779.    when 1 # str
  780.      if $data_actors[@actor.id].max_str_stars == 0
  781.        return false
  782.      else
  783.        return @actor.str + $temp_str >= $data_actors[@actor.id].max_str_stars
  784.      end
  785.    when 2 # dex
  786.      if $data_actors[@actor.id].max_dex_stars == 0
  787.        return false
  788.      else
  789.        return @actor.dex + $temp_dex >= $data_actors[@actor.id].max_dex_stars
  790.      end
  791.    when 3 # agi
  792.      if $data_actors[@actor.id].max_agi_stars == 0
  793.        return false
  794.      else
  795.        return @actor.agi + $temp_agi >= $data_actors[@actor.id].max_agi_stars
  796.      end
  797.    when 4 # int
  798.      if $data_actors[@actor.id].max_int_stars == 0
  799.        return false
  800.      else
  801.        return @actor.int + $temp_int >= $data_actors[@actor.id].max_int_stars
  802.      end
  803.    when 5 # sp
  804.      if $data_actors[@actor.id].max_sp_stars == 0
  805.        return false
  806.      else
  807.        return @actor.maxsp + $temp_sp >= $data_actors[@actor.id].max_sp_stars
  808.      end
  809.    end
  810. end
  811. #--------------------------------------------------------------------------
  812. # ● 超标属性校正
  813. #--------------------------------------------------------------------------
  814. def judge
  815.    $temp_hp = $data_actors[@actor.id].max_hp_stars - @actor.maxhp if flag(0)
  816.    $temp_sp = $data_actors[@actor.id].max_sp_stars - @actor.maxsp if flag(5)
  817.    $temp_str = $data_actors[@actor.id].max_str_stars - @actor.str if flag(1)
  818.    $temp_dex = $data_actors[@actor.id].max_dex_stars - @actor.dex if flag(2)
  819.    $temp_agi = $data_actors[@actor.id].max_agi_stars - @actor.agi if flag(3)
  820.    $temp_int = $data_actors[@actor.id].max_int_stars - @actor.int if flag(4)
  821. end
  822. #--------------------------------------------------------------------------
  823. # ● 选项明暗判断
  824. #--------------------------------------------------------------------------
  825. def s_disable
  826.    # 判断剩余点数是否为0,如果为0,那么增加选项表示为暗色
  827.    if $point == 0
  828.      @command_window.disable_item(0)
  829.      @command_window.disable_item(1)
  830.      @command_window.disable_item(2)
  831.      @command_window.disable_item(3)
  832.      @command_window.disable_item(4)
  833.    else
  834.      @command_window.able_item(0)
  835.      @command_window.able_item(1)      
  836.      @command_window.able_item(2)
  837.      @command_window.able_item(3)
  838.      @command_window.able_item(4)
  839.    end
  840.    if flag(1)
  841.      @command_window.disable_item(1)
  842.    end
  843.    if flag(2)
  844.      @command_window.disable_item(2)
  845.    end
  846.    if flag(3)
  847.      @command_window.disable_item(3)
  848.    end
  849.    if flag(4)
  850.      @command_window.disable_item(4)
  851.    end
  852.    if flag(0)
  853.      @command_window.disable_item(0)
  854.    end
  855. end
  856. end

  857. #==============================================================================
  858. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  859. #=============================================================================

复制代码
放在main前
作者: BBBBB6    时间: 2010-8-19 21:41
附送CP制,LZ以后要自己动手!表随便伸手!
  1. #==============================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #===============================================================


  4. # ———————————————————————————————

  5. # ▼▲▼ XRXS_BP 1. CP制導入 ver..23 ▼▲▼
  6. # by 桜雅 在土, 和希

  7. #===================================================================
  8. # □ カスタマイズポイント
  9. #====================================================================
  10. module XRXS_BP1
  11. #
  12. # 对齐方式。0:左 1:中央 2:右
  13. #
  14. ALIGN = 0
  15. #
  16. # 人数
  17. #
  18. MAX = 4
  19. end
  20. class Scene_Battle_CP
  21. #
  22. # 战斗速度
  23. #
  24. BATTLE_SPEED = 2.0
  25. #
  26. # 战斗开始的时候气槽百分比
  27. #
  28. START_CP_PERCENT = 0
  29. end

  30. class Scene_Battle

  31. # 效果音效,可以自己添加
  32. DATA_SYSTEM_COMMAND_UP_SE = ""

  33. # 各项数值功能消耗的CP值
  34. CP_COST_BASIC_ACTIONS = 0 # 基础共同
  35. CP_COST_SKILL_ACTION = 65535 # 技能
  36. CP_COST_ITEM_ACTION = 65535 # 物品
  37. CP_COST_BASIC_ATTACK = 65535 # 攻撃
  38. CP_COST_BASIC_GUARD = 32768 # 防御
  39. CP_COST_BASIC_NOTHING = 65535 # 不做任何事情
  40. CP_COST_BASIC_ESCAPE = 65535 # 逃跑
  41. end

  42. #============================================================
  43. # --- XRXS.コマンドウィンドウ?コマンド追加機構 ---
  44. #-----------------------------------------------------------
  45. # Window_Commandクラスに add_command メソッドを追加します。
  46. #=============================================================
  47. module XRXS_Window_Command_Add_Command
  48. #-------------------------------------------------
  49. # ○ コマンドを追加
  50. #----------------------------------------------------
  51. def add_command(command)
  52. # 初期化されていない場合、無効化判別用の配列 @disabled の初期化
  53. #
  54. if @disabled == nil
  55. @disabled = []
  56. end
  57. if @commands.size != @disabled.size
  58. for i in [email protected]
  59. @disabled[i] = false
  60. end
  61. end
  62. #
  63. # 追加
  64. #
  65. @commands.push(command)
  66. @disabled.push(false)
  67. @item_max = @commands.size
  68. self.y -= 32
  69. self.height += 32
  70. self.contents.dispose
  71. self.contents = nil
  72. self.contents = Bitmap.new(self.width - 32, @item_max * 32)
  73. refresh
  74. for i in [email protected]
  75. if @disabled[i]
  76. disable_item(i)
  77. end
  78. end
  79. end
  80. #-------------------------------------------------------
  81. # ○ 項目の無効化
  82. # index : 項目番号
  83. #----------------------------------------------------
  84. def disable_item(index)
  85. if @disabled == nil
  86. @disabled = []
  87. end
  88. @disabled[index] = true
  89. draw_item(index, disabled_color)
  90. end
  91. end
  92. class Window_Command < Window_Selectable
  93. #------------------------------------------------------
  94. # ○ インクルード
  95. #------------------------------------------------
  96. include XRXS_Window_Command_Add_Command
  97. #---------------------------------------------------------
  98. # ● 項目の無効化
  99. # index : 項目番号
  100. #------------------------------------------------------
  101. def disable_item(index)
  102. super
  103. end
  104. end
  105. #==============================================================
  106. # □ Scene_Battle_CP
  107. #==============================================================
  108. class Scene_Battle_CP
  109. #----------------------------------------------------------
  110. # ○ 公開インスタンス変数
  111. #-------------------------------------------------------
  112. attr_accessor :stop # CP加算ストップ
  113. #-------------------------------------------------------------
  114. # ○ オブジェクトの初期化
  115. #-----------------------------------------------------------
  116. def initialize
  117. @battlers = []
  118. @cancel = false
  119. @stop = false
  120. @agi_total = 0
  121. # 配列 count_battlers を初期化
  122. count_battlers = []
  123. # エネミーを配列 count_battlers に追加
  124. for enemy in $game_troop.enemies
  125. count_battlers.push(enemy)
  126. end
  127. # アクターを配列 count_battlers に追加
  128. for actor in $game_party.actors
  129. count_battlers.push(actor)
  130. end
  131. for battler in count_battlers
  132. @agi_total += battler.agi
  133. end
  134. for battler in count_battlers
  135. battler.cp = [[65535 * START_CP_PERCENT * (rand(15) + 85) * 4 * battler.agi / @agi_total / 10000, 0].max, 65535].min
  136. end
  137. end
  138. #---------------------------------------------------------------
  139. # ○ CPカウントアップ
  140. #--------------------------------------------------------------
  141. def update
  142. # ストップされているならリターン
  143. return if @stop
  144. #
  145. for battler in $game_party.actors + $game_troop.enemies
  146. # 行動出来なければ無視
  147. if battler.dead? == true
  148. battler.cp = 0
  149. next
  150. end
  151. battler.cp = [[battler.cp + BATTLE_SPEED * 4096 * battler.agi / @agi_total, 0].max, 65535].min
  152. end
  153. end
  154. #--------------------------------------------------------------
  155. # ○ CPカウントの開始
  156. #---------------------------------------------------------------
  157. def stop
  158. @cancel = true
  159. if @cp_thread != nil then
  160. @cp_thread.join
  161. @cp_thread = nil
  162. end
  163. end
  164. end

  165. #===================================================================
  166. # ■ Game_Battler
  167. #=================================================================
  168. class Game_Battler
  169. attr_accessor :now_guarding # 現在防御中フラグ
  170. attr_accessor :cp # 現在CP
  171. attr_accessor :slip_state_update_ban # スリップ?ステート自動処理の禁止
  172. #-------------------------------------------------------------
  173. # ○ CP の変更
  174. #------------------------------------------------------------
  175. def cp=(p)
  176. @cp = [[p, 0].max, 65535].min
  177. end
  178. #----------------------------------------------------------
  179. # ● 防御中判定 [ 再定義 ]
  180. #---------------------------------------------------------
  181. def guarding?
  182. return @now_guarding
  183. end
  184. #------------------------------------------------------------
  185. # ● コマンド入力可能判定
  186. #---------------------------------------------------------
  187. alias xrxs_bp1_inputable? inputable?
  188. def inputable?
  189. bool = xrxs_bp1_inputable?
  190. return (bool and (@cp >= 65535))
  191. end
  192. #------------------------------------------------------------
  193. # ● ステート [スリップダメージ] 判定
  194. #-------------------------------------------------------------
  195. alias xrxs_bp1_slip_damage? slip_damage?
  196. def slip_damage?
  197. return false if @slip_state_update_ban
  198. return xrxs_bp1_slip_damage?
  199. end
  200. #--------------------------------------------------------------
  201. # ● ステート自然解除 (ターンごとに呼び出し)
  202. #----------------------------------------------------------
  203. alias xrxs_bp1_remove_states_auto remove_states_auto
  204. def remove_states_auto
  205. return if @slip_state_update_ban
  206. xrxs_bp1_remove_states_auto
  207. end
  208. end
  209. #==================================================================
  210. # ■ Game_Actor
  211. #==================================================================
  212. class Game_Actor < Game_Battler
  213. #---------------------------------------------------------
  214. # ● セットアップ
  215. #--------------------------------------------------------
  216. alias xrxs_bp1_setup setup
  217. def setup(actor_id)
  218. xrxs_bp1_setup(actor_id)
  219. @cp = 0
  220. @now_guarding = false
  221. @slip_state_update_ban = false
  222. end
  223. end
  224. #===================================================================
  225. # ■ Game_Enemy
  226. #===================================================================
  227. class Game_Enemy < Game_Battler
  228. #-----------------------------------------------------------
  229. # ● オブジェクト初期化
  230. #----------------------------------------------------------
  231. alias xrxs_bp1_initialize initialize
  232. def initialize(troop_id, member_index)
  233. xrxs_bp1_initialize(troop_id, member_index)
  234. @cp = 0
  235. @now_guarding = false
  236. @slip_state_update_ban = false
  237. end
  238. end
  239. #==================================================================
  240. # ■ Window_BattleStatus
  241. #==================================================================
  242. class Window_BattleStatus < Window_Base
  243. #---------------------------------------------------------
  244. # ○ 公開インスタンス変数
  245. #------------------------------------------------------------
  246. attr_accessor :update_cp_only # CPメーターのみの更新
  247. #------------------------------------------------------------
  248. # ● オブジェクト初期化
  249. #-------------------------------------------------------------
  250. alias xrxs_bp1_initialize initialize
  251. def initialize
  252. @update_cp_only = false
  253. xrxs_bp1_initialize
  254. end
  255. #------------------------------------------------------------
  256. # ● リフレッシュ
  257. #-------------------------------------------------------------
  258. alias xrxs_bp1_refresh refresh
  259. def refresh
  260. unless @update_cp_only
  261. xrxs_bp1_refresh
  262. end
  263. refresh_cp
  264. end
  265. #---------------------------------------------------------------
  266. # ○ リフレッシュ(CPのみ)
  267. #------------------------------------------------------------
  268. def refresh_cp
  269. for i in 0...$game_party.actors.size
  270. actor = $game_party.actors[i]
  271. width = [self.width*3/4 / XRXS_BP1::MAX, 80].max
  272. space = self.width / XRXS_BP1::MAX
  273. case XRXS_BP1::ALIGN
  274. when 0
  275. actor_x = i * space + 4
  276. when 1
  277. actor_x = (space * ((XRXS_BP1::MAX - $game_party.actors.size)/2.0 + i)).floor
  278. when 2
  279. actor_x = (i + XRXS_BP1::MAX - $game_party.actors.size) * space + 4
  280. end
  281. actor_x += self.x
  282. draw_actor_cp_meter(actor, actor_x, 96, width, 0)
  283. end
  284. end
  285. #-----------------------------------------------------------
  286. # ○ CPメーター の描画
  287. #-------------------------------------------------------------
  288. def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
  289. self.contents.font.color = system_color
  290. self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  291. if actor.cp == nil
  292. actor.cp = 0
  293. end
  294. w = width * [actor.cp,65535].min / 65535
  295. self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))
  296. self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))
  297. self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))
  298. self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))
  299. end
  300. end
  301. #==================================================================
  302. # ■ Scene_Battle
  303. #==================================================================
  304. class Scene_Battle
  305. #------------------------------------------------------------
  306. # ● フレーム更新
  307. #---------------------------------------------------------------
  308. alias xrxs_bp1_update update
  309. def update
  310. xrxs_bp1_update
  311. # CP更新
  312. @cp_thread.update
  313. end
  314. #------------------------------------------------------------
  315. # ● バトル終了
  316. # result : 結果 (0:勝利 1:敗北 2:逃走)
  317. #-------------------------------------------------------------
  318. alias xrxs_bp1_battle_end battle_end
  319. def battle_end(result)
  320. # CPカウントを停止する
  321. @cp_thread.stop
  322. # 呼び戻す
  323. xrxs_bp1_battle_end(result)
  324. end
  325. #------------------------------------------------------------
  326. # ● プレバトルフェーズ開始
  327. #----------------------------------------------------------
  328. alias xrxs_bp1_start_phase1 start_phase1
  329. def start_phase1
  330. @agi_total = 0
  331. # CP加算を開始する
  332. @cp_thread = Scene_Battle_CP.new
  333. # インデックスを計算
  334. @cp_escape_actor_command_index = @actor_command_window.height/32 - 1
  335. # アクターコマンドウィンドウに追加
  336. @actor_command_window.add_command("逃跑")
  337. if !$game_temp.battle_can_escape
  338. @actor_command_window.disable_item(@cp_escape_actor_command_index)
  339. end
  340. # 呼び戻す
  341. xrxs_bp1_start_phase1
  342. end
  343. #---------------------------------------------------------------
  344. # ● パーティコマンドフェーズ開始
  345. #----------------------------------------------------------
  346. alias xrxs_bp1_start_phase2 start_phase2
  347. def start_phase2
  348. xrxs_bp1_start_phase2
  349. @party_command_window.active = false
  350. @party_command_window.visible = false
  351. # CP加算を再開する
  352. @cp_thread.stop = false
  353. # 次へ
  354. start_phase3
  355. end
  356. #---------------------------------------------------------
  357. # ● アクターコマンドウィンドウのセットアップ
  358. #----------------------------------------------------------
  359. alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
  360. def phase3_setup_command_window
  361. # CPスレッドを一時停止する
  362. @cp_thread.stop = true
  363. # ウィンドウのCP更新
  364. @status_window.refresh_cp
  365. # @active_battlerの防御を解除
  366. @active_battler.now_guarding = false
  367. # 効果音の再生
  368. Audio.se_play(DATA_SYSTEM_COMMAND_UP_SE) if DATA_SYSTEM_COMMAND_UP_SE != ""
  369. # 呼び戻す
  370. xrxs_bp1_phase3_setup_command_window
  371. end
  372. #---------------------------------------------------------
  373. # ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
  374. #--------------------------------------------------------
  375. alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
  376. def update_phase3_basic_command
  377. # C ボタンが押された場合
  378. if Input.trigger?(Input::C)
  379. # アクターコマンドウィンドウのカーソル位置で分岐
  380. case @actor_command_window.index
  381. when @cp_escape_actor_command_index # 逃げる
  382. if $game_temp.battle_can_escape
  383. # 決定 SE を演奏
  384. $game_system.se_play($data_system.decision_se)
  385. # アクションを設定
  386. @active_battler.current_action.kind = 0
  387. @active_battler.current_action.basic = 4
  388. # 次のアクターのコマンド入力へ
  389. phase3_next_actor
  390. else
  391. # ブザー SE を演奏
  392. $game_system.se_play($data_system.buzzer_se)
  393. end
  394. return
  395. end
  396. end
  397. xrxs_bsp1_update_phase3_basic_command
  398. end
  399. #-------------------------------------------------------------
  400. # ● メインフェーズ開始
  401. #-------------------------------------------------------------
  402. alias xrxs_bp1_start_phase4 start_phase4
  403. def start_phase4
  404. # 呼び戻す
  405. xrxs_bp1_start_phase4
  406. # CPスレッドを一時停止する
  407. unless @action_battlers.empty?
  408. @cp_thread.stop = true
  409. end
  410. end
  411. #-------------------------------------------------------
  412. # ● 行動順序作成
  413. #-------------------------------------------------------
  414. alias xrxs_bp1_make_action_orders make_action_orders
  415. def make_action_orders
  416. xrxs_bp1_make_action_orders
  417. # 全員のCPを確認
  418. exclude_battler = []
  419. for battler in @action_battlers
  420. # CPが不足している場合は @action_battlers から除外する
  421. if battler.cp < 65535
  422. exclude_battler.push(battler)
  423. end
  424. end
  425. @action_battlers -= exclude_battler
  426. end
  427. #-----------------------------------------------------------
  428. # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  429. #------------------------------------------------------------
  430. alias xrxs_bp1_update_phase4_step1 update_phase4_step1
  431. def update_phase4_step1
  432. # 初期化
  433. @phase4_act_continuation = 0
  434. # 勝敗判定
  435. if judge
  436. @cp_thread.stop
  437. # 勝利または敗北の場合 : メソッド終了
  438. return
  439. end
  440. # 未行動バトラー配列の先頭から取得
  441. @active_battler = @action_battlers[0]
  442. # ステータス更新をCPだけに限定。
  443. @status_window.update_cp_only = true
  444. # ステート更新を禁止。
  445. @active_battler.slip_state_update_ban = true if @active_battler != nil
  446. # 戻す
  447. xrxs_bp1_update_phase4_step1
  448. # @status_windowがリフレッシュされなかった場合は手動でリフレッシュ(CPのみ)
  449. if @phase4_step != 2
  450. # リフレッシュ
  451. @status_window.refresh
  452. # 軽量化:たったコレだけΣ(?w?
  453. Graphics.frame_reset
  454. end
  455. # 禁止を解除
  456. @status_window.update_cp_only = false
  457. @active_battler.slip_state_update_ban = false if @active_battler != nil
  458. end
  459. #-------------------------------------------------------------
  460. # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  461. #----------------------------------------------------------
  462. alias xrxs_bp1_update_phase4_step2 update_phase4_step2
  463. def update_phase4_step2
  464. # 強制アクションでなければ
  465. unless @active_battler.current_action.forcing
  466. # 制約が [敵を通常攻撃する] か [味方を通常攻撃する] の場合
  467. if @active_battler.restriction == 2 or @active_battler.restriction == 3
  468. # アクションに攻撃を設定
  469. @active_battler.current_action.kind = 0
  470. @active_battler.current_action.basic = 0
  471. end
  472. # 制約が [行動できない] の場合
  473. if @active_battler.restriction == 4
  474. # アクション強制対象のバトラーをクリア
  475. $game_temp.forcing_battler = nil
  476. if @phase4_act_continuation == 0 and @active_battler.cp >= 65535
  477. # ステート自然解除
  478. @active_battler.remove_states_auto
  479. # CP消費
  480. @active_battler.cp -= 65535
  481. # ステータスウィンドウをリフレッシュ
  482. @status_window.refresh
  483. end
  484. # ステップ 1 に移行
  485. @phase4_step = 1
  486. return
  487. end
  488. end
  489. # アクションの種別で分岐
  490. case @active_battler.current_action.kind
  491. when 0
  492. # 攻撃?防御?逃げる?何もしない時の共通消費CP
  493. @active_battler.cp -= CP_COST_BASIC_ACTIONS if @phase4_act_continuation == 0
  494. when 1
  495. # スキル使用時の消費CP
  496. @active_battler.cp -= CP_COST_SKILL_ACTION if @phase4_act_continuation == 0
  497. when 2
  498. # アイテム使用時の消費CP
  499. @active_battler.cp -= CP_COST_ITEM_ACTION if @phase4_act_continuation == 0
  500. end
  501. # ステート自然解除
  502. @active_battler.remove_states_auto
  503. # 呼び戻す
  504. xrxs_bp1_update_phase4_step2
  505. end
  506. #-----------------------------------------------------------
  507. # ● 基本アクション 結果作成
  508. #-----------------------------------------------------------
  509. alias xrxs_bp1_make_basic_action_result make_basic_action_result
  510. def make_basic_action_result
  511. # 攻撃の場合
  512. if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
  513. @active_battler.cp -= CP_COST_BASIC_ATTACK # 攻撃時のCP消費
  514. end
  515. # 防御の場合
  516. if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
  517. @active_battler.cp -= CP_COST_BASIC_GUARD # 防御時のCP消費
  518. # @active_battlerの防御をON
  519. @active_battler.now_guarding = true
  520. end
  521. # 敵の逃げるの場合
  522. if @active_battler.is_a?(Game_Enemy) and
  523. @active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
  524. @active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
  525. end
  526. # 何もしないの場合
  527. if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
  528. @active_battler.cp -= CP_COST_BASIC_NOTHING # 何もしない時のCP消費
  529. end
  530. # 逃げるの場合
  531. if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
  532. @active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
  533. # 逃走可能ではない場合
  534. if $game_temp.battle_can_escape == false
  535. # ブザー SE を演奏
  536. $game_system.se_play($data_system.buzzer_se)
  537. return
  538. end
  539. # 逃走処理
  540. update_phase2_escape
  541. return
  542. end
  543. # 呼び戻す
  544. xrxs_bp1_make_basic_action_result
  545. end
  546. #-------------------------------------------------------------
  547. # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  548. #-----------------------------------------------------------
  549. alias xrxs_bp1_update_phase4_step6 update_phase4_step6
  550. def update_phase4_step6
  551. # スリップダメージ
  552. if @active_battler.hp > 0 and @active_battler.slip_damage?
  553. @active_battler.slip_damage_effect
  554. @active_battler.damage_pop = true
  555. # ステータスウィンドウをリフレッシュ
  556. @status_window.refresh
  557. end
  558. # 呼び戻す
  559. xrxs_bp1_update_phase4_step6
  560. end
  561. end


  562. #==============================================================
  563. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  564. #==============================================================
复制代码

作者: 霸下    时间: 2010-8-21 19:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 捡垃圾    时间: 2010-8-21 19:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: nsgc732047    时间: 2010-8-21 19:51
满意了有没给人加分啊




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