I posted this a while back, and it slowly died, so I have improved it slightly, and I'm coming back for round two, hoping to get some more feedback. I have noticed that throughout scripts people like to write some code that randomly right/left clicks when clicking an object.
Therefore, I have come up with this function that does just that, but it also checks the uptext of the object, and chooses the correct option.
Because a human isn't going to right/left click 50% percent of the time, this function is set to right click and choose option once every 10 times it is called.
SCAR Code:
{*******************************************************************************
function ClickOptionEx(x, y, rx, ry: Integer; Option: String; UpText, ChooseOpt: TStringArray): Boolean;
By: Coh3n
Description: Will left click an object 9/10 times. Will right click an object
and choose the option accociated with ChooseOpt.
Valid arguments for Option: 'right', 'left', 'random'.
i.e ClickOption(x, y, 0, 0, 'random', ['Door'], ['Open']);
*******************************************************************************}
function ClickOptionEx(x, y, rx, ry: Integer; Option: String; UpText, ChooseOpt: TStringArray): Boolean;
begin
if not InStrArr(Option, ['random', 'right', 'left'], False) then Exit;
Result := WaitUpTextMulti(UpText, 100 + Random(400));
if not Result then SRL_Warn;
if Option = 'random' then
if Random(10) = 1 then
Option := 'right';
else
Option := 'left';
Mouse(x, y, rx, ry, Option = 'left');
if Option = 'right' then
ChooseOptionMulti(ChooseOpt);
end;
{*******************************************************************************
function ClickOption(x, y, rx, ry: Integer; Option: String; UpText, ChooseOpt: String): Boolean;
By: Coh3n
Description: Works like ClickOptionEx, but uses Strings instead of TStingArray.
*******************************************************************************}
function ClickOption(x, y, rx, ry: Integer; Option: String; UpText, ChooseOpt: String): Boolean;
begin
Result := ClickOptionEx(x, y, rx, ry, Option, [UpText], [ChooseOpt]);
end;
*Thanks to Sabzi for the ClickOption idea. 
I have used it in my current script project to open a gate and climb-over a stile, and both work like a charm.
I find this function handy to replace a bunch of lines of code such as:
SCAR Code:
MMouse(x, y, 4, 4);
if IsUpText('illow') then
begin
Writeln('We have found the Willow tree');
case Random(10) of
1: begin
Mouse(x, y, 0, 0, False);
Wait(80 + Random(100));
ChooseOption('hop');
end;
else
Mouse(x, y, 0, 0, True);
end;
With this much shorter code:
SCAR Code:
MMouse(x, y, 4, 4);
if ClickOption(x, y, 0, 0, 'random', 'illow', 'hop') then
Writeln('Clicked Willow tree!');
See what I mean? 
Well, that's it, thanks for reading.
Please post comments/suggestions.