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

Project1

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

[已经解决] 关于分段等级上限的提问

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2014-8-7
帖子
67
跳转到指定楼层
1
发表于 2015-4-10 01:14:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2015-4-10 14:56 编辑


小人用了恐惧剑刃大大的分段等级上限脚本,一切正常,可是使用了事件 角色等级提升 后  会发现本该是120上限的角色,可以继续提升等级,
比如:角色1已经到达了120级上限,经验是---------, 可使用了提升等级的道具后 还可以继续升级变成121,122,请问这个该如何改成 一转120上限,使用等级提升道具也不提升等级呢? 谢谢。
RUBY 代码复制
  1. # 突破等级、能力上限
  2.  
  3.   # 等级可无限提升
  4.  
  5.   BASE_FINAL_LEVEL = 1000    # 等级最高值 ★★★★ 最高等级
  6.   MAXHP_LIMIT = 9999999     # 气血最高值
  7.   MAXSP_LIMIT = 9999999     # 魔法最高值
  8.   STR_LIMIT   = 999999      # 力量最高值
  9.   DEX_LIMIT   = 999999      # 灵巧最高值
  10.   AGI_LIMIT   = 999999      # 速度最高值
  11.   INT_LIMIT   = 999999      # 魔力最高值
  12.  
  13. class Game_Actor < Game_Battler
  14.   #--------------------------------------------------------------------------
  15.   # ● 获取 EXP 字符串
  16.  
  17.  
  18.   # 示例 一般最高50级
  19.   # 一转 100 级
  20.   # 二转 150 级
  21.   # 三转 200 级
  22.   #--------------------------------------------------------------------------
  23.   def exp_s
  24.     # ★★★★
  25.     if lvv == 0 and @level == 120
  26.       return "----------"
  27.     elsif lvv == 1 and @level == 300
  28.       return "----------"
  29.     elsif lvv == 2 and @level == 500
  30.       return "----------"
  31.     elsif lvv == 3 and @level == 1000
  32.       return "----------"
  33.     else
  34.       return @exp_list[@level+1] > 0 ? @exp.to_s : "----------"
  35.     end
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 获取下一等级的 EXP 字符串
  39.   #--------------------------------------------------------------------------
  40.   def next_exp_s
  41.     # ★★★★
  42.     if lvv == 0 and @level > 119
  43.       return "----------"
  44.     elsif lvv == 1 and @level > 299
  45.       return "----------"
  46.     elsif lvv == 2 and @level > 499
  47.       return "----------"
  48.     elsif lvv == 3 and @level > 999
  49.       return "----------"
  50.     else
  51.       return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "----------"
  52.     end
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 获取离下一等级还需的 EXP 字符串
  56.   #--------------------------------------------------------------------------
  57.   def next_rest_exp_s
  58.     # ★★★★
  59.     if lvv == 0 and @level == 119
  60.       return "----------"
  61.     elsif lvv == 1 and @level == 299
  62.       return "----------"
  63.     elsif lvv == 2 and @level == 499
  64.       return "----------"
  65.     elsif lvv == 3 and @level == 998
  66.       return "----------"
  67.     else
  68.       return @exp_list[@level+1] > 0 ?
  69.         (@exp_list[@level+1] - @exp).to_s : "----------"
  70.     end
  71.   end
  72.   def new_final_level
  73.     lv = BASE_FINAL_LEVEL
  74.     #以下上限LV個別指定用
  75.     #case self.id
  76.     #when 1
  77.     #  lv = 255
  78.     #when 2
  79.     #  lv = 999
  80.    #when 23
  81.     #  lv = 500
  82.     #end
  83.     return lv
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 计算 EXP
  87.   #--------------------------------------------------------------------------
  88.   def make_exp_list
  89.     actor = $data_actors[@actor_id]
  90.     @exp_list = Array.new(new_final_level + 2)
  91.     @exp_list[1] = 0
  92.     pow_i = 2.4 + actor.exp_inflation / 100.0
  93.     for i in 2..new_final_level + 1
  94.       if i > new_final_level
  95.         @exp_list[i] = 0
  96.       else
  97.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  98.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  99.       end
  100.     end
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 获取 MaxHP
  104.   #--------------------------------------------------------------------------
  105.   def maxhp
  106.     n = [[base_maxhp + @maxhp_plus, 1].max, MAXHP_LIMIT].min
  107.     for i in @states
  108.       n *= $data_states[i].maxhp_rate / 100.0
  109.     end
  110.     n = [[Integer(n), 1].max, MAXHP_LIMIT].min
  111.     return n
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 获取基本 MaxHP
  115.   #--------------------------------------------------------------------------
  116.   def base_maxhp
  117.     n = $data_actors[@actor_id].parameters[0, 1]
  118.     n += $data_actors[@actor_id].parameters[0, 2] * @level
  119.     return n
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 获取基本 MaxSP
  123.   #--------------------------------------------------------------------------
  124.   def base_maxsp
  125.     n = $data_actors[@actor_id].parameters[1, 1]
  126.     n += $data_actors[@actor_id].parameters[1, 2] * @level
  127.     return n
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 获取基本力量
  131.   #--------------------------------------------------------------------------
  132.   def base_str
  133.     n = $data_actors[@actor_id].parameters[2, 1]
  134.     n += $data_actors[@actor_id].parameters[2, 2] * @level
  135.     weapon = $data_weapons[@weapon_id]
  136.     armor1 = $data_armors[@armor1_id]
  137.     armor2 = $data_armors[@armor2_id]
  138.     armor3 = $data_armors[@armor3_id]
  139.     armor4 = $data_armors[@armor4_id]
  140.     n += weapon != nil ? weapon.str_plus : 0
  141.     n += armor1 != nil ? armor1.str_plus : 0
  142.     n += armor2 != nil ? armor2.str_plus : 0
  143.     n += armor3 != nil ? armor3.str_plus : 0
  144.     n += armor4 != nil ? armor4.str_plus : 0
  145.     return [[n, 1].max, STR_LIMIT].min
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● 获取基本灵巧
  149.   #--------------------------------------------------------------------------
  150.   def base_dex
  151.     n = $data_actors[@actor_id].parameters[3, 1]
  152.     n += $data_actors[@actor_id].parameters[3, 2] * @level
  153.     weapon = $data_weapons[@weapon_id]
  154.     armor1 = $data_armors[@armor1_id]
  155.     armor2 = $data_armors[@armor2_id]
  156.     armor3 = $data_armors[@armor3_id]
  157.     armor4 = $data_armors[@armor4_id]
  158.     n += weapon != nil ? weapon.dex_plus : 0
  159.     n += armor1 != nil ? armor1.dex_plus : 0
  160.     n += armor2 != nil ? armor2.dex_plus : 0
  161.     n += armor3 != nil ? armor3.dex_plus : 0
  162.     n += armor4 != nil ? armor4.dex_plus : 0
  163.     return [[n, 1].max, DEX_LIMIT].min
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 获取基本速度
  167.   #--------------------------------------------------------------------------
  168.   def base_agi
  169.     n = $data_actors[@actor_id].parameters[4, 1]
  170.     n += $data_actors[@actor_id].parameters[4, 2] * @level
  171.     weapon = $data_weapons[@weapon_id]
  172.     armor1 = $data_armors[@armor1_id]
  173.     armor2 = $data_armors[@armor2_id]
  174.     armor3 = $data_armors[@armor3_id]
  175.     armor4 = $data_armors[@armor4_id]
  176.     n += weapon != nil ? weapon.agi_plus : 0
  177.     n += armor1 != nil ? armor1.agi_plus : 0
  178.     n += armor2 != nil ? armor2.agi_plus : 0
  179.     n += armor3 != nil ? armor3.agi_plus : 0
  180.     n += armor4 != nil ? armor4.agi_plus : 0
  181.     return [[n, 1].max, AGI_LIMIT].min
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 获取基本魔力
  185.   #--------------------------------------------------------------------------
  186.   def base_int
  187.     n = $data_actors[@actor_id].parameters[5, 1]
  188.     n += $data_actors[@actor_id].parameters[5, 2] * @level
  189.     weapon = $data_weapons[@weapon_id]
  190.     armor1 = $data_armors[@armor1_id]
  191.     armor2 = $data_armors[@armor2_id]
  192.     armor3 = $data_armors[@armor3_id]
  193.     armor4 = $data_armors[@armor4_id]
  194.     n += weapon != nil ? weapon.int_plus : 0
  195.     n += armor1 != nil ? armor1.int_plus : 0
  196.     n += armor2 != nil ? armor2.int_plus : 0
  197.     n += armor3 != nil ? armor3.int_plus : 0
  198.     n += armor4 != nil ? armor4.int_plus : 0
  199.     return [[n, 1].max, INT_LIMIT].min
  200.   end
  201.   # ★★★★ 转数
  202.   def lvv
  203.     @lvv = 0 if @lvv.nil?
  204.     return @lvv
  205.   end
  206.   # ★★★★ 转生
  207.   def lvvpl
  208.     @lvv = lvv + 1
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 更改 EXP
  212.   #     exp : 新的 EXP
  213.   #--------------------------------------------------------------------------
  214.   def exp=(exp)
  215.     # ★EXPの上限チェックを解除
  216.     @exp = [exp, 0].max
  217.     # 升级
  218.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  219.       # ★★★★ @lvv 转数 一转二转三转 等在这里设置
  220.       if lvv == 0 and @level == 120
  221.         @exp = @exp_list[@level] # ★★ 1.12 改
  222.         return
  223.       elsif lvv == 1 and @level == 300
  224.         @exp = @exp_list[@level]
  225.         return
  226.       elsif lvv == 2 and @level == 500
  227.         @exp = @exp_list[@level]
  228.         return
  229.       elsif lvv == 3 and @level == 1000
  230.         @exp = @exp_list[@level]
  231.         return
  232.       end
  233.  
  234.       @hp = maxhp
  235.       @sp = maxsp
  236.       @level += 1
  237.       # 学会特技
  238.       for j in $data_classes[@class_id].learnings
  239.         if j.level == @level
  240.           learn_skill(j.skill_id)
  241.         end
  242.       end
  243.     end
  244.     # 降级
  245.     while @exp < @exp_list[@level]
  246.       @level -= 1
  247.     end
  248.     # 修正当前的 HP 与 SP 超过最大值
  249.     @hp = [@hp, self.maxhp].min
  250.     @sp = [@sp, self.maxsp].min
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● レベルの変更
  254.   #     level : 新しいレベル
  255.   #--------------------------------------------------------------------------
  256.   def level=(level)
  257.     # 上下限チェック
  258.     # ★LV上限をnew_final_levelでチェックするように変更
  259.     level = [[level, new_final_level].min, 1].max
  260.     # EXP を変更
  261.     self.exp = @exp_list[level]
  262.   end
  263. end
  264.  
  265.  
  266. class Game_Battler
  267.   #--------------------------------------------------------------------------
  268.   # ● 获取 MaxSP
  269.   #--------------------------------------------------------------------------
  270.   def maxsp
  271.     n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min
  272.     for i in @states
  273.       n *= $data_states[i].maxsp_rate / 100.0
  274.     end
  275.     n = [[Integer(n), 0].max, MAXSP_LIMIT].min
  276.     return n
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 获取力量
  280.   #--------------------------------------------------------------------------
  281.   def str
  282.     n = [[base_str + @str_plus, 1].max, STR_LIMIT].min
  283.     for i in @states
  284.       n *= $data_states[i].str_rate / 100.0
  285.     end
  286.     n = [[Integer(n), 1].max, STR_LIMIT].min
  287.     return n
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 获取灵巧
  291.   #--------------------------------------------------------------------------
  292.   def dex
  293.     n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min
  294.     for i in @states
  295.       n *= $data_states[i].dex_rate / 100.0
  296.     end
  297.     n = [[Integer(n), 1].max, DEX_LIMIT].min
  298.     return n
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 获取速度
  302.   #--------------------------------------------------------------------------
  303.   def agi
  304.     n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min
  305.     for i in @states
  306.       n *= $data_states[i].agi_rate / 100.0
  307.     end
  308.     n = [[Integer(n), 1].max, AGI_LIMIT].min
  309.     return n
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● 获取魔力
  313.   #--------------------------------------------------------------------------
  314.   def int
  315.     n = [[base_int + @int_plus, 1].max, INT_LIMIT].min
  316.     for i in @states
  317.       n *= $data_states[i].int_rate / 100.0
  318.     end
  319.     n = [[Integer(n), 1].max, INT_LIMIT].min
  320.     return n
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 设置 MaxHP
  324.   #     maxhp : 新的 MaxHP
  325.   #--------------------------------------------------------------------------
  326.   def maxhp=(maxhp)
  327.     @maxhp_plus += maxhp - self.maxhp
  328.     @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min
  329.     @hp = [@hp, self.maxhp].min
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 设置 MaxSP
  333.   #     maxsp : 新的 MaxSP
  334.   #--------------------------------------------------------------------------
  335.   def maxsp=(maxsp)
  336.     @maxsp_plus += maxsp - self.maxsp
  337.     @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min
  338.     @sp = [@sp, self.maxsp].min
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 设置力量
  342.   #     str : 新的力量
  343.   #--------------------------------------------------------------------------
  344.   def str=(str)
  345.     @str_plus += str - self.str
  346.     @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● 设置灵巧
  350.   #     dex : 新的灵巧
  351.   #--------------------------------------------------------------------------
  352.   def dex=(dex)
  353.     @dex_plus += dex - self.dex
  354.     @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● 设置速度
  358.   #     agi : 新的速度
  359.   #--------------------------------------------------------------------------
  360.   def agi=(agi)
  361.     @agi_plus += agi - self.agi
  362.     @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 设置魔力
  366.   #     int : 新的魔力
  367.   #--------------------------------------------------------------------------
  368.   def int=(int)
  369.     @int_plus += int - self.int
  370.     @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min
  371.   end
  372. end

