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

Project1

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

[已经解决] 请教如何在游戏中更改物品和敌人数据

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1134
在线时间
13 小时
注册时间
2015-5-9
帖子
8
跳转到指定楼层
1
发表于 2019-1-21 12:35:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 raindiely 于 2019-1-21 20:14 编辑

希望做到在游戏中改变某物品或敌人的数据(能力值和属性抗性之类的)
具体要实现的内容是,某件物品或敌人可以随玩家等级产生变化

如果我的思路有问题,有着其他更简单的方法实现这一效果,还请告诉我
万分感谢!

重新组织下语言,希望实现的功能如下
在进入战斗前,通过怪物是否拥有某项标签来进行判定
生效时,使 敌群中A类型敌人 的属性值(比如MHP)增加,增加的数值与玩家角色等级相关
是不是可以换句话说,让怪物也有升级功能?(我不确定)

再重新组织下语言
也许我的思路是有问题的,总之我是想做这样一个东西
类似彩蛋关卡,关卡内敌人不会因玩家等级提高(换句话说属性值提高)而变弱

蹲厕所的女孩大佬提到了用伤害公式来控制,我觉得或许是个可行的方案但正在陷入思维误区的我完全没能想到这方面的思路
如果能提供我一些实现这个设想的思路就太感谢了

Lv4.逐梦者

梦石
2
星屑
6639
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

2
发表于 2019-1-21 13:14:37 | 只看该作者
本帖最后由 MCCF 于 2019-1-21 13:19 编辑

有比较简单的方法。但是需要修改脚本。不过也没有多麻烦的。而你说的方法,应该就是直接在游戏中修改$data_enemies了,这样是非常麻烦的。
首先,需要明确一点。究竟是只是修改基础值(也就是只修改数据库中基础值,状态、技能装备和物品增加的属性并不会减少或增多),还是总体最后计算的值(这个值是数据库中设定的基础值和状态、技能装备和物品的附加值之和)直接进行修改。
举个例子,设定1号角色超过30级,所有敌人的所有基础能力值乘1.5。那么就修改param_base,插入代码:
RUBY 代码复制
  1. class Game_Enemy < Game_Battler
  2.   alias new_param_base param_base
  3.   def param_base(index)
  4.     v = new_param_base(index)
  5.     return $game_actors[1].level >= 30 ? v * 1.5 : v
  6.   end
  7. end

类似这样吧。这段代码暂时还没有经过测试,只是提供一个模型而已。这一段可能理论性比较强,并且还有诸如各种属性值、物品的效果等等,因为这些内容非常多样化,这里就不一一讲述。如果不是修改基础能力值,而是直接在最后的总和上面修改,那么就直接修改param吧。如果只是一部分属性有修改的话就修改mmp,mhp,luk这些简便方法,等等。
具体找个时间弄一个比较完整的脚本吧。

点评

非常感谢指教,想实现的功能是:让某个怪物的基础能力始终等于玩家等级的x倍,我设想的思路是在战斗之前进行判定,然后更改怪物的能力值  发表于 2019-1-21 19:43
祝好。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
926
在线时间
83 小时
注册时间
2018-12-18
帖子
84
3
发表于 2019-1-21 13:18:16 | 只看该作者
给个计算公式就可以了,不知道我理解的对不对,物品的话就直接给体力值恢复或者魔力值恢复之类的,敌人就改技能伤害吧
图在下面:

点评

嗯嗯,你可以综合选取,他那个方法也挺不错的,毕竟改代码是可以实现很多原本实现不了的效果  发表于 2019-1-22 16:07
非常感谢指教!可能是我表达的有些模糊吧XD 目的是想制作一些能力值随着玩家等级变化的怪物,不只是攻击效果上的变化,希望显示的数值也会发生变化  发表于 2019-1-21 19:47
我们没必要挣吧,都只是给个建议,具体怎么做看楼主自己的,就像你说的我这方法改变不了敌人的hp什么的数值,同样你改代码改不了消耗品啊  发表于 2019-1-21 13:32
比如说按楼主说的,敌人的生命值会随着角色的等级修改。这个用技能怎么表示呢?如果敌人的MP也会修改,又更加麻烦。  发表于 2019-1-21 13:27
也可能是我理解错了吧,我只是给出一个方案,就楼主说的根据角色等级来改变效果,具体需要还是得看楼主怎么说吧  发表于 2019-1-21 13:26

评分

参与人数 3星屑 +30 +2 收起 理由
VIPArcher + 30 我很赞同
MCCF + 1 的确
RMVXA + 1 我很赞同

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
2
星屑
6639
在线时间
501 小时
注册时间
2018-3-23
帖子
533

R考场第七期银奖

4
发表于 2019-1-21 22:07:15 | 只看该作者
啊,那是我想麻烦了。
于是乎,抽空写了个脚本,局限性可能比较高,但是应该适用于楼主的情况。

