• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • 💡 We're thrilled to announce that our upcoming texturing contest is in the works, and we're eager to hear your suggestions! Please take this opportunity to share your ideas in this theme discussion thread for the Texturing Contest #34!
  • 🏆 Hive's 7th HD Modeling Contest: Icecrown Creature is now open! The frozen wastes of Icecrown are home to some of Azeroth’s most terrifying and resilient creatures. For this contest, your challenge is to design and model a HD 3D monster that embodies the cold, undead, and sinister essence of Icecrown! 📅 Submissions close on April 13, 2025. Don't miss this opportunity to let your creativity shine! Enter now and show us your frozen masterpiece! 🔗 Click here to enter!

[vJASS] CAn someoen help me here, jass/vjass indexing & code

Status
Not open for further replies.
Hi all I'm trying here to create a something with this spell, cause they told me Indexing would be easier, and for timers. I could do this in GUI, but i have to include indexed timer(Which i didn't yet), but can you check this code, I blowed my head to write some things, and tell me what do you think...(Almost)I have no idea what I'm doing. ...And the code is unfinished.
JASS:
//                           RECALL / CALLBACK v1.0.0
//                                   created by Stan0033 
//                              [url]http://www.hiveworkshop.com/users/stan0033[/url]

//  Remembers X heroes in X range around the caster with their exact positions.
//   On a second casting these units are teleported back to these positions, 
//                                              if in X range of the caster.
// ===================CONFIGURATION============================
function setvariables takes nothing returns nothing
set udg_RECALL_Integer = 4 //number of heroes stored in the spell
set udg_RECALL_Radius = 500 // The radius around the caster that is used to pick the heroes.
set udg_RECALL_RR = 2000 // The distance required for units in the spell in order to teleport them back.
set udg_RECALL_Indexer = udg_RECALL_Indexer
endfunction
// ===================CONFIGURATION END========================
function trig_RECALL_Event takes nothing returns nothing
call TriggerRegisterAnyUnitEventBJ( gg_trg_RECALL, EVENT_PLAYER_UNIT_SPELL_EFFECT )

endfunction
function Trig_RECALL_Func01 takes nothing returns boolean //First requirment for picking units, can be changed.
return ( GetOwningPlayer(GetEnumUnit()) == GetOwningPlayer(GetSpellAbilityUnit()) )
endfunction
function Trig_RECALL_Func02 takes nothing returns boolean //Second requirment for picking units, can be changed.
return ( IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true )
endfunction

function Pickup_Gr00 takes nothing returns boolean
    return GetBooleanAnd( Trig_RECALL_Func01(), Trig_RECALL_Func02() )
endfunction

function Trig_RECALL_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A0de' ) ) then
        return false
    endif
    return true
endfunction
function Trig_RECALL_GroupLoop takes nothing returns nothing
set bj_forLoopAIndex = udg_RECALL_Indexer
    set bj_forLoopAIndexEnd = udg_RECALL_Indexer + udg_RECALL_Integer
    loop
set RECALL_Locs[RECALL_Indexer] = GetUnitLoc(GetEnumUnit())
set RECALL_heroes[GetForLoopIndexA()] = GetEnumUnit()
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
endfunction
function Trig_RECALL_Actions takes nothing returns nothing
set udg_RECALL_Indexer = udg_RECALL_Indexer + udg_RECALL_Integer
set udg_RECALL_Caster[udg_RECALL_Indexer] = GetTriggerUnit()
set bj_forLoopAIndex = udg_RECALL_Indexer
    set bj_forLoopAIndexEnd = udg_RECALL_Integer
    loop
        
if udg_RECALL_SpellActive[GetForLoopIndexA()] == false then
set udg_RECALL_Indexer = udg_RECALL_Indexer + udg_RECALL_Integer
set udg_RECALL_Caster_Loc = GetUnitLoc(GetSpellAbilityUnit())
set udg_RECALL_RangeGr[GetForLoopIndexA()] = GetUnitsInRangeOfLocMatching(512, udg_RECALL_Caster_Loc, Condition(function Pickup_Gr00))
// the range of group can be changed. Or set to variable.
call GroupRemoveUnitSimple( GSpellAbilityUnit(), udg_RECALL_RangeGr[GetForLoopIndexA()] )
call ForGroupBJ( udg_RECALL_RangeGr[udg_RECALL_Indexer], function Trig_RECALL_GroupLoop)
set udg_RECALL_SpellActive[GetForLoopIndexA()] = true
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    endif
    return
    if udg_RECALL_SpellActive[GetForLoopIndexA()] == true then
    set bj_forLoopAIndex = udg_RECALL_Indexer
    set bj_forLoopAIndexEnd = udg_RECALL_Indexer + udg_RECALL_Integer
    loop
        exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
        call AddSpecialEffectTargetUnitBJ( "origin", udg_RECALL_heroes[GetForLoopIndexA()], "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTo.mdl" )
        set udg_RECALL_SFX_CurPos[GetForLoopIndexA()] = GetLastCreatedEffectBJ()
        call AddSpecialEffectLocBJ( udg_RECALL_Locs[GetForLoopIndexA()], "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTo.mdl" )
        set udg_RECALL_SFX_OldPos[GetForLoopIndexA()] = GetLastCreatedEffectBJ()
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    endif
endfunction
 
Status
Not open for further replies.
Top