找回密码
 点一下
查看: 1057|回复: 5

技能出错.J盲请求告诉哪里错了.如何解决.

[复制链接]
发表于 2009-1-24 06:34:36 | 显示全部楼层 |阅读模式
我想做个升起来然后降下去的技能.
我用别人的JASS修改了下....   

技能能使人升起来.   但落不下去.   请问哪里需要修改.   帮忙指点下

我想要到一定时间后落下来.   我只能想到通过整数的变化来弄.   但是不会搞.  请帮下忙.

//======================================================

function chongzhuang takes nothing returns nothing//西门吹雪-跳跃
   local timer localtimer = GetExpiredTimer()
    local string str = I2S(H2I(localtimer))
    local unit localunit = GetStoredUnit(str,"unit")
    local player playerid
    local group localgroup
    local unit aim
    local real x
    local real y
    local integer i
    if(localunit == null)then//没有触发单位,则是周期事件
     loop
        set i = i+1
        exitwhen i > 50
     endloop
    call SetUnitFlyHeight(localunit,0,400)
    call DestroyTimer(localtimer)
    endif
    call SetUnitFlyHeight(localunit,0,400)
    set localunit = null
    set localtimer = null
endfunction

function Trig_Begin_Actions takes nothing returns nothing//主函数
    local unit caster = GetTriggerUnit()
    local unit aim
    local unit localunit
    local integer spellid
    local item indexitem
    local player playerid
    local real x
    local real y
    local real angle
    local real r
    local real s
    local integer index
    local integer level
    local timer localtimer
    local location pos
    local trigger localtrigger
    local group localgroup
    local group sumgroup
    local rect localrect
    local string str
    if(GetUnitTypeId(caster) != 'z000')then
        set spellid = GetSpellAbilityId()
        if(spellid == 'A000')then//西门吹雪-跳跃
          call UnitAddAbility(caster,'Amrf')
          call SetUnitFlyHeight(caster,200,400)
          set localtrigger = CreateTrigger()
          call SetUnitUserData(caster,H2I(localtrigger))//把动态注册的触发绑定到单位的自定义值上
          set str = I2S(H2I(localtrigger))//因为单位同一时间只可能放一个技能,所以在持续技能里面使用是不会冲突的
          call StoreInteger(udg_GameCache,str,"unit",H2I(caster))//计时器绑定单位
          call StoreInteger(udg_GameCache,str,"level",GetUnitAbilityLevel(caster,'A000'))//绑定技能等级
          call TimerStart(localtimer,0.2,false,function chongzhuang)
        endif
    endif
    set caster = null
endfunction

//===========================================================================
function InitTrig_Begin takes nothing returns nothing
    set gg_trg_Begin = CreateTrigger()
    set udg_indexA = 0
    loop
        call TriggerRegisterPlayerUnitEvent(gg_trg_Begin,Player(udg_indexA),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
        set udg_indexA = udg_indexA + 1
        exitwhen udg_indexA > 11
    endloop
    call TriggerAddAction(gg_trg_Begin,function Trig_Begin_Actions)
endfunction
发表于 2009-1-24 09:45:26 | 显示全部楼层
不知道你定义这么多局部变量干什么,而且都没有排泄
chongzhuang这个函数来看,基本上不知道你要干什么,循环和飞行没有联系?
技能等级既然可以通过单位来获得,就相当于绑在单位上了,不需要传递进去,这样会浪费字符串的。
也没删缓存





不知道你是不是想做成开始触发的时候跳起来,过一会掉下来。
回复

使用道具 举报

发表于 2009-1-24 13:21:45 | 显示全部楼层
多区发帖,值得无视
回复

使用道具 举报

发表于 2009-1-24 13:40:46 | 显示全部楼层
而且定义trigger型局部变量来作什么~~
回复

使用道具 举报

 楼主| 发表于 2009-1-27 13:41:33 | 显示全部楼层
我要的效果是刚开始飞起来.  过些时间掉下来..

至于那些没有用到的变量可以无视..  我也是复制别人的东西 改一下而已.
回复

使用道具 举报

发表于 2009-1-27 17:51:33 | 显示全部楼层
那先把用不到的删掉吧,太多看不过来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 03:51 , Processed in 0.029790 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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