From: rogeruk
Then you walk to it? Lol.
Plus.. any construction script can just be a
1. Stand next to larder
2. Talk to servant so they follow you
3. Start script.
Then all the script has to do is build > remove, send servant and pay him when he's due.
But that's a pain for initial setup, and you get returned to the portal (inside your house) after random events.
Here's some work i've done on this:
(Note that the portal tiles are for the yanille location, and the object ID is set for an oak bell.)
program TeakBuilder;
{$DEFINE SMART}
{$i SRL\SRL.scar}
{$i Reflection\Reflection.Simba}
procedure DeclarePlayers;
begin
{---SMART Constants---}
Smart_Server := 91;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
{---Don't Touch---}
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
{---Player Info---}
with Players[0] do
begin
Name := '';
Pass := '';
Active := True;
end;
end;
function WaitForInterfaceText(Interfaec, Component: Integer; Text: string; MaxTime, WaitPer: Integer): Boolean;
var
S: string;
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) and not(Result) do
begin
S := GetInterfaceText(Interfaec, Component);
Result := Pos(Text, S) <> 0;
Wait(WaitPer);
end;
end;
function EnterHouse: Boolean;
var
Tiles: TPointArray;
T, OldLoc, NewLoc: TTile;
H, Timer, Garbage: Integer;
xO, yO: Extended;
P: TPoint;
begin
if not(LoggedIn) then
Exit;
Tiles := [Tile(2543, 3097), Tile(2544, 3097), Tile(2545, 3097)];
T := Tiles[Random(3)];
if not(TileOnMS(T, 0)) then
WalkToTile(T, 0, 1);
H := GetTileHeight(T);
H := RandomRange(1/3, 2/3) * H;
xO := RandomRange(4, 6) / 10;
yO := RandomRange(4, 6) / 10;
P := TileToMSEx(T, xO, yO, H);
MMouse(P.x, P.y - 20, 0, 0); //Already randomized above
if R_WaitUptext('nter Port', 900 + Random(200)) then
begin
Wait(RandomRange(50, 80));
case Random(2) of
0: ClickMouse2(True);
1: begin
ClickMouse2(False);
Wait(RandomRange(50, 80));
if not(R_WaitOption('nter Po', 900 + Random(200))) then
Exit;
end;
end;
if not(WaitForInterfaceText(232, 2, 'your house', 3000, 10 + Random(15))) then
Exit;
Wait(RandomRange(50, 80));
OldLoc := GetMyPos;
MouseBox(145, 406, 370, 417, 1);
Timer := GetSystemTime + RandomRange(5000, 6000);
while (GetSystemTime < Timer) and not(Result) do
begin
NewLoc := GetMyPos;
Result := Distance(NewLoc.x, NewLoc.y, OldLoc.x, OldLoc.y) > 10;
end;
end;
if not(Result) then
Exit
else
Wait(RandomRange(800, 1100)); //Wait for black to actually come on screen before looking for it to not be there
Timer := GetSystemTime + 5000;
while not(FindColorTolerance(Garbage, Garbage, 13127, 130, 73, 134, 77, 15)) and not(GetSystemTime < Timer) do
WaitNone; //Waiting for black screen to go away
end;
function HaveButlerFollow: Boolean;
var
Objs: TRSObjectArray;
i: Integer;
P: TPoint;
begin
if not(LoggedIn) then
Exit;
Objs := GetAllObjects(OBJECT_TYPE_INTERACTABLE);
if (Length(Objs) < 1) then
Exit;
Objs := SortObjects(Objs);
SetAngle(True);
for i := 0 to High(Objs) do
begin
if (Objs[i].ID = 13307) then
begin
if not(TileOnMS(Objs[i].Tile, 0)) then
begin
WalkToTile(Objs[i].Tile, 0, 1);
R_Flag;
Writeln('Walked');
end;
P := TileToMS(Objs[i].Tile, 0);
MMouse(P.x - 1, P.y - 20, 2, 0);
if R_WaitUptext('bell', RandomRange(900, 1000)) then
begin
case Random(2) of
0: ClickMouse2(True);
1: begin
ClickMouse2(False);
if not(R_WaitOption('Ring', RandomRange(900, 1000))) then
Continue;
end;
end;
Result := WaitForInterfaceText(241, 4, 'thy bidding', 3000, RandomRange(10, 25));
end else WRiteln('uptext not found on bell pull');
end;
if Result then
Break;
end;
end;
begin
DeclarePlayers;
SetupSRL;
SetupReflection;
if not(LoggedIn) then
begin
LogInPlayer;
Wait(RandomRange(3000, 5000));
end else
PlayerStartTime := GetSystemTime;
SetAngle(True);
end.