RUBY 代码复制
  1. #encoding:utf-8
  2. # =============================================================================
  3. # 能力值扩展 - level
  4. # =============================================================================
  5. =begin
  6.  
  7.   ----------------------------------------------------------------------------
  8.   介绍:
  9.   ----------------------------------------------------------------------------
  10.   设定某些敌人的所有能力为某角色等级的数倍。
  11.   (只限于这种设定,其他设定需要在该脚本上另作修改)
  12.  
  13.   ----------------------------------------------------------------------------
  14.   使用方法:
  15.   ----------------------------------------------------------------------------
  16.   插入到插件脚本之下,Main之上
  17.  
  18. =end
  19. #=============================================================================
  20. # 设定部分
  21. #=============================================================================
  22. module MCCF_Change_Params
  23.   module Level
  24.  
  25.     # 设定哪些ID的敌人的能力值会变化。
  26.     CHANGE_PARAMS_ENEMY = [1,2,3]
  27.  
  28.     # 设定判断等级的角色ID,也可以设为:average表示所有队员等级的平均值
  29.     JUDGE_ACTOR_ID = 1
  30.  
  31.     # 各种能力的计算公式设定,数字表示该能力值是等级的多少倍。
  32.     PARAMS_FORMULA = [
  33.       # 体力上限(此处表示体力上限为角色等级的100倍)
  34.       100,
  35.       # 魔力上限
  36.       50,
  37.       # 物理攻击
  38.       20,
  39.       # 物理防御
  40.       20,
  41.       # 魔法攻击
  42.       10,
  43.       # 魔法防御
  44.       10,
  45.       # 敏捷值
  46.       5,
  47.       # 幸运值
  48.       5,
  49.     ]
  50.  
  51.   end
  52. end
  53. #=============================================================================
  54. # 设定结束
  55. #=============================================================================
  56.  
  57. class Game_Enemy < Game_Battler
  58.   alias new_param_base param_base
  59.   def param_base(index)
  60.     v = new_param_base(index)
  61.     return v unless MCCF_Change_Params::Level::CHANGE_PARAMS_ENEMY.include?(@enemy_id)
  62.     return v if index >= 8
  63.     if !MCCF_Change_Params::Level::JUDGE_ACTOR_ID != :average
  64.       actor_id = MCCF_Change_Params::Level::JUDGE_ACTOR_ID
  65.       number = MCCF_Change_Params::Level::PARAMS_FORMULA[index]
  66.     else
  67.       s = 0
  68.       $game_party.members.select {|actor| s += actor.level }
  69.       s /= $game_party.members.length
  70.       return s
  71.     end
  72.     return $game_actors[actor_id].level * number
  73.   end
  74. end


在范例工程中,每次战斗都会输出能力值,变化是非常明显的。
范例工程: 能力随角色等级变化.zip (1.43 MB, 下载次数: 104)

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 塞糖

查看全部评分

祝好。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

5
发表于 2019-1-21 23:38:54 | 只看该作者
本帖最后由 KB.Driver 于 2019-1-22 00:01 编辑

个人觉得基础值乘以等级很难平衡……
拿个自己写的增量型的献丑吧。

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 敌人线性成长
  3. #------------------------------------------------------------------------------
  4. #  敌人的参数随队伍平均等级的增加而增加。
  5. #
  6. #   使用方法:敌人备注处写
  7. #   <线性成长[参数号] x倍数> 或 <线性成长[参数号] 倍数x> 或 <线性成长[参数号] 倍数>
  8. #
  9. #   例  <线性成长[] x2> 或 <线性成长[] 2x>   =>  所有能力值增加玩家平均等级的2倍
  10. #       <线性成长[0] 100>     =>  0号参数(体力上限)增加玩家平均等级的100倍   
  11. #       <线性成长[2..5] 2.5>  =>  2至5号参数(攻防魔攻魔防)增加玩家平均等级的2.5倍
  12. #==============================================================================
  13.  
  14. class RPG::Enemy
  15.  
  16.   REG_LINEAR_GROWTH = /<线性成长\[?(\d(?:\.\.)?\d?)?\]?[ :=]*x?([\d.]+)x?>/
  17.  
  18.   #--------------------------------------------------------------------------
  19.   # ● [追加]线性成长比例
  20.   #--------------------------------------------------------------------------
  21.   def linear_growth
  22.     growth = Hash.new(0)
  23.     if self.note =~ REG_LINEAR_GROWTH
  24.       if $1
  25.         if eval($1).is_a?(Fixnum)
  26.           growth[$1.to_i] = eval($2)
  27.         elsif eval($1).is_a?(Range)
  28.           eval($1).each{|param_id| growth[param_id] = eval($2)}
  29.         end
  30.       else
  31.         (0..7).each{|param_id| growth[param_id] = eval($2)}
  32.       end
  33.     end
  34.     growth
  35.   end
  36.  
  37. end
  38.  
  39. class Game_Enemy < Game_Battler
  40.   #--------------------------------------------------------------------------
  41.   # ● [别名修改]获取普通能力的基础值
  42.   #--------------------------------------------------------------------------
  43.   alias :param_base_linear_growth :param_base
  44.   def param_base(param_id)
  45.     base = param_base_linear_growth(param_id)
  46.     return base if ((add = enemy.linear_growth[param_id]) == 0)
  47.     base + (add * $game_party.average_level).to_i
  48.   end
  49. end
  50.  
  51. class Game_Party
  52.   #--------------------------------------------------------------------------
  53.   # ● [追加]队伍平均等级
  54.   #--------------------------------------------------------------------------
  55.   def average_level
  56.     members.collect{|a|a.level}.inject(:+) / members.size.to_f
  57.   end
  58. end


关于参数可以看F1

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 塞糖

查看全部评分

用头画头像,用脚写脚本
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1615
在线时间
149 小时
注册时间
2018-12-27
帖子
323
6
发表于 2019-1-22 17:48:42 | 只看该作者
我个人倒是搞了一个蛹计算公式的,如果是按照等级来算技能伤害用level就够了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 18:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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