每秒回復 n 血而不破血 (英雄式回血增強版)
本帖最後由 nomygf 於 3-10-2010 21:15 編輯英雄式的原理不在這裡說, 反正我也算是一知半解,
有興趣的話可以自己研究一下,這與程式的變數種類有關。
效果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 於 27-12-2010 00:14 編輯
一樓提到, 有其他方法取代第一個方法,
那麼這個觸發結構是怎樣的呢 ?
效果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... 如此類推
================
效果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 / 80 / 96 / 112 / 128... 如此類推
=============
效果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... 如此類推
=============
效果0:摧毀目標|設置單位:相關單位|設置區域:相關區域|參數:-1073741887+A
效果1:摧毀目標|設置單位:相關單位|設置區域:相關區域|參數:1073741824-A
將效果0寫成兩個效果:
效果0:摧毀目標|設置單位:相關單位|設置區域:相關區域|參數:-1073741823+A
效果1:摧毀目標|設置單位:相關單位|設置區域:相關區域|參數:-64
效果2:摧毀目標|設置單位:相關單位|設置區域:相關區域|參數:1073741824-A
上述效果就是每秒回復 64 血的觸發事件結構。
這個觸發事件結構的唯一壞處是, 你必須要使用 64 這個值作為最基礎
此話什麼意思呢? 即是「每秒回複 n 點血量」的 n 必須是 64 的倍數,
也就是 n 值只可能會是 64 / 128 / 192 / 256... 如此類推
如果我要 每秒回複 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 )
使用>=32的基礎值也有缺點@@
比如用32,
補到99/100,
那下一秒會是99+32/100,
然後才停止補。 回復 3# chickenpie
你意思是指會破血?
不會的,
原本想解釋一次, 不過寫到一半發現自己寫得亂七八糟,
所以沒有寫了 ;P 本帖最後由 jsnjsn761 於 2-10-2010 20:54 編輯
我今次係第一次睇唔明NG post既野,我要細心睇下先-0-
d 數字好鬼多+我懶 aoc的 trigger 十幾年前的產品
而且做出來的劇情相當不穩定。
ps.話說版主你的program 沒做Exception Handling 回復 4# nomygf
我其實不知道原理0_0"
只是之前玩過一個劇
站在補血站時會一次64血咁加,
加到破血(或剛好滿血)才停,
而且玩家控制的角色好像也是英雄來的... d字又長又咩唔明 我想c下整 唔知得唔得 回復nomygf
我其實不知道原理0_0"
只是之前玩過一個劇
站在補血站時會一次64血咁加,
加到破血(或剛好 ...
chickenpie 發表於 2-10-2010 22:14 http://www.nakuz.com/bbs/images/common/back.gif
係唔係型仔的真三國無雙 回復 9# collins4321
不記得了= ="
那時才剛接觸劇
不過最大的印象是很無聊