Help Siphon Gold Ability doesn't work anymore

masta_orc

Cool Member
Reaction score
0
Hello,

since reforged my Siphon Gold ability doesnt work anymore.. world editor always show me 2 errors after saving map..

Need help to fix that issue :(
:(


World Editor Errors:

Line 2487: Identifier redecleared : "SiphonGoldAbility"
Code:
local integer SiphonGoldAbility = 'A00X'

Line 2498: ---- (previously decleared here)
Code:
function SiphonGoldAbility takes nothing returns integer

Siphon Gold Ability:

Code:
function GetSiphonGoldCache takes nothing returns gamecache
    return gg_trg_Siphon_Gold
    return null
endfunction

function Initialize_SiphonGold_Variables takes nothing returns nothing
    local gamecache  g = GetSiphonGoldCache()
    local integer array gold

    local integer SiphonGoldAbility = 'A00X'
    set gold[1] = 100    // Level 1 this value is per second
    set gold[2] = 200    // Level 2 this value is per second
    set gold[3] = 300    // Level 3 this value is per second

    call StoreIntegerBJ( SiphonGoldAbility, "Ability", "Ability", g )
    call StoreIntegerBJ( gold[1], "Level1", "Gold", g )
    call StoreIntegerBJ( gold[2], "Level2", "Gold", g )
    call StoreIntegerBJ( gold[3], "Level3", "Gold", g )
endfunction

function SiphonGoldAbility takes nothing returns integer
    return GetStoredInteger(GetSiphonGoldCache(), "Ability", "Ability")
endfunction

function SiphonGoldGameCache2Trigger takes gamecache g returns trigger
    return g
    return null
endfunction

function SiphonGoldHandle2Integer takes handle h returns integer
    return h
    return 0
endfunction

function SiphonGoldInteger2Effect takes integer i returns effect
    return i
    return null
endfunction

function SiphonGoldInteger2Unit takes integer i returns unit
    return i
    return null
endfunction

function SiphonGoldInteger2Timer takes integer i returns timer
    return i
    return null
endfunction

function SiphonGoldInteger2Trigger takes integer i returns trigger
    return i
    return null
endfunction

function SiphonGoldInteger2TextTag takes integer i returns texttag
    return i
    return null
endfunction

function Trig_Siphon_Gold_Floating takes nothing returns nothing
    local gamecache g = GetSiphonGoldCache()
    local texttag text1 = SiphonGoldInteger2TextTag( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "text1") )
    local texttag text2 = SiphonGoldInteger2TextTag( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "text2") )
    local integer transp = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "transp")
    if (transp < 100) then
        set transp = transp + 5
        call SetTextTagColorBJ( text1, 100, 100, 0.00, transp )
        call SetTextTagColorBJ( text2, 100, 100, 0.00, transp )
        call StoreIntegerBJ( transp, "transp", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
    else
        call DestroyTextTag(text1)
        call DestroyTextTag(text2)
        call DestroyTimer(GetExpiredTimer())
        call DestroyTrigger(GetTriggeringTrigger())
    endif
endfunction

function Trig_Siphon_Gold_Timer takes nothing returns nothing
    local gamecache g = GetSiphonGoldCache()
    local unit caster = SiphonGoldInteger2Unit( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "caster") )
    local unit target = SiphonGoldInteger2Unit( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "target") )
    local integer max = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "max")
    local integer floating = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), "counter")
    local integer on = GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "on")
    local integer floatgold = 0

    local trigger   t
    local timer     c

    if (on == 0) then
        if (floating > 1) then
            set floatgold = floating*2
            call StoreIntegerBJ( 0, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
        endif
        call DestroyEffect( SiphonGoldInteger2Effect( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "Effect1") ) )
        call DestroyEffect( SiphonGoldInteger2Effect( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "Effect2") ) )
        call DestroyTimer( SiphonGoldInteger2Timer( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "timer") ) )
        call DestroyTrigger( SiphonGoldInteger2Trigger( GetStoredInteger(g, I2S(SiphonGoldHandle2Integer(caster)), "trigger") ) )
    else
        if ( GetPlayerState(GetOwningPlayer(target), PLAYER_STATE_RESOURCE_GOLD) > 1 ) then
            call AdjustPlayerStateBJ( 2, GetOwningPlayer(caster), PLAYER_STATE_RESOURCE_GOLD )
            call AdjustPlayerStateBJ( -2, GetOwningPlayer(target), PLAYER_STATE_RESOURCE_GOLD )
            if (floating == (max/4)) then
                set floatgold = max*2/4
                set floating = 0
            endif
            call StoreIntegerBJ( floating + 1, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
        elseif (floating > 1) then
            set floatgold = (floating-1)*2
            call StoreIntegerBJ( 0, "counter", I2S(SiphonGoldHandle2Integer(GetExpiredTimer())), g )
        endif
    endif
    if (floatgold > 0) then
        set t = CreateTrigger(  )
        set c = CreateTimer()
        call TriggerRegisterTimerExpireEventBJ( t, c )
        call TriggerAddAction( t, function Trig_Siphon_Gold_Floating )
        call StartTimerBJ( c, true, 0.07  )
        call CreateTextTagUnitBJ( "+" + I2S(floatgold), caster, 0, 10, 100, 100, 100, 0 )
        call SetTextTagColorBJ( GetLastCreatedTextTag(), 100, 100, 0.00, 0 )
        call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 100, 90 )
        call StoreIntegerBJ( SiphonGoldHandle2Integer(GetLastCreatedTextTag()), "text1", I2S(SiphonGoldHandle2Integer(c)), g )
        call CreateTextTagUnitBJ( "-" + I2S(floatgold), target, 0, 10, 100, 100, 100, 0 )
        call SetTextTagColorBJ( GetLastCreatedTextTag(), 100, 100, 0.00, 0 )
        call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 100, 90 )
        call StoreIntegerBJ( SiphonGoldHandle2Integer(GetLastCreatedTextTag()), "text2", I2S(SiphonGoldHandle2Integer(c)), g )
        call StoreIntegerBJ( 0, "transp", I2S(SiphonGoldHandle2Integer(c)), g )
    endif
