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

[中级教程]动态注册事件详解

[复制链接]
发表于 2007-11-12 22:04:38 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007-11-12 22:07:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-12 22:25:24 | 显示全部楼层
写完了能把这些汇总成电子书么

PS,怎么用JASS高亮啊
回复

使用道具 举报

 楼主| 发表于 2007-11-12 22:36:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-13 11:04:07 | 显示全部楼层
动态注册只是比较方便。。。实际上效率可能比较低
回复

使用道具 举报

发表于 2007-11-13 21:25:37 | 显示全部楼层
教程上说事件注册越多加载越慢,那各种事件在注册的时候所占的时间大概是多少,或者所占内存多大呢?
是否每种事件在注册的时候所占的时间案都一样,还是各所不同?
回复

使用道具 举报

 楼主| 发表于 2007-11-13 21:53:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-15 10:34:56 | 显示全部楼层
//为创建的触发器注册事件:当单位witchUnit的生命值小于或等于50的时触发事件
      call TriggerRegisterUnitLifeEvent( rTrg , witchUnit, LESS_THAN_OR_EQUAL, 50 )

这个东西放进地图测试时候根本不能做事件
回复

使用道具 举报

发表于 2007-11-15 17:18:19 | 显示全部楼层
引用第3楼everguo于2007-11-12 22:36发表的  :
电子书要等所有教程都写完后再出  估计要明年去了  而且看电子书的学习效率也不如在论坛在线学效果好

设置JASS高量可参考图文教程
http://www.ourga.com/bbs/read.php?tid=7662

.......
等明年时,伟大的SC2该到来了..
回复

使用道具 举报

 楼主| 发表于 2007-11-15 17:24:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2007-11-16 19:53:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-17 00:55:30 | 显示全部楼层
a
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 1防御
    动作
        单位 - 添加 1幽灵 给 (触发单位)
        自定义代码: call InvisibleAll(GetTriggerUnit() )

上面的不行,没效果
好像只响应无目标指令
j
    事件
        单位 - 任意单位 发布无目标指令
    条件
    动作
        自定义代码: call InvisibleAll(GetTriggerUnit() )

改成这样才有用。。。
但还是没有体现出动态注册啊
回复

使用道具 举报

 楼主| 发表于 2007-11-17 10:18:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-17 10:54:40 | 显示全部楼层
哦,了解啦。
另,我把InvisibleAll改了下,与防御挂钩了的
现在正在琢磨怎么把他搞到缓存里面去
回复

使用道具 举报

 楼主| 发表于 2007-11-17 11:27:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-17 14:02:50 | 显示全部楼层
有个问题:如何将字符串转成技能呢?
AbilityId()好像不管用啊,试了半天都不成,郁闷啊
回复

使用道具 举报

 楼主| 发表于 2007-11-17 14:42:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2007-11-17 16:12:19 | 显示全部楼层
嘿嘿,Q版的很搞笑,所以拿来用作头像了:)
//**************************
我就是那样搞的啊
[codes=jass]
function AddInvisible takes nothing returns nothing
    local unit u =GetTriggerUnit()
    local integer skill=GetStoredInteger(udg_GC,I2S(H2I(u)),"AddAbility")
    call DisplayTextToPlayer( Player(0), 0, 0,"OK")
    call UnitAddAbility(GetTriggerUnit(),skill)

endfunction[/codes]
但是 OK 是显示了,就是没效果。。。。
AddAbility 里面存的 就是 Agho
回复

使用道具 举报

发表于 2007-11-17 17:07:28 | 显示全部楼层
吐血了,原来只要把"Agho"改成'Agho'
再改下function OrderSystem takes  unit u,string open,string close,integer skill returns nothing
就ok了,我居然舍本逐末,找AbilityId的麻烦。。。。。
齐活
[codes=jass]function H2I takes handle h returns integer
    return h
    return 0
endfunction
//************************************
function OrderOpen takes nothing returns boolean
    local unit u =GetTriggerUnit()
    local string ts=GetStoredString(udg_GC,I2S(H2I(u)),"orderopen")
    return   (GetIssuedOrderId() == String2OrderIdBJ(ts) )
endfunction

function OrderClose takes nothing returns boolean
    local unit u =GetTriggerUnit()
    local string ts=GetStoredString(udg_GC,I2S(H2I(u)),"orderclose")
    return   (GetIssuedOrderId() == String2OrderIdBJ(ts) )
endfunction

function AddInvisible takes nothing returns nothing
    local unit u =GetTriggerUnit()
    local integer skill=GetStoredInteger(udg_GC,I2S(H2I(u)),"AddAbility")
    call UnitAddAbility(GetTriggerUnit(),skill)
   
endfunction

function RemoveInvisible takes nothing returns nothing
    local unit u =GetTriggerUnit()
    local integer skill=GetStoredInteger(udg_GC,I2S(H2I(u)),"AddAbility")
    call UnitRemoveAbility(GetTriggerUnit(),skill)
endfunction

function InvisibleAll takes unit u returns nothing
    local trigger trg
    local trigger trg1
    local trigger trg2
    local trigger trg3
    //begin
    set trg=CreateTrigger()
    call TriggerRegisterUnitEvent( trg,u, EVENT_UNIT_ISSUED_ORDER )
    call TriggerAddCondition( trg, Condition( function OrderOpen ) )
    call TriggerAddAction( trg, function AddInvisible )
    //over1
    set trg1=CreateTrigger()
    call TriggerRegisterUnitEvent( trg1,u,EVENT_UNIT_ISSUED_ORDER )
    call TriggerAddCondition( trg1, Condition( function OrderClose ) )
    call TriggerAddAction( trg1, function RemoveInvisible )
    set trg2=CreateTrigger()
    call TriggerRegisterUnitManaEvent(trg2, u, LESS_THAN, 10.00 )
    call TriggerAddAction( trg2, function RemoveInvisible )
    //over3
    set trg3=CreateTrigger()
    call TriggerRegisterUnitEvent( trg3,u, EVENT_UNIT_DEATH )
    call TriggerAddAction( trg3, function RemoveInvisible )
    set trg=null
    set trg1=null
    set trg2=null
    set trg3=null
endfunction

//****************************************
function OrderSystem takes  unit u,string open,string close,integer skill returns nothing
    call StoreString(udg_GC, I2S(H2I(u)), "orderopen",open)
    call StoreString(udg_GC, I2S(H2I(u)), "orderclose",close)
    call StoreInteger(udg_GC, I2S(H2I(u)), "AddAbility",skill)
    call InvisibleAll(u)
endfunction[/codes]

[trigger]j
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: 开始设置…… ...
        设置 hero = 恶魔猎手 0000 <预设>
        自定义代码: call OrderSystem(udg_hero,"immolation","unimmolation",'Agho')
        自定义代码: call OrderSystem(udg_hero,"defend","undefend",'ACev')
        自定义代码: call OrderSystem(udg_hero,"bearform","unbearform ",'ANb2')
        自定义代码: call OrderSystem(udg_hero,"robogoblin","unrobogoblin ",'ACct')
[/trigger]

不过四个代码只能设置一个有效。。。还待改进啊
回复

使用道具 举报

发表于 2007-11-17 17:34:53 | 显示全部楼层
GOD~~~MY GOD~~

  真悔恨当初怎么就没好好学学英语呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:04 , Processed in 0.537576 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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