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

Project1

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

[已经解决] 關於精英怪物的設定問題

[复制链接]

Lv2.观梦者

梦石
0
星屑
362
在线时间
296 小时
注册时间
2013-6-1
帖子
121
跳转到指定楼层
1
发表于 2018-3-17 12:31:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如題  目前有個想法
想要在每次戰鬥場次時候血量自動更新
例如說精英怪物血量為普通怪物的16*(16+隨機數0~3)倍血量
我自己設定之後  要進入下個戰鬥場次 (不是下個回合)
最大血量一樣沒變動  只能重開遊戲時候自動刷新最大血量

這是所使用的腳本:

RUBY 代码复制
  1. # [精英敵人]  原作 tan12345(va)  移植 hyrious(xp)
  2.  
  3. class Game_Enemy < Game_Battler
  4.   # 精英怪出現機率,默認30代表30%
  5.   BY = 10
  6.   # 精英怪屬性加成比例(默認是同時也是經驗,金錢,掉落率加成比例),默認1.3代表屬性是普通怪的1.3倍,
  7.   # 以下是相關屬性加成表
  8.   # BYPHP(最大HP)/BYPSP(最大SP)/BYPEXP(經驗值)/BYPSTAT(全能力)
  9.   # BYPATT(攻擊力)/BYPDEF(物理/魔法防禦)/BYPEVA(迴避率)/BYPGOLD(金錢)
  10.   BYPHP = 16+(16*rand(4))
  11.   BYPSP = 16+(16*rand(4))
  12.   BYPSTAT = 3+(1*rand(4))
  13.   BYPATT = 2+(1*rand(4))
  14.   BYPDEF = 2+(1*rand(4))
  15.   BYPEVA = 10+(1*rand(10))
  16.   BYPEXP = 12+(1*rand(3))
  17.   BYPGOLD = 9+(1*rand(3))
  18.   # 不會成為精英的敵人(默認表示2號和3號敵人不會變成精英,適合設定BOSS)
  19.   NO_BY = [1, 2, 3]
  20.   attr_reader   :is_by  # 是否精英
  21.   #--------------------------------------------------------------------------
  22.   # ● 是否精英
  23.   #--------------------------------------------------------------------------
  24.   def is_by?
  25.     return true if @is_by
  26.     return false
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 初始化對象(包括精英初始化)
  30.   #--------------------------------------------------------------------------
  31.   alias tan_initialize initialize
  32.   def initialize(troop_id, member_index)
  33.     tan_initialize(troop_id, member_index)
  34.     @is_by = (rand(100) <= BY && !NO_BY.include?(@enemy_id))
  35.     @hp = (@hp * (BYPHP+(16*$game_variables[1054]))).to_i if @is_by
  36.     @sp = (@sp * (BYPSP+(16*$game_variables[1054]))).to_i if @is_by
  37.     add_state(2) if @is_by # 生成精英怪物時候自動施放狀態 #1012
  38.     $game_variables[9] += 1 if @is_by # 生成精英怪物時候該變數+1  #849
  39.     $game_variables[15] += 1 if @is_by # 生成精英怪物時候該變數+1  #955
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 精英改名
  43.   #--------------------------------------------------------------------------
  44.   alias hy_name name
  45.   def name
  46.     is_by? ? "精英的" +  hy_name  : hy_name
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 獲取經驗值
  50.   #--------------------------------------------------------------------------
  51.   alias tan_exp exp
  52.   def exp
  53.     return (tan_exp * BYPEXP).to_i if @is_by
  54.     tan_exp
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 獲取金錢
  58.   #--------------------------------------------------------------------------
  59.   alias tan_gold gold
  60.   def gold
  61.     return (tan_gold * BYPGOLD).to_i if @is_by
  62.     tan_gold
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 獲取物品掉率的倍率
  66.   #--------------------------------------------------------------------------
  67.   alias tan_treasure_prob treasure_prob
  68.   def treasure_prob
  69.     return (tan_treasure_prob * 2).to_i if @is_by
  70.     tan_treasure_prob
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 屬性值增強(很多)
  74.   #   嫌不夠可以自行調整算式, 更多base_請參考Game_Enemy
  75.   #--------------------------------------------------------------------------
  76.   alias hy_base_maxhp base_maxhp
  77.   def base_maxhp
  78.     return (hy_base_maxhp * BYPHP).to_i if @is_by
  79.     hy_base_maxhp
  80.   end
  81.   alias hy_base_maxsp base_maxsp
  82.   def base_maxsp
  83.     return (hy_base_maxsp * BYPSP).to_i if @is_by
  84.     hy_base_maxsp
  85.   end
  86.   alias hy_base_str base_str
  87.   def base_str
  88.     return (hy_base_str * BYPSTAT).to_i if @is_by
  89.     hy_base_str
  90.   end
  91.   alias hy_base_dex base_dex
  92.   def base_dex
  93.     return (hy_base_dex * BYPSTAT).to_i if @is_by
  94.     hy_base_dex
  95.   end
  96.   alias hy_base_agi base_agi
  97.   def base_agi
  98.     return (hy_base_agi * BYPSTAT).to_i if @is_by
  99.     hy_base_agi
  100.   end
  101.   alias hy_base_int base_int
  102.   def base_int
  103.     return (hy_base_int * BYPSTAT).to_i if @is_by
  104.     hy_base_int
  105.   end
  106.   alias hy_base_atk base_atk
  107.   def base_atk
  108.     return (hy_base_atk * BYPATT).to_i if @is_by
  109.     hy_base_atk
  110.   end
  111.   alias hy_base_pdef base_pdef
  112.   def base_pdef
  113.     return (hy_base_pdef * BYPDEF).to_i if @is_by
  114.     hy_base_pdef
  115.   end
  116.   alias hy_base_mdef base_mdef
  117.   def base_mdef
  118.     return (hy_base_mdef * BYPDEF).to_i if @is_by
  119.     hy_base_mdef
  120.   end
  121.   alias hy_base_eva base_eva
  122.   def base_eva
  123.     return (hy_base_eva + BYPEVA).to_i if @is_by
  124.     hy_base_eva
  125.   end
  126. end
  127. #--------------------------------------------------------------------------
  128. # ● 怪物圖片是否放大
  129. #--------------------------------------------------------------------------
  130. class Sprite_Battler < RPG::Sprite
  131.   alias old_update_xr update
  132.   def update
  133.     if @data_battler != @battler
  134.       @data_battler = @battler
  135.       if @battler != nil and @battler.is_a?(Game_Enemy)
  136.         self.zoom_x = self.zoom_y = @battler.is_by? ? 2 : 1
  137.       end
  138.     end
  139.     old_update_xr
  140.   end
  141. end




