Project1

标题: 如何让最大HP=人物HP+防御力 [打印本页]

作者: tidusm    时间: 2011-6-6 16:36
标题: 如何让最大HP=人物HP+防御力
请问:如何让最大HP=人物HP+防御力
还有请问下如何给每名角色都设定基本的回避命中以及会心一击率呢?
作者: 负零    时间: 2011-6-6 16:53
我凭C++写的,肯定错,我也不敢运行,权当试试,这是我写的第一个东西...
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取闪躲率
  3.   #--------------------------------------------------------------------------
  4.   def eva
  5. if@actor_id[]
  6.     n=10
  7. elsif @actor_id[]
  8. n=15
  9. elsif
  10.     n = 5
  11.     for item in armors.compact do n += item.eva end
  12.     return n
  13.   end
复制代码

作者: tidusm    时间: 2011-6-6 16:59
那我还刚试的啊……
作者: tidusm    时间: 2011-6-6 21:54
急,请求告人指点
作者: Yuee    时间: 2011-6-7 09:59
①最大HP=人物HP+防御力
Game_Battler第140行
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取 最大体力值
  3.   #--------------------------------------------------------------------------
  4.   def maxhp
  5.     return [[base_maxhp + @maxhp_plus, 1].max, maxhp_limit].min + def
  6.   end
复制代码
如果不想让敌人也有这个修改,就把上面这段复制,放到Game_Actor里就行了

②基本回避率和会心一击率
在Game_Actor 273行
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取闪躲率
  3.   #--------------------------------------------------------------------------
  4.   def eva
  5.     #以下为修改的部分
  6.     case id #判断角色ID
  7.     when 1 then #1号角色的基础回避率
  8.       n = 10
  9.     when 2 then #2号角色的基础回避率
  10.       n = 20
  11.     when 5 then #5号角色的基础回避率
  12.       n = 30
  13.     else
  14.       n = 5 #以上单独设定角色之外,其他角色的基础回避率
  15.     end
  16.     #以上为修改的部分
  17.     for item in armors.compact do n += item.eva end
  18.     return n
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取会心一击率
  22.   #--------------------------------------------------------------------------
  23.   def cri
  24.     #以下为修改的部分
  25.     case id #判断角色ID
  26.     when 1 then #1号角色的基础会心率
  27.       n = 10
  28.     when 2 then #2号角色的基础会心率
  29.       n = 20
  30.     when 5 then #5号角色的基础会心率
  31.       n = 30
  32.     else
  33.       n = 4 #以上单独设定角色之外,其他角色的基础会心率
  34.     end
  35.     #以上为修改的部分
  36.     n += 4 if actor.critical_bonus
  37.     for weapon in weapons.compact
  38.       n += 4 if weapon.critical_bonus
  39.     end
  40.     return n
  41.   end
复制代码

作者: 风雪优游    时间: 2011-6-7 10:49
我想说,LZ,如果你说人物的HP是现存HP,那么这个就是循环引用,一定出现诡异的错误- -|||

最大HP=人物HP+防御力

也就是说只有防御力是固定数

实际设定的时候- -你能设置的HP是最大HP
以初始100HP 10防御举例
进入游戏主角的HP 100/110
然后主角受到攻击 HP-50
50/60
主角+血,1000HP的高级回复药,想必你不会设置为超过最大HP的加血,也就是说他只能加10HP,但是HP+10那么最大HP也能+10,结果= =|||就变成了
1050/1060
结果主角只靠吃药就能把血加到9989/9999(如果限定了上限的话= =|||)
好吧,你说你设定一个限制,加血的先锁定一下最大HP然后只允许加差额即防御值的数,于是变成了
60/70
这样你说,恩,可以了吧。
但是,问题又来了。加血你锁定了最大HP哈,那么……主角被干掉了
0/10
主角加血
10/20
主角再加血
20/30
主角再加血
30/40
= =|||
其他不可预知错误会有什么就不知道了。
也就是说这个游戏最重要的就是防御属性,PS,HP永远加不满
作者: tidusm    时间: 2011-6-7 21:55
风雪优游 发表于 2011-6-7 10:49
我想说,LZ,如果你说人物的HP是现存HP,那么这个就是循环引用,一定出现诡异的错误- -|||

最大HP=人物HP+ ...

只是纯粹的把HP数字变为HP+防御力,为什么会出现这么多问题。
我想定义为HP就是HP+防御力

假设定义真实HP=基本HP+防御力
当回复药回复的也是真实HP

这样不就可以了吗?
作者: tidusm    时间: 2011-6-7 22:56
Yuee 发表于 2011-6-7 09:59
①最大HP=人物HP+防御力
Game_Battler第140行如果不想让敌人也有这个修改,就把上面这段复制,放到Game_Act ...

①最大HP=人物HP+防御力
Game_Battler第140行  
没有用!
作者: Yuee    时间: 2011-6-8 00:11
tidusm 发表于 2011-6-7 21:55
只是纯粹的把HP数字变为HP+防御力,为什么会出现这么多问题。
我想定义为HP就是HP+防御力

基本HP是什么……真实HP是什么……
描述的不太清楚

如果是HP上限=原有HP上限+防御力
就是我上面发的改法
如果是别的,请描述清楚

上面改法忘了一个self
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取 最大体力值
  3.   #--------------------------------------------------------------------------
  4.   def maxhp
  5.     return [[base_maxhp + @maxhp_plus, 1].max, maxhp_limit].min + self.def
  6.   end
复制代码

作者: 小麦饭    时间: 2011-6-8 02:06
LZ的意思是重新定义新类: newhp = maxhp + def,然后将原本所有maxhp的地方都换成newhp
姐姐不懂脚本只能描述,谁看懂的帮个忙吧
作者: tidusm    时间: 2011-6-8 19:55
Yuee 发表于 2011-6-8 00:11
基本HP是什么……真实HP是什么……
描述的不太清楚

使用后有一个问题,就是现在HP会大于最大HP。

我来详细的说下我想要的脚本吧。

比如A角色:HP:100;防御力:10;装备防具的防御力:10
则A角色的MAXHP=120.

以下变为重点:
当A角色不装备防具时MAXHP为110/110;如果这时装备上防具后应该是110/120(重点一)

当A角色装备防具时AXHP为120/120,如果这时卸下防具后应该是110/110(重点二)

希望您能再给我改个妥当点的脚本,在下实在改不出来啊,万分感谢!
作者: 小麦饭    时间: 2011-6-8 22:26
问题就在重点二,如果只是第一条,也许可以重新定义现有hp的算法来解决,但要和防具实时联动,那你希望的"最大hp"已经是个全新的概念了
作者: tidusm    时间: 2011-6-10 16:55
希望得到完美的解答,苦等解答




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1