作者horazon (Horazon)
看板WarCraftChat
標題[ WE ] 想問一下 助攻系統
時間Tue May 10 06:00:36 2011
就是dota類的助攻系統 (os的好像最完善)
比如說 在10秒內對英雄A造成傷害的有英雄B C D
C最後殺死了A C得到尾刀賞金
這時候我要怎麼判斷B 和 D曾經做過傷害?
目前的想法是用一個10x10的陣列 (應該只需要5x5x2)
每個欄位儲存 某英雄對另一英雄 最後造成傷害的時間
以英雄死亡時間和 最後傷害時間做判斷是否有助攻
不過這樣 每個英雄每次做出傷害都要執行觸發
不知道會不會造成太多負荷?
有人能幫我稍微說明一下目前dota遊戲的做法嗎?
不用完整觸發 只要大概說明一下就好 感謝^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.164.81
1F:→ gyd:一個hash table直接存最後造成傷害時間就可以了 05/10 12:05
2F:→ gyd:這類作法本來就得要每次造成傷害就存 05/10 12:06
3F:推 wix3000:我不知道助攻是怎麼做的 但是每次傷害就觸發不會造成什麼 05/10 12:16
4F:→ wix3000:負荷 05/10 12:16
5F:推 blackjack0s:OS 上Debuff也會有助攻 05/10 12:45
6F:→ gyd:只針對hero 10隻是還好,..全域傷害都有人做了 05/10 13:21
7F:→ lucifiel1618:應該只是用倒數器,傷害或施放技能的對象在倒數結束 05/10 16:18
8F:→ lucifiel1618:前死亡,紀錄為一次助攻。這應該是最有效率的作法 05/10 16:18
9F:→ gyd:這樣還得創timer, 並且還是得用傷害trg去處理timerStart 05/10 16:29
10F:→ bill750121:以有吸到經驗來抓 可不可以 05/10 16:31
11F:→ lucifiel1618:只要在timer倒數結束後再用一次傷害trg重啟就好 05/10 16:39
12F:→ lucifiel1618:不需要每次傷害都觸發timerStart 05/10 16:39
13F:→ lucifiel1618:只要傷害觸發timerStart以後,就關閉這個傷害觸發 05/10 16:40
14F:→ lucifiel1618:在倒數結束以後再重啟傷害觸發 05/10 16:40
15F:→ lucifiel1618:這樣就只是十幾秒一次傷害觸發而已,吃資源就少了 05/10 16:41
16F:→ gyd:5隻打同1隻會開5個timer, 我們前面說的作法都是存在被傷害者 05/10 21:32
17F:→ gyd:身上 05/10 21:32
18F:→ gyd:再者, 若timerStart後關閉傷害tri, 5分鐘時有造成傷害 05/10 21:50
19F:→ gyd:更正, 5秒 05/10 21:50
20F:→ gyd:傷害trig開啟後, 5秒內該敵人死亡, 此時timer已stop, 會判斷為 05/10 21:51
21F:→ gyd:沒助攻, 請問何解 05/10 21:52
22F:→ lucifiel1618:你說的有道理,多謝指正 05/10 23:29
23F:→ gyd:有機會可以多討論:) 05/11 01:47
24F:→ horazon:既然負荷不大 就都存吧 gyd的像我的說法 也很方便 謝啦 05/11 04:58
25F:→ horazon:我的環境有多維陣列可以用 倒是不用hashtable :) 05/11 04:59
26F:→ sapphireBOB::) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) 05/11 14:52
27F:→ horazon:樓上是怕多隆學符號去用嗎 :) 05/12 01:08