所以有什麼方法可以設定成 進入新的戰鬥場次時候
生成的精英怪物的最大血量會自動更新 但是當前血量也會跟更新後的怪物最大血量一樣?

Lv4.逐梦者

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

开拓者

2
发表于 2018-3-18 14:38:20 | 只看该作者
你改的地方太早了

这段只执行一次
  1. BY = 10
  2.   # 精英怪屬性加成比例(默認是同時也是經驗,金錢,掉落率加成比例),默認1.3代表屬性是普通怪的1.3倍,
  3.   # 以下是相關屬性加成表
  4.   # BYPHP(最大HP)/BYPSP(最大SP)/BYPEXP(經驗值)/BYPSTAT(全能力)
  5.   # BYPATT(攻擊力)/BYPDEF(物理/魔法防禦)/BYPEVA(迴避率)/BYPGOLD(金錢)
  6.   BYPHP = 16+(16*rand(4))
  7.   BYPSP = 16+(16*rand(4))
  8.   BYPSTAT = 3+(1*rand(4))
  9.   BYPATT = 2+(1*rand(4))
  10.   BYPDEF = 2+(1*rand(4))
  11.   BYPEVA = 10+(1*rand(10))
  12.   BYPEXP = 12+(1*rand(3))
  13.   BYPGOLD = 9+(1*rand(3))
复制代码


