Problem with a spell: Scope symbol redeclared: integer

dudeim

New Member
Reaction score
22
Well as you can read in the title i'm getting this error: "Scope symbol redeclared: integer"

in this trigger

JASS:
scope ABlessedShield initializer Init

globals
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\CONFIG BELOW//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        private static real PERCENTAGE = 90 //this will trigger the ability at 90%
        private static integer AID = 'Amls' //the abilities id
        private static integer CHARGES = 5 //how many times the damage is reduced
        private static integer REDUCTION = 50 //how much percent is reduced in this case 50%
        private static boolean STACK = false //if set to true charges can go above the initial value otherwise they can't
        private static integer MAXCHARGES = 5 //if you want the charges to stack but have a limit input it here if you want no limit input 0
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\END OF CONFIG//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        integer array currentcharges //to keep track of the current unit charges
endglobals

private function Cons takes nothing returns boolean
local real percent = (GetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE)/GetUnitState(GetTriggerUnit(),UNIT_STATE_MAX_LIFE))*100
if GetUnitAbilityLevel(GetTriggerUnit(),AID) > 0 and percent =< 35 then
return true
else
return false
endif 
endfunction

private function Const takes nothing returns boolean
if currentcharges[GetUnitId(GetTriggerUnit())] > 0 then
return true
else
return false
endif 
endfunction //this line
//and this line it says it's previous declared
private function Remove takes nothing returns nothing
set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] - 1
call SetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE,GetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE) + (GetEventDamage() * (REDUCTION/100)))
call BJDebugMsg("-1 op " + GetUnitName(GetTriggerUnit()))
endfunction

private function add takes nothing returns nothing
if currentcharges[GetUnitId(GetTriggerUnit())] = 0 then
set currentcharges[GetUnitId(GetTriggerUnit())] = 0
endif
if STACK == true then
if MAXCHARGES > 0 then
if (currentcharges + 5) < MAXCHARGES then
set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] + CHARGES
else
set currentcharges[GetUnitId(GetTriggerUnit())] = MAXCHARGES
endif
else
set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] + CHARGES
endif
else
set currentcharges[GetUnitId(GetTriggerUnit())] = CHARGES
endif
endfunction


private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        local trigger t2 = CreateTrigger()
                call Damage_RegisterEvent(t)

        call TriggerAddCondition(t, Filter(function Cons))
        call TriggerAddAction(t, function add)
        call TriggerAddCondition(t2, Filter(function Const))
        call TriggerAddAction(t2, function remove)
    endfunction
endscope


I've been out of jassing for some time now so should probably be a real simple stupid mistake I made but I can't find it.
For those who want to know what the spell does: When you get below x% of your health all damage taken for y hits will be reduced by z%.

Thanks
 

Romek

Super Moderator
Reaction score
963
Please, learn how to indent. It'll benefit you and those who want to help you.
Globals cannot be declared as static, as they're static by default. Only struct members can be declared as static, as otherwise they become instance members.
I think you meant [ljass]constant[/ljass], not [ljass]static[/ljass].

JASS:
globals
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\CONFIG BELOW//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        private constant real PERCENTAGE = 90 //this will trigger the ability at 90%
        private constant integer AID = 'Amls' //the abilities id
        private constant integer CHARGES = 5 //how many times the damage is reduced
        private constant integer REDUCTION = 50 //how much percent is reduced in this case 50%
        private constant boolean STACK = false //if set to true charges can go above the initial value otherwise they can't
        private constant integer MAXCHARGES = 5 //if you want the charges to stack but have a limit input it here if you want no limit input 0
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\END OF CONFIG//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        integer array currentcharges //to keep track of the current unit charges
endglobals
 

dudeim

New Member
Reaction score
22
Yes I did mean constant thanks man:D as I said I didn't jass for some time so I forgot things:p but thanks ;)
 

Bribe

vJass errors are legion
Reaction score
67
You need to indent your code because other people are reading it now, not just yourself. We read this:

JASS:
private function Const takes nothing returns boolean
    if currentcharges[GetUnitId(GetTriggerUnit())] > 0 then
        return true
    else
        return false
    endif 
endfunction


Not the way you have it. and you don't need all those lines to express what you're doing.

JASS:

private function Const takes nothing returns boolean
    return (currentcharges[GetUnitId(GetTriggerUnit())] > 0)
endfunction


