DevilCheater
2007-06-15 15:11:51
DevilCheater - SRL Member Application Form
DevilCheater
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
Programming Knowledge
Other Communitys
How Long have You Played Runescape
Are you affilated in anyway with Jagex LTD?
No Comment
—————————————————–
Please write down a paragraph about Yourself.
Little bit rewrote the script I tried to get in last time …. Better Looking main loop and antibann ;)
+ Not i can show 2 more scripts i wrote
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
My flax spinner
// Start logged out with full bag of flax in lumby bank
// Fill lines 15 - 20. Dont forget to declare players
Program DevilFlaxSpinner;
{.include srl/srl.scar }
var BankSymbolColor, MMStairColor, Ix, Iy, TimeMarker, I, FlaxColor: integer;
XpGained, BsMade, TotalBsMade, BsToMake, DoorsOpened: integer;
Procedure Parameters;
begin
BankSymbolColor := 0; // If script cant detect bank color , add it here . Leave 0 for autocoloring
MMStairColor := 0; // Leave 0 for autocolor
BsToMake := 280 // How many Bs to make before switching players
SRLID := '';
SRLPassword := '';
end;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
end;
procedure ClearVars;
var
I: Integer;
begin
for I := 0 to 4 do
ReportVars[i] := 0;
end;
Procedure AntiBann;
Begin
I := Random(25);
case I of
1: HoverSkill('random', false);
2: PickUpMouse;
//3: DragItem(2, 1+Random(18));
4: GameTab(1 + Random(12));
5: begin
Ix := Random (500);
Iy := random (500);
MMouse (Ix, Iy, 10 , 10)
end;
end;
end;
function UpgradeColor(color: integer): integer;
var
I: integer;
begin
for I := 1 to 30 do
if FindColorTolerance(Ix, Iy, Color, msx1, msy1, msx2, msy2, I) then
begin
Result := GetColor(Ix, Iy)
Break;
end;
end;
Function FindFastRandoms: Boolean;
var
i: Integer;
begin
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
for i:=1 to 8 do
begin
case I of
1: If FindDead then
Result := True;
2: If FindMod then
Result := True;
3: If FindMime then
Result := True;
4: If FindMaze then
Result := True;
5: If FindQuiz then
Result := True;
6: If FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
end;
wait(1);
end;
end;
Procedure GetBankSymbolColor;
Begin
If BankSymbolColor = 0
then BankSymbolColor := GetSymbolColor(Ix, Iy, 'bank');
If BankSymbolColor = 0 then
begin
writeln ('Cant find bank symbol color, add it manually')
TerminateScript;
end;
end;
function Floor3: boolean;
begin
Result := FindColor(Ix, Iy, BankSymbolcolor, mmx1, mmy1, mmx2, mmy2)
end;
procedure MakeScreenPerfect;
begin
if not LoggedIn then exit;
MarkTime(TimeMarker)
if GetColor(653, 117) = 0 then
KeyDown(37)
else
KeyDown(39);
repeat
wait(1);
until (GetColor(655, 106) = 0) and (GetColor(655, 135) = 0) and (GetColor(655,
145) = 0) and (GetColor(653, 117) <> 0)
or (TimeFromMark(TimeMarker) > 30000)
Keyup(37);
KeyUp(39);
if TimeFromMark(TimeMarker) > 30000 then
begin
writeln('MakeScreenPerfect did not work ! .. ');
MakeCompass('S');
end;
end;
Procedure AutoColorStair;
begin
for I := 1 to 50 do
if FindColorTolerance(Ix, Iy, 731993, mmx1, mmy1, mmx2, mmy2, I) then
begin
MMStairColor := GetColor(Ix, Iy);
break;
end;
If MMStairColor = 0 then
begin
writeln ('Cant find stair color , add it manually')
TerminateScript;
end;
end;
function ClickStair: boolean;
var
Ix2, Iy2: integer;
begin
if not LoggedIn then exit;
If MMStairColor = 0 then AutoColorStair;
if FindColor(Ix2, Iy2, MMStairColor, mmx1, mmy1, mmx2, mmy2) then
Mouse(Ix2, Iy2, 2, 2, True)
Wait(100 + random(50));
if FindColor(Ix, Iy, 255, mmx1, mmy1, mmx2, mmy2) then
begin
if Distance(Ix2, Iy2, Ix + 1, Iy + 15) - 2 <= 10 then
Result := true
else
begin
writeln(' Doors are closed ... Walking to doors now');
Flag;
end;
end;
end;
function FindObjMultiText2(var cx, cy: Integer; Ut1, UT2, UT3: string; color,
tolerance, waitx: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
Color := UpgradeColor(Color);
if (FindColorTolerance(x, y, color, msx1, msy1, msx2, msy2, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
Break;
a := a + 1;
if (a = 1) or (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end
else if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end
else if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end
else if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, Color, x1, y1, x2, y2, tolerance)) then
begin
MMouse(x, y, 0, 0)
cx := x;
cy := y;
Wait(waitx);
if (IsUpTextMulti(UT1, UT2, UT3)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
procedure ClimbDown;
begin
if not LoggedIn then
exit;
if (FindObjMultiText2(Ix, Iy, 'Cl', 'ca', 'Sta', 10043, 5, 100)) then
begin
Mouse(Ix, Iy, 0, 0, False);
ChooseOption(Ix, Ix, 'own');
end;
end;
procedure ClimbUp;
begin
if not LoggedIn then
exit;
if (FindObjMultiText2(Ix, Iy, 'Cl', 'ca', 'Sta', 6693, 5, 100)) then
begin
Mouse(Ix, Iy, 0, 0, False);
ChooseOption(Ix, Ix, 'up');
end;
end;
function ClickInRoom: boolean;
begin
if not LoggedIn then
exit;
Mouse(636 - 2, 111, 1, 1, True);
Wait(100 + random(50));
if FindColor(Ix, Iy, 255, mmx1, mmy1, mmx2, mmy2) then
begin
if Distance(637, 111, Ix + 1, Iy + 15) - 2 <= 3 then
Result := true
else
begin
writeln('Doors are closed ... Walking to doors now');
Flag;
exit;
end;
end;
end;
function OpenDoors: boolean;
begin
if not LoggedIn then
exit;
MarkTime(TimeMarker)
if not LoggedIn then
Exit;
MakeCompass('S')
repeat
if FindObjMultiText2(Ix, Iy, 'Do', 'or', 'oo', 2509163, 3, 100) then
begin
Wait(100 + random(100));
if IsUpTextMulti('Op', 'pen', 'Open') then
begin
Mouse(Ix, Iy, 0, 0, True);
Result := True;
exit;
end;
if IsUpTextMulti('lose', 'Close', 'Cl') then
begin
Result := true
exit;
end;
end;
wait(1000 + random(1000));
until TimeFromMark(TimeMarker) > 10000
Writeln('Did not find door ');
end;
Procedure GetFlaxColor;
Begin
GameTab (4);
FlaxColor := GetColor (584, 229);
end;
Function LevelGained: boolean;
Begin
Result := FindNpcChatText('ongr');
end;
Function FindWheel: Boolean;
Var
LittleMarker: integer;
begin
If not LoggedIn then exit;
MarkTime(LittleMarker);
Repeat
if GetColor(44, 37) = 3358280 then exit;
if FindObjMultiText2(Ix, Iy, 'wh', 'el', 'Sp', 871280, 3, 100) then
Begin
Mouse (Ix, Iy, 0, 0, True);
Result := True;
end;
Wait(100+random(100));
If FindFastRandoms then Result := False;
Until Result or (TimeFromMark (LittleMarker) > 7000) or (not LoggedIn)
end;
Function DetectScreen: boolean;
Var
LittleMarker: Integer;
Begin
If Not LoggedIn then exit;
MarkTime (LittleMarker);
Repeat
Wait(100+Random(100));
If FindFastRandoms then exit;
if GetColor(44, 37) = 3358280 then Result := True;
Until Result or (TimeFromMark (LittleMarker) > 5000) or (not LoggedIn)
End;
Function SelectAll: boolean;
Var
LittleMarker: integer;
Begin
If not LoggedIn then exit;
Mouse(265, 112, 3, 3, False);
Wait(500+random(500));
If not ChooseOption(Ix, Iy, ' X') then exit;
MarkTime (LittleMarker);
Repeat
Wait(100+Random(100));
If FindFastRandoms then exit;
Result := GetColor(266, 395) = 0
Until Result or (TimeFromMark(LittleMarker) > 5000) or (not LoggedIn)
If Result then
Begin
wait (500+Random(500));
TypeSend('28' + Chr(13));
end;
end;
Function FindAndSpinn: boolean;
Var
SpecialMarker: integer;
Begin
If Not LoggedIn then exit;
MarkTime (SpecialMarker);
Repeat
If FindWheel then
If DetectScreen then
If SelectAll then Result := True
Wait(1000+random(500));
FindFastRandoms;
FindNormalRandoms;
Until Result or (TimeFromMark (SpecialMarker)> 30000) or (not LoggedIn);
If TimeFromMark (SpecialMarker)> 30000 then
Writeln ('Did not find wheel within 30 sec... Going to bank');
end;
Function NoMoreFlax: boolean;
Begin
Result := not findColor (Ix, Iy, FlaxColor, mix1, miy1, mix2, miy2)
end;
Procedure Spin;
Var
WaitMarker: integer;
begin
If not LoggedIn then exit;
MarkTime(WaitMarker);
If not FindAndSpinn then exit;
Repeat
Wait(1000+random(500));
If FindNormalRandoms or FindFastRandoms or LevelGained then
If not FindAndSpinn then exit;
If FindFight then
begin
writeln ('Found fight.. Running to bank')
exit;
end;
AntiBann;
GameTab (4);
Until NoMoreFlax or (TimeFromMark (WaitMarker) > 80000) or (not LoggedIn)
end;
function MyBankScreen: boolean;
begin
Result := IsTextAtEx(184, 34, 'The Bank', 30, upchars, True, False, 0, 0,
-1);
end;
function FindBank2(Colors: integer): boolean;
var
I: integer;
begin
if not LoggedIn then
exit;
if MyBankScreen then
exit;
if (FindObjMultiText2(Ix, Iy, 'Us', 'Ba', 'Boo', Colors, 5, 200)) then
begin
Mouse(Ix, Iy, 0, 0, false);
if (ChooseOption(x, y, 'qui')) or (ChooseOption(x, y, 'kly')) then
begin
Flag;
i := 0
repeat
Wait(100);
I := I + 1
until (MyBankScreen) or (I > 50)
if (MyBankScreen) then
begin
if not (Getcolor(475, 75) = 5531254) then
Mouse(475, 77, 2, 0, true);
Result := True
Exit;
end;
end;
end;
end;
Procedure Bank;
Begin
If not FindBank2 (2707804) then
If not FindBank2 (3625825) then
Begin
Writeln ('Did not find Bank');
Players[CurrentPlayer].Active := false
Logout;
exit;
end;
Mouse (586, 230, 2, 2, False);
wait(500+random(500));
ChooseOption (Ix, Iy, 'All');
BsMade := BsMade +28;
ReportVars[0] := ReportVars[0] + 28;
XpGained := BsMade * 15;
ReportVars[3] := ReportVars[3] + 28 * 15;
TotalBsMade := TotalBsMade + BsMade;
If FindColor (Ix, Iy, FlaxColor, msx1, msy1, msx2, msy2) then
Begin
Mouse (Ix, Iy, 2, 2, False);
Wait(500+random(500));
ChooseOption (Ix, Iy, 'All');
end else
Begin
Writeln ('Did not find flax .. make sure its in top of the bank ');
If MyBankScreen then Mouse (487, 41, 2, 2, True);
Logout;
Players[CurrentPlayer].Active := false;
exit;
end;
If MyBankScreen then Mouse (487, 41, 2, 2, True);
end;
Procedure ToWheel;
Begin
If Not LoggedIn then exit;
MakeCompass('S');
SetRun(true);
ClickStair;
Flag;
wait(1000+random(500));
MarkTime (TimeMarker);
repeat
ClimbDown;
Wait(1000 + random(500))
repeat
wait(100 + random(10));
until GetColor(200, 148) <> 16777215
wait(1000+random(500));
until (not Floor3) or (TimeFromMark(TimeMarker) > 30000) or (not LoggedIn)
If TimeFromMark(TimeMarker) > 30000 then
begin
writeln('Cant find stairs ');
Logout;
Players[CurrentPlayer].Active := false;
exit;
end;
Wait(1000+Random(500));
MakeScreenPerfect;
if not ClickInRoom then
begin
OpenDoors;
DoorsOpened := DoorsOpened + 1;
ReportVars[1] := ReportVars[1] + 1;
end;
Flag;
end;
Procedure ToBank;
Begin
If not LoggedIn then exit;
MakeCompass('S');
if not ClickStair then
begin
OpenDoors;
DoorsOpened := DoorsOpened + 1;
ReportVars[1] := ReportVars[1] + 1;
wait(500 + random(500));
if findColor(Ix, Iy, MMStairColor, mmx1, mmy1, mmx2, mmy2) then
Mouse(Ix, Iy, 2, 2, True)
end;
Flag;
wait(500 + random(500))
MarkTime(TimeMarker);
repeat
ClimbUp;
Wait(1000 + random(300))
repeat
wait(100 + random(10));
until GetColor(200, 148) <> 16777215
Wait(1000+random(500));
until (Floor3) or (TimeFromMark(TimeMarker) > 30000) or (not LoggedIn)
if TimeFromMark(TimeMarker) > 30000 then
begin
writeln('Cant find stairs ');
Logout;
Players[CurrentPlayer].Active := false;
exit;
end;
Mouse(632, 130, 3, 0, True);
flag;
wait(500 + random(500));
end;
procedure ProgressReport;
begin
Writeln(' ');
writeln('--------PROGRESS REPORT--------');
Writeln('Total time Running: ' + TimeRunning);
Writeln('Bow strings made: ' + inttostr(TotalBsMade));
Writeln('Xp gained: ' + inttostr(XpGained));
Writeln('Doors opened: ' + inttostr (DoorsOpened));
Writeln('--------PROGRESS REPORT--------');
Writeln(' ');
SRLRandomsReport;
end;
Procedure SetUpScript;
Begin
SetUpsrl;
DeclarePlayers;
ActivateClient;
ScriptID := '172'
end;
begin
SetUpScript;
If not LoggedIn then LoginPlayer;
GetFlaxColor;
Parameters;
GetBankSymbolColor;
Repeat
BsMade := 0;
Repeat
ToWheel;
Spin;
ToBank;
Bank;
ProgressReport;
SendSRLReport;
ClearVars;
Until (BsMade>=BsToMake) or (not LoggedIn)
NextPlayer (True);
Until False;
end.
My fire rune crafter . Some persons told me to use radial walk , but i cant figure out how can i make radial click + 5 x + 10 y
Few said to not use coords , but there are nowhere else to click becouse of the sand only around …
// Always put on tiara or put talisman in fist inventory slot
// Rune essence in first bank slot
// Fill lines 14 -20
Program DevilFireCrafter;
{.include srl/srl.scar }
{.include SRL/SRL/misc/amount.scar}
Var Ix, Iy, BagsCrafted, RunesCrafted, Xpgained, JustCrafted: integer;
Const
RockColor = 4943254; // Make sure its not the same as tree color
Ladder = 1589609;
Cactus= 4884567;
BagsOfRunesToCraft = 10;
VersionNumber = '1.0'; // no need to change this
YourSRLSTATSID = ''; // Stats ID.
YourSRLSTATSPASS = ''; // Stats Pass.
procedure DeclarePlayers;
begin
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Boolean1 := False; // Tiara ? False for Talisman
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active := True;
Players[0].Boolean1 := False; // Tiara ? False for Talisman
end;
Procedure Lost;
begin
Writeln ('Lost while walking ... Switching players');
Logout;
Players[CurrentPlayer].Active := false;
end;
function FindColorLeft(var Ix, Iy: integer; Color, X1, Y1, X2, Y2: Integer):
boolean;
var
I: Integer;
begin
for I := X1 to x2 do
begin
if findcolor(Ix, Iy, Color, I, y1, I, y2) then
begin
Result := true;
Exit;
end;
end;
end;
Function PresiseFlag: boolean;
Var
I: integer;
Begin
for I := mmx2 downto mmx1 do
if findcolor(Ix, Iy, Cactus, I, mmy1, I, mmcy) then
begin
Mouse (Ix-20, Iy+5, 2, 2, True)
Result := true;
Break;
end;
end;
Function ClickMoustRightCactus: Boolean;
Var
I: integer;
Begin
for I := mmx2 downto mmx1 do
if findcolor(Ix, Iy, Cactus, I, mmy1, I, mmy2) then
begin
Mouse (Ix-10, Iy-10, 2, 2, True)
Result := true;
Break;
end;
end;
Function ClickMoustRightRock: Boolean;
Var
I: integer;
Begin
for I := mmx2 downto mmx1 do
if findcolor(Ix, Iy, RockColor, I, mmy1, I, mmy2) then
begin
Mouse (Ix+3, Iy-1, 2, 2, True)
Result := true;
Break;
end;
end;
Procedure WalkToAltar;
begin
If not LoggedIn then exit;
SetRun (true);
MakeCompass ('N');
If findColor (Ix, Iy, RockColor , mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix+10, Iy-10, 2, 2, True)
else begin Lost; Exit; end;
wait(2000+random(500));
FFlag (5);
If not ClickMoustRightCactus then Mouse (668, 42, 2, 2, True)
wait(2000+random(500));
FFlag(5);
If findColor (Ix, Iy, Ladder, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix, Iy-10, 2, 2, True)
else Mouse (661, 37, 2, 2, True);
wait(3000+random(500));
Fflag(5);
Mouse (648, 63, 2, 2, True);
Fflag(5);
If findColor (Ix, Iy, RockColor, mmcx, mmy1, mmx2, mmy2)
then Mouse (Ix+5, Iy, 2, 2, True)
else begin Lost; Exit; end;
wait(10000+random(500));
Fflag(5);
If not ClickMoustRightRock then begin Lost; Exit; end;
Wait(6000+random(500));
Fflag(5);
Mouse (648, 41, 2, 2, True)
Fflag(10);
Mouse (645, 36, 2, 2, True);
FFlag(15);
If not PresiseFlag then begin Lost; Exit; end;
Flag;
FindNormalRandoms;
end;
Procedure ToBank;
begin
If not LoggedIn then exit;
FindNormalRandoms;
SetRun (true);
MakeCompass ('S');
Mouse (654, 30, 2, 2, true);
Fflag(7);
If findColorLeft (Ix, Iy, RockColor, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix, Iy-5, 2, 2, True)
else begin Lost; Exit; end;
wait(3000+random(500));
Fflag(10);
Mouse (664, 54, 2, 2, True)
Fflag(10);
If findColor (Ix, Iy, RockColor, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix, Iy-5, 2, 2, True)
else begin Lost; Exit; end;
Wait(3000+random(500));
Fflag(5);
If findColor (Ix, Iy,Cactus, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix+5, Iy-5, 2, 2, True)
else begin Lost; Exit; end;
wait(7000+random(500));
Fflag(10);
If findColor (Ix, Iy,Cactus, mmcx, mmy1, mmx2, mmy2)
then Mouse (Ix+5, Iy, 2, 2, True)
else begin Lost; Exit; end;
wait(7000+random(500));
Fflag(10);
If findColor (Ix, Iy, RockColor, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix-5, Iy, 2, 2, True)
else begin Lost; Exit; end;
wait(3000+random(500));
Fflag(10);
If findColor (Ix, Iy, RockColor, mmx1, mmy1, mmx2, mmy2)
then Mouse (Ix+10, Iy-20, 2, 2, True)
else begin Lost; Exit; end;
wait(3000+random(500));
Flag;
wait(1000+random(500));
FindNormalRandoms;
end;
function FindObjMultiText2(var cx, cy: Integer; Ut1, UT2, UT3: string; color,
tolerance: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
Color := Color;
if (FindColorTolerance(x, y, color, msx1, msy1, msx2, msy2, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
Break;
a := a + 1;
if (a = 1) or (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end
else if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end
else if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end
else if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, Color, x1, y1, x2, y2, tolerance)) then
begin
MMouse(x, y, 0, 0)
Wait(10);
cx := x;
cy := y;
if (IsUpTextMulti(UT1, UT2, UT3)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
Function MyBankScreen: boolean;
Begin
Result := GetColor (486, 41) = 65536;
end;
function MyOpenBank(Colors: integer): boolean;
Var TimeMarker: integer;
begin
if not LoggedIn then exit;
if MyBankScreen then exit;
if (FindObjMultiText2(Ix, Iy, 'Us', 'Ba', 'Boo', Colors, 3)) then
begin
Mouse(Ix, Iy, 0, 0, false);
if (ChooseOption(x, y, 'qui')) or (ChooseOption(x, y, 'kly')) then
begin
Flag;
MarkTime (TimeMarker);
repeat
Wait(100);
until (MyBankScreen) or (TimeFromMark (TimeMArker)>7000)
if (MyBankScreen) then
begin
if not (Getcolor(475, 75) = 5531254) then
Mouse(475, 77, 2, 0, true);
Result := True
Exit;
end;
end;
end;
end;
Procedure BankFinder;
begin
If not LoggedIn then exit;
FindNormalRandoms;
if not MyOpenBank (606035) then
If not MyOpenBank (5593184) then
Begin
writeln ('Did not find bank')
Logout;
Players[CurrentPlayer].Active := false;
end;
end;
Procedure DepositAndWindraw;
begin
If not Players[CurrentPlayer].boolean1 then Mouse (628, 230, 2, 2, False)
else mouse (586, 226, 2, 2, False)
wait(300+random(200));
ChooseOption (Ix, Iy, 'All')
wait(300+random(200));
Mouse (93, 77, 2, 2, False);
wait(300+random(200));
ChooseOption (Ix, Iy, 'All')
If GetColor (486, 42) = 65536 then Mouse (486, 42, 2, 2, True)
end;
Function InsideRuins: boolean;
Begin
Result := not findColor (Ix, Iy, cactus, mmx1, mmy1, mmx2, mmy2)
end;
Procedure GetInsideRuins;
Var
TimeMarker, TimeMarker2: integer;
begin
If not LoggedIn then exit;
FindNormalRandoms;
GameTab (4);
If not Players[CurrentPlayer].boolean1 then Mouse (584, 225, 2, 2, True)
MarkTime (TimeMarker2)
Repeat
If FindObjMultiText2(Ix, Iy, 'My', 'st', 'te', 5789535, 5) then
Begin
Mouse (Ix, Iy, 0, 0, True);
MarkTime (TimeMarker)
Repeat
Wait(100);
Until (InsideRuins) or (TimeFromMark(TimeMarker)>5000)
If InsideRuins then exit;
end;
Until (TimeFromMark (TimeMarker2) > 30000)
Writeln ('Did not find ruins');
Logout;
Players[CurrentPlayer].Active := false;
end;
Procedure FindAltar;
Var
TimeMarker: integer;
begin
If not LoggedIn then exit;
FindNormalRandoms;
GameTab (4);
MarkTime (TimeMarker);
Repeat
If FindObjMultiText2(Ix, Iy, 'Cra', 'Alt', 'rune', 5000789, 5) then
begin
Mouse (Ix, Iy, 0, 0, True);
wait(3000+random(500));
exit;
end;
wait(1000+random(100));
Until TimeFromMark(Timemarker)> 30000
Writeln ('Did not find altar')
Logout;
Players[CurrentPlayer].Active := false;
end;
Procedure EnterPortal;
Var
TimeMarker, TimeMarker2: integer;
begin
If not LoggedIn then exit;
FindNormalRandoms;
MarkTime (TimeMarker2)
Repeat
If FindObjMultiText2(Ix, Iy, 'Po', 'tal', 'ort', 1460682, 5) then
Begin
Mouse (Ix, Iy, 0, 0, True);
MarkTime (TimeMarker)
Repeat
Wait(100);
Until (not InsideRuins) or (TimeFromMark(TimeMarker)>5000)
If not InsideRuins then exit;
end;
wait(1000+random(500));
Until (TimeFromMark (TimeMarker2) > 30000)
Writeln ('Did not find portal');
Logout;
Players[CurrentPlayer].Active := false;
end;
Procedure GetCloseAltar;
begin
FindNormalRandoms;
Mouse (678, 127, 2, 2, True)
wait(3000+random(500));
Flag;
end;
Procedure GetClosePortal;
begin
FindNormalRandoms;
Mouse (624, 54, 2, 2, True);
wait(3000+random(500));
Flag;
end;
Procedure SetUpScript;
begin
SetUpSrl;
ScriptID := '178'
SRLID := YourSRLstatsID;
SRLPassword := YourSRLstatsPASS;
DeclarePlayers;
ActivateClient;
end;
procedure ProgressReport;
begin
Writeln(' ');
writeln('-------PROGRESS REPORT-------');
Writeln('Total time Running: ' + TimeRunning);
Writeln('bags of runes crafted: ' + inttostr(BagsCrafted));
writeln('Runes Crafted: ' + inttostr(RunesCrafted));
writeln ('Xp gained: ' + inttostr(XpGained));
Writeln('-----------------------------');
Writeln(' ');
ReportVars[0] := ReportVars[0] + 1;
ReportVars[1] := ReportVars[1] + JustCrafted*17;
ReportVars[2] := ReportVars[2] + JustCrafted;
SRLRandomsReport;
SendSRLReport;
end;
procedure ClearVars;
var
I: Integer;
begin
for I := 0 to 3 do
ReportVars[i] := 0;
end;
Procedure Count;
begin
GameTab (4);
BagsCrafted := BagsCrafted + 1;
JustCrafted := GetAmount (611, 212) + GetAmount (569, 212) -2
RunesCrafted := RunesCrafted + JustCrafted;
XpGained := RunesCrafted*7
end;
Begin
SetUpScript;
If not LoggedIn then loginplayer;
Repeat
BagsCrafted := 0;
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
Repeat
Count;
WalkToAltar;
GetInsideRuins;
GetCloseAltar;
FindAltar;
GetClosePortal;
EnterPortal;
ToBank;
Count;
BankFinder;
DepositAndWindraw;
ProgressReport;
ClearVars;
Until (not LoggedIn) or (BagsCrafted = BagsOfRunesToCraft)
NextPlayer (true);
Until False;
end.
Finnaly my last script - Ranger
// Start with bow and arraws u are using equiped / Auto retaliate on !
// Use in multi fight area !
Program RangerX;
{.include srl/srl.scar }
{.include srl/srl/misc/amount.scar }
{.include srl/srl/skill/ranging.scar }
Var Ix, Iy, I, CorrentArrowAmount, EatMarker, TimeWorked, Attacked, ProgressMarker, SpecialRandomMarker: integer;
Const
YourSRLID = '';
YourSRLPassword = '';
MonsterName = 'Wo'; // Part of NPC name
MonsterName2 = 'lf';
MonsterName3 = 'Mino';
MonsterColor = 7436156; // Script will look for this color the moust
MonsterColor2 = 8556174;
MonsterColor3 = 7700608;
Tol = 3; // Tolerance ... Change only if necesery
UseAntiBann = False; // Use anti bann ? Will work faster without it
PickUp = True; // Pick Up arrows ?
TimeToPickUp = 15; // How many secounds to pick up arrows?
Eat = True; // Use food / Eat ?
EatHp = 13; // Hp left when start to eat ?
FoodColor= 873133; // Food Color here
FoodLogout = True; // Logout when out of food ?
CheckHpEvery = 15; // How many secounds to wait before checking HP again
AttackStyle ='Rapid'; // Rapid , Longrange, Accurate
MaximumLenghOfFigh = 60; // Maximum fight lengh in secouns ...
//Will run away and come back if fight will take more time. To beat of fighting randoms !
RunDir = 'N'; //Wich way to run in case the evil chinken is detected ?
TimeToWork = 30; // How many minutes to work before switching players
SpeedOfMouse =5; // Mouse Speed ?
ProgressReportEvery = 1; // How many minutes to wait between reports ?
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
end;
Function FindFastRandoms: Boolean;
var
i: Integer;
begin
for i:=1 to 8 do
begin
case I of
1: If FindDead then
Result := True;
2: If FindMod then
Result := True;
3: If FindMime then
Result := True;
4: If FindMaze then
Result := True;
5: If FindQuiz then
Result := True;
6: If FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
end;
wait(1);
end;
end;
Procedure SpecialRandoms;
Begin
If SpecialRandomMarker = 0 then MarkTime (SpecialRandomMarker);
If TimeFromMark (SpecialRandomMarker) > 15000 then
Begin
FindNormalRandoms;
MarkTime (SpecialRandomMarker);
end;
end;
function FindObjMultiText2(var cx, cy: Integer; Ut1, UT2, UT3: string; color,
tolerance: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
if (FindColorTolerance(x, y, color, msx1, msy1, msx2, msy2, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
Break;
a := a + 1;
if (a = 1) or (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end
else if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end
else if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end
else if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, Color, x1, y1, x2, y2, tolerance)) then
begin
MMouse(x, y, 0, 0)
Wait(100+random(100));
cx := x;
cy := y;
if (IsUpTextMulti(UT1, UT2, UT3)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
procedure RealEatIfNeeded(foodcolor, eathp: Integer; foodlogout: Boolean);
begin
if (GetHp <= EatHp) and (FoodColor >= 0) then
begin
GameTab(4);
Wait(10 + Random(20));
if (FindColorTolerance(Ix, Iy, foodcolor, mix1, miy1, mix2, miy2, 2)) then
Begin
Mouse(Ix + 5, Iy + 10, 3, 3, True);
wait(100+random(100));
end
else
begin
if (FoodLogout) then
begin
Writeln ('No more food');
Logout;
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
Function Attack: boolean;
Var
Color: integer;
begin
For I := 1 to 3 Do
Begin
Case I Of
1: Color := MonsterColor;
2: Color := MonsterColor2;
3: Color := MonsterColor3;
End;
If FindObjMultiText2 (Ix, Iy, MonsterName, MonsterName2, MonsterName3, Color, Tol) then
Begin
Mouse (Ix, Iy, 0, 0, False);
If ChooseOption (Ix, Iy, 'Att') then
Begin
Result := True;
Attacked := Attacked + 1;
ReportVars[0] := ReportVars[0] + 1;
Break;
End;
End;
End;
End;
Function InFights: boolean;
var
InFightMarker: integer;
begin
If not LoggedIn then exit;
CorrentArrowAmount := ArrowAmount;
MarkTime (InFightMarker);
Repeat
Wait(100+random(10));
If ArrowAmount < CorrentArrowAmount then
Begin
Result := True;
Break;
end;
FindTalk;
Until (TimeFromMark (InFightMarker) > 5000) or (not LoggedIn)
end;
Procedure EquipArrowss;
var
Ix, Iy: Integer;
begin
If FindInvArrows(Ix, Iy) then
Begin
Wait(100 + Random(250));
Mouse(Ix+15, Iy+15, 2, 2, True);
end;
end;
Procedure PickUpArrows;
var
PickUpMarker, FailedAttemps: integer;
Begin
If not LoggedIn then exit;
MarkTime (PickUpMarker);
Repeat
Ix := mscx;
Iy := mscy;
If FindColorSpiralTolerance (Ix, Iy, TailColor, msx1, msy1, msx2, msy2, 1) then
begin
Wait(300+Random(100));
If IsUpTextMulti('arr','rro','ow') then Mouse (Ix, Iy, 1, 1, True) else
Begin
Mouse (Ix, Iy, 2, 2, False);
If ChooseOption (Ix, Iy, 'arrow') then
Begin
wait(100+random(100));
If not FindColor (Ix, Iy, 255, mmx1, mmy1, mmx2, mmy2) then exit;
end
else FailedAttemps := FailedAttemps + 1;
end;
Flag;
FindTalk;
end;
wait(1000+random(500));
Until (TimeFromMark (PickUpMarker) > TimeToPickUp * 1000) or (not LoggedIn)
or (not FindColorSpiralTolerance (Ix, Iy, TailColor, msx1, msy1, msx2, msy2, 1))
or (FailedAttemps > 1);
end;
Procedure CheckHPIfNeeded;
Begin
If not LoggedIn then exit;
If not Eat then exit;
If EatMarker = 0 then MarkTime (EatMarker);
If TimeFromMark (EatMarker) > CheckHpEvery*1000 then
Begin
RealEatIfNeeded (foodcolor, eathp, foodlogout);
MarkTime (EatMarker);
end;
end;
Function Dead: boolean;
begin
Result := FindSymbol(Ix, Iy, 'water')
and FindSymbol(Ix, Iy, 'quest')
end;
Function LevelGained: boolean;
Begin
Result := FindNpcChatText('ongr');
end;
Function NoMoreArrows: boolean;
Begin
Result := ArrowAmount < 2;
end;
Procedure AntiBann;
Begin
I := Random(35);
case I of
1: HoverSkill('random', false);
2: PickUpMouse;
3: DragItem(2, 1+Random(18));
4: GameTab(1 + Random(12));
5: begin
Ix := Random (500);
Iy := random (500);
MMouse (Ix, Iy, 10 , 10)
end;
6: wait(1000+random(100));
7: Begin
GetMousePos (Ix, Iy);
MMouse (Ix, Iy, 5, 5);
end;
8: HoverSkill('range', false);
9: Begin
I := random (4);
Case I Of
0: MakeCompass ('N');
1: MakeCompass ('S');
2: MakeCompass ('W');
3: MakeCompass ('E');
end;
end;
10: HoverSkill('hitpoints', false);
11: RandomRClick;
12: AlmostLogout;
end;
end;
Procedure RangerX;
var
AttackMarker: integer;
begin
If not LoggedIn then exit;
MarkTime (AttackMarker);
Repeat
If Attack then break else
Begin
I := Random (5);
Case I of
0: MakeCompass ('N');
1: MakeCompass ('S');
2: MakeCompass ('W');
3: MakeCompass ('E');
4: wait (2500+Random(500));
end;
End;
Until (TimeFromMark (AttackMarker) > 120000) or (not LoggedIn);
If TimeFromMark (AttackMarker) > 120000 then
Begin
Writeln ('Did not find NPC within 2 min >>> Logging out');
Logout;
Players[CurrentPlayer].Active := false;
exit;
end;
MarkTime (AttackMarker);
Repeat
CheckHpIfNeeded;
FindFastRandoms;
SpecialRandoms;
If UseAntiBann then AntiBann;
Until (not LoggedIn) or (Dead) or (TimeFromMark (AttackMarker) > MaximumLenghOfFigh * 1000) or (NoMoreArrows)
or (not InFights) or (LevelGained)
If Dead Then
Begin
Writeln ('Found water and quest symbols - We are dead now - Logging out');
Logout;
Players[CurrentPlayer].Active := false;
exit;
end;
If TimeFromMark (AttackMarker) > MaximumLenghOfFigh * 1000 then
Begin
Writeln ('Fight took too long ... It could be evil chicken ... Running away');
RunTo(RunDir, False);
end;
If PickUp then
Begin
PickUpArrows;
EquipArrowss;
End;
If NoMoreArrows then
Begin
Writeln ('No more arrows. Logging out');
Mouse (650, 484, 2, 2, True);
wait(1000+random(500));
Mouse (640, 376, 4, 4, True);
wait(100+random(100));
If InChatMulti('You can', 'until', 'the combat') then
Begin
Writeln ('We are still in fight ?');
RunAwayDirection (RunDir);
Logout;
end;
Players[CurrentPlayer].Active := false;
exit;
end;
end;
Procedure SelectAttackStyle;
Begin
GameTab (1);
Case AttackStyle of
'Rapid': Mouse (690, 272, 5, 5, True);
'Longrange': Mouse (609, 327, 5, 5, True);
'Accurate': Mouse (606, 271, 5, 5, True);
end;
end;
procedure ProgressReport;
begin
If ProgressMarker = 0 then MarkTime (ProgressMarker);
If TimeFromMark (ProgressMarker) > ProgressReportEvery * 60 * 1000 then
Begin
MarkTime (ProgressMarker);
Writeln(' ');
writeln('--------PROGRESS REPORT--------');
Writeln('Total time Running: ' + TimeRunning);
Writeln('Attacked : ' + inttostr (Attacked) + ' times');
Writeln('--------PROGRESS REPORT--------');
Writeln(' ');
SRLRandomsReport;
SendSRLReport;
ReportVars[0] := 0;
end;
end;
Procedure SetUp;
Begin
SetUpsrl;
MouseSpeed := SpeedOfMouse;
DeclarePlayers;
ActivateClient;
ScriptID := '195'
If YourSRLID <> '' then
Begin
SRLID := YourSRLID;
SRLPassword := YourSRLPassword;
end;
end;
begin
SetUp;
Repeat
If Not LoggedIn then LoginPlayer;
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
GetArrowColor;
SelectAttackStyle;
MarkTime (TimeWorked);
Repeat
RangerX;
ProgressReport;
Until (not LoggedIn) or (TimeFromMark (TimeWorked) > TimeToWork * 60 * 1000);
If TimeFromMark (TimeWorked) > TimeToWork * 60 * 1000 then
Begin
writeln ('Time over .. Switing players');
Logout;
end;
If not LoggedIn then NextPlayer (true);
Until not LoggedIn
end.
I hope quantity is more important than quality , joke :D
——————————————————
<!– END TEMPLATE: formanswers –>
