找回密码
 点一下
查看: 1265|回复: 13

如何实现伤害捕捉.

[复制链接]
发表于 2011-1-7 03:42:59 | 显示全部楼层 |阅读模式
很多图里面都有伤害测试之类的.能够获得玩家单位造成的伤害值. 计划制作的地图中打算用根据伤害值做些设置.


请问这是如何实现, 是不是简单一段 J就搞定了.  能给出代码就最好了, 十分感谢.
发表于 2011-1-7 08:07:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2011-1-7 08:39:48 | 显示全部楼层
为什么我觉得捕捉伤害事件就好了呢……
回复

使用道具 举报

发表于 2011-1-7 09:09:44 | 显示全部楼层

一个开始时生命值为1*10^9并且无生命恢复的单位,在结束时生命值剩下123456789,于是他受到了876543211点伤害。
(需不需要T捏……话说我觉得如果是TD的伤害测试这样不就好了……)
回复

使用道具 举报

 楼主| 发表于 2011-1-8 04:06:06 | 显示全部楼层
我需要统计一定时间内玩家英雄杀怪所造成的总伤害.   

如果不太难也不耗费系统资源就能做到统计总伤害值最好, 不行的话就只有算攻击次数.

---------------
需要这样的功能:
事件: 单位受到伤害
动作: 设置变量A=A+引发单位受到的伤害值.
回复

使用道具 举报

发表于 2011-1-8 15:10:28 | 显示全部楼层
原本就有这样的事件和动作好不好。
回复

使用道具 举报

 楼主| 发表于 2011-1-8 19:54:53 | 显示全部楼层
T里面没有啊,

事件只有:
单位-单位被攻击的.
单位-放置在地图上的单位变量接受伤害.(T创建的单位或者后来建造的单位没办法)

动作里能给变量设置的整数或者真值也没见到有伤害值这一项.

至少我这1.20e剑心汉化补丁的版本没有.
不知道是不是你们用的老狼UI里有.
回复

使用道具 举报

发表于 2011-1-8 19:57:41 | 显示全部楼层
事件里面只有“指定单位 接受伤害”没有“任意单位 接受伤害”,因此要动态注册。
比如:[trigger]IT
    事件
        Map initialization
    环境
    动作
        单位组 - Pick every unit in (Units in (Entire map)) and do (Actions)
            Loop - 动作
                触发器 - Add to GD <情报> the event (单位 - (Picked unit) 接受伤害)
[/trigger][trigger]ET
    事件
        单位 - A unit enters (Entire map)
    环境
    动作
        触发器 - Add to GD <情报> the event (单位 - (Triggering unit) 接受伤害)
[/trigger][trigger]GD
    事件
    环境
    动作
        游戏 - Display to (All players) the text: ((Name of (Triggering unit)) + (受到了 + ((String((Damage taken))) + 点伤害)))
[/trigger]
DT.w3x (18 KB, 下载次数: 19)
回复

使用道具 举报

 楼主| 发表于 2011-1-8 22:39:28 | 显示全部楼层
原来里面有个Damage taken就是获取响应接受伤害时间的伤害值, 谢谢希瓦.

动态注册是好方法, 只是地图可能要刷很多怪, 不知道时间长了会不会影响效率.
回复

使用道具 举报

发表于 2011-1-8 22:55:37 | 显示全部楼层
并不会影响效率,因为大家都是这么做的……
不过,最好一副地图只使用一个“动态注册”的触发(可以将几个触发压缩到一起),不然触发多了肯定卡啦……
另外,DOTA是在需要使用“接受伤害”触发时即时创建,然后用完之后就删除掉的方法……
要是你不觉得麻烦的话,这样效率最高。
回复

使用道具 举报

发表于 2011-1-8 23:02:10 | 显示全部楼层
楼主要的是伤害统计,怎么即时创建?频繁创建销毁,效率其实更低
回复

使用道具 举报

发表于 2011-1-8 23:15:31 | 显示全部楼层
频繁创建销毁,效率其实更低

楼上提醒的对,如果单位太多就不能那样。
不过楼主也没有说是不是只针对一个单位的伤害统计吧……

另外:下面的写法也是很好的选择。[trigger]A
    事件
        单位 - A unit 被攻击的
    环境
        (Level of 重击 for (Attacking unit)) 大于 0
        ((Triggering unit) is in Group) 等于 FALSE
    动作
        触发器 - Add to B <情报> the event (单位 - (Triggering unit) 接受伤害)
        单位组 - Add (Triggering unit) to Group
[/trigger][trigger]B
    事件
    环境
        ((Triggering unit) has buff 击晕) 等于 TRUE
    动作
        单位 - Remove 击晕 buff from (Triggering unit)
        单位 - Cause (Damage source) to damage (Triggering unit), dealing ((Real((力量 of (Damage source) (包括 bonuses)))) x 3.00) damage of attack type 英雄 and damage type 普通的
[/trigger]
效果就是:在发动重击时造成3倍力量伤害。
回复

使用道具 举报

 楼主| 发表于 2011-1-8 23:46:25 | 显示全部楼层
我地图里设想的是每个英雄到一定条件后根据他造成了多少伤害来给予相应的攻击技能和升级, 根据他受到多少伤害来决定他的防御技能.

也就是说玩家英雄所受的伤害, 和地图上几乎所有单位被攻击受到的伤害都要做相应计算.
差不多所有已有单位和一两小时内刷出来的单位都会要计算这个伤害值.......庞大啊.
回复

使用道具 举报

发表于 2011-1-9 00:06:25 | 显示全部楼层
那就使用希瓦的方法吧,就算注册上万个单位也不会有问题的。
剩下只需要为每个英雄绑定两个实数就可以了。
没什么庞大的…完全不会卡。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 20:09 , Processed in 0.167363 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表