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

Project1

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

[已经过期] 如何使单一角色能力值破限?

[复制链接]

Lv1.梦旅人

矿工

梦石
0
星屑
134
在线时间
898 小时
注册时间
2012-10-5
帖子
1535
跳转到指定楼层
1
发表于 2013-9-20 12:40:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 876加几 于 2013-9-20 12:56 编辑

单一角色的等级破限没问题了,但是单一角色的能力值破限却成了大坑。
脚本:@Person
RUBY 代码复制
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. ###############################################################################
  5. #等级能破上限的角色 ID
  6. NEW_FINAL_ACTORD_ID = [4]
  7. ###############################################################################
  8. #等级可无限提升
  9. #パラメータの算出が適当すぎるので、各自修正が必要かと。
  10.   BASE_FINAL_LEVEL = 100   #上限レベル(あんまり大きな値を設定するとハングします)
  11.   MAXHP_LIMIT = 11000    #HP限界値
  12.   MAXSP_LIMIT = 7650     #SP限界値
  13.   STR_LIMIT   = 545      #STR限界値
  14.   DEX_LIMIT   = 800      #DEX限界値
  15.   AGI_LIMIT   = 750      #AGI限界値
  16.   INT_LIMIT   = 850      #INT限界値
  17. class Game_Actor < Game_Battler
  18.   #############################################################################
  19.   def new_final_level
  20.     return BASE_FINAL_LEVEL if NEW_FINAL_ACTORD_ID.include?(self.id)
  21.     return 99
  22.   end
  23.   #############################################################################
  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 if NEW_FINAL_ACTORD_ID.include?(self.id)
  46.     n = [[base_maxhp + @maxhp_plus, 1].max, parameters[0, @level]].min
  47.     for i in @states
  48.       n *= $data_states[i].maxhp_rate / 100.0
  49.     end
  50.     n = [[Integer(n), 1].max, MAXHP_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  51.     n = [[Integer(n), 1].max, parameters[0, @level]].min
  52.     return n
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 基本 MaxHP の取得
  56.   #--------------------------------------------------------------------------
  57.   def base_maxhp
  58.     n = $data_actors[@actor_id].parameters[0, 1]
  59.     n += $data_actors[@actor_id].parameters[0, 2] * @level
  60.     return n
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 基本 MaxSP の取得
  64.   #--------------------------------------------------------------------------
  65.   def base_maxsp
  66.     n = $data_actors[@actor_id].parameters[1, 1]
  67.     n += $data_actors[@actor_id].parameters[1, 2] * @level
  68.     return n
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 基本腕力の取得
  72.   #--------------------------------------------------------------------------
  73.   def base_str
  74.     n = $data_actors[@actor_id].parameters[2, 1]
  75.     n += $data_actors[@actor_id].parameters[2, 2] * @level
  76.     weapon = $data_weapons[@weapon_id]
  77.     armor1 = $data_armors[@armor1_id]
  78.     armor2 = $data_armors[@armor2_id]
  79.     armor3 = $data_armors[@armor3_id]
  80.     armor4 = $data_armors[@armor4_id]
  81.     n += weapon != nil ? weapon.str_plus : 0
  82.     n += armor1 != nil ? armor1.str_plus : 0
  83.     n += armor2 != nil ? armor2.str_plus : 0
  84.     n += armor3 != nil ? armor3.str_plus : 0
  85.     n += armor4 != nil ? armor4.str_plus : 0
  86.     return [[n, 1].max, STR_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  87.     return $data_actors[@actor_id].parameters[2, @level]
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 基本器用さの取得
  91.   #--------------------------------------------------------------------------
  92.   def base_dex
  93.     n = $data_actors[@actor_id].parameters[3, 1]
  94.     n += $data_actors[@actor_id].parameters[3, 2] * @level
  95.     weapon = $data_weapons[@weapon_id]
  96.     armor1 = $data_armors[@armor1_id]
  97.     armor2 = $data_armors[@armor2_id]
  98.     armor3 = $data_armors[@armor3_id]
  99.     armor4 = $data_armors[@armor4_id]
  100.     n += weapon != nil ? weapon.dex_plus : 0
  101.     n += armor1 != nil ? armor1.dex_plus : 0
  102.     n += armor2 != nil ? armor2.dex_plus : 0
  103.     n += armor3 != nil ? armor3.dex_plus : 0
  104.     n += armor4 != nil ? armor4.dex_plus : 0
  105.     return [[n, 1].max, DEX_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  106.     return $data_actors[@actor_id].parameters[3, @level]
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 基本素早さの取得
  110.   #--------------------------------------------------------------------------
  111.   def base_agi
  112.     n = $data_actors[@actor_id].parameters[4, 1]
  113.     n += $data_actors[@actor_id].parameters[4, 2] * @level
  114.     weapon = $data_weapons[@weapon_id]
  115.     armor1 = $data_armors[@armor1_id]
  116.     armor2 = $data_armors[@armor2_id]
  117.     armor3 = $data_armors[@armor3_id]
  118.     armor4 = $data_armors[@armor4_id]
  119.     n += weapon != nil ? weapon.agi_plus : 0
  120.     n += armor1 != nil ? armor1.agi_plus : 0
  121.     n += armor2 != nil ? armor2.agi_plus : 0
  122.     n += armor3 != nil ? armor3.agi_plus : 0
  123.     n += armor4 != nil ? armor4.agi_plus : 0
  124.     return [[n, 1].max, AGI_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  125.     return $data_actors[@actor_id].parameters[4, @level]
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 基本魔力の取得
  129.   #--------------------------------------------------------------------------
  130.   def base_int
  131.     n = $data_actors[@actor_id].parameters[5, 1]
  132.     n += $data_actors[@actor_id].parameters[5, 2] * @level
  133.     weapon = $data_weapons[@weapon_id]
  134.     armor1 = $data_armors[@armor1_id]
  135.     armor2 = $data_armors[@armor2_id]
  136.     armor3 = $data_armors[@armor3_id]
  137.     armor4 = $data_armors[@armor4_id]
  138.     n += weapon != nil ? weapon.int_plus : 0
  139.     n += armor1 != nil ? armor1.int_plus : 0
  140.     n += armor2 != nil ? armor2.int_plus : 0
  141.     n += armor3 != nil ? armor3.int_plus : 0
  142.     n += armor4 != nil ? armor4.int_plus : 0
  143.     return [[n, 1].max, INT_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  144.     return $data_actors[@actor_id].parameters[5, @level]
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● EXP の変更
  148.   #     exp : 新しい EXP
  149.   #--------------------------------------------------------------------------
  150.   def exp=(exp)
  151.     # ★EXPの上限チェックを解除
  152.     [url=home.php?mod=space&uid=13302]@exp[/url] = [exp, 0].max
  153.     # レベルアップ
  154.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  155.      [url=home.php?mod=space&uid=22147]@level[/url] += 1
  156.       # スキル習得
  157.       for j in $data_classes[@class_id].learnings
  158.         if j.level == @level
  159.           learn_skill(j.skill_id)
  160.         end
  161.       end
  162.     end
  163.     # レベルダウン
  164.     while @exp < @exp_list[@level]
  165.       @level -= 1
  166.     end
  167.     # 現在の HP と SP が最大値を超えていたら修正
  168.     @hp = [@hp, self.maxhp].min
  169.     @sp = [@sp, self.maxsp].min
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● レベルの変更
  173.   #     level : 新しいレベル
  174.   #--------------------------------------------------------------------------
  175.   def level=(level)
  176.     # 上下限チェック
  177.     # ★LV上限をnew_final_levelでチェックするように変更
  178.     level = [[level, new_final_level].min, 1].max
  179.     # EXP を変更
  180.     self.exp = @exp_list[level]
  181.   end
  182. end
  183.  
  184.  
  185. class Game_Battler
  186.   #--------------------------------------------------------------------------
  187.   # ● MaxSP の取得
  188.   #--------------------------------------------------------------------------
  189.   def maxsp
  190.     n = [[base_maxsp + @maxsp_plus, 0].max, MAXSP_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  191.     n = [[base_maxsp + @maxsp_plus, 0].max, parameters[1, @level]].min
  192.     for i in @states
  193.       n *= $data_states[i].maxsp_rate / 100.0
  194.     end
  195.     n = [[Integer(n), 0].max, MAXSP_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  196.     n = [[Integer(n), 0].max, parameters[1, @level]].min
  197.     return n
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 腕力の取得
  201.   #--------------------------------------------------------------------------
  202.   def str
  203.     n = [[base_str + @str_plus, 1].max, STR_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  204.     n = [[base_str + @str_plus, 1].max, parameters[2, @level]].min
  205.     for i in @states
  206.       n *= $data_states[i].str_rate / 100.0
  207.     end
  208.     n = [[Integer(n), 1].max, STR_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  209.     n = [[Integer(n), 1].max, parameters[2, @level]].min
  210.     return n
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 器用さの取得
  214.   #--------------------------------------------------------------------------
  215.   def dex
  216.     n = [[base_dex + @dex_plus, 1].max, DEX_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  217.     n = [[base_dex + @dex_plus, 1].max, parameters[3, @level]].min
  218.     for i in @states
  219.       n *= $data_states[i].dex_rate / 100.0
  220.     end
  221.     n = [[Integer(n), 1].max, DEX_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  222.     n = [[Integer(n), 1].max, parameters[3, @level]].min
  223.     return n
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 素早さの取得
  227.   #--------------------------------------------------------------------------
  228.   def agi
  229.     n = [[base_agi + @agi_plus, 1].max, AGI_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  230.     n = [[base_agi + @agi_plus, 1].max, parameters[4, @level]].min
  231.     for i in @states
  232.       n *= $data_states[i].agi_rate / 100.0
  233.     end
  234.     n = [[Integer(n), 1].max, AGI_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  235.     n = [[Integer(n), 1].max, parameters[4, @level]].min
  236.     return n
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 魔力の取得
  240.   #--------------------------------------------------------------------------
  241.   def int
  242.     n = [[base_int + @int_plus, 1].max, INT_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  243.     n = [[base_int + @int_plus, 1].max, parameters[5, @level]].min
  244.     for i in @states
  245.       n *= $data_states[i].int_rate / 100.0
  246.     end
  247.     n = [[Integer(n), 1].max, INT_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  248.     n = [[Integer(n), 1].max, parameters[5, @level]].min
  249.     return n
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● MaxHP の設定
  253.   #     maxhp : 新しい MaxHP
  254.   #--------------------------------------------------------------------------
  255.   def maxhp=(maxhp)
  256.     @maxhp_plus += maxhp - self.maxhp
  257.     @maxhp_plus = [[@maxhp_plus, -MAXHP_LIMIT].max, MAXHP_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  258.     @maxhp_plus = [[@maxhp_plus, -parameters[0, @level]].max, parameters[0, @level]].min
  259.     @hp = [@hp, self.maxhp].min
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● MaxSP の設定
  263.   #     maxsp : 新しい MaxSP
  264.   #--------------------------------------------------------------------------
  265.   def maxsp=(maxsp)
  266.     @maxsp_plus += maxsp - self.maxsp
  267.     @maxsp_plus = [[@maxsp_plus, -MAXSP_LIMIT].max, MAXSP_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  268.     @maxsp_plus = [[@maxsp_plus, -parameters[1, @level]].max, parameters[1, @level]].min
  269.     @sp = [@sp, self.maxsp].min
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 腕力の設定
  273.   #     str : 新しい腕力
  274.   #--------------------------------------------------------------------------
  275.   def str=(str)
  276.     @str_plus += str - self.str
  277.     @str_plus = [[@str_plus, -STR_LIMIT].max, STR_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  278.     @str_plus = [[@str_plus, -parameters[2, @level]].max, parameters[2, @level]].min
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 器用さの設定
  282.   #     dex : 新しい器用さ
  283.   #--------------------------------------------------------------------------
  284.   def dex=(dex)
  285.     @dex_plus += dex - self.dex
  286.     @dex_plus = [[@dex_plus, -DEX_LIMIT].max, DEX_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  287.     @dex_plus = [[@dex_plus, -parameters[3, @level]].max, parameters[3, @level]].min
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 素早さの設定
  291.   #     agi : 新しい素早さ
  292.   #--------------------------------------------------------------------------
  293.   def agi=(agi)
  294.     @agi_plus += agi - self.agi
  295.     @agi_plus = [[@agi_plus, -AGI_LIMIT].max, AGI_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  296.     @agi_plus = [[@agi_plus, -parameters[4, @level]].max, parameters[4, @level]].min
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 魔力の設定
  300.   #     int : 新しい魔力
  301.   #--------------------------------------------------------------------------
  302.   def int=(int)
  303.     @int_plus += int - self.int
  304.     @int_plus = [[@int_plus, -INT_LIMIT].max, INT_LIMIT].min if NEW_FINAL_ACTORD_ID.include?(self.id)
  305.     @int_plus = [[@int, -parameters[5, @level]].max, parameters[5, @level]].min
  306.   end
  307. end
  308. #==============================================================================
  309. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  310. #==============================================================================
总是提示46行NameError。从这个脚本上修改。
注:破限的角色是4号,上面的BASE是要破限的,其他角色不变。   
呃,发糖贴好冷清呀!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
20 小时
注册时间
2013-9-19
帖子
56
2
发表于 2013-9-20 22:03:37 | 只看该作者
同求答案,破限这个太有用处了。
.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 03:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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