找回密碼
 註冊
查看: 3564|回復: 25
打印 上一主題 下一主題
收起左側

[效果 與 研究] 每秒回復 n 血而不破血 (英雄式回血增強版)

    [複製鏈接]
跳轉到指定樓層
1#
發表於 2-10-2010 18:20:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 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 個以上的狀況&效果,
想像一下遊戲負荷有多大! 所以以上方法就不可行!

所以我們有其他方法去代替這方法。
回復

使用道具 舉報

2#
 樓主| 發表於 2-10-2010 18:39:11 | 只看該作者
本帖最後由 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 )
stupid_program.rar (1.23 KB, 下載次數: 55)
回復 支持 反對

使用道具 舉報

3#
發表於 2-10-2010 20:25:53 | 只看該作者
使用>=32的基礎值也有缺點@@

比如用32,
補到99/100,
那下一秒會是99+32/100,
然後才停止補。
回復 支持 反對

使用道具 舉報

4#
 樓主| 發表於 2-10-2010 20:34:12 | 只看該作者
回復 3# chickenpie

你意思是指會破血?
不會的,
原本想解釋一次, 不過寫到一半發現自己寫得亂七八糟,
所以沒有寫了 ;P
回復 支持 反對

使用道具 舉報

5#
發表於 2-10-2010 20:53:51 | 只看該作者
本帖最後由 jsnjsn761 於 2-10-2010 20:54 編輯

我今次係第一次睇唔明NG post既野,我要細心睇下先-0-
d 數字好鬼多+我懶
回復 支持 反對

使用道具 舉報

6#
發表於 2-10-2010 21:20:24 | 只看該作者
aoc的 trigger 十幾年前的產品

而且做出來的劇情相當不穩定。

ps.話說版主你的program 沒做Exception Handling
回復 支持 反對

使用道具 舉報

7#
發表於 2-10-2010 22:14:29 | 只看該作者
回復 4# nomygf


我其實不知道原理0_0"
只是之前玩過一個劇
站在補血站時會一次64血咁加,
加到破血(或剛好滿血)才停,
而且玩家控制的角色好像也是英雄來的...
回復 支持 反對

使用道具 舉報

8#
發表於 3-10-2010 11:27:03 | 只看該作者
d字又長又咩唔明 我想c下整 唔知得唔得
回復 支持 反對

使用道具 舉報

9#
發表於 3-10-2010 12:37:01 | 只看該作者
回復  nomygf


我其實不知道原理0_0"
只是之前玩過一個劇
站在補血站時會一次64血咁加,
加到破血(或剛好 ...
chickenpie 發表於 2-10-2010 22:14



係唔係型仔的真三國無雙
回復 支持 反對

使用道具 舉報

10#
發表於 3-10-2010 13:29:54 | 只看該作者
回復 9# collins4321


不記得了= ="
那時才剛接觸劇
不過最大的印象是很無聊
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

快速回復 返回頂部 返回列表