HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

JASS syntax errors

06-28-2007, 04:10 AM#1
Castlemaster
I've been doing my best to learn JASS from the tutorials, but one trigger I made keeps returning a syntax error (I have the nextgen pack by Vexorian).
Collapse JASS:
function Trig_Inventory_Check takes nothing returns nothing
    local integer i = 0
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 2)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 3)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 4)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 5)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if ( ( SubStringBJ(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 6)), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 7 ), ( StringLength(GetItemName(UnitItemInSlotBJ(GetManipulatingUnit(), 1))) - 3 )) == "Armor" ) ) then
        set i = i+1
    endif
    if i > 1 then
        return true
    endif
    return false
endfunction

I get the syntax error at the function Trig_Inventory_Check line, yet I have no idea why.

Thanks ahead of time.
06-28-2007, 04:20 AM#2
Dil999
Collapse JASS:
function Trig_Inventory_Check takes nothing returns nothing

your using
Collapse JASS:
return true
- therefore you should return boolean (true/false)

Collapse JASS:
function Trig_Inventory_Check takes nothing returns boolean
06-28-2007, 07:57 AM#3
Pyrogasm
Additionally, you can optimize your code even more by using a loop:
Collapse JASS:
function Trig_Inventory_Check takes nothing returns boolean
    local integer i = 0
    local integer i2 = 0
    local string s
    local unit u = GetManipulatingUnit()
    local integer length

    loop
        set i2 = i2+1
        exitwhen i2 > 6
        set s = GetItemName(UnitItemInSlot(u, i2))
        set length = StringLength(s)
        if ((SubString(s, length-7, length-3) == "Armor" ) then
            set i = i+1
        endif
    set u = null
    return (i > 1)
endfunction
06-28-2007, 08:32 AM#4
PipeDream
I wouldn't call using a loop optimizing but it's certainly a lot clearer.
06-28-2007, 09:32 AM#5
Pyrogasm
Whoops. I meant to say "optimize and use a loop" ><