Lv1.梦旅人

梦石
0
星屑
50
在线时间
41 小时
注册时间
2014-8-7
帖子
67
2
 楼主| 发表于 2015-4-10 11:12:12 | 只看该作者
没有大大知道吗?有指点
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2015-4-10 15:07:17 | 只看该作者
问题出在72行处的def new_final_level处没有定义转生等级限制。需要手动补上。
RUBY 代码复制
  1. def new_final_level
  2.   lv = BASE_FINAL_LEVEL
  3.   case self.lvv
  4.   when 0
  5.     lv = 120
  6.   when 1
  7.     lv = 300
  8.   when 2
  9.     lv = 500
  10.   when 3
  11.     lv = 1000
  12.   end
  13.   return lv
  14. end

点评

、  发表于 2015-4-11 20:35
请问这个该怎么破呀?谢谢大  发表于 2015-4-11 15:25
按照大大做的试了一下,不会在提升等级了,可是输入脚本$game_party.actors[1].lvvpl #转,进行转生后相应的角色等级会变成1级,120升121页会变成1级~  发表于 2015-4-11 15:24
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2015-4-12 09:33:16 | 只看该作者
RyanBern 发表于 2015-4-10 15:07
问题出在72行处的def new_final_level处没有定义转生等级限制。需要手动补上。
def new_final_level
  lv = ...

