jjcall2002 发表于 2009-6-23 12:45:13

请教HP的小数位问题。

HP
某英雄生命上限200,当前生命值100,当前生命恢复速度0.84hp/s。那么1秒后他的生命值是100.84吗?如果是100.84,我们怎么得到这个小数位的数值?

eff 发表于 2009-6-23 13:19:48

废话是以小数储存的。。。

linzefei 发表于 2009-6-23 15:24:25

游戏平衡常数..
老狼写过个 伤害计算贴

jjcall2002 发表于 2009-6-23 17:08:13

引用第1楼eff于2009-06-23 13:19发表的:
废话是以小数储存的。。。 http://bbs.islga.org/images/back.gif

能详细点么?有公式么?怎么取小数位?

jjcall2002 发表于 2009-6-23 17:08:43

引用第2楼linzefei于2009-06-23 15:24发表的:
游戏平衡常数..
老狼写过个 伤害计算贴 http://bbs.islga.org/images/back.gif

老狼的我看了,没这么具体啊,那些我都知道的。

linzefei 发表于 2009-6-23 17:22:04

那个就够了啊...最近我在做ai..
写了个伤害获取函数.

可以准确获取 任意2个单位间 任意次攻击 能实际造成多少伤害...

(事先要储存好 初始属性..)

之后都靠那些公式计算的


比如这个是最上级的函数..

function GetDamage takes integer u1,integer u2,boolean max returns real
    local real dg=GetOtherHarm(udg_Data_Unit,udg_Data_Unit,max)
    local real am=udg_UnitArmour
    local integer type1=GetHandleInt(GetUnitTypeId(udg_Data_Unit),"Data")
    local integer type2=GetHandleInt(GetUnitTypeId(udg_Data_Unit),"Data")
    local real mdl=udg_DamageModulus*8+udg_BaseArmourType]
    if am>0 then
      return GetArmour(udg_Data_Unit,dg*mdl/(1+0.05*am))
    elseif am<0 then
      return GetArmour(udg_Data_Unit,dg*mdl*(2+0.95*am))
    else
      return GetArmour(udg_Data_Unit,dg*mdl)
    endif
endfunction
//0 ,0 ,1.66,0 ,1.66,0 ,0
//攻击类型攻城(0),普通(1),法术(2),混乱(3),穿刺(4),英雄(5),魔法(6)
//护甲类型小型(0),中型(1),大型(2),城墙(3),普通(4),英雄(5),神圣(6),无装甲(7)
//1.00,0.50,1.00,1.50,1.00,0.50,0.40,1.50
//1.00,1.50,0.80,0.70,1.00,1.00,0.40,1.20
//1.00,1.00,1.00,1.00,1.00,0.75,0.40,1.00
//1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00
//1.50,0.75,1.00,0.35,1.20,1.00,0.40,1.50
//1.00,1.00,1.00,0.50,1.00,1.00,0.80,1.00
//1.25,0.75,2.00,0.35,1.00,0.50,0.40,1.00
//1>. 当防御Def>0时,单位所受伤害%为1/(1+0.05*Def)
//2>. 当防御Def<0时,单位所受伤害%为 2-0.95^(-Def)

linzefei 发表于 2009-6-23 20:56:40

护甲
如果我要计算某英雄被100点攻击一下去多少血。游戏中他当前护甲显示为3,实际上真实的护甲值是3.84,我怎样在游戏中得到他的准确护甲值?

计算敏捷.
计算初始甲...

jjcall2002 发表于 2009-6-23 21:31:32

引用第6楼linzefei于2009-06-23 20:56发表的:
护甲
如果我要计算某英雄被100点攻击一下去多少血。游戏中他当前护甲显示为3,实际上真实的护甲值是3.84,我怎样在游戏中得到他的准确护甲值?

计算敏捷.
计算初始甲... http://bbs.islga.org/images/back.gif

这个说对了,那hp呢?怎么计算的?

linzefei 发表于 2009-6-23 21:56:52

..力量啊..技能啊..初始血啊...这有什么好问的......

alexries 发表于 2009-6-24 00:39:44

lz不要以为ga的人们都很不变态……这个大家都研究过的。
还有阿。lz可以去做个演示,这样大概就可以更好的理解老。比如每次造成0.5伤害,这样伤害2次就可以看到血减少了1点。就能正式老。

血戮魔动冰 发表于 2009-6-24 07:37:35

恩恩…………支持LS,还有…………LZ你把标题句号后面的删了!!!
剩下的我就想提醒LZ,要真想获得单位的攻击力/防御力,除非你再模拟一个魔兽的攻击力/防御力计算系统………………我写过这个系统,最长的时候3000行…………建议LZ知难而退。
end

thewisp1 发表于 2009-6-24 08:00:30

找到单位对象指针,然后所有数据都在里边。

不会超过100行的。

Renee 发表于 2009-6-24 08:02:36

HP明明可以直接获得。

eff 发表于 2009-6-24 10:37:36

对目标+10血,在攻击他10点算一下血量不就好了。。。

考虑好可能会打死的情况,规避掉即可

另外,你离变态还很远呢

jjcall2002 发表于 2009-6-24 11:17:13

多谢各位老大的解答,我已经更新问题了,大家最后再帮忙看看。标题也顺应潮流改了一下,不知是否符合各位老大的口味?

eff 发表于 2009-6-24 11:27:13

你干什么需要知道这个小数位?

linzefei 发表于 2009-6-24 11:48:43

生命恢复 似乎是按 0.05秒 间隔来恢复的

血戮魔动冰 发表于 2009-6-24 12:44:37

……………………………………………………………………
本人亲自天罚你…………

jjcall2002 发表于 2009-6-24 12:51:14

引用第17楼血戮魔动冰于2009-06-24 12:44发表的:
……………………………………………………………………
本人亲自天罚你………… http://bbs.islga.org/images/back.gif

哈哈,标题我改了几遍了,没想到还是没符合老大你的口味哈。还劳烦你亲自动手,真是不好意思啊。

jjcall2002 发表于 2009-6-24 12:52:06

引用第15楼eff于2009-06-24 11:27发表的:
你干什么需要知道这个小数位? http://bbs.islga.org/images/back.gif

我想知道,小数位是存在并会计算的吗?
页: [1] 2
查看完整版本: 请教HP的小数位问题。