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

Ultra Cool Member
Reaction score
47
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.
  • tom_mai78101 tom_mai78101:
    Starting this upcoming Thursday, I will be in Japan for 10 days.
  • tom_mai78101 tom_mai78101:
    Thursday - Friday will be my Japan arrival flight. 9 days later, on a Sunday, will be my return departure flight.
    +2
  • The Helper The Helper:
    Hope you have safe travels my friend!
    +1
  • vypur85 vypur85:
    Wow spring time in Japan is awesome. Enjoy!
  • The Helper The Helper:
    Hopefully it will be more pleasure than work
  • vypur85 vypur85:
    Recently tried out ChatGPT about WE triggering. Wow it's capable of giving a somewhat legitimate response.
  • The Helper The Helper:
    I am sure it has read all the info on the forums here
  • The Helper The Helper:
    i think triggering is just scripting and chatgpt is real good at code
  • vypur85 vypur85:
    Yeah I suppose so. It's interesting how it can explain in so much detail.
  • vypur85 vypur85:
    But yet it won't work.
  • The Helper The Helper:
    it does a bad ass job doing excel vba code it has leveled me up at my job when I deal with excel that is for sure
  • vypur85 vypur85:
    Nice! I love Excel coding as well. Has always been using Google to help me. Maybe I'll use ChatGPT next time when I need it.
  • The Helper The Helper:
    yeah whatever it puts out even if it is not perfect I can fix it and the latest version of chatgpt can create websites from pictures it will not be long until it can do that with almost all the tools
    +1
  • The Helper The Helper:
    These new Chat AI programs are going to change everything everyone better Buckle the Fuck Up!
  • The Helper The Helper:
    oh and Happy Tuesday Evening! :)
    +1
  • jonas jonas:
    Im worried they'll change things for worse
  • jonas jonas:
    A lot more low quality content, a lot more half-baked stuff.
  • jonas jonas:
    If you're good enough to spot the mistakes of the answers you don't need it in the first place. If you aren't good enough, you're gonna rely on some half-correct stuff
  • The Helper The Helper:
    the earlier AI is and has been used extensively for publishing news and other content for a while now
  • jonas jonas:
    I used to be active on quora, it's now flooded with extremely similar, superficial answers that often miss the point of the question
  • N NJJ:
    hi
  • N NJJ:
    Hello, gathering all my old accounts… :)
    +1
  • The Helper The Helper:
    by all means gather it all up!

    The Helper Discord

    Members online

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top