找回密码
 点一下
查看: 4049|回复: 22

单位接近事件怎么捕捉被接近单位

[复制链接]
发表于 2010-5-6 19:58:38 | 显示全部楼层 |阅读模式
比如有单位A 和单位B,事件是任意单位接近单位A,那么触发单位就变了了单位B,而单位A捕捉不到了,这个怎么办?。另外TriggerAddAction能否直接传递数据?
发表于 2010-5-6 21:26:57 | 显示全部楼层
不能直接捕捉,但你可以在绑定在触发上
回复

使用道具 举报

发表于 2010-5-7 20:00:16 | 显示全部楼层
LS+1  绑定到触发上
回复

使用道具 举报

发表于 2010-6-26 09:15:55 | 显示全部楼层
告诉你最直接 最简单的办法把

如果你会任意单位接受伤害系统  那么利用1个 范围伤害技能就能捕捉。比如永久献祭 伤害写成0.5 BUFF时间0.25秒。
技能里设置范围   触发里用 伤害来源 和触发单位 捕捉
条件是 伤害值小于1
              伤害值大于0

这个办法 可以用语全地图所有单位并且不卡
回复

使用道具 举报

发表于 2010-6-26 19:43:14 | 显示全部楼层
献祭的方法还是需要根据实际来选择的
回复

使用道具 举报

发表于 2010-6-27 10:40:01 | 显示全部楼层
我地图的范围捕捉就是这样做的 靠触发器不那么方便 并且进入范围的事件很容易出现BUG等只要条件写的不到位黄虫单位进入也触发。
唯一的不足就是怕你的地图 伤害上 人物的攻击是 10几这就不好很完美的实现了

因为伤害小于1的情况一般地图不影响什么。

具体判断的时候你要写条件具体判断到某个伤害来源。和被伤害的单位。要用到单位类型或你自己定义的的 具体值。
回复

使用道具 举报

发表于 2010-6-28 09:44:00 | 显示全部楼层
那么无敌呢?那么隐身呢?
明明有更好的方法干嘛还要用这个方法呢。。。
回复

使用道具 举报

发表于 2010-6-28 13:36:44 | 显示全部楼层
引用第6楼希瓦于2010-06-28 09:44发表的  :
那么无敌呢?那么隐身呢?
明明有更好的方法干嘛还要用这个方法呢。。。


明显是研究型作者 实际作图经验不足 啊兄弟

这个办法的确 无法捕捉无敌情况其他的都能OK
触发器捕捉的范围 在单一地图少量调用的情况下无任何问题
一但丢进大量触发地图里 直接调用和技能编写 条件稍微写的不到位BUG成堆。
所以我说
如果是用于技能编辑 地图大量调用 建议使用伤害触发
因为伤害范围捕捉 消耗比较小而且 现在的伤害系统已经比较完善。
如果是少量的触发比如剧情 比如进入NPC范围那就直接用T写个事件 几个条件解决。。
回复

使用道具 举报

发表于 2010-6-28 13:39:41 | 显示全部楼层
引用楼主b76234567于2010-05-06 19:58发表的 单位接近事件怎么捕捉被接近单位 :
比如有单位A 和单位B,事件是任意单位接近单位A,那么触发单位就变了了单位B,而单位A捕捉不到了,这个怎么办?。另外TriggerAddAction能否直接传递数据?  

LZ问的是这  所以这个捕捉被接近的单位 只能用伤害系统。 捕捉伤害来源。
回复

使用道具 举报

发表于 2010-6-28 17:15:46 | 显示全部楼层

如果回答严格按照LZ的要求,那么看看问题吧,是“单位接近事件怎么捕捉被接近单位”,在响应事件符合要求的前提下给单位动态绑定“单位接近事件”并使用缓存或类似的方法将单位绑定于触发上才是最好的解决方法。

如果要抛开这个前提呢,可选择的方法也有很多,rex你推荐使用伤害系统,在我看来也只是你的个人习惯而已,试问现在哪个系统的使用方式还不算完善呢?要我做这个东西的话,我会选择计时器系统+两个单位组,这样不仅可以侦测到接近单位,远离单位也同样可以侦测到,而接近或远离的对象可以是某个单位也可以是一个圆形区域,在我看来,它才是比较好的一个方法。

[codes=jass]
globals
    group Jishiqi_group
    unit Jishiqi_unit
endglobals
function Jishiqi_xuanqu takes nothing returns boolean
    call GroupRemoveUnit( Jishiqi_group, GetFilterUnit() )
    return true
