I use:
function PickUpItem(item:TGroundItem; itemName:String; stackAble:Boolean):Boolean;
var
mcoords:TPoint;
x,y:Integer;
invItem:TInvItem;
begin
if(R_InvFull and (not(R_ItemExists(item.ID,invItem)) and stackAble) or not( stackAble)) then
Exit;
if not(TileOnMs(item.Tile,0)) then
PositionOn(item.Tile); //similar to walk to tile
mcoords := TileToMs(item.Tile,0);
Mouse(mcoords.x,mcoords.y,0,0,False);
if(R_waitOption(itemName,500)) then
Result := R_ChooseOption(itemName);
wait(300+random(200));
waitTilIdle; //you don't have this function
wait(300+random(200));
end;
function PickUpItems:Boolean;
var
items:TGroundItemArray;
begin
items := GetItemsNear(8);
for i:=0 to High(items) do
case items[i].ID of
deathID:
PickUpItem(items[i],'eath',true);
gcharmID:
PickUpItem(items[i],'old charm',true);
sharkID:
PickUpItem(items[i],'hark',true);
lobsterID:
PickUpItem(items[i],'obster',true);
bloodID:
PickUpItem(items[i],'lood',true);
earthID:
PickUpItem(items[i],'earth',true);
brineID:
PickUpItem(items[i],'abre',false);
bonesID:
if not(R_InvFull) then
PickUpItem(items[i],'ones',false);
end;
end;