找回密码
 点一下
查看: 2544|回复: 25

请教HP的小数位问题。

[复制链接]
发表于 2009-6-23 12:45:13 | 显示全部楼层 |阅读模式
HP
某英雄生命上限200,当前生命值100,当前生命恢复速度0.84hp/s。那么1秒后他的生命值是100.84吗?如果是100.84,我们怎么得到这个小数位的数值?
发表于 2009-6-23 13:19:48 | 显示全部楼层
废话是以小数储存的。。。
回复

使用道具 举报

发表于 2009-6-23 15:24:25 | 显示全部楼层
游戏平衡常数..
老狼写过个 伤害计算贴
回复

使用道具 举报

 楼主| 发表于 2009-6-23 17:08:13 | 显示全部楼层
引用第1楼eff于2009-06-23 13:19发表的  :
废话是以小数储存的。。。
能详细点么?有公式么?怎么取小数位?
回复

使用道具 举报

 楼主| 发表于 2009-6-23 17:08:43 | 显示全部楼层
引用第2楼linzefei于2009-06-23 15:24发表的  :
游戏平衡常数..
老狼写过个 伤害计算贴
老狼的我看了,没这么具体啊,那些我都知道的。
回复

使用道具 举报

发表于 2009-6-23 17:22:04 | 显示全部楼层
那个就够了啊...最近我在做ai..
写了个伤害获取函数.

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

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

之后都靠那些公式计算的


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

[jass]function GetDamage takes integer u1,integer u2,boolean max returns real
    local real dg=GetOtherHarm(udg_Data_Unit[u1],udg_Data_Unit[u2],max)
    local real am=udg_UnitArmour[u2]
    local integer type1=GetHandleInt(GetUnitTypeId(udg_Data_Unit[u1]),"Data")
    local integer type2=GetHandleInt(GetUnitTypeId(udg_Data_Unit[u2]),"Data")
    local real mdl=udg_DamageModulus[udg_BaseHarmType[type1]*8+udg_BaseArmourType[type2]]
    if am>0 then
        return GetArmour(udg_Data_Unit[u2],dg*mdl/(1+0.05*am))
    elseif am<0 then
        return GetArmour(udg_Data_Unit[u2],dg*mdl*(2+0.95*am))
    else
        return GetArmour(udg_Data_Unit[u2],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)[/jass]
回复

使用道具 举报

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

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

使用道具 举报

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

计算敏捷.
计算初始甲...
这个说对了,那hp呢?怎么计算的?
回复

使用道具 举报

发表于 2009-6-23 21:56:52 | 显示全部楼层
..力量啊..技能啊..初始血啊...这有什么好问的......
回复

使用道具 举报

发表于 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
回复

使用道具 举报

发表于 2009-6-24 08:00:30 | 显示全部楼层
找到单位对象指针,然后所有数据都在里边。

不会超过100行的。
回复

使用道具 举报

发表于 2009-6-24 08:02:36 | 显示全部楼层
HP明明可以直接获得。
回复

使用道具 举报

发表于 2009-6-24 10:37:36 | 显示全部楼层
对目标+10血,在攻击他10点算一下血量不就好了。。。

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

另外,你离变态还很远呢
回复

使用道具 举报

 楼主| 发表于 2009-6-24 11:17:13 | 显示全部楼层
多谢各位老大的解答,我已经更新问题了,大家最后再帮忙看看。标题也顺应潮流改了一下,不知是否符合各位老大的口味?
回复

使用道具 举报

发表于 2009-6-24 11:27:13 | 显示全部楼层
你干什么需要知道这个小数位?
回复

使用道具 举报

发表于 2009-6-24 11:48:43 | 显示全部楼层
生命恢复 似乎是按 0.05秒 间隔来恢复的
回复

使用道具 举报

发表于 2009-6-24 12:44:37 | 显示全部楼层
……………………………………………………………………
本人亲自天罚你…………
回复

使用道具 举报

 楼主| 发表于 2009-6-24 12:51:14 | 显示全部楼层
引用第17楼血戮魔动冰于2009-06-24 12:44发表的  :
……………………………………………………………………
本人亲自天罚你…………
哈哈,标题我改了几遍了,没想到还是没符合老大你的口味哈。还劳烦你亲自动手,真是不好意思啊。
回复

使用道具 举报

 楼主| 发表于 2009-6-24 12:52:06 | 显示全部楼层
引用第15楼eff于2009-06-24 11:27发表的  :
你干什么需要知道这个小数位?
我想知道,小数位是存在并会计算的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-27 01:25 , Processed in 0.135156 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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