LiveSsenkrad
Member
- Reaction score
- 3
I know there is a GUi jump ability, (like Mirana's) using the Crow ability, I have searched the forusm but can't find it =/. Any links/help would be appreciated.
?? I made it in Jass. GUI is bad.
I have no programming experience (too young ) And I like doing things myself, adding experience, so I try doing everything possible in GUI.
No offence, but that is bull****, if you are working in GUI you do have programming experience. Beacuse GUI is just an easier way of using JASS
I suggest you actually look into JASS for these kind of things, beacuse they are not that hard to make and they are also much better made in JASS, since the GUI in wc3 really is a load of crap
?? I made it in Jass. GUI is bad.
Jass isn't that confusing, once you get the hang of it... Did you read any of the tutorials posted here?
[sarcasm]I'm ten years old. Can you believe it?[/sarcasm]
Really.
// Objects used:
// 'A0LN' = Leap (Priestess of the Moon : Mirana Nightshade)
// 'e01R' = Buff Placer
// 'A0LO' = Leap (effect)
// 'Amrf' = Crow Form (Medivh)
// DEBUG Trigger Number : 56
function Leap_Spell takes nothing returns boolean
return GetSpellAbilityId()=='A0LN'
endfunction
function Leap_ReturnOrder takes unit pfU returns nothing
local string lf5=H2Tx(pfU)
local string lpG=GetString(lf5,"OrderType")
local string lph=OrderId2String(GetInteger(lf5,"OrderId"))
local real lEv
local real lEV
local unit lFB
local trigger ltt=GetTrigger(lf5,"Trigger_TrackOrder")
local boolean lpH=not GetBoolean(lf5,"Idle")
local boolean lpi=GetBoolean(lf5,"SuperOrder")
call DisableTrigger(ltt)
call IssueImmediateOrderById(pfU,OrderId("stop"))
if lpG=="Target"and(lpH or lpi)then
set lFB=GetUnit(lf5,"OrderTarget")
call IssueTargetOrder(pfU,lph,lFB)
elseif lpG=="Point"and(lpH or lpi)then
set lEv=GetReal(lf5,"OrderPointX")
set lEV=GetReal(lf5,"OrderPointY")
call IssuePointOrder(pfU,lph,lEv,lEV)
elseif(lpH or lpi)then
call IssueImmediateOrder(pfU,"OrderString")
endif
call SetBoolean(lf5,"SuperOrder",false)
call EnableTrigger(ltt)
endfunction
function Leap_SpeedBonusCheck takes nothing returns boolean
return IsUnitType(GetFilterUnit(),UNIT_TYPE_HERO) and IsUnitAlly(GetFilterUnit(),GetOwningPlayer(udg_u_DTAX_temp))
endfunction
function Leap_DoSpeedBonus takes nothing returns nothing
local unit lfU=GetEnumUnit()
local unit lJV=CreateUnit(GetOwningPlayer(lfU),'e01R',0,0,0)
call UnitAddAbility(lJV,'A0LO')
call SetUnitAbilityLevel(lJV,'A0LO',GetUnitAbilityLevel(udg_u_DTAX_temp,'A0LN'))
call UnitApplyTimedLife(lJV,'BTLF',10)
endfunction
function Leap_EndRoar takes unit pfU returns nothing
local group lEw=CreateGroup()
local boolexpr lEW=Condition(function Leap_SpeedBonusCheck)
set udg_u_DTAX_temp=pfU
call GroupEnumUnitsInRange(lEw,GetUnitX(pfU),GetUnitY(pfU),800,lEW)
call ForGroup(lEw,function Leap_DoSpeedBonus)
call DestroyBoolExpr(lEW)
call DestroyGroup(lEw)
endfunction
function Leap_JumpMoving takes nothing returns nothing
local timer ltt=GetExpiredTimer()
local string lf5=H2Tx(ltt)
local unit lfU=GetUnit(lf5,"Hero")
local real lpj=GetReal(lf5,"DistanceRemaining")
local real lpJ=GetReal(lf5,"OriginalDistance")
local real lnM=GetReal(lf5,"Angle")
local real lpC=GetUnitX(lfU)+30*Cos(lnM*bj_DEGTORAD)
local real lpd=GetUnitY(lfU)+30*Sin(lnM*bj_DEGTORAD)
local real lpk=200
local real lpK=(1-lpj/lpJ)*lpk*2
if lpK>lpk then
set lpK=lpk*2-lpK
endif
call SetUnitFlyHeight(lfU,ReturnMaxReal(lpK,0),0)
call SetUnitX(lfU,SafeX(lpC))
call SetUnitY(lfU,SafeY(lpd))
call SetUnitFacing(lfU,lnM)
call SetReal(lf5,"DistanceRemaining",lpj-20)
if lpK<1 and lpj-lpJ!=0 then
call SetBoolean(H2Tx(lfU),"InAir",false)
call SetUnitFacing(lfU,lnM)
call SetUnitAnimation(lfU,"stand")
call SetUnitPathing(lfU,true)
call SetUnitInvulnerable(lfU,false)
call Leap_ReturnOrder(lfU)
call Leap_EndRoar(lfU)
call PauseTimer(ltt)
call FastFlush(lf5)
call DestroyTimer(ltt)
endif
endfunction
function Leap_JumpSetting takes nothing returns nothing
local unit lfU=GetTriggerUnit()
local integer lmZ=GetUnitAbilityLevel(lfU,'A0LN')
local real lFc=350+50*lmZ
local real lnM=GetUnitFacing(lfU)
local real lFC=GetUnitX(lfU)
local real lFd=GetUnitY(lfU)
local real lEv=SafeX(lFC+lFc*Cos(lnM*bj_DEGTORAD))
local real lEV=SafeY(lFd+lFc*Sin(lnM*bj_DEGTORAD))
local timer ltt=CreateTimer()
local string lf5=H2Tx(ltt)
local trigger lpL=GetTrigger(H2Tx(lfU),"Trigger_TrackOrder")
set lFc=SquareRoot((lFC-lEv)*(lFC-lEv)+(lFd-lEV)*(lFd-lEV))
if lFc>100 then
call UnitAddAbility(lfU,'Amrf')
call UnitRemoveAbility(lfU,'Amrf')
call SetUnitPathing(lfU,false)
call SetUnitInvulnerable(lfU,true)
call SetUnitAnimationByIndex(lfU,6)
call DisableTrigger(lpL)
call IssueImmediateOrderById(lfU,OrderId("stop"))
call EnableTrigger(lpL)
call SetReal(lf5,"DistanceRemaining",lFc)
call SetReal(lf5,"OriginalDistance",lFc)
call SetReal(lf5,"Angle",lnM)
call SetHandle(lf5,"Hero",lfU)
call TimerStart(ltt,.025,true,function Leap_JumpMoving)
call SetBoolean(H2Tx(lfU),"Leap_InAir",true)
call SetBoolean(H2Tx(lfU),"SuperOrder",false)
endif
call PolledWait(5)
call SetUnitPathing(lfU,true)
call SetUnitInvulnerable(lfU,false)
endfunction
function Leap_DoNothing takes nothing returns nothing
endfunction
function Leap_SaveOrders takes nothing returns nothing
local unit lfU=GetTriggerUnit()
local string lf5=H2Tx(lfU)
local boolean lpN=GetBoolean(lf5,"Leap_InAir")
call SetInteger(lf5,"OrderId",GetIssuedOrderId())
call SetBoolean(lf5,"Idle",false)
if GetTriggerEventId()==EVENT_UNIT_ISSUED_TARGET_ORDER then
call SetString(lf5,"OrderType","Target")
call SetHandle(lf5,"OrderTarget",GetOrderTarget())
elseif GetTriggerEventId()==EVENT_UNIT_ISSUED_POINT_ORDER then
if lpN or GetRange(GetUnitX(lfU),GetUnitY(lfU),GetOrderPointX(),GetOrderPointY())>800 then
call SetString(lf5,"OrderType","Point")
call SetReal(lf5,"OrderPointX",GetOrderPointX())
call SetReal(lf5,"OrderPointY",GetOrderPointY())
else
call SetBoolean(lf5,"Idle",true)
endif
else
call SetString(lf5,"OrderType","Instant")
endif
if lpN then
call SetBoolean(lf5,"SuperOrder",true)
endif
endfunction
function Leap_SpellOrder takes nothing returns boolean
return OrderId2String(GetIssuedOrderId())!="windwalk"
endfunction
function Leap_IsHeroMoves takes nothing returns nothing
local unit lfU=GetUnit(H2Tx(GetExpiredTimer()),"Hero")
local string lf5=H2Tx(lfU)
local real lxx=GetUnitX(lfU)
local real lyy=GetUnitY(lfU)
local string lpG=GetString(lf5,"OrderType")
if lpG=="Point"and GetRange(GetUnitX(lfU),GetUnitY(lfU),GetReal(lf5,"OrderPointX"),GetReal(lf5,"OrderPointY"))<100 then
call SetBoolean(lf5,"Idle",true)
endif
endfunction
function Leap_TrackOrdersStart takes nothing returns nothing
local unit lfU=GetTriggerUnit()
local trigger ltt=CreateTrigger()
local timer lt2
call TriggerRegisterUnitEvent(ltt,lfU,EVENT_UNIT_ISSUED_TARGET_ORDER)
call TriggerRegisterUnitEvent(ltt,lfU,EVENT_UNIT_ISSUED_POINT_ORDER)
call TriggerRegisterUnitEvent(ltt,lfU,EVENT_UNIT_ISSUED_ORDER)
call TriggerAddAction(ltt,function Leap_SaveOrders)
call TriggerAddCondition(ltt,Condition(function Leap_SpellOrder))
call SetHandle(H2Tx(lfU),"Trigger_TrackOrder",ltt)
set lt2=CreateTimer()
call SetHandle(H2Tx(lt2),"Hero",lfU)
call TimerStart(lt2,.3,true,function Leap_IsHeroMoves)
call SetHandle(H2Tx(lfU),"Timer_CheckIdle",lt2)
endfunction
function Leap_LearnFirst takes nothing returns nothing
if GetUnitAbilityLevel(GetTriggerUnit(),'A0LN')==1 then
call Leap_TrackOrdersStart()
endif
endfunction
function Leap_Init takes nothing returns nothing
local trigger ltt=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(ltt,Condition(function Leap_Spell))
call TriggerAddAction(ltt,function Leap_JumpSetting)
set ltt=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(ltt,Condition(function Leap_Spell))
call TriggerAddAction(ltt,function Leap_DoNothing)
set ltt=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_HERO_SKILL)
call TriggerAddAction(ltt,function Leap_LearnFirst)
endfunction
function InitTrig_Leap takes nothing returns nothing
endfunction