Simba Code:
program SS_AVATAR;
{$DEFINE SMART}
{$I SRL/SRL.simba}
{$I SRL/SRL/Misc/SmartGraphics.Simba}
{$I SRL/SRL/Misc/Debug.Simba}
var
Tmp, FinalMsg, CurrentCommandPlayerName, CurrentFollowing, TmpName, SummonAvatar, s, FagName: string;
TPA: TPointArray;
ATPA: T2DPointArray;
x, y, m, i, redx, redy: integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Active := True;
end;
function GetLastClanMsg: string;
var
P: TPoint;
cArr: TPointArray;
B: TBox;
begin
Result := '';
P := TextCoords(8);
if (FindColorsTolerance(cArr, 0, MCX1, P.y, MCX2, P.y + 13, 255)) then
begin
B := GetTPABounds(cArr);
result := Trim(GetTextAtExWrap(b.x1 - 1, p.y, B.x2 + 1, p.y + 13, 0, 5, 2, 0, 255, SmallCharsNS));
end;
end;
procedure SendMsg(Text: string);
var
I: Integer;
begin
for i := 1 to Length(Text) do
SendKeys(Text[i], 10 + Random(25), 10 + Random(25));
TypeByte(VK_ENTER);
end;
function isMMonMS(MM: TPoint): Boolean;
begin
Result := (MMtoMS(MM) <> Point( - 1, - 1));
end;
procedure FindClanMember_Follow;
var
DPoint: Tpoint;
x, y: Integer;
Box: TBox;
begin
if (CurrentFollowing = Between('/', ':', FinalMsg)) then
begin
SendMsg('//I am already following you, ' + Between('/', ':', FinalMsg));
exit;
end;
ClickNorth(SRL_ANGLE_HIGH);
repeat
if FindColorTolerance(x, y, 1082874, MMX1, MMY1, MMX2, MMY2, 25) then
begin
DPoint := MMToMS(Point(x, y));
MouseBox(DPoint.x - 30, DPoint.y - 5, DPoint.x + 5, DPoint.y + 50, Mouse_Move);
if (DPoint.x - 30 < - 1) then
begin
SendMsg('//You are off my screen, please move closer');
wait(2000);
end;
while (DPoint.x - 30 < - 1) do
begin
FindColorTolerance(x, y, 1082874, MMX1, MMY1, MMX2, MMY2, 10) DPoint := MMToMS(Point(x, y));
wait(100);
end;
Box := IntToBox(DPoint.x - 30, DPoint.y - 5, DPoint.x + 5, DPoint.y + 50);
SMART_DrawBox(Box);
Wait(100);
writeln(GetUpText);
if (IsUpText(TmpName)) then
begin
ClickMouse2(mouse_Right);
if (OptionsExist(['Follow ' + TmpName], True)) then
begin
ClickMouse2(True);
SendMsg('//I am now following: ' + TmpName);
CurrentFollowing := TmpName;
exit;
end;
end;
end;
until (false);
end;
begin
DeclarePlayers;
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
SetUpSRL;
LoginPlayerToLob SelectWorld(83);
LoginPlayer;
CurrentFollowing := 'No one';
Wait(3000);
ClickNorth(SRL_ANGLE_HIGH);
repeat
if not (LoggedIn) then
begin
LoginPlayerToLob SelectWorld(83);
LoginPlayer;
end;
MMouse(709, 196 - 50, 0, 0);
wait(500);
if (CurrentWorld <> 83) then
begin
ExitToLobby;
SelectWorld(83);
LoginPlayer;
end;
Tmp := GetLastClanMsg;
Tmp := Replace(Tmp, '..', ':');
Tmp := Replace(Tmp, '[', '');
Tmp := Replace(Tmp, ']', '');
FinalMsg := Replace(Tmp, 'CLAN NAME ', '/');
if ((Pos('@Follow', FinalMsg) > 0) or ((Pos('@follow', FinalMsg) > 0))) then
begin
TmpName := Between('/', ':', FinalMsg) FindClanMember_Follow;
CurrentCommandPlayerName := Between('/', ':', FinalMsg);
Wait(3000);
end;
if ((Pos('@Reset', FinalMsg) > 0) or ((Pos('@reset', FinalMsg) > 0))) then
begin
SendMsg('//Variables have been reset. You will be able to find me around Edgeville Bank');
Tmp := '';
FinalMsg := '';
CurrentCommandPlayerName := '';
CurrentFollowing := '';
TmpName := '';
SummonAvatar := 'Unknown';
CurrentFollowing := 'No one';
ClickNorth(SRL_ANGLE_HIGH);
Mouse(628, 132 - 50, 2, 2, mouse_Left);
wait(1500);
GameTab(tab_Magic);
MMouse(573, 276 - 50, 5, 5);
ClickMouse2(true);
wait(RandomRange(3000, 5000));
MMouse(293, 205 - 50, 5, 5);
ClickMouse2(true);
wait(20000);
ClickNorth(SRL_ANGLE_NONE);
Mouse(670, 153 - 50, 5, 5, mouse_Left);
wait(2500);
while IsMoving do
wait(200);
Mouse(673, 166 - 50, 5, 5, mouse_Left);
wait(2500);
while IsMoving do
wait(200);
Wait(3000);
end;
if ((Pos('@Unfollow', FinalMsg) > 0) or ((Pos('@unfollow', FinalMsg) > 0))) then
begin
CurrentFollowing := 'No one';
ClickNorth(SRL_ANGLE_HIGH);
Mouse(628, 132 - 50, 2, 2, mouse_Left);
SendMsg('//I am no longer following ' + Between('/', ':', FinalMsg));
Wait(3000);
end;
if ((Pos('@Info', FinalMsg) > 0) or ((Pos('@info', FinalMsg) > 0))) then
begin
MMouse(709, 196 - 50, 0, 0);
wait(500);
if (IsUpTextMultiCustom(['all F', 'Call Follower'])) then
begin
SummonAvatar := 'true';
end
else
SummonAvatar := 'false';
SendMsg('//Avatar Active : ' + SummonAvatar + ' | Currently following : ' + CurrentFollowing + ' | Run ' + IntToStr(GetMMLevels('run', s)));
Wait(3000);
end;
if ((Pos('@Rest', FinalMsg) > 0) or ((Pos('@rest', FinalMsg) > 0))) then
begin
RestUntil(100);
SetRun(True);
SendMsg('//Run energy now 100% and Run activated (Will need to @Follow)');
Wait(3000);
end;
MMouse(709, 196 - 50, 0, 0);
TypeByte(VK_Right);
wait(RandomRange(1000, 3000));
if not (IsUpTextMultiCustom(['all', 'wer', 'C', 'wer', 'or', '3'])) then
begin
ClickNorth(SRL_ANGLE_HIGH);
FindColorsSpiralTolerance(x, y, TPA, 14210930, MSX1, MSY1, MSX2, MSY2, 50);
ATPA := TPAtoATPAEx(TPA, 10, 10);
m := High(ATPA) for i := 0 to m do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if (WaitUpTextMulti(['elep', 'ortal'], 500)) then
begin
ClickMouse2(mouse_Right);
wait(200);
WaitOptionMulti(['ele', 'Teleport'], 800);
wait(3000);
TypeSendEx('1', false);
wait(15000);
MMouse(543, 192 - 50, 0, 0);
ClickMouse2(true);
wait(2000);
MMouse(328, 269 - 50, 0, 0);
ClickMouse2(true);
wait(2000);
MakeCompass('w');
SetAngle(SRL_ANGLE_LOW);
wait(1000);
MMouse(632, 62 - 50, 0, 0);
ClickMouse2(true);
wait(20000);
while ismoving do
wait(1000);
MakeCompass('e');
SetAngle(SRL_ANGLE_LOW);
FindColorsSpiralTolerance(x, y, TPA, 1480880, MSX1, MSY1, MSX2, MSY2, 20);
ATPA := TPAtoATPAEx(TPA, 10, 10);
m := High(ATPA);
MouseSpeed := 30;
for i := 0 to m do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if (WaitUpTextMulti(['nter', 'avatar'], 250)) then
begin
ClickMouse2(mouse_Right);
wait(300);
WaitOptionMulti(['Interact', 'eract'], 800);
FindColorTolerance(redx, redy, 1376488, MMX1, MMY1, MMX2, MMY2, 25) wait(1000);
TypeSendEx('1', false);
wait(3000);
if (FindBlackChatMessage('should get closer')) then
begin
writeln('Need to get closer and try again.. waiting for avatar to move');
MakeCompass(RandomRange(0, 300));
MMouse(redx, redy, 0, 0);
ClickMouse2(true);
wait(5000);
repeat
FindColorTolerance(redx, redy, 1376488, MMX1, MMY1, MMX2, MMY2, 25);
MMouse(redx, redy, 0, 0);
ClickMouse2(true);
wait(5000);
MakeCompass(RandomRange(0, 359));
FindColorsSpiralTolerance(x, y, TPA, 1480880, MSX1, MSY1, MSX2, MSY2, 20);
ATPA := TPAtoATPAEx(TPA, 10, 10);
m := High(ATPA);
for i := 0 to m do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if (WaitUpTextMulti(['nter', 'avatar'], 500)) then
begin
ClickMouse2(mouse_Right);
wait(300);
WaitOptionMulti(['Interact', 'eract'], 800);
wait(3000);
TypeSendEx('1', false);
wait(3000);
end;
end;
until (FindColorTolerance(x, y, 5232606, 115, 182 - 50, 182, 256 - 50, 5));
end;
if FindColorTolerance(x, y, 5232606, 115, 182 - 50, 182, 256 - 50, 5) then
begin
MMouse(x, y, 2, 2);
ClickMouse2(true);
wait(3000);
TypeSendEx('1', false);
break;
end;
end;
end;
end;
end;
wait(5000);
MMouse(543, 191 - 50, 2, 2);
ClickMouse2(True);
wait(2500);
MMouse(455, 268 - 50, 2, 2);
clickmouse2(true);
wait(3000);
FindColorsSpiralTolerance(x, y, TPA, 14210930, MSX1, MSY1, MSX2, MSY2, 50);
ATPA := TPAtoATPAEx(TPA, 10, 10);
m := High(ATPA) for i := 0 to m do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if (WaitUpTextMulti(['elep', 'ortal'], 500)) then
begin
ClickMouse2(false);
wait(300);
WaitOptionMulti(['Quick', 'uick'], 800);
wait(10000);
ClickNorth(SRL_ANGLE_HIGH);
break;
end;
end;
end;
until (false);
end.