找回密码
 点一下
查看: 2107|回复: 9

巫妖连环霜冻问题

[复制链接]
发表于 2013-9-10 19:10:11 | 显示全部楼层 |阅读模式
从演示图上挖来一个巫妖的连环霜冻,但是移植到自己的地图不能保存,请各位帮我看一下是什么问题。
代码如下:
library SDXX

globals
    hashtable hx = InitHashtable()
endglobals

function Distance takes real  x1,real x2,real y1, real  y2 returns real
    local real s
    local real dx = x2 - x1
    local real dy = y2 - y1
    set s = SquareRoot(dx*dx+dy*dy)
    return s
endfunction

function fzq takes real y1,real y2,real x1,real x2 returns real
    local real s =(bj_RADTODEG* Atan2(y1-y2,x1-x2 ))
    return s
endfunction


function zbX takes real xx,real xxx,real xxxx returns real
    local real x
    set x = xx+xxx*Cos(xxxx*bj_DEGTORAD)
    return x
endfunction

function zbY takes real xx,real xxx,real xxxx returns real
    local real y
    set y = xx+xxx*Sin(xxxx*bj_DEGTORAD)
    return y
endfunction

function Hero_Bn_Skill_R2 takes nothing returns nothing
    local integer i = GetHandleId(GetExpiredTimer())
    local unit Hero = LoadUnitHandle(hx,i,1)
    local unit u =  LoadUnitHandle(hx,i,2)
    local unit majia = LoadUnitHandle(hx,i,3)
    local boolean Boo = LoadBoolean(hx,i,5)
    local boolean Booo = LoadBoolean(hx,i,6)
    local integer C = LoadInteger(hx,i,7)
    local unit beiyong = LoadUnitHandle(hx,i,8)
    local integer i2 = 0
    local real x
    local real y
    local real s
    local group g = CreateGroup()
    local group g2 = CreateGroup()
    local location d = GetUnitLoc(u)
    local unit xm
    local unit majia2

    if C == 7 /*这里的7为最大弹射次数*/ then
    call PauseTimer(GetExpiredTimer())
    call RemoveUnit(majia)
    call FlushChildHashtable(hx,i)
    call DestroyTimer(GetExpiredTimer())
    else
    if  Boo == false then
        if IsUnitAliveBJ(u) == true then
        set s = fzq(GetUnitY(u),GetUnitY(majia),GetUnitX(u),GetUnitX(majia))
        set x = zbX(GetUnitX(majia),13,s)//这里的13为冰霜球一开始飞行的移动速度
        set y = zbY(GetUnitY(majia),13,s)//如上
        call SetUnitX(majia,x)
        call SetUnitY(majia,y)
        if Distance(GetUnitX(majia),GetUnitX(u),GetUnitY(majia),GetUnitY(u))<=10   then
            set Boo = true
            call SaveBoolean(hx,i,5,Boo)
        endif
        else
        set C = 7
        endif
    else
        if Booo == false then
            set C = C +1
            call SaveInteger(hx,i,7,C)
            set majia2 = CreateUnit(GetOwningPlayer(Hero),/*这里的e000改为释放技能马甲ID*/'e005',GetUnitX(u),GetUnitY(u),0)
             call UnitApplyTimedLife( majia2, 'BHwe', 2.00 )
             call IssueTargetOrder( majia2, "frostnova", u )
            set g =  GetUnitsInRangeOfLocAll(600,d)//这里的600为弹射选取单位的范围
            call GroupRemoveUnit(g,u)
            loop
                set xm = FirstOfGroup(g)
                exitwhen xm == null
                if IsUnitType(xm, UNIT_TYPE_STRUCTURE) == false /*
            */and IsUnitEnemy(xm, GetOwningPlayer(Hero)) == true /*
            */ and IsUnitAliveBJ(xm) == true  then
                        call GroupAddUnit(g2,xm)
                endif
                call GroupRemoveUnit(g,xm)
            endloop


            if CountUnitsInGroup(g2) == 0  then
                set C = 7
            else
                set u = GroupPickRandomUnit(g2)
                call SaveUnitHandle(hx,i,2,u)
                call GroupRemoveUnit(g2,u)
                set beiyong = GroupPickRandomUnit(g2)
                call SaveUnitHandle(hx,i,8,beiyong)
                set Booo = true
                call SaveBoolean(hx,i,6,Booo)
            endif

        else
            if IsUnitAliveBJ(u) == true then
                set s = fzq(GetUnitY(u),GetUnitY(majia),GetUnitX(u),GetUnitX(majia))
                set x = zbX(GetUnitX(majia),13,s) //这里的13为冰霜球弹射的时候的移动速度
                set y = zbY(GetUnitY(majia),13,s)//如上
                call SetUnitX(majia,x)
                call SetUnitY(majia,y)
                if Distance(GetUnitX(majia),GetUnitX(u),GetUnitY(majia),GetUnitY(u))<=10 then
                    set Booo = false
                endif
            else
                if IsUnitAliveBJ(beiyong) == true then
                    set u = beiyong
                    call SaveUnitHandle(hx,i,2,u)
                else
                    set C = 7
                endif
            endif
            call SaveBoolean(hx,i,6,Booo)
        endif
    endif
    endif
    call SaveInteger(hx,i,7,C)
    call DestroyGroup(g2)
    call DestroyGroup(g)
     call RemoveLocation(d)
    set Hero = null
    set majia = null
    set u = null
    set majia2 = null
    set g = null
    set g2 = null
    set d = null
    set xm = null
    set beiyong = null

