请选择 进入手机版 | 继续访问电脑版

 找回密码
 点一下
查看: 2045|回复: 12

局部变量这么牛X,为什么还要RBUG和TIMER?

[复制链接]
发表于 2010-4-14 15:58:14 | 显示全部楼层 |阅读模式
  1. function Trig_unitdeath_Actions takes nothing returns nothing
  2.     local unit a = GetTriggerUnit()
  3.     local location b = GetUnitLoc(a)
  4.     local real c = GetUnitFacing(a)
  5.     local player aa = GetOwningPlayer(a)
  6.     local integer ty = GetUnitTypeId(a)
  7.     call RemoveUnit (a)
  8.     call PolledWait(2)
  9.     call CreateUnit(aa,ty,GetLocationX(b),GetLocationY(b),c)
  10.     call RemoveLocation(b)
  11.     set a =null
  12.     set b =null
  13.     set c = 0
  14.     set aa =null
  15.     set ty =0
  16. endfunction
  17. //===========================================================================
  18. function InitTrig_unitdeath takes nothing returns nothing
  19.     set gg_trg_unitdeath = CreateTrigger(  )
  20.     call TriggerRegisterAnyUnitEventBJ( gg_trg_unitdeath, EVENT_PLAYER_UNIT_DEATH )
  21.     call TriggerAddAction( gg_trg_unitdeath, function Trig_unitdeath_Actions )
  22. endfunction
复制代码
发表于 2010-4-14 16:52:52 | 显示全部楼层
局部变量和timer有什么关系?
RBUG是存储,和局部变量也没多大关系
回复

使用道具 举报

发表于 2010-4-14 17:09:58 | 显示全部楼层
我不会J 但是感觉自己用T用得挺融汇贯通的了.
能不能给我说下你们常说的Timer 和ReturnBug具体是干什么的?
回复

使用道具 举报

发表于 2010-4-14 20:26:51 | 显示全部楼层
触发动作所用到的函数都要求无参,你无法把一个局部变量从一个函数中传递到另一个,而全局变量的冲突太严重,所以需要用到其他的手段,1.24之前用的比较多的是return bug+gamecache,而现在return bug无法再被语法检测通过的情况下,可以使用hashtable
回复 1 0

使用道具 举报

发表于 2010-4-14 21:07:02 | 显示全部楼层
缓存只能存整数,

存不了单位之类的,

局部变量又无法在2个函数使用

RBUG就是强制把单位之类的转化成整数,使其可存进缓存.
回复

使用道具 举报

发表于 2010-4-14 21:40:42 | 显示全部楼层
现在已经不需要也不能这么用了,因为有了hashtable,而GetHandleId也成为了native函数
回复

使用道具 举报

 楼主| 发表于 2010-4-14 22:33:32 | 显示全部楼层
那个jass代码有泄露不?
call PolledWait(2)之后TriggerUnit被覆盖了吗?
我稍微试了试好像没有泄露,
20个单位互相杀最后每个玩家的单位还是没变,总数还是20个。
如果要传递参数的话,
用call function(integer,real,unit)这样不就好了吗?
难道我理解错了?
不好意思有人可以告诉我吗?我的意思是很多时候我们可以用局部变量,
因为局部变量比较方便,
局部变量已经可以解决大部分的问题。
而RBUGTIMER则是在局部变量无法满足的时候才需要使用,
(比如持续伤害持续移动这类。)
不知道我说的对不对。
回复

使用道具 举报

发表于 2010-4-14 23:52:48 | 显示全部楼层
像触发条件、动作、计时器调用函数这些都只能调用无参函数,所以必须想其他办法传递而不能简单的用传参的方法
回复

使用道具 举报

发表于 2010-4-15 00:44:10 | 显示全部楼层
猪头好厉害啊~
回复

使用道具 举报

发表于 2010-4-15 01:01:13 | 显示全部楼层
惊现兔特勒!
回复

使用道具 举报

 楼主| 发表于 2010-4-15 12:01:21 | 显示全部楼层
懂了,谢谢!!
回复

使用道具 举报

发表于 2010-4-15 16:36:26 | 显示全部楼层
引用第6楼zhuzeitou于2010-04-14 21:40发表的  :
现在已经不需要也不能这么用了,因为有了hashtable,而GetHandleId也成为了native函数
这个hashtable就是用一个索引给其绑定数据用么?
我一直都是用单位自定义值作为索引 组数存储数据
这个是一直都可以用的吧?
回复

使用道具 举报

发表于 2010-4-15 16:46:15 | 显示全部楼层
..更多时候是用来存计时器的整数地址的..
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 08:49 , Processed in 0.093223 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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