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

Project1

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

[已经解决] 等级突破上限

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
跳转到指定楼层
1
发表于 2015-1-10 20:19:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
下面的等级突破上限的脚本,如何改成这样

刚开始等级上限最高100级,
10号开关打开,等级上限最高120级,
11号开关打开,等级上限最高140级,
12号开关打开,等级上限最高160级,
13号开关打开,等级上限最高180级。
  1.   # 突破等级、能力上限

  2.   # 等级可无限提升

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

  10. class Game_Actor < Game_Battler
  11.   def new_final_level
  12.     lv = BASE_FINAL_LEVEL
  13.     #以下上限LV個別指定用
  14.     #case self.id
  15.     #when 1
  16.     #  lv = 255
  17.     #when 2
  18.     #  lv = 999
  19.     #when 8
  20.     #  lv = 15600
  21.     #end
  22.     return lv
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 计算 EXP
  26.   #--------------------------------------------------------------------------
  27.   def make_exp_list
  28.     actor = $data_actors[@actor_id]
  29.     @exp_list = Array.new(new_final_level + 2)
  30.     @exp_list[1] = 0
  31.     pow_i = 2.4 + actor.exp_inflation / 100.0
  32.     for i in 2..new_final_level + 1
  33.       if i > new_final_level
  34.         @exp_list[i] = 0
  35.       else
  36.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  37.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  38.       end
  39.     end
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 获取 MaxHP
  43.   #--------------------------------------------------------------------------
  44.   def maxhp
  45.     n = [[base_maxhp + @maxhp_plus, 1].max, MAXHP_LIMIT].min
  46.     for i in @states
  47.       n *= $data_states[i].maxhp_rate / 100.0
  48.     end
  49.     n = [[Integer(n), 1].max, MAXHP_LIMIT].min
  50.     return n
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取基本 MaxHP
  54.   #--------------------------------------------------------------------------
  55.   def base_maxhp
  56.     n = $data_actors[@actor_id].parameters[0, 1]
  57.     n += $data_actors[@actor_id].parameters[0, 2] * @level
  58.     return n
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 获取基本 MaxSP
  62.   #--------------------------------------------------------------------------
  63.   def base_maxsp
  64.     n = $data_actors[@actor_id].parameters[1, 1]
  65.     n += $data_actors[@actor_id].parameters[1, 2] * @level
  66.     return n
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取基本力量
  70.   #--------------------------------------------------------------------------
  71.   def base_str
  72.     n = $data_actors[@actor_id].parameters[2, 1]
  73.     n += $data_actors[@actor_id].parameters[2, 2] * @level
  74.     weapon = $data_weapons[@weapon_id]
  75.     armor1 = $data_armors[@armor1_id]
  76.     armor2 = $data_armors[@armor2_id]
  77.     armor3 = $data_armors[@armor3_id]
  78.     armor4 = $data_armors[@armor4_id]
  79.     n += weapon != nil ? weapon.str_plus : 0
  80.     n += armor1 != nil ? armor1.str_plus : 0
  81.     n += armor2 != nil ? armor2.str_plus : 0
  82.     n += armor3 != nil ? armor3.str_plus : 0
  83.     n += armor4 != nil ? armor4.str_plus : 0
  84.     return [[n, 1].max, STR_LIMIT].min
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 获取基本灵巧
  88.   #--------------------------------------------------------------------------
  89.   def base_dex
  90.     n = $data_actors[@actor_id].parameters[3, 1]
  91.     n += $data_actors[@actor_id].parameters[3, 2] * @level
  92.     weapon = $data_weapons[@weapon_id]
  93.     armor1 = $data_armors[@armor1_id]
  94.     armor2 = $data_armors[@armor2_id]
  95.     armor3 = $data_armors[@armor3_id]
  96.     armor4 = $data_armors[@armor4_id]
  97.     n += weapon != nil ? weapon.dex_plus : 0
  98.     n += armor1 != nil ? armor1.dex_plus : 0
  99.     n += armor2 != nil ? armor2.dex_plus : 0
  100.     n += armor3 != nil ? armor3.dex_plus : 0
  101.     n += armor4 != nil ? armor4.dex_plus : 0
  102.     return [[n, 1].max, DEX_LIMIT].min
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 获取基本速度
  106.   #--------------------------------------------------------------------------
  107.   def base_agi
  108.     n = $data_actors[@actor_id].parameters[4, 1]
  109.     n += $data_actors[@actor_id].parameters[4, 2] * @level
  110.     weapon = $data_weapons[@weapon_id]
  111.     armor1 = $data_armors[@armor1_id]
  112.     armor2 = $data_armors[@armor2_id]
  113.     armor3 = $data_armors[@armor3_id]
  114.     armor4 = $data_armors[@armor4_id]
  115.     n += weapon != nil ? weapon.agi_plus : 0
  116.     n += armor1 != nil ? armor1.agi_plus : 0
  117.     n += armor2 != nil ? armor2.agi_plus : 0
  118.     n += armor3 != nil ? armor3.agi_plus : 0
  119.     n += armor4 != nil ? armor4.agi_plus : 0
  120.     return [[n, 1].max, AGI_LIMIT].min
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 获取基本魔力
  124.   #--------------------------------------------------------------------------
  125.   def base_int
  126.     n = $data_actors[@actor_id].parameters[5, 1]
  127.     n += $data_actors[@actor_id].parameters[5, 2] * @level
  128.     weapon = $data_weapons[@weapon_id]
  129.     armor1 = $data_armors[@armor1_id]
  130.     armor2 = $data_armors[@armor2_id]
  131.     armor3 = $data_armors[@armor3_id]
  132.     armor4 = $data_armors[@armor4_id]
  133.     n += weapon != nil ? weapon.int_plus : 0
  134.     n += armor1 != nil ? armor1.int_plus : 0
  135.     n += armor2 != nil ? armor2.int_plus : 0
  136.     n += armor3 != nil ? armor3.int_plus : 0
  137.     n += armor4 != nil ? armor4.int_plus : 0
  138.     return [[n, 1].max, INT_LIMIT].min
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 更改 EXP
  142.   #     exp : 新的 EXP
  143.   #--------------------------------------------------------------------------
  144.   def exp=(exp)
  145.     # ★EXPの上限チェックを解除
  146.     @exp = [exp, 0].max
  147.     # 升级
  148.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  149.       @hp = maxhp
  150.       @sp = maxsp
  151.       @level += 1
  152.       # 学会特技
  153.       for j in $data_classes[@class_id].learnings
  154.         if j.level == @level
  155.           learn_skill(j.skill_id)
  156.         end
  157.       end
  158.     end
  159.     # 降级
  160.     while @exp < @exp_list[@level]
  161.       @level -= 1
  162.     end
  163.     # 修正当前的 HP 与 SP 超过最大值
  164.     @hp = [@hp, self.maxhp].min
  165.     @sp = [@sp, self.maxsp].min
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● 更改水品
  169.   #     level : 新的等级
  170.   #--------------------------------------------------------------------------
  171.   def level=(level)
  172.     # 检查上下限
  173.     # ★LV上限をnew_final_levelでチェックするように変更
  174.     level = [[level, new_final_level].min, 1].max
  175.     # 更改 EXP
  176.     self.exp = @exp_list[level]
  177.   end
  178. end
  179.   
  180.   
  181. class Game_Battler
  182.   #--------------------------------------------------------------------------
  183.   # ● 获取 MaxSP
  184.   #--------------------------------------------------------------------------
  185.   def maxsp
  186.     n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min
  187.     for i in @states
  188.       n *= $data_states[i].maxsp_rate / 100.0
  189.     end
  190.     n = [[Integer(n), 0].max, MAXSP_LIMIT].min
  191.     return n
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● 获取力量
  195.   #--------------------------------------------------------------------------
  196.   def str
  197.     n = [[base_str + @str_plus, 1].max, STR_LIMIT].min
  198.     for i in @states
  199.       n *= $data_states[i].str_rate / 100.0
  200.     end
  201.     n = [[Integer(n), 1].max, STR_LIMIT].min
  202.     return n
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 获取灵巧
  206.   #--------------------------------------------------------------------------
  207.   def dex
  208.     n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min
  209.     for i in @states
  210.       n *= $data_states[i].dex_rate / 100.0
  211.     end
  212.     n = [[Integer(n), 1].max, DEX_LIMIT].min
  213.     return n
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 获取速度
  217.   #--------------------------------------------------------------------------
  218.   def agi
  219.     n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min
  220.     for i in @states
  221.       n *= $data_states[i].agi_rate / 100.0
  222.     end
  223.     n = [[Integer(n), 1].max, AGI_LIMIT].min
  224.     return n
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 获取魔力
  228.   #--------------------------------------------------------------------------
  229.   def int
  230.     n = [[base_int + @int_plus, 1].max, INT_LIMIT].min
  231.     for i in @states
  232.       n *= $data_states[i].int_rate / 100.0
  233.     end
  234.     n = [[Integer(n), 1].max, INT_LIMIT].min
  235.     return n
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 设置 MaxHP
  239.   #     maxhp : 新的 MaxHP
  240.   #--------------------------------------------------------------------------
  241.   def maxhp=(maxhp)
  242.     @maxhp_plus += maxhp - self.maxhp
  243.     @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min
  244.     @hp = [@hp, self.maxhp].min
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 设置 MaxSP
  248.   #     maxsp : 新的 MaxSP
  249.   #--------------------------------------------------------------------------
  250.   def maxsp=(maxsp)
  251.     @maxsp_plus += maxsp - self.maxsp
  252.     @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min
  253.     @sp = [@sp, self.maxsp].min
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 设置力量
  257.   #     str : 新的力量
  258.   #--------------------------------------------------------------------------
  259.   def str=(str)
  260.     @str_plus += str - self.str
  261.     @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 设置灵巧
  265.   #     dex : 新的灵巧
  266.   #--------------------------------------------------------------------------
  267.   def dex=(dex)
  268.     @dex_plus += dex - self.dex
  269.     @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 设置速度
  273.   #     agi : 新的速度
  274.   #--------------------------------------------------------------------------
  275.   def agi=(agi)
  276.     @agi_plus += agi - self.agi
  277.     @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 设置魔力
  281.   #     int : 新的魔力
  282.   #--------------------------------------------------------------------------
  283.   def int=(int)
  284.     @int_plus += int - self.int
  285.     @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min
  286.   end
  287. end