endfunction

function Hero_Bv_Skill_R takes unit Hero  returns nothing
    local unit u = GetSpellTargetUnit()
    local unit majia = CreateUnit(GetOwningPlayer(Hero),/*这里的e001改为冰霜球马甲ID*/'e006',GetUnitX(Hero),GetUnitY(Hero),0)
    local timer t  = CreateTimer()
    local integer i = GetHandleId(t)

    call SaveUnitHandle(hx,i,1,Hero)
    call SaveUnitHandle(hx,i,2,u)
    call SaveUnitHandle(hx,i,3,majia)
    call TimerStart(t,0.03,true,function Hero_Bn_Skill_R2)

    set u = null
    set majia = null
    set Hero = null

endfunction


endlibrary


发表于 2013-9-10 21:34:39 来自手机 | 显示全部楼层
首先.LZ懂JASS吗?
这些代码不是说复制一下再粘贴到自己的图上就能够用的...里面还涉及到技能的代码.还有变量的代码..技能代码不对就会导致地图保存不了..我对JASS比较反感的:....汗:...技能区有T版连环霜冻的:LZ可以搜一下..:
回复

使用道具 举报

 楼主| 发表于 2013-9-10 22:17:37 | 显示全部楼层
原来是这样,感谢楼上的解说,实话说,对于jass我一点都不懂,那副演示图说可以直接一移植的。。。。希望楼上可以把T版发一下,或网址也行

点评

其实我也想给LZ发附件的....很无奈暂时身边没有电脑.现在用的是手机...手机发不了附件和网址(非智能手机)...郁闷呀...... 不过LZ可以在技能区搜索一下(巫妖大招完美版)或者是(连环霜冻完美版)..一定会有的....  详情 回复 发表于 2013-9-11 06:13
回复

使用道具 举报

发表于 2013-9-11 06:13:18 来自手机 | 显示全部楼层
本帖最后由 星际迷 于 2013-9-11 06:22 编辑


其实我也想给LZ发附件的....很无奈暂时身边没有电脑.现在用的是手机...手机发不了附件和网址(非智能手机)...郁闷呀......
不过LZ可以在技能区搜索一下(巫妖大招完美版)就可以了.我刚才在技能区搜了一下..能找到那个帖子....
回复

使用道具 举报

 楼主| 发表于 2013-9-11 18:19:19 | 显示全部楼层
说实话,我现在也是手机,虽然是智能的,但不能开编辑器啊有木

点评

哇! LZ你太可爱了...有点喜欢你了..哈哈..没有电脑真是干着急呀..我也有很多的图需要用到电脑来研究...郁闷呀...暂时电脑没在身边....  详情 回复 发表于 2013-9-11 19:01
回复

使用道具 举报

发表于 2013-9-11 19:01:12 来自手机 | 显示全部楼层
kirito 发表于 2013-9-11 18:19
说实话,我现在也是手机,虽然是智能的,但不能开编辑器啊有木有

哇! LZ你太可爱了...有点喜欢你了..哈哈..没有电脑真是干着急呀..我也有很多的图需要用到电脑来研究...郁闷呀...暂时电脑没在身边....
回复

使用道具 举报

 楼主| 发表于 2013-9-11 19:49:36 | 显示全部楼层
我电脑现在就在旁边,但现在是初三了有木有啊,不到周末不能用。。。楼上什么时候能玩呢。
回复

使用道具 举报

发表于 2013-9-11 21:03:36 | 显示全部楼层
LZ那淡淡的憂傷阿www
回复

使用道具 举报

 楼主| 发表于 2013-9-11 21:09:45 | 显示全部楼层
不是蛋蛋的,是深深的,初三的痛苦不解释。。。我一定要学好化学,然后做个液体炸弹炸死老师。。
回复

使用道具 举报

发表于 2015-5-7 02:36:25 | 显示全部楼层
真的很不错
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:48 , Processed in 0.177093 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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