You are only checking the first element of the array.
The correct script should be:
{ setarray .@mapname$[0], "prt_fild08", "06guild_01", "06guild_02", "06guild_03", "06guild_04", "06guild_05", "06guild_06", "06guild_07", "06guild_08"; set .@found,0; for(.@i = 0; .@i < getarraysize(.@mapname$); .@i++ ) { if(strcharinfo(3) == .@mapname$[.@i]) { set .@found,1; } } if (.@found == 1) { delitem 604,1; monster "this",-1,-1,"--ja--",-1,1,""; } else dispbottom "This item can't be used on your current map."; }
(Not tested, but it should work)