endfunction
function Jishiqi_daoqi takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local string s=I2S(H2I(t))
    local unit u=I2U(GetStoredInteger(Huancun,s,"Unit"))
    local real x=GetUnitX(u)
    local real y=GetUnitY(u)
    local real r=GetStoredReal(Huancun,s,"Banjing")
    local group g1=I2G(GetStoredInteger(Huancun,s,"Group"))
    local group g2

    set g2=CreateGroup()
    set Jishiqi_group=g1
    set Jishiqi_unit=u
    call GroupEnumUnitsInRange(g2 ,x, y , r , Condition(function Jishiqi_xuanqu))
    //现在,g2中所包含的就是中心单位范围内的单位
    //g1中的就是远离中心单位的单位了

    call DestroyGroup(Jishiqi_group)
    call StoreInteger(Gem_newhero,s,"Group",G2I(g2))
    set g1=null
    set g2=null
    set u=null
    set t=null
endfunction
[/codes]

[codes=jass]
//如果要侦测接近事件,把选取函数做如下改动就可以了
function Jishiqi_xuanqu takes nothing returns boolean
    local unit u=GetFilterUnit()
    if(IsUnitInGroup(u ,Jishiqi_group))then
        call GroupRemoveUnit( Jishiqi_group, u )
    else
        //action
        //此时就侦测到了单位接近事件中的单位
    endif
    set u=null
    return true
endfunction
[/codes]

这个方法中带'Aloc'的技能是无法选取的,如果想附带更多的条件,只需要在函数Jishiqi_xuanqu里面调整就可以了。

当然,我也仅仅只是对这个方法比较熟悉而已。
回复

使用道具 举报

发表于 2010-6-28 19:15:56 | 显示全部楼层
如果只是要处理几个单位,什么方法都好,用技能的方法比较简便,但是通用性和精确性不好,而且出现bug的几率比较大,特别是实际作图时,j的方法就一个缺陷,效率差,或者对作者水平要求高也是缺点吧。作图永远都是效率与效果的妥协。方法很多,主要哪一个适合自己的图
回复

使用道具 举报

发表于 2010-6-28 22:54:21 | 显示全部楼层
对记时器 的办法最普遍。。而且条件也好写。

      不过用的太多了就 会卡自己看把随便那个都可以~
回复

使用道具 举报

发表于 2010-6-29 03:49:41 | 显示全部楼层
用计时器太多会卡这个说法谁传出来的我不清楚(当然高频率高数量会卡那是一定的)但是这个程度会比使用触发更严重么?我对这个说法严重质疑。
回复

使用道具 举报

发表于 2010-6-29 13:09:22 | 显示全部楼层
引用第12楼cccty1l于2010-06-29 03:49发表的  :
用计时器太多会卡这个说法谁传出来的我不清楚(当然高频率高数量会卡那是一定的)但是这个程度会比使用触发更严重么?我对这个说法严重质疑。
全部有效单位之间的靠近判断是悲剧的
需要比队的内容几何倍数增加、
什么多了都会卡

尤其是带有信息多的类型
比如unit……
timer应该还可以吧
回复

使用道具 举报

发表于 2010-6-29 16:16:48 | 显示全部楼层
引用第7楼rex于2010-06-28 13:36发表的  :



明显是研究型作者 实际作图经验不足 啊兄弟

.......
这话是什么意思?
你无视魔免.无敌.隐身.重复触发。。。等问题就算了
那触发BUG多明显就是自己水平问题,暴雪的技能难道不是脚本编写?
要反驳别人也不需要这样说。
回复

使用道具 举报

发表于 2010-6-29 20:07:20 | 显示全部楼层
其实差别就在多系统中的冲突
回复

使用道具 举报

发表于 2010-6-30 01:29:53 | 显示全部楼层
只是讨论讨论~~而已
不过我的办法 是说的简单了点。实际上做的条件是一套巨大的判断和条件限制等系统。

虽然我地图 是这样弄 并且方便的运用到 要用的单位身上。

但是重复触发。和魔免这些问题 我都忘记说了。。。。悲剧中。。
就是无敌 每办法解决 其他的都可以做到。相对触发的动态注册办法不知道好坏如何。
我也只是说说自己的办法。
回复

使用道具 举报

发表于 2010-6-30 02:55:43 | 显示全部楼层
引用第10楼疯人¢衰人于2010-06-28 19:15发表的  :

作图永远都是效率与效果的妥协。

刚看到这句话。近期写的代码比之前多了不少,越来越发现比起CPU的时间,我自己的时间才比较宝贵,之前对代码的严苛要求已经少了很多了。

跟改图(和同学玩哈,我可没传播)也有一点关系啦,总觉得那些代码明明惨不忍睹了,可是在地图里面还是蛮流畅的嘛。

不过我的代码也是惨不忍睹的呀哈哈,还有发现猪头君换头像了下,真不习惯...
回复

使用道具 举报

发表于 2010-6-30 02:57:31 | 显示全部楼层
引用第16楼rex于2010-06-30 01:29发表的  :

只是讨论讨论~~而已
嗯嗯,我的语气也不是很好哈

//=============
哎?没有合并?
回复

使用道具 举报

发表于 2010-6-30 12:52:49 | 显示全部楼层
作图时系统太多了,难免会忘,然后那个地方因为技能而冲突很常见,技能之间的关系太复杂,考虑不周就会bug
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 16:08 , Processed in 0.050148 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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