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

Project1

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

[RMVA发布] 抛砖引玉一下,根据我方实力浮动战斗数值

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
帖子
24
跳转到指定楼层
1
发表于 2015-8-8 21:01:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
传统RPG都是靠等级吃饭,怪和BOSS实力都是一定的,这种情况下,可能99级就扫遍天下,所以我尝试做一个浮动战斗数值

浮动的意思就是你等级高了,怪物的能力也跟着你的水平改变参数,所以哪怕初期就100血的史莱姆,可能后期你面对他会是一个1000血的劲敌

由于是想着修改的,可能效率啊什么的不完美,也希望大家能够帮助我修改这些代码

首先是在新代码窗口添加Game_Party、Game_Enemy、Game_Troop的三个新方法

RUBY 代码复制
  1. class Game_Party < Game_Unit
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取我方实力浮动值
  4.   #--------------------------------------------------------------------------
  5.   def battle_times
  6.     times = 1
  7.     t_max = 1
  8.     t_min = 999999
  9.     for i in 0..6
  10.       if i != 5
  11.         members.each do |party|
  12.           t_max = [party.param(i),t_max].max
  13.           t_min = [party.param(i),t_min].min
  14.         end
  15.         times = [t_max*1.00/t_min*1.00,times].max
  16.         t_max = 1
  17.         t_min = 999999
  18.       end
  19.     end
  20.     return times
  21.   end
  22. end
  23.  
  24. class Game_Enemy < Game_Battler
  25.   #--------------------------------------------------------------------------
  26.   # ● 浮动每个敌人的实力(每个敌人是有个浮动上限,需在注释添加内容)
  27.   #--------------------------------------------------------------------------
  28. def float(times)
  29.   temp = 0
  30.   self.note.each_line do |line|
  31.     case line
  32.       when /\<(?:max_times)[ ]*(\d+)\>/i
  33.         val = $1.to_i/100.0
  34.         if(val<times)
  35.           temp = param(0).to_f*(val-1)
  36.           add_param(0,temp)
  37.           temp = param(1).to_f*(val-1)
  38.           add_param(1,temp)
  39.           temp = param(2).to_f*(val-1)
  40.           add_param(2,temp)
  41.           temp = param(3).to_f*(val-1)
  42.           add_param(3,temp)
  43.           temp = param(4).to_f*(val-1)
  44.           add_param(4,temp)
  45.           temp = param(6).to_f*(val-1)
  46.           add_param(6,temp)
  47.           @hp = (@hp*val).to_i
  48.           @mp = (@mp*val).to_i
  49.         else
  50.           temp = param(0).to_f*(times-1)
  51.           add_param(0,temp)
  52.           temp = param(1).to_f*(times-1)
  53.           add_param(1,temp)
  54.           temp = param(2).to_f*(times-1)
  55.           add_param(2,temp)
  56.           temp = param(3).to_f*(times-1)
  57.           add_param(3,temp)
  58.           temp = param(4).to_f*(times-1)
  59.           add_param(4,temp)
  60.           temp = param(6).to_f*(times-1)
  61.           add_param(6,temp)
  62.         end
  63.         @hp = param(0)
  64.         @mp = param(1)
  65.         msgbox(@hp)
  66.       end
  67.     end
  68.   end
  69. end
  70.  
  71. class Game_Troop < Game_Unit
  72.   #--------------------------------------------------------------------------
  73.   # ● 浮动生命
  74.   #--------------------------------------------------------------------------
  75.   def float_param(times)
  76.     if times.to_i <= 0
  77.       return
  78.     end  
  79.     members.each do |enemy|
  80.       enemy.float(times)
  81.     end
  82.   end  
  83. end


而后,在BattleManager的self.battle_start中修改成下面的形式
RUBY 代码复制
  1. def self.battle_start
  2.     $game_system.battle_count += 1
  3.     $game_party.on_battle_start
  4.     $game_troop.on_battle_start
  5.     $game_troop.float_param($game_party.battle_times)
  6.     $game_troop.enemy_names.each do |name|
  7.       $game_message.add(sprintf(Vocab::Emerge, name))
  8.     end
  9.     if @preemptive
  10.       $game_message.add(sprintf(Vocab::Preemptive, $game_party.name))
  11.     elsif @surprise
  12.       $game_message.add(sprintf(Vocab::Surprise, $game_party.name))
  13.     end
  14.     wait_for_message
  15.   end


之后就是设定敌人的最大浮动数,如下图右侧的第一行(其他行是别的代码,无视之),125在代码中会除以100,所以敌人的浮动值是1.25:



可以看到这只老鼠的基础体力是75,现在看一下我们的队伍情况:



可以看到两个队员能形成的最大浮动是魔法攻击的2.0,但是敌人最大浮动是1.25,因此此时敌人的能力应当全部乘以1.25,我们来看一下战斗时,敌人的实际能力是多少:



这样就产生浮动了

以上是我自己摸索出来的浮动战斗方式,欢迎大家来批评指正,并提出更好的方法

Lv4.逐梦者

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

开拓者

2
发表于 2015-8-22 11:09:46 | 只看该作者
功能不错···但是这个浮动计算···是每项能力都取最强/最弱角色对应能力的浮动?
这样的话提升队伍平均战力就能缩小浮动吧?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
帖子
24
3
 楼主| 发表于 2015-8-22 16:27:29 | 只看该作者
chd114 发表于 2015-8-22 11:09
功能不错···但是这个浮动计算···是每项能力都取最强/最弱角色对应能力的浮动?
这样的话提升队伍平均 ...

计算公式可以按照各自的需求来,我只是展示一下我自己现在正在用的算法,因为这样的算法会“比较正常”,毕竟怪的攻击力*10的话伤害就会非常恐怖了……

游戏每个角色都有特点,战士和法师初始的时候各自数值会有偏差,的确你可以给法师吃力量种子,但是在力量种子数量有限的情况下,是给战士吃达到高伤害还是给法师吃平均队伍水平来“熬”过战斗,那就是玩家来选择他们心中的最优选项了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
685
在线时间
661 小时
注册时间
2012-10-21
帖子
350
4
发表于 2015-8-22 18:12:14 | 只看该作者
这样的话,练级有何意义?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2014-3-29
帖子
24
5
 楼主| 发表于 2015-8-22 19:07:47 | 只看该作者
bloodyliao 发表于 2015-8-22 18:12
这样的话,练级有何意义?

如果游戏没有等级,单纯依靠道具和装备提升属性进行游戏,可以利用浮动让玩家进行个性化抉择
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 05:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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