找回密码
 点一下
查看: 1040|回复: 10

请问记录某玩家英雄攻击任意敌人的次数怎么弄?谢谢!

[复制链接]
发表于 2011-10-15 11:11:35 | 显示全部楼层 |阅读模式
请问记录某玩家英雄攻击任意敌人的次数怎么弄?

找来找去只找到受人攻击的事件,根本没有英雄攻击单位的事件,很无奈!有人能帮忙么?
发表于 2011-10-15 11:14:54 | 显示全部楼层
世界
任意单位攻击
条件
触发单位等于XXX


还有,新人,发错区了
回复

使用道具 举报

 楼主| 发表于 2011-10-15 12:08:33 | 显示全部楼层
谢谢楼上的回答,但是我不懂用we或ydwe,我只用jassCraft,不过是新手,下面是代码:
function Trig_NewTrigger_Conditions takes nothing returns boolean
    return IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)
endfunction

function Trig_NewTrigger_Actions takes nothing returns nothing
    set    udg_i_HeroAttack_Count=udg_i_HeroAttack_Count+1
    if(udg_i_HeroAttack_Count>7)then   
        call AdjustPlayerStateBJ( 58,GetTriggerPlayer(), PLAYER_STATE_RESOURCE_GOLD)
        set udg_i_HeroAttack_Count=0
    endif
endfunction

//==== Init Trigger NewTrigger ====
function InitTrig_Attack_Get_money takes player witchPlayer returns nothing
    set gg_trg_attack_get_money = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_attack_get_money,witchPlayer,EVENT_PLAYER_UNIT_ATTACKED,null)
    call TriggerAddCondition(gg_trg_attack_get_money, Condition(function Trig_NewTrigger_Conditions))
    call TriggerAddAction(gg_trg_attack_get_money, function Trig_NewTrigger_Actions)
endfunction

我的本意是注册一个英雄攻击触发的事件,判断条件是英雄攻击任意敌人7次就加一次金钱,但是我实在是不懂怎么写,所心来求助,谢谢!
回复

使用道具 举报

 楼主| 发表于 2011-10-15 12:09:57 | 显示全部楼层
我是这两天为了改某个图来研究jass的,原来想用we或ydwe,但是就是用不下去,所以就只能直接jass了。
回复

使用道具 举报

 楼主| 发表于 2011-10-15 12:10:43 | 显示全部楼层
以前没接触过,绝对新新手,所以问题肯定是很菜鸟的,请理解一下
回复

使用道具 举报

 楼主| 发表于 2011-10-15 12:37:21 | 显示全部楼层
我上面的代码只能实现指定英雄被攻击次数搜索8次就线玩家加58个金币——这和我想要的效果完全相反
回复

使用道具 举报

发表于 2011-10-15 22:40:27 | 显示全部楼层
首先。。。LZ不要多连。。。
这个在GA是有点“犯法”的。。当然没那么严重……
短时间内或LX没有人回复的话可以考虑合并楼层~

然后。。不是我吐槽。。。LZ这个J明显是T转的……

如果看着一整句代码换行很不爽的话请切换“宽版模式”,在页面的右上角那里~
[jass]
function Trig_NewTrigger_Conditions takes nothing returns boolean
    return GetIssuedOrderId() == UnitId("attack") and IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO)
endfunction

function Trig_NewTrigger_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer i = GetUnitUserData(u)
    local trigger trg = GetTriggeringTrigger()
    if i==7 then   
        call AdjustPlayerStateBJ( 58,GetTriggerPlayer(), PLAYER_STATE_RESOURCE_GOLD)
        call SetUnitUserData( u, 0 )
    else
        call SetUnitUserData( u, i+1 )
    endif
    call DestroyTrigger(trg)
endfunction

function TargetGetHurt takes nothing returns nothing
    local trigger trg = CreateTrigger()
    local unit u = GetOrderTargetUnit()
        call TriggerRegisterUnitEvent( trg, u, EVENT_UNIT_DAMAGED )
        call TriggerAddCondition( trg, Condtion(function Trig_NewTrigger_Actions) )
    set trg = null
    set u = null
endfunction

//==== Init Trigger NewTrigger ====
function InitTrig_Attack_Get_money takes player witchPlayer returns nothing
    local trigger array trg
    local integer n = 0
        loop
            exitwhen n = 13
            call TriggerRegisterPlayerUnitEvent(trg[n], Player(n), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null)
            call TriggerAddCondition(trg[n], Condition(function Trig_NewTrigger_Conditions))
            call TriggerAddAction(trg[n],  function TargetGetHurt)
            set trg[n] = null
            set n = n+1
       endloop
endfunction
[/jass]
额。。上面是赶急赶出来的。。仅仅提供一个思路。。

如果用玩家单位事件的话就要看有多少玩家了,每个玩家注册一遍,为了缩短代码果断使用循环;
事件的话不要选“攻击单位”,这样就得不到攻击目标了,而且这个事件的缺点就是老远距离就可以发布,并且如果有别的命令打断攻击的话还是会触发(典型的比如S),也就是只要不停地S就可以不停地攻击,相当于非常短的时间内就能得到N多钱。。。(莫非LZ就要这个效果……);
所以我用发布命令代替,这样可以得到目标单位,然后动态创建触发注册目标受伤事件;
这样就只有当目标受到伤害后才会增加攻击次数的累积;
然后为了要所有玩家英雄可以累积以及为了方便……我改成单位的自定义值了。。不过别的地方就不能再用这个了,每个单位只有一个自定义值;
以上代码绝对不完美,比如发布别的命令打断攻击命令我没写。。
打断这么处理吧,在动态创建目标受伤触发时将触发器与单位绑定,然后若命令被打断,可以获得发布命令的单位,也就是之前攻击的单位,然后读取触发器,最后直接删除该触发器即可~
回复

使用道具 举报

发表于 2011-10-15 23:38:32 | 显示全部楼层
PS:其实我觉得自己写个任意单位受伤事件然后用这个事件会比较好~
回复

使用道具 举报

 楼主| 发表于 2011-10-17 09:14:56 | 显示全部楼层
谢谢了,高手终于出现了,那段代码我是网上复制了改的,对jass是基本不了解的,谢谢6楼的高手!
回复

使用道具 举报

发表于 2011-10-20 01:23:53 | 显示全部楼层
   记得修改分类 你们这些懒得动分类的家伙。。
回复

使用道具 举报

发表于 2011-10-20 12:34:36 | 显示全部楼层
违反疑难区版规第IV条,处罚标准为3连以上,每帖处罚5GAB

鉴于GA的人口基数大,增长率高(主要是广告机导致的),法盲人数增加,为了方便广大群众,路人们放松了执法力度,扣分也一直是优惠处理,所以……没有所以了……

没有及时修改分类违反疑难区版规第I条,不过没有看到处罚标准……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 04:40 , Processed in 0.033746 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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