复制代码

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-1-10 20:23:17 | 只看该作者
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   def new_final_level
  3.     s = $game_switches
  4.     case
  5.     when s[13] then 180
  6.     when s[12] then 160
  7.     when s[11] then 140
  8.     when s[10] then 120
  9.     else            100
  10.     end
  11.   end
  12. end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
3
 楼主| 发表于 2015-1-10 20:46:07 | 只看该作者
taroxd 发表于 2015-1-10 20:23
class Game_Actor < Game_Battler
  def new_final_level
    s = $game_switches

貌似没效果,升到99级,在升级就成1级了。
等级突破上限.rar (191.18 KB, 下载次数: 69)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2015-1-11 21:01:40 | 只看该作者
  1. def new_final_level
  2.     lv = BASE_FINAL_LEVEL
  3.     #以下上限LV個別指定用
  4.     #case self.id
  5.     #when 1
  6.     #  lv = 255
  7.     #when 2
  8.     #  lv = 999
  9.     #when 8
  10.     #  lv = 15600
  11.     #end
  12.     return lv
  13.   end
复制代码
这段改成
  1. def new_final_level
  2.     lv = BASE_FINAL_LEVEL
  3.     lv+=20 if $game_switches[10];lv+=20 if $game_switches[11];lv+=20 if $game_switches[12];lv+=20 if $game_switches[13]
  4.     #以下上限LV個別指定用
  5.     case self.id
  6.     when 1
  7.       lv += 155
  8.     when 2
  9.       lv += 899
  10.     when 8
  11.       lv += 15500
  12.     end
  13.     return lv
  14.   end