endfunction

function Trig_Siphon_Gold_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == SiphonGoldAbility() )
endfunction

function Trig_Siphon_Gold_Actions takes nothing returns nothing
    local unit      caster = GetSpellAbilityUnit()
    local effect    e
    local gamecache g = GetSiphonGoldCache()
    local trigger   t = CreateTrigger(  )
    local timer     c = CreateTimer()
    local integer   level = GetUnitAbilityLevelSwapped(SiphonGoldAbility(), caster)
    set e = AddSpecialEffectTarget("war3mapImported\\goldout.mdx",GetSpellTargetUnit(),"origin")
    call StoreIntegerBJ( SiphonGoldHandle2Integer(e), "Effect1", I2S(SiphonGoldHandle2Integer(caster)), g )
    set e = AddSpecialEffectTarget("war3mapImported\\goldin.mdx",caster,"origin")
    call StoreIntegerBJ( SiphonGoldHandle2Integer(e), "Effect2", I2S(SiphonGoldHandle2Integer(caster)), g )
    call TriggerRegisterTimerExpireEventBJ( t, c )
    call TriggerAddAction( t, function Trig_Siphon_Gold_Timer )
    call StoreIntegerBJ( 1, "on", I2S(SiphonGoldHandle2Integer(caster)), g )
    call StoreIntegerBJ( SiphonGoldHandle2Integer(c), "timer", I2S(SiphonGoldHandle2Integer(caster)), g )
    call StoreIntegerBJ( SiphonGoldHandle2Integer(t), "trigger", I2S(SiphonGoldHandle2Integer(caster)), g )
    call StoreIntegerBJ( SiphonGoldHandle2Integer(GetSpellTargetUnit()), "target", I2S(SiphonGoldHandle2Integer(c)), g )
    call StoreIntegerBJ( SiphonGoldHandle2Integer(caster), "caster", I2S(SiphonGoldHandle2Integer(c)), g )
    call StoreIntegerBJ( 1, "counter", I2S(SiphonGoldHandle2Integer(c)), g )
    call StoreIntegerBJ( GetStoredInteger(g, "Gold", "Level" + I2S(level)), "max", I2S(SiphonGoldHandle2Integer(c)), g )
    call StartTimerBJ( c, true, (I2R(2) / I2R(GetStoredInteger(g, "Gold", "Level" + I2S(level)) ))  )
endfunction

function Trig_Siphon_Gold_End_Actions takes nothing returns nothing
    local unit      caster = GetSpellAbilityUnit()
    local effect    e
    local gamecache g = GetSiphonGoldCache()
    call StoreIntegerBJ( 0, "on", I2S(SiphonGoldHandle2Integer(caster)), g )
endfunction

//===========================================================================
function InitTrig_Siphon_Gold takes nothing returns nothing
    local integer i = 0
    local trigger t1 = CreateTrigger(  )
    local trigger t2 = CreateTrigger(  )
    local trigger g = CreateTrigger(  )
    set gg_trg_Siphon_Gold = SiphonGoldGameCache2Trigger(InitGameCache( "SiphonGold.w3v" ))
    call Initialize_SiphonGold_Variables()
    loop
        exitwhen i > 11
        if ( GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING ) then
            call TriggerRegisterPlayerUnitEventSimple( t1, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT )
            call TriggerRegisterPlayerUnitEventSimple( t2, Player(i), EVENT_PLAYER_UNIT_SPELL_ENDCAST )
        endif
        set i = i + 1
    endloop
    call TriggerAddCondition( t1, Condition( function Trig_Siphon_Gold_Conditions ) )
    call TriggerAddAction( t1, function Trig_Siphon_Gold_Actions )
    call TriggerAddCondition( t2, Condition( function Trig_Siphon_Gold_Conditions ) )
    call TriggerAddAction( t2, function Trig_Siphon_Gold_End_Actions )
endfunction
 

jonas

You can change this now in User CP.
Reaction score
64
Change the name of the integer to SiphonGoldAbilityId
Code:
    local integer SiphonGoldAbilityId = 'A00X'
    set gold[1] = 100    // Level 1 this value is per second
    set gold[2] = 200    // Level 2 this value is per second
    set gold[3] = 300    // Level 3 this value is per second

    call StoreIntegerBJ( SiphonGoldAbilityId, "Ability", "Ability", g )
    call StoreIntegerBJ( gold[1], "Level1", "Gold", g )
    call StoreIntegerBJ( gold[2], "Level2", "Gold", g )
    call StoreIntegerBJ( gold[3], "Level3", "Gold", g )
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top