改后面的

  1. #--------------------------------------------------------------------------
  2.   # ● 初始化對象(包括精英初始化)
  3.   #--------------------------------------------------------------------------
  4.   alias tan_initialize initialize
  5.   def initialize(troop_id, member_index)
  6.     tan_initialize(troop_id, member_index)
  7.     @is_by = (rand(100) <= BY && !NO_BY.include?(@enemy_id))
  8.     @hp = (@hp * (BYPHP+(16*$game_variables[1054]))).to_i if @is_by
  9.     @sp = (@sp * (BYPSP+(16*$game_variables[1054]))).to_i if @is_by
  10.     add_state(2) if @is_by # 生成精英怪物時候自動施放狀態 #1012
  11.     $game_variables[9] += 1 if @is_by # 生成精英怪物時候該變數+1  #849
  12.     $game_variables[15] += 1 if @is_by # 生成精英怪物時候該變數+1  #955
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 精英改名
  16.   #--------------------------------------------------------------------------
  17.   alias hy_name name
  18.   def name
  19.     is_by? ? "精英的" +  hy_name  : hy_name
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 獲取經驗值
  23.   #--------------------------------------------------------------------------
  24.   alias tan_exp exp
  25.   def exp
  26.     return (tan_exp * BYPEXP).to_i if @is_by
  27.     tan_exp
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 獲取金錢
  31.   #--------------------------------------------------------------------------
  32.   alias tan_gold gold
  33.   def gold
  34.     return (tan_gold * BYPGOLD).to_i if @is_by
  35.     tan_gold
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 獲取物品掉率的倍率
  39.   #--------------------------------------------------------------------------
  40.   alias tan_treasure_prob treasure_prob
  41.   def treasure_prob
  42.     return (tan_treasure_prob * 2).to_i if @is_by
  43.     tan_treasure_prob
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 屬性值增強(很多)
  47.   #   嫌不夠可以自行調整算式, 更多base_請參考Game_Enemy
  48.   #--------------------------------------------------------------------------
  49.   alias hy_base_maxhp base_maxhp
  50.   def base_maxhp
  51.     return (hy_base_maxhp * BYPHP).to_i if @is_by
  52.     hy_base_maxhp
  53.   end
  54.   alias hy_base_maxsp base_maxsp
  55.   def base_maxsp
  56.     return (hy_base_maxsp * BYPSP).to_i if @is_by
  57.     hy_base_maxsp
  58.   end
  59.   alias hy_base_str base_str
  60.   def base_str
  61.     return (hy_base_str * BYPSTAT).to_i if @is_by
  62.     hy_base_str
  63.   end
  64.   alias hy_base_dex base_dex
  65.   def base_dex
  66.     return (hy_base_dex * BYPSTAT).to_i if @is_by
  67.     hy_base_dex
  68.   end
  69.   alias hy_base_agi base_agi
  70.   def base_agi
  71.     return (hy_base_agi * BYPSTAT).to_i if @is_by
  72.     hy_base_agi
  73.   end
  74.   alias hy_base_int base_int
  75.   def base_int
  76.     return (hy_base_int * BYPSTAT).to_i if @is_by
  77.     hy_base_int
  78.   end
  79.   alias hy_base_atk base_atk
  80.   def base_atk
  81.     return (hy_base_atk * BYPATT).to_i if @is_by
  82.     hy_base_atk
  83.   end
  84.   alias hy_base_pdef base_pdef
  85.   def base_pdef
  86.     return (hy_base_pdef * BYPDEF).to_i if @is_by
  87.     hy_base_pdef
  88.   end
  89.   alias hy_base_mdef base_mdef
  90.   def base_mdef
  91.     return (hy_base_mdef * BYPDEF).to_i if @is_by
  92.     hy_base_mdef
  93.   end
  94.   alias hy_base_eva base_eva
  95.   def base_eva
  96.     return (hy_base_eva + BYPEVA).to_i if @is_by
  97.     hy_base_eva
  98.   end
  99. end
复制代码

要随机数改后面

评分

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

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
362
在线时间
296 小时
注册时间
2013-6-1
帖子
121
3
 楼主| 发表于 2018-3-20 19:36:17 | 只看该作者
