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

Project1

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

[已经解决] 跪求角色和敌人的能力破限脚本

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
帖子
58
跳转到指定楼层
1
发表于 2016-6-16 22:13:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
打算做多周目的游戏,叠加属性的话很快角色的属性就达到极限了。而且还有就是敌人属性太弱玩着也会没意思。希望有哪位大神有比较好的能力破限还不会有问题的脚本。能直接改数据库最好,不能的话希望起码尽量能实现敌人属性破限吧……拜托了。

点评

这没什么,那些商业游戏的多周目不也是999上限  发表于 2016-6-16 22:35

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1358
在线时间
1295 小时
注册时间
2012-8-4
帖子
749
2
发表于 2016-6-16 22:29:38 | 只看该作者
多周目后虐怪了好玩些吧,可以考虑弄一种可以随时改变敌人难度的,这样也不错。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
帖子
58
3
 楼主| 发表于 2016-6-16 23:58:36 | 只看该作者
夜狠简单 发表于 2016-6-16 22:29
多周目后虐怪了好玩些吧,可以考虑弄一种可以随时改变敌人难度的,这样也不错。 ...

呜,改敌人能力上限很麻烦吗?
比如名称拓展之类的方式……
我还是想增强敌人,不然加了一堆角色各种提升的脚本,敌人太弱没法玩了啊……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
4
发表于 2016-6-17 20:00:29 | 只看该作者
本帖最后由 wxlhj860 于 2016-6-18 00:58 编辑

在下就只写一种属性,其他属性的话,楼主参照Game_Enemy这个类,有许多"base_"前缀的定义,再更改一下方法名"base_maxhp"就可以了~其实大家都只是觉得比较麻烦。。
找到脚本中的Game_Enemy,45-105都是可以改敌人属性的。
举个例子:
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxHP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxhp
  5.     return $data_enemies[@enemy_id].maxhp
  6.   end


其中return后的内容,就是敌人该属性的值。@enemy_id是敌人的ID,ID从数据库那里翻。
如果你要每个敌人都设定不同的属性,突破数据库的值,这是最原始且最愚蠢的办法了~

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxHP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxhp
  5.     n = $data_enemies[@enemy_id].maxhp
  6.     # 当敌人ID等于1的时候
  7.     if @enemy_id == 1
  8.       # 赋值
  9.       n = 9999999
  10.     end
  11.     return n
  12.   end


先自己学学,理解一下最简单的办法~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
帖子
58
5
 楼主| 发表于 2016-6-17 21:19:52 | 只看该作者
wxlhj860 发表于 2016-6-17 20:00
在下就只写一种属性,其他属性的话,楼主参照Game_Enemy这个类,有许多"base_"前缀的定义,再更改一下方法 ...

这个具体怎么理解和使用呢……?
虽然不算萌新但是对RUBY代码还是有些理解困难。
求指教……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
15 小时
注册时间
2015-10-1
帖子
18
6
发表于 2016-6-17 23:39:30 | 只看该作者
说一句,盲目增加敌人属性,是最不明智的方法
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
帖子
58
7
 楼主| 发表于 2016-6-17 23:41:43 | 只看该作者
nightaround 发表于 2016-6-17 23:39
说一句,盲目增加敌人属性,是最不明智的方法

会有什么问题出现吗……?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
15 小时
注册时间
2015-10-1
帖子
18
8
发表于 2016-6-17 23:44:23 | 只看该作者
望月神绮 发表于 2016-6-17 23:41
会有什么问题出现吗……?

不会,不过如果整个游戏一直这样的话会显得很无聊……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
102 小时
注册时间
2016-5-9
帖子
58
9
 楼主| 发表于 2016-6-17 23:46:20 | 只看该作者
nightaround 发表于 2016-6-17 23:44
不会,不过如果整个游戏一直这样的话会显得很无聊……

会有其他的特色和彩蛋啦……
但是确实感觉属性封顶不太舒服,而且感觉伤害值之类高一些,看着也比较爽……
所以想增强一下敌人。有办法吗QAQ
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
15 小时
注册时间
2015-10-1
帖子
18
10
发表于 2016-6-18 00:08:14 | 只看该作者
本帖最后由 nightaround 于 2016-6-18 00:11 编辑

啊,属性破限的脚本我是有

RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 限界突破 - KGC_LimitBreak ◆
  3. #_/    ◇ Last update : 2008/01/10 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  各種設定値の上限を変更します。
  6. #_/============================================================================
  7. #_/  なるべく [Scene_Debug] のすぐ下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  9.  
  10. #==============================================================================
  11. # ★ カスタマイズ項目 ★
  12. #==============================================================================
  13.  
  14. module KGC
  15.   module LimitBreak
  16.     # ◆能力値算出方式
  17.     #   0..データベース通り。
  18.     #      (100以降は計算式として ACTOR_LV100_CALC を使用)
  19.     #
  20.     #   1..データベースを用いた2次関数。
  21.     #        a:レベル1の値  b:レベル2の値  c:レベル3の値  x:現レベル
  22.     #      として、
  23.     #        ax^2 + bx + c
  24.     #      を用いて能力値を算出。
  25.     #
  26.     #   2..データベースを用いた1次関数。
  27.     #        b:レベル2の値  c:レベル3の値  x:現レベル
  28.     #      として、
  29.     #        bx + c
  30.     #      を用いて能力値を算出。
  31.     #      (レベル2,3の値を使うのは、2次関数方式との使い分けを楽にするため)
  32.     CALC_PARAMETER_METHOD = 0
  33.  
  34.     # ◆レベル 100 以降の能力値計算式
  35.     #  (CALC_PARAMETER_METHOD が 0 のときに使用)
  36.     #  【lv..現レベル  p[x]..レベル x の能力値】
  37.     #  この計算結果をレベル 99 の能力値に加算。
  38.     ACTOR_LV100_CALC = "(p[99] - p[98]) * (lv - 99)"
  39.  
  40.  
  41.     # ◆アクターのレベル上限
  42.     #  アクターID順に配列に格納(最初は nil)
  43.     ACTOR_LV_LIMIT = [nil]
  44.     # ◆上限未指定アクターのレベル上限
  45.     #  上限未指定(nil)のアクターはこの値を使用。
  46.     ACTOR_LV_LIMIT_DEFAULT =999
  47.     $actover = ACTOR_LV_LIMIT_DEFAULT + 1
  48.     # ◆アクターの経験値上限
  49.     ACTOR_EXP_LIMIT = 999999999999999
  50.     # ◆アクターのHP上限
  51.     ACTOR_HP_LIMIT  = 999999
  52.     # ◆アクターのSP上限
  53.     ACTOR_SP_LIMIT  = 999999
  54.     # ◆アクターの「腕力, 器用さ, 素早さ, 魔力」上限
  55.     ACTOR_ETC_LIMIT = 99999
  56.  
  57.     # ◆敵のHP上限
  58.     ENEMY_HP_LIMIT  = 99999999
  59.     # ◆敵のSP上限
  60.     ENEMY_SP_LIMIT  = 99999999
  61.     # ◆敵の「腕力, 器用さ, 素早さ, 魔力」上限
  62.     ENEMY_ETC_LIMIT = 500000
  63.  
  64.  
  65.  
  66.  
  67.  
  68.     # ◆アクター能力値修正値(百分率)
  69.     #  アクターの能力値がデータベースの設定値の○%になる。
  70.     #  (上限値が高い場合に使用。データベースの値を使う場合は 100)
  71.     ACTOR_MAXHP_REVISE = 100  # MAXHP
  72.     ACTOR_MAXSP_REVISE = 100  # MAXSP
  73.     ACTOR_STR_REVISE   = 100  # 腕力
  74.     ACTOR_DEX_REVISE   = 100  # 器用さ
  75.     ACTOR_AGI_REVISE   = 100  # 素早さ
  76.     ACTOR_INT_REVISE   = 100  # 魔力
  77.  
  78.     # ◆敵能力値修正値(百分率)
  79.     #  敵の能力値がデータベースの設定値の○%になる。
  80.     ENEMY_MAXHP_REVISE = 100  # MAXHP
  81.     ENEMY_MAXSP_REVISE = 100  # MAXSP
  82.     ENEMY_STR_REVISE   = 100  # 腕力
  83.     ENEMY_DEX_REVISE   = 100  # 器用さ
  84.     ENEMY_AGI_REVISE   = 100  # 素早さ
  85.     ENEMY_INT_REVISE   = 100  # 魔力
  86.     ENEMY_ATK_REVISE   = 100  # 攻撃力
  87.     ENEMY_PDEF_REVISE  = 100  # 物理防御
  88.     ENEMY_MDEF_REVISE  = 100  # 魔法防御
  89.  
  90.     # ◆所持金上限
  91.     GOLD_LIMIT = 9999999999
  92.  
  93.     # ◆アイテム所持数上限
  94.     ITEM_LIMIT = []  # ← これは消さないこと!
  95.     # この下に、アイテム所持数の上限を
  96.     #   ITEM_LIMIT[アイテムID] = 所持数上限
  97.     # という書式で設定。
  98.     #  <例> アイテム 1 は 99 個所持可能
  99.     #  ITEM_LIMIT[1] = 99
  100.  
  101.     # ◆武器所持数上限
  102.     #  指定方法はアイテムと同じ。
  103.     WEAPON_LIMIT = []  # ← これは消さないこと!
  104.     # ◆防具所持数上限
  105.     #  指定方法はアイテムと同じ。
  106.     ARMOR_LIMIT = []  # ← これは消さないこと!
  107.  
  108.     # ◆アイテム所持数上限 (デフォルト)
  109.     #  上限を指定しなかったアイテム、武器、防具はこの値を上限として使用。
  110.     ITEM_LIMIT_DEFAULT = 999
  111.  
  112.     module_function
  113.     #--------------------------------------------------------------------------
  114.     # ○ 敵能力値直接指定
  115.     #     ここで、敵の最大HPなどを直接指定することができます。
  116.     #     データベースに入りきらない数値を指定する場合に使用してください。
  117.     #--------------------------------------------------------------------------
  118.     def set_enemy_status
  119. =begin
  120. 我只是举个栗子
  121.       $data_enemies[422].dex = 13500
  122.       $data_enemies[422].agi = 13500
  123.       $data_enemies[422].str = 13500
  124.       $data_enemies[422].int = 12500
  125.       $data_enemies[422].atk = 2300
  126.       $data_enemies[422].pdef = 2600
  127.       $data_enemies[422].maxsp = 236300
  128. =end
  129.     end
  130.   end
  131. end
  132.  
  133. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  134.  
  135. $imported = {} if $imported == nil
  136. $imported["LimitBreak"] = true
  137.  
  138. if $game_special_elements == nil
  139.   $game_special_elements = {}
  140.   $data_system = load_data("Data/System.rxdata")
  141. end
  142.  
  143. module KGC::LimitBreak
  144.   module_function
  145.   #--------------------------------------------------------------------------
  146.   # ● 敵の能力補正を適用
  147.   #--------------------------------------------------------------------------
  148.   def revise_enemy_parameters
  149.     (1...$data_enemies.size).each { |i|
  150.       enemy = $data_enemies[i]
  151.       enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_REVISE / 100
  152.       enemy.maxsp = enemy.maxsp * ENEMY_MAXSP_REVISE / 100
  153.       enemy.str = enemy.str * ENEMY_STR_REVISE / 100
  154.       enemy.dex = enemy.dex * ENEMY_DEX_REVISE / 100
  155.       enemy.agi = enemy.agi * ENEMY_AGI_REVISE / 100
  156.       enemy.int = enemy.int * ENEMY_INT_REVISE / 100
  157.       enemy.atk = enemy.atk * ENEMY_ATK_REVISE / 100
  158.       enemy.pdef = enemy.pdef * ENEMY_PDEF_REVISE / 100
  159.       enemy.mdef = enemy.mdef * ENEMY_MDEF_REVISE / 100
  160.     }
  161.   end
  162. end
  163.  
  164. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  165.  
  166. #==============================================================================
  167. # ■ RPG::Item
  168. #==============================================================================
  169.  
  170. class RPG::Item
  171.   #--------------------------------------------------------------------------
  172.   # ● 所持数上限
  173.   #--------------------------------------------------------------------------
  174.   def number_limit
  175.     if KGC::LimitBreak::ITEM_LIMIT[self.id] != nil
  176.       return KGC::LimitBreak::ITEM_LIMIT[self.id]
  177.     else
  178.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  179.     end
  180.   end
  181. end
  182.  
  183. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  184.  
  185. #==============================================================================
  186. # ■ RPG::Weapon
  187. #==============================================================================
  188.  
  189. class RPG::Weapon
  190.   #--------------------------------------------------------------------------
  191.   # ● 所持数上限
  192.   #--------------------------------------------------------------------------
  193.   def number_limit
  194.     if KGC::LimitBreak::WEAPON_LIMIT[self.id] != nil
  195.       return KGC::LimitBreak::WEAPON_LIMIT[self.id]
  196.     else
  197.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  198.     end
  199.   end
  200. end
  201.  
  202. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  203.  
  204. #==============================================================================
  205. # ■ RPG::Armor
  206. #==============================================================================
  207.  
  208. class RPG::Armor
  209.   #--------------------------------------------------------------------------
  210.   # ● 所持数上限
  211.   #--------------------------------------------------------------------------
  212.   def number_limit
  213.     if KGC::LimitBreak::ARMOR_LIMIT[self.id] != nil
  214.       return KGC::LimitBreak::ARMOR_LIMIT[self.id]
  215.     else
  216.       return KGC::LimitBreak::ITEM_LIMIT_DEFAULT
  217.     end
  218.   end
  219. end
  220.  
  221. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  222.  
  223. #==============================================================================
  224. # ■ Game_Battler (分割定義 1)
  225. #==============================================================================
  226.  
  227. class Game_Battler
  228.   #--------------------------------------------------------------------------
  229.   # ● MaxHP の取得
  230.   #--------------------------------------------------------------------------
  231.   def maxhp
  232.     n = [base_maxhp + @maxhp_plus, 1].max
  233.     @states.each { |i| n *= ($data_states[i].maxhp_rate) / 100.0 }
  234.     n = [[Integer(n), 1].max, maxhp_limit].min
  235.     return n
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● MaxSP の取得
  239.   #--------------------------------------------------------------------------
  240.   def maxsp
  241.     n = [base_maxsp + @maxsp_plus, 0].max
  242.     @states.each { |i| n *= ($data_states[i].maxsp_rate)/ 100.0 }
  243.     n = [[Integer(n), 0].max, maxsp_limit].min
  244.     return n
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 腕力の取得
  248.   #--------------------------------------------------------------------------
  249.   def str
  250.     n = [base_str + @str_plus, 1].max
  251.     @states.each { |i| n *= ($data_states[i].str_rate) / 100.0 }
  252.     n = [[Integer(n), 1].max, parameter_limit].min
  253.     return n
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 器用さの取得
  257.   #--------------------------------------------------------------------------
  258.   def dex
  259.     n = [base_dex + @dex_plus, 1].max
  260.     @states.each { |i| n *= ($data_states[i].dex_rate) / 100.0 }
  261.     n = [[Integer(n), 1].max, parameter_limit].min
  262.     return n
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 素早さの取得
  266.   #--------------------------------------------------------------------------
  267.   def agi
  268.     n = [base_agi + @agi_plus, 1].max
  269.     @states.each { |i| n *= ($data_states[i].agi_rate) / 100.0 }
  270.     n = [[Integer(n), 1].max, parameter_limit].min
  271.     return n
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 魔力の取得
  275.   #--------------------------------------------------------------------------
  276.   def int
  277.     n = [base_int + @int_plus, 1].max
  278.     @states.each { |i| n *= ($data_states[i].int_rate) / 100.0 }
  279.     n = [[Integer(n), 1].max, parameter_limit].min
  280.     return n
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● MaxHP の設定
  284.   #     maxhp : 新しい MaxHP
  285.   #--------------------------------------------------------------------------
  286.   def maxhp=(maxhp)
  287.     @maxhp_plus += maxhp - self.maxhp
  288.     @maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
  289.     @hp = [@hp, self.maxhp].min
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● MaxSP の設定
  293.   #     maxsp : 新しい MaxSP
  294.   #--------------------------------------------------------------------------
  295.   def maxsp=(maxsp)
  296.     @maxsp_plus += maxsp - self.maxsp
  297.     @maxsp_plus = [[@maxsp_plus, -maxsp_limit].max, maxsp_limit].min
  298.     @sp = [@sp, self.maxsp].min
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● 腕力の設定
  302.   #     str : 新しい腕力
  303.   #--------------------------------------------------------------------------
  304.   def str=(str)
  305.     @str_plus += str - self.str
  306.     @str_plus = [[@str_plus, -parameter_limit].max, parameter_limit].min
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 器用さの設定
  310.   #     dex : 新しい器用さ
  311.   #--------------------------------------------------------------------------
  312.   def dex=(dex)
  313.     @dex_plus += dex - self.dex
  314.     @dex_plus = [[@dex_plus, -parameter_limit].max, parameter_limit].min
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● 素早さの設定
  318.   #     agi : 新しい素早さ
  319.   #--------------------------------------------------------------------------
  320.   def agi=(agi)
  321.     @agi_plus += agi - self.agi
  322.     @agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 魔力の設定
  326.   #     int : 新しい魔力
  327.   #--------------------------------------------------------------------------
  328.   def int=(int)
  329.     @int_plus += int - self.int
  330.     @int_plus = [[@int_plus, -parameter_limit].max, parameter_limit].min
  331.   end
  332. end
  333.  
  334. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  335.  
  336. #==============================================================================
  337. # ■ Game_Actor
  338. #==============================================================================
  339.  
  340. class Game_Actor < Game_Battler
  341.   #--------------------------------------------------------------------------
  342.   # ● EXP 計算
  343.   #--------------------------------------------------------------------------
  344.   def make_exp_list
  345.     actor = $data_actors[@actor_id]
  346.     @exp_list[1] = 0
  347.     pow_i = 2.4 + actor.exp_inflation / 100.0
  348.     (2..(self.final_level + 1)).each { |i|
  349.       if i > self.final_level
  350.         @exp_list[i] = 0
  351.       else
  352.         n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
  353.         @exp_list[i] = @exp_list[i-1] + Integer(n)
  354.       end
  355.     }
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● EXP の変更
  359.   #     exp : 新しい EXP
  360.   #--------------------------------------------------------------------------
  361.   def exp=(exp)
  362.     if $imported["ExpGoldIncrease"]
  363.       rate = calc_exp_increase_rate(KGC::EXPGLD_INC_PERMIT_DOUBLE)
  364.       exp = @exp + (exp - @exp) * rate / 100
  365.     end
  366.     @exp = [[exp, KGC::LimitBreak::ACTOR_EXP_LIMIT].min, 0].max
  367.     # レベルアップ
  368.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  369.       @level += 1
  370.       # スキル習得
  371.       $data_classes[@class_id].learnings.each { |j|
  372.         if j.level == @level
  373.           learn_skill(j.skill_id)
  374.         end
  375.       }
  376.     end
  377.     # レベルダウン
  378.     while @exp < @exp_list[@level]
  379.       @level -= 1
  380.     end
  381.     # 現在の HP と SP が最大値を超えていたら修正
  382.     @hp = [@hp, self.maxhp].min
  383.     @sp = [@sp, self.maxsp].min
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # ○ パラメータの取得
  387.   #--------------------------------------------------------------------------
  388.   if KGC::LimitBreak::CALC_PARAMETER_METHOD == 0
  389.     def parameter(type)
  390.       if @level >= 100
  391.         calc_text = KGC::LimitBreak::ACTOR_LV100_CALC.dup
  392.         calc_text.gsub!(/lv/i) { "@level" }
  393.         calc_text.gsub!(/p\[(\d+)\]/i) {
  394.           "$data_actors[@actor_id].parameters[type, #{$1.to_i}]"
  395.         }
  396.         return $data_actors[@actor_id].parameters[type, 99] + eval(calc_text)
  397.       else
  398.         return $data_actors[@actor_id].parameters[type, @level]
  399.       end
  400.     end
  401.   elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 1
  402.     def parameter(type)
  403.       a = $data_actors[@actor_id].parameters[type, 1]
  404.       b = $data_actors[@actor_id].parameters[type, 2]
  405.       c = $data_actors[@actor_id].parameters[type, 3]
  406.       return a * @level * @level + b * @level + c
  407.     end
  408.   elsif KGC::LimitBreak::CALC_PARAMETER_METHOD == 2
  409.     def parameter(type)
  410.       b = $data_actors[@actor_id].parameters[type, 2]
  411.       c = $data_actors[@actor_id].parameters[type, 3]
  412.       return b * @level + c
  413.     end
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 基本 MaxHP の取得
  417.   #--------------------------------------------------------------------------
  418.   def base_maxhp
  419.     n = self.parameter(0)
  420.     return n * KGC::LimitBreak::ACTOR_MAXHP_REVISE / 100
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ● MaxHP の取得
  424.   #--------------------------------------------------------------------------
  425.   def maxhp
  426.     n = [base_maxhp + @maxhp_plus, 1].max
  427.     @states.each { |i| n *= ($data_states[i].maxhp_rate)/100.0 }
  428.     n = [[Integer(n), 1].max, maxhp_limit].min
  429.     return n
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 基本 MaxSP の取得
  433.   #--------------------------------------------------------------------------
  434.   def base_maxsp
  435.     n = self.parameter(1)
  436.     return n * KGC::LimitBreak::ACTOR_MAXSP_REVISE / 100
  437.   end
  438.   #--------------------------------------------------------------------------
  439.   # ● MaxSP の取得
  440.   #--------------------------------------------------------------------------
  441.   def maxsp
  442.     n = [base_maxsp + @maxsp_plus, 0].max
  443.     @states.each { |i| n *= ($data_states[i].maxsp_rate)/ 100.0 }
  444.     n = [[Integer(n), 0].max, maxsp_limit].min
  445.     return n
  446.   end
  447.   #--------------------------------------------------------------------------
  448.   # ● 基本腕力の取得
  449.   #--------------------------------------------------------------------------
  450.   def base_str
  451.     n = self.parameter(2)
  452.     if $imported["EquipExtension"]
  453.       n += equipment_parameter(2)
  454.     else
  455.       equip_item_list.each { |item| n += (item != nil ? item.str_plus : 0) }
  456.     end
  457.  
  458.     return [[n * KGC::LimitBreak::ACTOR_STR_REVISE / 100, 1].max, parameter_limit].min
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ● 基本器用さの取得
  462.   #--------------------------------------------------------------------------
  463.   def base_dex
  464.     n = self.parameter(3)
  465.     if $imported["EquipExtension"]
  466.       n += equipment_parameter(3)
  467.     else
  468.       equip_item_list.each { |item| n += (item != nil ? item.dex_plus : 0) }
  469.     end
  470.  
  471.     return [[n * KGC::LimitBreak::ACTOR_DEX_REVISE / 100, 1].max, parameter_limit].min
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 基本素早さの取得
  475.   #--------------------------------------------------------------------------
  476.   def base_agi
  477.     n = self.parameter(4)
  478.     if $imported["EquipExtension"]
  479.       n += equipment_parameter(4)
  480.     else
  481.       equip_item_list.each { |item| n += (item != nil ? item.agi_plus : 0) }
  482.     end
  483.  
  484.     return [[n * KGC::LimitBreak::ACTOR_AGI_REVISE / 100, 1].max, parameter_limit].min
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● 基本魔力の取得
  488.   #--------------------------------------------------------------------------
  489.   def base_int
  490.     n = self.parameter(5)
  491.     if $imported["EquipExtension"]
  492.       n += equipment_parameter(5)
  493.     else
  494.       equip_item_list.each { |item| n += (item != nil ? item.int_plus : 0) }
  495.     end
  496.     return [[n * KGC::LimitBreak::ACTOR_INT_REVISE / 100, 1].max, parameter_limit].min
  497.   end
  498.   #--------------------------------------------------------------------------
  499.   # ● レベルの変更
  500.   #     level : 新しいレベル
  501.   #--------------------------------------------------------------------------
  502.   def level=(level)
  503.     # 上下限チェック
  504.     level = [[level, self.final_level].min, 1].max
  505.     # EXP を変更
  506.     self.exp = @exp_list[level]
  507.   end
  508.   #--------------------------------------------------------------------------
  509.   # ● 最終レベルの取得
  510.   #--------------------------------------------------------------------------
  511.   def final_level
  512.     return (KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] != nil ?
  513.     KGC::LimitBreak::ACTOR_LV_LIMIT[@actor_id] : KGC::LimitBreak::ACTOR_LV_LIMIT_DEFAULT)
  514.   end
  515.   #--------------------------------------------------------------------------
  516.   # ○ MaxHP 限界値の取得
  517.   #--------------------------------------------------------------------------
  518.   def maxhp_limit
  519.     return KGC::LimitBreak::ACTOR_HP_LIMIT
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ○ MaxSP 限界値の取得
  523.   #--------------------------------------------------------------------------
  524.   def maxsp_limit
  525.     return KGC::LimitBreak::ACTOR_SP_LIMIT
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ○ パラメータ限界値の取得
  529.   #--------------------------------------------------------------------------
  530.   def parameter_limit
  531.     return KGC::LimitBreak::ACTOR_ETC_LIMIT
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ○ 装備武器リストの取得
  535.   #--------------------------------------------------------------------------
  536.   def equip_weapon_list
  537.     result = [$data_weapons[@weapon_id]]
  538.     return result.compact
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ○ 装備防具リストの取得
  542.   #--------------------------------------------------------------------------
  543.   def equip_armor_list
  544.     result = []
  545.     (1..4).each { |i| result << $data_armors[eval("@armor#{i}_id")] }
  546.     return result.compact
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ○ 装備品リストの取得
  550.   #--------------------------------------------------------------------------
  551.   def equip_item_list
  552.     return equip_weapon_list + equip_armor_list
  553.   end
  554. end
  555.  
  556. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  557.  
  558. #==============================================================================
  559. # ■ Game_Enemy
  560. #==============================================================================
  561.  
  562. class Game_Enemy < Game_Battler
  563.   #--------------------------------------------------------------------------
  564.   # ○ MaxHP 限界値の取得
  565.   #--------------------------------------------------------------------------
  566.   def maxhp_limit
  567.     return KGC::LimitBreak::ENEMY_HP_LIMIT
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ○ MaxSP 限界値の取得
  571.   #--------------------------------------------------------------------------
  572.   def maxsp_limit
  573.     return KGC::LimitBreak::ENEMY_SP_LIMIT
  574.   end
  575.   #--------------------------------------------------------------------------
  576.   # ○ パラメータ限界値の取得
  577.   #--------------------------------------------------------------------------
  578.   def parameter_limit
  579.     return KGC::LimitBreak::ENEMY_ETC_LIMIT
  580.   end
  581. end
  582.  
  583. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  584.  
  585. #==============================================================================
  586. # ■ Game_Party
  587. #==============================================================================
  588.  
  589. class Game_Party
  590.   #--------------------------------------------------------------------------
  591.   # ● ゴールドの増加 (減少)
  592.   #     n : 金額
  593.   #--------------------------------------------------------------------------
  594.   def gain_gold(n)
  595.     # 所持金の限界値変更
  596.     @gold = [[@gold + n, 0].max, KGC::LimitBreak::GOLD_LIMIT].min
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ● アイテムの増加 (減少)
  600.   #     item_id : アイテム ID
  601.   #     n       : 個数
  602.   #--------------------------------------------------------------------------
  603.   def gain_item(item_id, n)
  604.     # ハッシュの個数データを更新
  605.     if item_id > 0
  606.       limit = $data_items[item_id].number_limit
  607.       @items[item_id] = [[item_number(item_id) + n, 0].max, limit].min
  608.     end
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 武器の増加 (減少)
  612.   #     weapon_id : 武器 ID
  613.   #     n         : 個数
  614.   #--------------------------------------------------------------------------
  615.   def gain_weapon(weapon_id, n)
  616.     # ハッシュの個数データを更新
  617.     if weapon_id > 0
  618.       limit = $data_weapons[weapon_id].number_limit
  619.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, limit].min
  620.     end
  621.   end
  622.   #--------------------------------------------------------------------------
  623.   # ● 防具の増加 (減少)
  624.   #     armor_id : 防具 ID
  625.   #     n        : 個数
  626.   #--------------------------------------------------------------------------
  627.   def gain_armor(armor_id, n)
  628.     # ハッシュの個数データを更新
  629.     if armor_id > 0
  630.       limit = $data_armors[armor_id].number_limit
  631.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, limit].min
  632.     end
  633.   end
  634. end
  635.  
  636. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  637.  
  638. #==============================================================================
  639. # ■ Window_ShopBuy
  640. #==============================================================================
  641.  
  642. class Window_ShopBuy < Window_Selectable
  643.   #--------------------------------------------------------------------------
  644.   # ● 項目の描画
  645.   #     index : 項目番号
  646.   #--------------------------------------------------------------------------
  647.   def draw_item(index)
  648.     item = @data[index]
  649.     # アイテムの所持数を取得
  650.     case item
  651.     when RPG::Item
  652.       number = $game_party.item_number(item.id)
  653.     when RPG::Weapon
  654.       number = $game_party.weapon_number(item.id)
  655.     when RPG::Armor
  656.       number = $game_party.armor_number(item.id)
  657.     end
  658.     # 価格が所持金以下、かつ所持数が上限でなければ通常文字色に、
  659.     # そうでなければ無効文字色に設定
  660.     if item.price <= $game_party.gold && number < item.number_limit
  661.       self.contents.font.color = normal_color
  662.     else
  663.       self.contents.font.color = disabled_color
  664.     end
  665.     x = 4
  666.     y = index * 32
  667.     rect = Rect.new(x, y, self.width - 32, 32)
  668.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  669.     bitmap = RPG::Cache.icon(item.icon_name)
  670.     opacity = self.contents.font.color == normal_color ? 255 : 128
  671.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  672.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  673.     self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2)
  674.   end
  675. end
  676.  
  677. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  678.  
  679. #==============================================================================
  680. # ■ Scene_Title
  681. #==============================================================================
  682.  
  683. class Scene_Title
  684.   #--------------------------------------------------------------------------
  685.   # ● コマンド : ニューゲーム
  686.   #--------------------------------------------------------------------------
  687.   alias command_new_game_KGC_LimitBreak command_new_game
  688.   def command_new_game
  689.     command_new_game_KGC_LimitBreak
  690.  
  691.     KGC::LimitBreak.revise_enemy_parameters
  692.     KGC::LimitBreak.set_enemy_status
  693.   end
  694.   #--------------------------------------------------------------------------
  695.   # ● コマンド : コンティニュー
  696.   #--------------------------------------------------------------------------
  697.   alias command_continue_KGC_LimitBreak command_continue
  698.   def command_continue
  699.     command_continue_KGC_LimitBreak
  700.  
  701.     KGC::LimitBreak.revise_enemy_parameters
  702.     KGC::LimitBreak.set_enemy_status
  703.   end
  704.   #--------------------------------------------------------------------------
  705.   # ● 戦闘テスト
  706.   #--------------------------------------------------------------------------
  707.   alias battle_test_KGC_LimitBreak battle_test
  708.   def battle_test
  709.     battle_test_KGC_LimitBreak
  710.  
  711.     KGC::LimitBreak.revise_enemy_parameters
  712.     KGC::LimitBreak.set_enemy_status
  713.   end
  714. end
  715.  
  716. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  717.  
  718. #==============================================================================
  719. # ■ Scene_Shop
  720. #==============================================================================
  721.  
  722. class Scene_Shop
  723.   #--------------------------------------------------------------------------
  724.   # ● フレーム更新 (購入ウィンドウがアクティブの場合)
  725.   #--------------------------------------------------------------------------
  726.   def update_buy
  727.     # ステータスウィンドウのアイテムを設定
  728.     @status_window.item = @buy_window.item
  729.     # B ボタンが押された場合
  730.     if Input.trigger?(Input::B)
  731.       # キャンセル SE を演奏
  732.       $game_system.se_play($data_system.cancel_se)
  733.       # ウィンドウの状態を初期モードへ
  734.       @command_window.active = true
  735.       @dummy_window.visible = true
  736.       @buy_window.active = false
  737.       @buy_window.visible = false
  738.       @status_window.visible = false
  739.       @status_window.item = nil
  740.       # ヘルプテキストを消去
  741.       @help_window.set_text("")
  742.       return
  743.     end
  744.     # C ボタンが押された場合
  745.     if Input.trigger?(Input::C)
  746.       # アイテムを取得
  747.       @item = @buy_window.item
  748.       # アイテムが無効の場合、または価格が所持金より上の場合
  749.       if @item == nil or @item.price > $game_party.gold
  750.         # ブザー SE を演奏
  751.         $game_system.se_play($data_system.buzzer_se)
  752.         return
  753.       end
  754.       # アイテムの所持数を取得
  755.       case @item
  756.       when RPG::Item
  757.         number = $game_party.item_number(@item.id)
  758.       when RPG::Weapon
  759.         number = $game_party.weapon_number(@item.id)
  760.       when RPG::Armor
  761.         number = $game_party.armor_number(@item.id)
  762.       end
  763.       # すでに上限まで個所持している場合
  764.       limit = @item.number_limit
  765.       if number >= limit
  766.         # ブザー SE を演奏
  767.         $game_system.se_play($data_system.buzzer_se)
  768.         return
  769.       end
  770.       # 決定 SE を演奏
  771.       $game_system.se_play($data_system.decision_se)
  772.       # 最大購入可能個数を計算
  773.       max = (@item.price == 0 ? limit : $game_party.gold / @item.price)
  774.       max = [max, limit - number].min
  775.       # ウィンドウの状態を個数入力モードへ
  776.       @buy_window.active = false
  777.       @buy_window.visible = false
  778.       @number_window.set(@item, max, @item.price)
  779.       @number_window.active = true
  780.       @number_window.visible = true
  781.     end
  782.   end
  783. end

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 03:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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