When scrolling over a chunk of code to find something specific, everything looks the same if it's not indented. You've basically got a shit load of nonsense, here. Why is it that you deleted all the 4-spaced tabs? Do you think it cuts down on the KB size of your map?

All that //\\//\\//\\//\\//\\//\\//\\//\\//\\ decoration is going to do 100x worse.
 

dudeim

New Member
Reaction score
22
Yeah I indented it now was not thinking of it when I made it (programmed alot with VB lately and it went automaticly with that:p) and thanks for shorting the condition:p forgot that;)
What do you mean with 4 spaced tab?
Edit:

ok now fixed some things and added some but getting another error now
Error:
Member redeclared: Destroy
it's in the system event (I use damage and damage uses event)
So any idea why I would get this error?
Script:
JASS:
scope ABlessedShield initializer Init
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//BLESSED SHIELD V1//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//                                    This spell requires AIDS from J4L and Damage from J4L
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\                                    
//                                    What it does?
//                                    The spell starts when someone takes damage and is below a percentage of health.
//                                    Then the damaged unit will gain x amount of charges.
//                                    For every next time it is hit it will reduce the damage taken by x%.
//                                    A Charge is also taken away until he has no charges left
//
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


globals
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\CONFIG BELOW//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        private constant real PERCENTAGE = 90 
        //This real present the percentage health required before this spell will activate 
        //if you have entered 50 then the spell will only fire when the target has less 
        //then or equal to 50% of his max health
        private constant integer AID = 'Amls' 
        //the abilities id what ability the target must have before this can trigger
        private constant integer REDUCTION = 50 
        //how much percent is reduced so 50 will be 50% damage reduction ex. 100 damage is 
        //taken REDUCTION = 35 then you will only take 100 - (100*(35/100)) or 100 - 35 = 65
        private constant integer CHARGES = 5 
        //how many reduction charges you have 5 will represent 5 incoming damage attacks and 
        //reduce those 5 attacks by the amount we set above
        private constant boolean STACK = false 
        //if set to true charges can go above the initial value otherwise they can't so if you 
        //stay below the percentage of health can you keep getting charges say we get 5 charges
        //so we have 5 charges we get hit 5-1= 4 charges left but we get 5 more because charges
        //can stack so we have 9 charges etc.. etc..
        private constant integer CHANCE = 100
        //the chance you will get charges handy if your charges can stack but don't want
        //that everytime you get hit your charges increase. 100 represents 100%. 50 represents 50%.
        private constant integer CHARGECHANCE = 0
        //the chance you will keep a charge when hit so lets say I have 5 charges and get
        //hit if CHARGECHANCE for example is 50 I have 50% chance to keep my charges but if
        //CHARGECHANCE is 17 I will have 17% chance to keep my charges
        private constant integer MAXCHARGES = 5 
        //if you want the charges to stack but have a limit input it here if you want 
        //no limit input 0. If charges can stack it would be unfair if the one with charges
        //would stay below the percentage needed for this spell and keep getting charges until
        //he has 2^64 charges or even more so you can input a maximum wich can't be overwritten
        private constant string MDLPATH = "Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl" 
        //the model wich will appear when the unit has charges on him
        private constant string POS = "origin"
        //the place where the model will be on the unit
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\END OF CONFIG//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
        integer array currentcharges 
        //to keep track of the current unit charges 
        effect array sfx 
        //to keep track of the sfx on the target and remove it properly
endglobals

private function Cons takes nothing returns boolean
    local real percent = (GetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE)/GetUnitState(GetTriggerUnit(),UNIT_STATE_MAX_LIFE))*100
    return (GetUnitAbilityLevel(GetTriggerUnit(),AID) > 0 and percent =< 35) 
endfunction

private function Const takes nothing returns boolean
    return currentcharges[GetUnitId(GetTriggerUnit())] > 0
endfunction

private function Remove takes nothing returns nothing
local integer rand = GetRandomInt(1,100)
    if CHARGECHANCE > 0 then
        if CHARGECHANCE < rand then
            set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] - 1
        endif
    else
        set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] - 1
    endif
    call SetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE,GetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE) + (GetEventDamage() * (REDUCTION/100)))
    call BJDebugMsg("-1 op " + GetUnitName(GetTriggerUnit()))
        if currentcharges[GetUnitId(GetTriggerUnit())] = 0 then
            call DestroyEffect(sfx[GetUnitId(GetTriggerUnit())])
        endif
        
