EDIT: EEK! Silly me. I scrolled down a bit and found my problem. I replace FindNormalRandoms with FindNonInventoryRandoms. But now my question is - how do I made a procedure for randoms, that finds non inventory randoms but finds inventory randoms every few casts?
And I would still like it if someone could explain a bit further and more to me 
Re-Edit: Also, using just one color fails sometimes. I often have to restart the script.
____
So I just put together a simple auto curser for myself, mainly used parts of other scripts and read through some tutorials to fix this for myself.
Now my problem is, its running fine but it clicks the curse spell, then clicks the target, and then goes to the inventory, and then opens the spell book and then casts and the cycle goes on.
What I cant understand is why it opens the inventory, heres my procedure to cast the spell which was taken from another script:
SCAR Code:
procedure Curse;
var
I: Integer;
begin
if ( I = 10 ) then Nextplayer (False);
if (not LoggedIn)then exit;
if not CastOn('curse', 'amorak', Mob, 10) then
begin
Writeln('Monk could not be found.');
Inc(I);
end else
I := 0;
wait(1000+random(1500));
end;
Now I dont much get the I: Integer; thing either, I mean... I know its an integer... what I dont get it what its for. I removed every place I is used, and it just ran the same.
Heres the setup part of my script aswell:
SCAR Code:
repeat
Curse;
Inc(i);
FindNormalRandoms;
until (i >= Spells);
Some help would be much appreciated. And another thing I need help with is:
SCAR Code:
procedure Map;
begin
MakeCompass('W');
end;
Does that fine, but how do you make it at the up-most angle again? 
Thanks, hope to get a reply from some guru (or less) soon.