复制代码

点评

貌似还是不行,角色升到99级,打开10号开关,等级上限变成了197级,在打开10号开关变成295级了,在打开1次,直接变成1级。。  发表于 2015-1-11 21:53
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2015-1-11 22:38:13 | 只看该作者
本帖最后由 恐惧剑刃 于 2015-1-20 19:39 编辑

不仅要更改常量的值 可能也要 重新生成EXP make_exp_list

一个简单的方法
等级分段.zip (230.41 KB, 下载次数: 98)



RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxHP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxhp
  5.  
  6.   # 当角色种族为“人族”时
  7.   if @zhongzu == "人"
  8.     # 效果:数据库里面1级时的属性+当前【等级】* 11 = 最终属性
  9.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 11
  10.  
  11.   # 当角色种族为“仙族”时   
  12.   elsif @zhongzu == "仙"
  13.     # 效果:数据库里面1级时的属性+当前【等级】* 8 = 最终属性
  14.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 8
  15.  
  16.   # 当角色种族为“妖族”时   
  17.   elsif @zhongzu == "妖"
  18.     # 效果:数据库里面1级时的属性+当前【等级】* 9 = 最终属性
  19.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 9
  20.  
  21.   # 当角色种族为“巫族”时   
  22.   elsif @zhongzu == "巫"
  23.     # 效果:数据库里面1级时的属性+当前【等级】* 8 = 最终属性
  24.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 8
  25.  
  26.   else
  27.     # 效果:数据库里面1级时的属性+当前【等级】* 10 = 最终属性   
  28.     n = $data_actors[@actor_id].parameters[0, 1]+ @level*10
  29.   end  
  30.     return n
  31.   end





