endfunction

private function add takes nothing returns nothing
local integer rand = GetRandomInt(1,100)
if CHANCE >= rand then
    if currentcharges[GetUnitId(GetTriggerUnit())] = 0 then
        set currentcharges[GetUnitId(GetTriggerUnit())] = 0
        set sfx[GetUnitId(GetTriggerUnit())] = AddSpecialEffectTarget(MDLPATH,GetTriggerUnit(),POS)
    endif

    if STACK == true then
        if MAXCHARGES > 0 then
            if (currentcharges + 5) < MAXCHARGES then
                set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] + CHARGES
            else
                set currentcharges[GetUnitId(GetTriggerUnit())] = MAXCHARGES
            endif
        else
            set currentcharges[GetUnitId(GetTriggerUnit())] = currentcharges[GetUnitId(GetTriggerUnit())] + CHARGES
        endif
    else
        set currentcharges[GetUnitId(GetTriggerUnit())] = CHARGES
    endif
endif
    
endfunction


private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        local trigger t2 = CreateTrigger()
                call Damage_RegisterEvent(t)

        call TriggerAddCondition(t, Filter(function Cons))
        call TriggerAddAction(t, function add)
        call TriggerAddCondition(t2, Filter(function Const))
        call TriggerAddAction(t2, function remove)
    endfunction
endscope

event script for those who may need it
JASS:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  ~~    Event     ~~    By Jesus4Lyf    ~~    Version 1.04    ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//  What is Event?
//         - Event simulates Warcraft III events. They can be created,
//           registered for, fired and also destroyed.
//         - Event, therefore, can also be used like a trigger "group".
//         - This was created when there was an influx of event style systems 
//           emerging that could really benefit from a standardised custom
//           events snippet. Many users were trying to achieve the same thing
//           and making the same kind of errors. This snippet aims to solve that.
//
//  Functions:
//         - Event.create()       --> Creates a new Event.
//         - .destroy()           --> Destroys an Event.
//         - .fire()              --> Fires all triggers which have been
//                                    registered on this Event.
//         - .register(trigger)   --> Registers another trigger on this Event.
//         - .unregister(trigger) --> Unregisters a trigger from this Event.
//
//  Details:
//         - Event is extremely efficient and lightweight.
//         - It is safe to use with dynamic triggers.
//         - Internally, it is just a linked list. Very simple.
//
//  How to import:
//         - Create a trigger named Event.
//         - Convert it to custom text and replace the whole trigger text with this.
//
//  Thanks:
//         - Builder Bob for the trigger destroy detection method.
//         - Azlier for inspiring this by ripping off my dodgier code.
//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
library Event
    ///////////////
    // EventRegs //
    ////////////////////////////////////////////////////////////////////////////
    // For reading this far, you can learn one thing more.
    // Unlike normal Warcraft III events, you can attach to Event registries.
    // 
    // Event Registries are registrations of one trigger on one event.
    // These cannot be created or destroyed, just attached to.
    //
    // It is VERY efficient for loading and saving data.
    // 
    //  Functions:
    //         - set eventReg.data = someStruct --> Store data.
    //         - eventReg.data                  --> Retreive data.
    //         - Event.getTriggeringEventReg()  --> Get the triggering EventReg.
    //         - eventReg.destroy()             --> Undo this registration.
    // 
    private keyword destroyNode
    struct EventReg extends array
        integer data
        method clear takes nothing returns nothing
            set this.data=0
        endmethod
        method destroy takes nothing returns nothing //< this line
            call Event(this).destroyNode()
        endmethod
    endstruct
    
    private module Stack
        static thistype top=0
        static method increment takes nothing returns nothing
            set thistype.top=thistype(thistype.top+1)
        endmethod
        static method decrement takes nothing returns nothing
            set thistype.top=thistype(thistype.top-1)
        endmethod
    endmodule
    
    private struct EventStack extends array
        implement Stack
        Event current
    endstruct
    
    struct Event
        private trigger trig
        private thistype next
        private thistype prev
        
        static method getTriggeringEventReg takes nothing returns EventReg
            return EventStack.top.current
        endmethod
        
        static method create takes nothing returns Event
            local Event this=Event.allocate()
            set this.next=this
            set this.prev=this
            return this
        endmethod
        
        private static trigger currentTrigger
        method fire takes nothing returns nothing
            local thistype curr=this.next
            call EventStack.increment()
            loop
                exitwhen curr==this
                set thistype.currentTrigger=curr.trig
                if IsTriggerEnabled(thistype.currentTrigger) then
                    set EventStack.top.current=curr
                    if TriggerEvaluate(thistype.currentTrigger) then
                        call TriggerExecute(thistype.currentTrigger)
                    endif
                else
                    call EnableTrigger(thistype.currentTrigger) // Was trigger destroyed?
                    if IsTriggerEnabled(thistype.currentTrigger) then
                        call DisableTrigger(thistype.currentTrigger)
                    else // If trigger destroyed...
                        set curr.next.prev=curr.prev
                        set curr.prev.next=curr.next
                        call curr.deallocate()
                    endif
                endif
                set curr=curr.next
            endloop
            call EventStack.decrement()
        endmethod
        method register takes trigger t returns EventReg
            local Event new=Event.allocate()
            set new.prev=this.prev
            set this.prev.next=new
            set this.prev=new
            set new.next=this
            
            set new.trig=t
            
            call EventReg(new).clear()
            return new
        endmethod
        method destroyNode takes nothing returns nothing // called on EventReg
            set this.prev.next=this.next
            set this.next.prev=this.prev
            call this.deallocate()
        endmethod
        method unregister takes trigger t returns nothing
            local thistype curr=this.next
            loop
                exitwhen curr==this
                if curr.trig==t then
                    set curr.next.prev=curr.prev
                    set curr.prev.next=curr.next
                    call curr.deallocate()
                    return
                endif
                set curr=curr.next
            endloop
        endmethod
        
        method destroy takes nothing returns nothing
            local thistype curr=this.next
            loop
                call curr.deallocate()
                exitwhen curr==this
                set curr=curr.next
            endloop
        endmethod
        method chainDestroy takes nothing returns nothing
            call this.destroy() // backwards compatability.
        endmethod
    endstruct
    
    /////////////////////////////////////////////////////
    // Demonstration Functions & Alternative Interface //
    ////////////////////////////////////////////////////////////////////////////
    // What this would look like in normal WC3 style JASS (should all inline).
    // 
    function CreateEvent takes nothing returns Event
        return Event.create()
    endfunction
    function DestroyEvent takes Event whichEvent returns nothing
        call whichEvent.chainDestroy()
    endfunction
    function FireEvent takes Event whichEvent returns nothing
        call whichEvent.fire()
    endfunction
    function TriggerRegisterEvent takes trigger whichTrigger, Event whichEvent returns EventReg
        return whichEvent.register(whichTrigger)
    endfunction
    
    // And for EventRegs...
    function SetEventRegData takes EventReg whichEventReg, integer data returns nothing
        set whichEventReg.data=data
    endfunction
    function GetEventRegData takes EventReg whichEventReg returns integer
        return whichEventReg.data
    endfunction
    function GetTriggeringEventReg takes nothing returns integer
        return Event.getTriggeringEventReg()
    endfunction
