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

请问我这样写在语句上的错误

[复制链接]
发表于 2008-2-7 01:27:07 | 显示全部楼层 |阅读模式
  [codes=jass]function Trig_SW2_Actions takes nothing returns nothing
    local unit SWmb = GetDyingUnit()
    local integer SWsjs = GetRandomInt(1, 100)
    local Location SWmbd = GetUnitLoc(SWmb)
    local integer SWxhs = 0
    loop
        exitwhen SWxhs > 5
        if ( not ( GetUnitTypeId(SWmb) == udg_UT_Hero_Type[SWxhs] ) ) then
            if ( not ( UnitHasBuffBJ(SWmb, 'Bcri') == true ) ) then
                if ( not ( SWsjs <= 20 ) ) then
                    call ReviveHeroLoc( SWmb, SWmbd, true )
                else
                    call CreateNUnitsAtLoc( 1, 'e001', GetOwningPlayer(SWmb), SWmbd, bj_UNIT_FACING )
                endif
            else
                call CreateNUnitsAtLoc( 1, 'e001', GetOwningPlayer(SWmb), SWmbd, bj_UNIT_FACING )
            endif
        else
        endif
        set SWxhs = SWxhs + 1
    endloop
endfunction[/codes]

我知道语法上肯定有大错,但是是错在哪呢?菜鸟问题~
发表于 2008-2-7 01:28:14 | 显示全部楼层
local Location SWmbd = GetUnitLoc(SWmb)
点变量location是小写的
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:31:05 | 显示全部楼层
zhu大人这么晚还在呀~只有这一个错吗~WE提示我有好几个错~
回复

使用道具 举报

发表于 2008-2-7 01:32:19 | 显示全部楼层
引用第2楼卡巴死机于2008-02-07 01:31发表的  :
zhu大人这么晚还在呀~只有这一个错吗~WE提示我有好几个错~

额,快下了,我再看看………………
语法上貌似没什么问题,不过效果上可能会与lz想的不一样额………………
也许那些not应该去掉吧
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:33:46 | 显示全部楼层
引用第3楼zhuzeitou于2008-02-07 01:32发表的  :


额,快下了,我再看看………………
//占楼待编辑

不用看了~还真只有这一个问题~但提示了我一大片~
我还想问下~在
endif
            set SWxhs = SWxhs + 1

后面我加set XXX = null 会不会影响循环
另外
call RemoveLocation( XXX )

set XXX = null
两种清除是一样的效果吗
回复

使用道具 举报

发表于 2008-2-7 01:36:38 | 显示全部楼层
引用第4楼卡巴死机于2008-02-07 01:33发表的  :


不用看了~还真只有这一个问题~但提示了我一大片~
我还想问下~在
endif
.......

应该不会吧,除非这个变量当前值在循环中还要用到
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:38:56 | 显示全部楼层
另外还想问一下
call RemoveLocation( XXX )

set XXX = null
两种清除是一样的效果吗
回复

使用道具 举报

发表于 2008-2-7 01:39:57 | 显示全部楼层
引用第6楼卡巴死机于2008-02-07 01:38发表的  :
另外还想问一下
call RemoveLocation( XXX )

set XXX = null
两种清除是一样的效果吗

不一样的额,恩
RemoveLocation应该是清空handle内容
set null是将变量调用的内容设置为空
有可能解释的有问题额………………
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:41:03 | 显示全部楼层
那么哪种清除得更彻底点
就譬如我上面的死亡单位产生的点 用哪一种清除更好呢
回复

使用道具 举报

发表于 2008-2-7 01:43:38 | 显示全部楼层
引用第8楼卡巴死机于2008-02-07 01:41发表的  :
那么哪种清除得更彻底点
就譬如我上面的死亡单位产生的点 用哪一种清除更好呢

恩,点使用后,先Remove掉,此时变量可以再赋值
如果变量不会再有值赋入,那么就set null
一般是都要做的
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:46:20 | 显示全部楼层
引用第9楼zhuzeitou于2008-02-07 01:43发表的  :


恩,点使用后,先Remove掉,此时变量可以再赋值
如果变量不会再有值赋入,那么就set null
一般是都要做的

是一个单位死亡后做的动作,因为会有很多次像这种的单位死亡事件,也就是说我用Remove会好点了?还是说这个事件引发后就会重新local一个变量,那么我应该用set null
回复

使用道具 举报

发表于 2008-2-7 01:48:35 | 显示全部楼层
引用第10楼卡巴死机于2008-02-07 01:46发表的  :


是一个单位死亡后做的动作,因为会有很多次像这种的单位死亡事件,也就是说我用Remove会好点了?还是说这个事件引发后就会重新local一个变量,那么我应该用set null

如果是局部变量的话,是都要做的
全局的话,remove就好了
回复

使用道具 举报

 楼主| 发表于 2008-2-7 01:50:17 | 显示全部楼层
额~~完全懂了~~~麻烦了~~~
对了~~~新年快乐哈
回复

使用道具 举报

发表于 2008-2-7 01:52:01 | 显示全部楼层
引用第12楼卡巴死机于2008-02-07 01:50发表的  :
额~~完全懂了~~~麻烦了~~~
对了~~~新年快乐哈

恩,或许我说的有不完全对的地方,不过这样做应该是保险的
新年快乐~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:55 , Processed in 0.071540 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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