刚才简单看了一下脚本,发现如下问题,修改之后可能会解决问题:
脚本第90行应改为:
RUBY 代码复制
  1. @exp_list = Array.new(BASE_FINAL_LEVEL + 2)

脚本第259~261行应改为:
RUBY 代码复制
  1. @level = [[level, new_final_level].min, 1].max
  2. self.exp = @exp_list[@level]

点评

谢谢大,这次等级不会提升了,但是转生后虽然可以正常升级但比如120-121经验还是显示的--------。122-123也是,请问这又改怎么做呀,谢谢大  发表于 2015-4-12 14:44
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2015-4-12 10:49:46 | 只看该作者
简单修改一下
  1. #==============================================================================
  2. # 突破等级、能力上限 and 等级分段
  3. #==============================================================================


  4. BASE_FINAL_LEVEL = 1000            # 等级最高值
  5. MAXHP_LIMIT = 9999999              # 气血最高值
  6. MAXSP_LIMIT = 9999999              # 魔法最高值
  7. STR_LIMIT   = 999999               # 力量最高值
  8. DEX_LIMIT   = 999999               # 灵巧最高值
  9. AGI_LIMIT   = 999999               # 速度最高值
  10. INT_LIMIT   = 999999               # 魔力最高值

  11. Actor_LV = {}                      # 等级段数
  12. #(如果有角色没有指定会报错!)
  13. Actor_LV[1] = [120, 300, 500, 1000]# 1号角色的等级段位
  14. Actor_LV[2] = [70]                 # 2号角色的等级段位

  15. LVV_STR = "----------"             # 满级符号

  16. class Window_Base < Window
  17.   #--------------------------------------------------------------------------
  18.   # ● 描绘 EXP
  19.   #     actor : 角色
  20.   #     x     : 描画目标 X 坐标
  21.   #     y     : 描画目标 Y 坐标
  22.   #--------------------------------------------------------------------------
  23.   def draw_actor_exp(actor, x, y)
  24.     self.contents.font.color = system_color
  25.     self.contents.draw_text(x, y, 24, 32, "E")
  26.     self.contents.font.color = normal_color
  27.     self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
  28.     # 只显示当前经验
  29.     if actor.next_exp_s != LVV_STR
  30.       self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
  31.       self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
  32.     end
  33.   end
  34. end


  35. class Game_Actor < Game_Battler
  36.   #--------------------------------------------------------------------------
  37.   # ● 段位           ※ 脚本 $game_actors[id].lvv
  38.   #                           $game_party.actors[index].lvv
  39.   #                      查看指定角色段位。
  40.   #--------------------------------------------------------------------------
  41.   def lvv
  42.     @lvv = 0 if @lvv.nil?
  43.     return @lvv
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 转生           ※ 脚本 $game_actors[id].lvvpl
  47.   #                           $game_party.actors[index].lvvpl
  48.   #                      给指定角色转生。
  49.   #--------------------------------------------------------------------------
  50.   def lvvpl
  51.     # 无效的段位
  52.     if Actor_LV[@actor_id][lvv + 1].nil?
  53.       return
  54.     end
  55.     @lvv = lvv + 1
  56.   end
  57.   
  58.   #--------------------------------------------------------------------------
  59.   # ——(根据需要调整 字符串方法)——
  60.   #--------------------------------------------------------------------------
  61.   
  62.   
  63. =begin
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取 EXP 字符串
  66.   #--------------------------------------------------------------------------
  67.   alias exp_s_lvv_old exp_s
  68.   def exp_s
  69.     # 段数限制
  70.     if @level >= Actor_LV[@actor_id][lvv]
  71.       return LVV_STR
  72.     end
  73.     # 正常
  74.     return exp_s_lvv_old
  75.   end
  76. =end
  77.   #--------------------------------------------------------------------------
  78.   # ● 获取下一等级的 EXP 字符串
  79.   #--------------------------------------------------------------------------
  80.   alias next_exp_s_lvv_old next_exp_s
  81.   def next_exp_s
  82.     # 段数限制
  83.     if @level >= Actor_LV[@actor_id][lvv]
  84.       return LVV_STR
  85.     end
  86.     # 正常
  87.     return next_exp_s_lvv_old
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取离下一等级还需的 EXP 字符串
  91.   #--------------------------------------------------------------------------
  92.   alias next_rest_exp_s_lvv_old next_rest_exp_s
  93.   def next_rest_exp_s
  94.     # 段数限制
  95.     if @level >= Actor_LV[@actor_id][lvv]
  96.       return LVV_STR
  97.     end
  98.     # 正常
  99.     return next_rest_exp_s_lvv_old
  100.   end
  101.   
  102.   
  103.   
  104.   
  105.   
  106.   #--------------------------------------------------------------------------
  107.   # ● 计算 EXP
  108.   #--------------------------------------------------------------------------
  109.   def make_exp_list
  110.     actor = $data_actors[@actor_id]
  111.     @exp_list = Array.new(BASE_FINAL_LEVEL + 2)
  112.     @exp_list[1] = 0
  113.     pow_i = 2.4 + actor.exp_inflation / 100.0
  114.     for i in 2..BASE_FINAL_LEVEL + 1
  115.       if i > BASE_FINAL_LEVEL
  116.         @exp_list[i] = 0
  117.       else
  118.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  119.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  120.       end
  121.     end
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 更改 EXP
  125.   #     exp : 新的 EXP
  126.   #--------------------------------------------------------------------------
  127.   def exp=(exp)
  128.     # ★EXPの上限チェックを解除
  129.     @exp = [exp, 0].max
  130.     # 升级
  131.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  132.       # 段数限制
  133.       if @level + 1 > Actor_LV[@actor_id][lvv]
  134.         @exp = @exp_list[@level]
  135.         return
  136.       end
  137.       # 其他
  138.       @hp = maxhp
  139.       @sp = maxsp
  140.       @level += 1
  141.       # 学会特技
  142.       for j in $data_classes[@class_id].learnings
  143.         if j.level == @level
  144.           learn_skill(j.skill_id)
  145.         end
  146.       end
  147.     end
  148.     # 降级
  149.     while @exp < @exp_list[@level]
  150.       @level -= 1
  151.     end
  152.     # 修正当前的 HP 与 SP 超过最大值
  153.     @hp = [@hp, self.maxhp].min
  154.     @sp = [@sp, self.maxsp].min
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● レベルの変更
  158.   #     level : 新しいレベル
  159.   #--------------------------------------------------------------------------
  160.   def level=(level)
  161.     # 上下限チェック
  162.     # ★LV上限をnew_final_levelでチェックするように変更
  163.     level = [[level, BASE_FINAL_LEVEL].min, 1].max
  164.     # EXP を変更
  165.     self.exp = @exp_list[level]
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 获取 MaxHP
  169.   #--------------------------------------------------------------------------
  170.   def maxhp
  171.     n = [[base_maxhp + @maxhp_plus, 1].max, MAXHP_LIMIT].min
  172.     for i in @states
  173.       n *= $data_states[i].maxhp_rate / 100.0
  174.     end
  175.     n = [[Integer(n), 1].max, MAXHP_LIMIT].min
  176.     return n
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取基本 MaxHP
  180.   #--------------------------------------------------------------------------
  181.   def base_maxhp
  182.     n = $data_actors[@actor_id].parameters[0, 1]
  183.     n += $data_actors[@actor_id].parameters[0, 2] * @level
  184.     return n
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 获取基本 MaxSP
  188.   #--------------------------------------------------------------------------
  189.   def base_maxsp
  190.     n = $data_actors[@actor_id].parameters[1, 1]
  191.     n += $data_actors[@actor_id].parameters[1, 2] * @level
  192.     return n
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 获取基本力量
  196.   #--------------------------------------------------------------------------
  197.   def base_str
  198.     n = $data_actors[@actor_id].parameters[2, 1]
  199.     n += $data_actors[@actor_id].parameters[2, 2] * @level
  200.     weapon = $data_weapons[@weapon_id]
  201.     armor1 = $data_armors[@armor1_id]
  202.     armor2 = $data_armors[@armor2_id]
  203.     armor3 = $data_armors[@armor3_id]
  204.     armor4 = $data_armors[@armor4_id]
  205.     n += weapon != nil ? weapon.str_plus : 0
  206.     n += armor1 != nil ? armor1.str_plus : 0
  207.     n += armor2 != nil ? armor2.str_plus : 0
  208.     n += armor3 != nil ? armor3.str_plus : 0
  209.     n += armor4 != nil ? armor4.str_plus : 0
  210.     return [[n, 1].max, STR_LIMIT].min
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 获取基本灵巧
  214.   #--------------------------------------------------------------------------
  215.   def base_dex
  216.     n = $data_actors[@actor_id].parameters[3, 1]
  217.     n += $data_actors[@actor_id].parameters[3, 2] * @level
  218.     weapon = $data_weapons[@weapon_id]
  219.     armor1 = $data_armors[@armor1_id]
  220.     armor2 = $data_armors[@armor2_id]
  221.     armor3 = $data_armors[@armor3_id]
  222.     armor4 = $data_armors[@armor4_id]
  223.     n += weapon != nil ? weapon.dex_plus : 0
  224.     n += armor1 != nil ? armor1.dex_plus : 0
  225.     n += armor2 != nil ? armor2.dex_plus : 0
  226.     n += armor3 != nil ? armor3.dex_plus : 0
  227.     n += armor4 != nil ? armor4.dex_plus : 0
  228.     return [[n, 1].max, DEX_LIMIT].min
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 获取基本速度
  232.   #--------------------------------------------------------------------------
  233.   def base_agi
  234.     n = $data_actors[@actor_id].parameters[4, 1]
  235.     n += $data_actors[@actor_id].parameters[4, 2] * @level
  236.     weapon = $data_weapons[@weapon_id]
  237.     armor1 = $data_armors[@armor1_id]
  238.     armor2 = $data_armors[@armor2_id]
  239.     armor3 = $data_armors[@armor3_id]
  240.     armor4 = $data_armors[@armor4_id]
  241.     n += weapon != nil ? weapon.agi_plus : 0
  242.     n += armor1 != nil ? armor1.agi_plus : 0
  243.     n += armor2 != nil ? armor2.agi_plus : 0
  244.     n += armor3 != nil ? armor3.agi_plus : 0
  245.     n += armor4 != nil ? armor4.agi_plus : 0
  246.     return [[n, 1].max, AGI_LIMIT].min
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 获取基本魔力
  250.   #--------------------------------------------------------------------------
  251.   def base_int
  252.     n = $data_actors[@actor_id].parameters[5, 1]
  253.     n += $data_actors[@actor_id].parameters[5, 2] * @level
  254.     weapon = $data_weapons[@weapon_id]
  255.     armor1 = $data_armors[@armor1_id]
  256.     armor2 = $data_armors[@armor2_id]
  257.     armor3 = $data_armors[@armor3_id]
  258.     armor4 = $data_armors[@armor4_id]
  259.     n += weapon != nil ? weapon.int_plus : 0
  260.     n += armor1 != nil ? armor1.int_plus : 0
  261.     n += armor2 != nil ? armor2.int_plus : 0
  262.     n += armor3 != nil ? armor3.int_plus : 0
  263.     n += armor4 != nil ? armor4.int_plus : 0
  264.     return [[n, 1].max, INT_LIMIT].min
  265.   end
  266. end


  267. class Game_Battler
  268.   #--------------------------------------------------------------------------
  269.   # ● 获取 MaxSP
  270.   #--------------------------------------------------------------------------
  271.   def maxsp
  272.     n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min
  273.     for i in @states
  274.       n *= $data_states[i].maxsp_rate / 100.0
  275.     end
  276.     n = [[Integer(n), 0].max, MAXSP_LIMIT].min
  277.     return n
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 获取力量
  281.   #--------------------------------------------------------------------------
  282.   def str
  283.     n = [[base_str + @str_plus, 1].max, STR_LIMIT].min
  284.     for i in @states
  285.       n *= $data_states[i].str_rate / 100.0
  286.     end
  287.     n = [[Integer(n), 1].max, STR_LIMIT].min
  288.     return n
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 获取灵巧
  292.   #--------------------------------------------------------------------------
  293.   def dex
  294.     n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min
  295.     for i in @states
  296.       n *= $data_states[i].dex_rate / 100.0
  297.     end
  298.     n = [[Integer(n), 1].max, DEX_LIMIT].min
  299.     return n
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● 获取速度
  303.   #--------------------------------------------------------------------------
  304.   def agi
  305.     n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min
  306.     for i in @states
  307.       n *= $data_states[i].agi_rate / 100.0
  308.     end
  309.     n = [[Integer(n), 1].max, AGI_LIMIT].min
  310.     return n
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 获取魔力
  314.   #--------------------------------------------------------------------------
  315.   def int
  316.     n = [[base_int + @int_plus, 1].max, INT_LIMIT].min
  317.     for i in @states
  318.       n *= $data_states[i].int_rate / 100.0
  319.     end
  320.     n = [[Integer(n), 1].max, INT_LIMIT].min
  321.     return n
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 设置 MaxHP
  325.   #     maxhp : 新的 MaxHP
  326.   #--------------------------------------------------------------------------
  327.   def maxhp=(maxhp)
  328.     @maxhp_plus += maxhp - self.maxhp
  329.     @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min
  330.     @hp = [@hp, self.maxhp].min
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 设置 MaxSP
  334.   #     maxsp : 新的 MaxSP
  335.   #--------------------------------------------------------------------------
  336.   def maxsp=(maxsp)
  337.     @maxsp_plus += maxsp - self.maxsp
  338.     @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min
  339.     @sp = [@sp, self.maxsp].min
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 设置力量
  343.   #     str : 新的力量
  344.   #--------------------------------------------------------------------------
  345.   def str=(str)
  346.     @str_plus += str - self.str
  347.     @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 设置灵巧
  351.   #     dex : 新的灵巧
  352.   #--------------------------------------------------------------------------
  353.   def dex=(dex)
  354.     @dex_plus += dex - self.dex
  355.     @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 设置速度
  359.   #     agi : 新的速度
  360.   #--------------------------------------------------------------------------
  361.   def agi=(agi)
  362.     @agi_plus += agi - self.agi
  363.     @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 设置魔力
  367.   #     int : 新的魔力
  368.   #--------------------------------------------------------------------------
  369.   def int=(int)
  370.     @int_plus += int - self.int
  371.     @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min
  372.   end
  373. end