调整下位置
RUBY 代码复制
  1. alias initialize_zhongzu_old initialize
  2.   def initialize(actor_id)
  3.     case actor_id   
  4.     when 1,2,6,13,17,18,19,21,25,26     # id为1,2,6,13,17,18,19,21,25,26的角色是人族
  5.       @zhongzu = "人"
  6.     end
  7.     initialize_zhongzu_old(actor_id)
  8.   end

点评

3Q解决了  发表于 2015-1-20 20:54
已经编辑此楼 原因是:在@zhongzu定义前就已经使用了maxhp方法,就是说 你还没有定义人族就已经带入气血了 按照不是人族的气血计算的 出现了两个maxhp  发表于 2015-1-20 19:41
谢啦!有空帮我看下那个捕捉的系统吧,那么久了,貌似没人回答。  发表于 2015-1-15 21:34
我也注意到了,目前不明原因。。。  发表于 2015-1-12 19:02
好了,谢谢!不过这个脚本,属性加的很变态的,能否改成默认的那样计算的提高属性。  发表于 2015-1-12 18:50

评分

参与人数 1星屑 +200 收起 理由
︶ㄣ牛排ぶ + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
6
 楼主| 发表于 2015-1-12 07:10:42 | 只看该作者
恐惧剑刃 发表于 2015-1-11 22:38
不仅要更改常量的值 可能也要 重新生成EXP make_exp_list

一个简单的方法

有个问题,当角色到50级瓶颈的时候,去转生,经验出现问题

未转瓶颈

一转【升级经验和当前经验相同】

二转之后经验显示正常

点评

已经改好  发表于 2015-1-12 18:42
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
7
 楼主| 发表于 2015-1-15 21:04:18 | 只看该作者
本帖最后由 黑米馒头 于 2015-1-15 21:40 编辑
恐惧剑刃 发表于 2015-1-11 22:38
不仅要更改常量的值 可能也要 重新生成EXP make_exp_list

一个简单的方法


我在这个脚本里加入了种族功能,怎么会提示158行错误呢
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxHP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxhp

  5.   # 当角色种族为“人族”时
  6.   if @actor.zhongzu == "人"
  7.     # 效果:数据库里面1级时的属性+当前【等级】* 11 = 最终属性
  8.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 11
  9.    
  10.   # 当角色种族为“仙族”时   
  11.   elsif @actor.zhongzu == "仙"
  12.     # 效果:数据库里面1级时的属性+当前【等级】* 8 = 最终属性
  13.     n = $data.actors[@actor_id].parameters[0, 1]+ @level * 8
  14.    
  15.   # 当角色种族为“妖族”时   
  16.   elsif @actor.zhongzu == "妖"
  17.     # 效果:数据库里面1级时的属性+当前【等级】* 9 = 最终属性
  18.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 9
  19.    
  20.   # 当角色种族为“巫族”时   
  21.   elsif @actor.zhongzu == "巫"
  22.     # 效果:数据库里面1级时的属性+当前【等级】* 8 = 最终属性
  23.     n = $data_actors[@actor_id].parameters[0, 1]+ @level * 8
  24.    
  25.   else
  26.     # 效果:数据库里面1级时的属性+当前【等级】* 10 = 最终属性   
  27.     n = $data_actors[@actor_id].parameters[0, 1]+ @level*10
  28.   end  
  29.     return n
  30.   end
复制代码

点评

LS已经改好  发表于 2015-1-15 21:23
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
8
 楼主| 发表于 2015-1-20 19:22:49 | 只看该作者
恐惧剑刃 发表于 2015-1-11 22:38
不仅要更改常量的值 可能也要 重新生成EXP make_exp_list

一个简单的方法

貌似我在等级突破上限的脚本里定义了种族,然后HP显示出现了问题,有种族的角色初始HP显示不正常,显示成了当前气血>最高气血。没定义种族的角色显示正常。研究了1天了,不知道哪里错了。

Project1.rar (188.54 KB, 下载次数: 48)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 21:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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