endlibrary


So why am I getting this new error?

Thanks:D
 

Jedi

New Member
Reaction score
63
I think he meant something like this,
JASS:

function X takes nothing returns nothing
    //4 space    
    call something()
//without 4 space
call something
endfunction
 

Bribe

vJass errors are legion
Reaction score
67
fx should most definitely be private. currentcharges might as well be private, too.

Basically, things that have a similar title that has a chance of conflicting with another system on the map should be private. fx is very common and is used even for local variables, so in 99.999999¯ of cases you want that privatized.

integer array currentcharges
//to keep track of the current unit charges
effect array sfx
 

Romek

Super Moderator
Reaction score
963
> [ljass]call TriggerAddAction(t2, function remove)[/ljass]
> [ljass]private function Remove takes nothing returns nothing[/ljass]
JASS is case sensitive.
 

dudeim

New Member
Reaction score
22
Made the globals private and changed the capital letter in remove but still getting the same error
 

Bribe

vJass errors are legion
Reaction score
67
I don't see any member that was declared by the name of "Destroy". That error cannot be generated by this specific code.
 

dudeim

New Member
Reaction score
22
Yeah it isn't in my code it's in the code event there is the one that's being redeclared but I have no idea why:(
Newest jasshelper is? I think I have something like A.2.A or something. Maybe it's because I have an older version of Jhelper and thats why it doesn't work idk:p
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top