复制代码

点评

不会出现这种情况呢。 用了 修改过exp=方法的话 就需要整合(或者把这个脚本放在最下边 >.< )。  发表于 2015-4-12 18:14
麻烦大大了,可是未转生角色 用等级道具还是可以继续提升等级呢,呜呜。  发表于 2015-4-12 14:46
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

6
发表于 2015-4-12 16:21:24 | 只看该作者
本帖最后由 RyanBern 于 2015-4-12 17:28 编辑
无敌啊鸡 发表于 2015-4-10 11:12
没有大大知道吗?有指点


少改了一个地方,抱歉。
脚本88~101行:
RUBY 代码复制
  1. def make_exp_list
  2.     actor = $data_actors[@actor_id]
  3.     @exp_list = Array.new(BASE_FINAL_LEVEL + 2)
  4.     @exp_list[1] = 0
  5.     pow_i = 2.4 + actor.exp_inflation / 100.0
  6.     for i in 2..BASE_FINAL_LEVEL + 1
  7.       if i > BASE_FINAL_LEVEL
  8.         @exp_list[i] = 0
  9.       else
  10.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  11.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  12.       end
  13.     end
  14.   end

原脚本没有有关降转功能的,现在加上。
RUBY 代码复制
  1. class Game_Actor
  2.   def lvv=(lvv)
  3.     # 防止出现负数
  4.     @lvv = [lvv, 0].max
  5.     # 防止转生超过最大等级
  6.     self.level = new_final_level if @level > new_final_level
  7.   end
  8. end

使用的时候,可以这样:
RUBY 代码复制
  1. $game_actors[1].lvv = 0

这样表示降转,如果角色超过降转等级限制则角色的等级会被修正。

点评

太感谢了,完美的解决了,非常麻烦您啊这次,谢谢。  发表于 2015-4-12 20:18
如果是插入,只需复制2~7行即可,复制之后插入到205行的那个end之后  发表于 2015-4-12 18:32
谢谢大,请问这个应该插入在哪一行里面呢?谢谢您~  发表于 2015-4-12 18:27
有关降转的已经在此帖补充  发表于 2015-4-12 17:28
此脚本需要和加点脚本整合,否则肯定有一个无法使用。  发表于 2015-4-12 17:22

评分

参与人数 2星屑 +100 梦石 +1 收起 理由
hys111111 + 100 认可答案
myownroc + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 23:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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