本帖最后由 e900003 于 2018-3-20 19:39 编辑
chd114 发表于 2018-3-18 14:38
你改的地方太早了

这段只执行一次


我有試過改後面的地方  然後變成是血量無法滿  
後來再改前面的血量滿血  結果目前血量還會破表

所以要怎麼改成我所需要的設定...

另外我給的腳本有點問題
我重給新的(可能當初改回去時候沒改到

RUBY 代码复制
  1. # [精英敵人]  原作 tan12345(va)  移植 hyrious(xp)
  2.  
  3.     class Game_Enemy < Game_Battler
  4.       # 精英怪出現機率,默認30代表30%
  5.       BY = 10
  6.       # 精英怪屬性加成比例(默認是同時也是經驗,金錢,掉落率加成比例),默認1.3代表屬性是普通怪的1.3倍,
  7.       # 以下是相關屬性加成表
  8.       # BYPHP(最大HP)/BYPSP(最大SP)/BYPEXP(經驗值)/BYPSTAT(全能力)
  9.       # BYPATT(攻擊力)/BYPDEF(物理/魔法防禦)/BYPEVA(迴避率)/BYPGOLD(金錢)
  10.       BYPHP = 16+(16*rand(4))
  11.       BYPSP = 16+(16*rand(4))
  12.       BYPSTAT = 3+(1*rand(4))
  13.       BYPATT = 2+(1*rand(4))
  14.       BYPDEF = 2+(1*rand(4))
  15.       BYPEVA = 10+(1*rand(10))
  16.       BYPEXP = 12+(1*rand(3))
  17.       BYPGOLD = 9+(1*rand(3))
  18.       # 不會成為精英的敵人(默認表示2號和3號敵人不會變成精英,適合設定BOSS)
  19.       NO_BY = [1,2,3]
  20.       attr_reader   :is_by  # 是否精英
  21.       #--------------------------------------------------------------------------
  22.       # ● 是否精英
  23.       #--------------------------------------------------------------------------
  24.       def is_by?
  25.         return true if @is_by
  26.         return false
  27.       end
  28.       #--------------------------------------------------------------------------
  29.       # ● 初始化對象(包括精英初始化)
  30.       #--------------------------------------------------------------------------
  31.       alias tan_initialize initialize
  32.       def initialize(troop_id, member_index)
  33.         tan_initialize(troop_id, member_index)
  34.         @is_by = (rand(100) <= BY && !NO_BY.include?(@enemy_id))
  35.         @hp = (@hp * BYPHP).to_i if @is_by
  36.         @sp = (@sp * BYPSP).to_i if @is_by
  37.         add_state(2) if @is_by # 生成精英怪物時候自動施放狀態 #1012
  38.         $game_variables[18] += 1 if @is_by # 生成精英怪物時候該變數+1 #849
  39.         $game_variables[19] += 1 if @is_by # 生成精英怪物時候該變數+1 #955
  40.       end
  41.       #--------------------------------------------------------------------------
  42.       # ● 精英改名
  43.       #--------------------------------------------------------------------------
  44.       alias hy_name name
  45.       def name
  46.         is_by? ? "精英的" +  hy_name  : hy_name
  47.       end
  48.       #--------------------------------------------------------------------------
  49.       # ● 獲取經驗值
  50.       #--------------------------------------------------------------------------
  51.       alias tan_exp exp
  52.       def exp
  53.         return (tan_exp * BYPEXP).to_i if @is_by
  54.         tan_exp
  55.       end
  56.       #--------------------------------------------------------------------------
  57.       # ● 獲取金錢
  58.       #--------------------------------------------------------------------------
  59.       alias tan_gold gold
  60.       def gold
  61.         return (tan_gold * BYPGOLD).to_i if @is_by
  62.         tan_gold
  63.       end
  64.       #--------------------------------------------------------------------------
  65.       # ● 獲取物品掉率的倍率
  66.       #--------------------------------------------------------------------------
  67.       alias tan_treasure_prob treasure_prob
  68.       def treasure_prob
  69.         return (tan_treasure_prob * 2).to_i if @is_by
  70.         tan_treasure_prob
  71.       end
  72.       #--------------------------------------------------------------------------
  73.       # ● 屬性值增強(很多)
  74.       #   嫌不夠可以自行調整算式, 更多base_請參考Game_Enemy
  75.       #--------------------------------------------------------------------------
  76.       alias hy_base_maxhp base_maxhp
  77.       def base_maxhp
  78.         return (hy_base_maxhp * BYPHP).to_i if @is_by
  79.         hy_base_maxhp
  80.       end
  81.       alias hy_base_maxsp base_maxsp
  82.       def base_maxsp
  83.         return (hy_base_maxsp * BYPSP).to_i if @is_by
  84.         hy_base_maxsp
  85.       end
  86.       alias hy_base_str base_str
  87.       def base_str
  88.         return (hy_base_str * BYPSTAT).to_i if @is_by
  89.         hy_base_str
  90.       end
  91.       alias hy_base_dex base_dex
  92.       def base_dex
  93.         return (hy_base_dex * BYPSTAT).to_i if @is_by
  94.         hy_base_dex
  95.       end
  96.       alias hy_base_agi base_agi
  97.       def base_agi
  98.         return (hy_base_agi * BYPSTAT).to_i if @is_by
  99.         hy_base_agi
  100.       end
  101.       alias hy_base_int base_int
  102.       def base_int
  103.         return (hy_base_int * BYPSTAT).to_i if @is_by
  104.         hy_base_int
  105.       end
  106.       alias hy_base_atk base_atk
  107.       def base_atk
  108.         return (hy_base_atk * BYPATT).to_i if @is_by
  109.         hy_base_atk
  110.       end
  111.       alias hy_base_pdef base_pdef
  112.       def base_pdef
  113.         return (hy_base_pdef * BYPDEF).to_i if @is_by
  114.         hy_base_pdef
  115.       end
  116.       alias hy_base_mdef base_mdef
  117.       def base_mdef
  118.         return (hy_base_mdef * BYPDEF).to_i if @is_by
  119.         hy_base_mdef
  120.       end
  121.       alias hy_base_eva base_eva
  122.       def base_eva
  123.         return (hy_base_eva + BYPEVA).to_i if @is_by
  124.         hy_base_eva
  125.       end
  126.     end
  127.     #--------------------------------------------------------------------------
  128.     # ● 怪物圖片是否放大
  129.     #--------------------------------------------------------------------------
  130.     class Sprite_Battler < RPG::Sprite
  131.       alias old_update_xr update
  132.       def update
  133.         if @data_battler != @battler
  134.           @data_battler = @battler
  135.           if @battler != nil and @battler.is_a?(Game_Enemy)
  136.             self.zoom_x = self.zoom_y = @battler.is_by? ? 2 : 1
  137.           end
  138.         end
  139.         old_update_xr
  140.       end
  141.     end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

开拓者

4
发表于 2018-3-20 22:52:19 | 只看该作者
e900003 发表于 2018-3-20 19:36
我有試過改後面的地方  然後變成是血量無法滿  
後來再改前面的血量滿血  結果目前血量還會破表

就像在def initialize(troop_id, member_index)里面判断标志那样
@is_by = (rand(100) <= BY && !NO_BY.include?(@enemy_id))
的下面加一个
@is_by_hp=@is_by? BYPHP+16*rand(4) : 1

后面@hp = (@hp * @is_by_hp).to_i if @is_by

然后

  1.       alias hy_base_maxhp base_maxhp
  2.       def base_maxhp
  3.         return (hy_base_maxhp * @is_by_hp).to_i if @is_by
  4.         hy_base_maxhp
  5.       end
复制代码


溢出的问题应该就解决了
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
362
在线时间
296 小时
注册时间
2013-6-1
帖子
121
5
 楼主| 发表于 2018-3-22 17:05:45 | 只看该作者
本帖最后由 e900003 于 2018-3-22 17:18 编辑
chd114 发表于 2018-3-20 22:52
就像在def initialize(troop_id, member_index)里面判断标志那样
@is_by = (rand(100)


改了之後跳出這個錯誤

*更新: 找到問題了  謝謝  應該是已解決了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 20:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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