Project1

标题: XP 里面添加了一个加点脚本,为什么一升级就错误? [打印本页]

作者: qq869581021    时间: 2012-5-26 10:42
标题: XP 里面添加了一个加点脚本,为什么一升级就错误?
本帖最后由 hcm 于 2012-5-26 17:09 编辑






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


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

  335.     end

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

  858. #==============================================================================
  859. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  860. #=============================================================================
复制代码
‘‘──qq869581021于2012-5-26 10:50补充以下内容

并且升级后也也没有获得加点点数。
’’dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2012-5-26 11:50
该脚本与旧存档不兼容,请开新存档测试




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