| 06-28-2007, 04:10 AM | #1 |
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). 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 |
JASS:function Trig_Inventory_Check takes nothing returns nothing your using JASS:return true JASS:function Trig_Inventory_Check takes nothing returns boolean |
| 06-28-2007, 07:57 AM | #3 |
Additionally, you can optimize your code even more by using a loop: 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 |
I wouldn't call using a loop optimizing but it's certainly a lot clearer. |
| 06-28-2007, 09:32 AM | #5 |
Whoops. I meant to say "optimize and use a loop" >< |
