每秒回復 n 血, 而且不破血
英雄式的原理我不在这里说, 我也不过算是一知半解,有兴趣的话可以自己研究一下,提示是这与程式的变数种类有关。
A:是單位的血量上限值
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777217+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
相信这结构大家也不会感到陌生, 其实这是经过简化的结构, 最基本的应该是这样:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
效果0 与效果1 结合了, 因此写成简化版本。
好了, 那为什么我不用简化版本去解释接着下来的东西呢?
那是因为简化版相对地较为不清晰, 相反最基本的结构就清晰得多,
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
好容易便看出, 这是每秒增加 1 血,
对! 中间的那个"-1" 就是这个意义-- 每秒增加1 血。
因此, 假若你想每秒回复2 血, 结构就变写成:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果3:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
再简化成:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777217+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
如果你想每秒回复 10 血, 就应写成:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
(1)效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果3:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果4:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
(5)效果5:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果6:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果7:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果8:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果9:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
(10)效果10:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果11:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
再简化:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777217+A
(1)效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果3:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果4:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
(5)效果5:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果6:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果7:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果8:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
(9)效果9:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果10:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
在简化过程, 只会将效果0 和效果1 结合, 那为什么效果0 不和其余效果都结合, 那不是更简化么?
举例每秒回复 5 血:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
(1)效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果3:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果4:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
(5)效果5:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果6:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
为什么不简化成这样:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777221+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
或者简化成这样:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-5
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
这是不可行的, 不能够写成以上这样,
因为我跳了原理的部分, 所以也很难给各位解释,
如果你有兴趣, 也可以自行研究, 提示是"系统永远也是由最上读到最下"。
那么如果我打算单位每秒回复200 血, 300 血, 400 血, 甚至更高,
即是要做200 多个, 300多个, 400多个效果!????
这是事实!
但你可能说用AoKTS (触发事件工作室) 就能很方便地复制效果, 做400 多个相同效果也是一分钟以内的事情,
这也是事实! 可是别忘记你的触发事件是循环的, 系统每秒最少运行400 个以上的状况&效果,
想像一下游戏负荷有多大! 所以以上方法就不可行!
所以我們有其他方法去代替這方法。
[ 本帖最后由 nomygf 于 2010-10-3 21:15 编辑 ] 一楼提到, 有其他方法取代第一個方法,
而那個方法就是使用一个损坏目标, 便能达到每秒回复 2/4/8/16/32/64 血的效果,
那么这个触发结构是怎样的呢 ?
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-33554434+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:33554432-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-33554432+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-2
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:33554432-A
上述效果就是每秒回复2 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用2 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是2 的倍数,
也就是n 值只可能会是 2 / 4 / 6 / 8 / 10 / 12 / 14 / 16... 如此类推
==========
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-67108868+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:67108864-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-67108864+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-4
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:67108864-A
上述效果就是每秒回复4 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用4 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是4 的倍数,
也就是n 值只可能会是 4 / 8 / 12 / 16 / 20 / 24 / 28 / 32... 如此类推
========
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-134217736+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:134217728-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-134217728+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-8
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:134217728-A
上述效果就是每秒回复8 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用8 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是8 的倍数,
也就是n 值只可能会是 8 / 16 / 24 / 32 / 40 / 48 / 56 / 64... 如此类推
=======
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-268435472+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:268435456-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-268435456+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:268435456-A
上述效果就是每秒回复16 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用16 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是16 的倍数,
也就是n 值只可能会是 16 / 32 / 48 / 64 / 72 / 88 ... 如此类推
===========
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-536870944+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:536870912-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-536870912+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-32
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:536870912-A
上述效果就是每秒回复32 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用32 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是32 的倍数,
也就是n 值只可能会是 32 / 64 / 96 / 128 / 160 / 192 ... 如此类推
============
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1073741887+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:1073741823-A
将效果0写成两个效果:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1073741823+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-64
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:1073741823-A
上述效果就是每秒回复64 血的触发事件结构。
这个触发事件结构的唯一坏处是, 你必须要使用64 这个值作为最基础
此话什么意思呢? 即是「每秒回复n 点血量」的n 必须是64 的倍数,
也就是n 值只可能会是 64 / 128 / 192 ... 如此类推
===========
如果我要每秒回复128 点血量, 最簡單的触发结构就会是:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1073741823+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-64
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-64
效果3:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:1073741823-A
再简化:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1073741887+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-64
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:1073741823-A
以上就是用"64" 为基础值的例子, 但是若果你说要做每秒回复1280 点血量,
那便要做20 个摧毁目标(1280/64=20)
还剩下一个问题, 假设我要每秒回复97 (32+64+1) 点血量, 那我的结构可以这样做吗?
触发事件0:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1073741823+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-64
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:1073741824-A
触发事件1:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-536870912+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-32
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:536870912-A
触发事件2:
效果0:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-16777216+A
效果1:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:-1
效果2:损坏目标|设置单位:相关单位|设置区域:相关区域|参数:16777216-A
按照上述做法, 可以达到每秒回复97 血量吗?
答案是不能够的, 你只能够从三款方法中选择其中一款用在单位上,
如果在同一单位上, 使用多于一款的方法, 当中只有基础值最大的那个会生效。
还有更大的基础值么? 例如 256? 512?
應該沒有了, 因為假若 16777216*256, 數值已經超出浮點數所能儲存的範圍,
所以應該沒有更大的基礎值了。
最后, 如果你想自己研究原理的话, 我自己用java 写了一个非常很单的程式, 是将integer 转成float,
相信你应该对你有帮助。 (我只是java 初学者, 写得不太好的话请笑纳: D )
[ 本帖最后由 nomygf 于 2010-12-27 00:13 编辑 ] 剛剛發現我所發現的 64 基礎值回血方法有誤,
花了接近兩小時研究, 總算能夠修正到
但是... 現在很累了 {27} 我等了一晚上 突然間想到...
現在那有人用觸發事件去達成「每秒回復 n 血, 而且不破血」,
256僧侶治療距離 + 適當的治療僧侶速度 就能夠達成效果了,
研究成果白費 {23} 原帖由 nomygf 于 2010-10-2 23:08 发表 https://www.hawkaoe.net/bbs/images/common/back.gif
突然間想到...
現在那有人用觸發事件去達成「每秒回復 n 血, 而且不破血」,
256僧侶治療距離 + 適當的治療僧侶速度 就能夠達成效果了,
研究成果白費 {23}
那个不行的,会引起读档间隔性跳出。很严重,不推荐使用 好吧…洗着澡想起来僧侣可以自由控制,上来一看作者已经提出了…更悲剧的是KK还说不稳定…5555 碎玉2就因为这个。搞的我哭了好几天
回复 7楼 的帖子
KK 是說僧侶這個方法不穩定 {25} 原帖由 nomygf 于 2010-10-2 23:24 发表 https://www.hawkaoe.net/bbs/images/common/back.gifKK 是說僧侶這個方法不穩定 {25}
我想他就是说僧侣吧…… 是啊… 复杂,看不懂,有没有这样的图来玩玩?英雄本身回血是怎么回事? 這不算什麼複雜的東西, 純粹是說一說 16777216 / 536810912 / 1073741823 的用法,
看懂黑色字的話, 綠色跟紅色就可以不理會。 其實為什麼要256僧侶- -"
僧侶用同盟的, 和不研製圖學不就可以了嗎
再不然讓玩家看到也沒差..
而且不明白為什麼會「引起读档间隔性跳出」 我还一直以为英雄回血效果最快也只能每秒加一血。。。。看完此帖长见识了。。。{43}
32基础和64基础的加血效果应该很少有机会在战役中应用,毕竟回血超人一直都不流行。。。{40} 似乎正好是倍数啊{19}
16777217的43倍是不是就可以回43血了啊{19}
回复 16楼 的帖子
哈哈, 我竟然沒有發現這點,我晚點再研究一下, 然後再給你答覆 -16777217 A
A是啥……
没加减乘除没括号看不懂
回复 17楼 的帖子
找到了其他"基礎值"了, 待回編輯...謝謝你的想法!
To #18
該死的翻譯器將所有加減符號去掉了,
等會連帶修改 完成了, 這個成果我很滿意 {32}