作者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