n3ss3s
2007-08-07 14:17:50
However, I feel like posting it, but since its not ready and this is kinda my millenium post, I wont post it to SRL Member scripts.
Comment plz so I can finish it some day. (note I first started making this, then took a break to make lumby castle alcher(half way), then got better idea to make clarion v0.7 (half way) and then SB made the new scripting competition which I gotta concentrate on.
However, please post constructive critic and so on. If there are noobish/foolish/stoopid things in the script, think that I was about to put/correct them when its being finished.
And this is my longest script too.
{.Script Info:
# ScriptName = DETA - DraynorExTremenator
# Author = n3ss3s
# Description = Chops willows, fishes , makes fire, cooks, banks in draynor.
# Version = 1
# Date = -- -- ----
# Comments =
/Script Info}
program DraynorExTremenator; // DETA
{.include SRL/SRL.scar}
{.include SRL/SRL/Misc/PlayerForm.scar}
{.include SRL/SRL/Skill/WoodCutting.scar}
{.include SRL/SRL/Skill/Fighting.scar}
{.include SRL/SRL/Skill/Firemaking.scar}
{.include SRL/SRL/Skill/Fishing.scar}
{.include SRL/SRL/Extended/xAutoTalk.scar}
// IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
// Remove lines 64- 68 from SRL/SRL/Skill/Fishing.scar!!!!
// Make SRL/SRL/Core/Login.scar line 28 look like below
// Result := (GetColor(425, 480) = 16777215); //
{
CREDITS AND CRAP:
1. SRL Team ofcourse.
2. KYAB(solarwind) for not working for a moment, that made me make this script=)
3. Jagex, yes you heard right. Without Jagex, I couldnt use same DTM for anchovy
and shrimp, and the cooked versions of those two!! :O =D
4. FindFastRandoms is fawkis.
5. If I've forgot someone, post in the release thread.
6. Some credits are in the end of names of procedures.
7. Special thx to Doofy for making my ent checking possible by creating
SetMiniMapAngle.
[ Instructions. ]
[=========================================================================]
[ 1. USE Runescape with Low Detail, Very Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Drag crosshair, hit play and setup the players in the form... ]
[=========================================================================}
// Const ////////////
const
UrPin = '1234'; // Bank pin. If you dont have one, dont change.
StartPlayer = 0; // U know it..
SpareAxes = True; // Recommended to have more axes in bank slot 1.
WieldAxe = 3; // 3 for axe in inventory, 2 for wielded...
DisuiseTo = 'Dont look here!'; // lol
/////////////////////
// NON SCRIPTERS DO NOT GO BELOW!!! //
// NON SCRIPTERS DO NOT GO BELOW!!! //
// NON SCRIPTERS DO NOT GO BELOW!!! //
// NON SCRIPTERS DO NOT GO BELOW!!! //
// NON SCRIPTERS DO NOT GO BELOW!!! //
// VARIABLES //
// Bitmaps ///////////////////////
var
bmpRocks: Integer;
// DTMS
var
dtmFish: Integer;
dtmDTMM: Integer;
// Time marks
var
SomeMark: Integer;
PlayMark: Integer;
// General integers, floats, bool...
var
Fired: Integer;
ISMno: Integer;
WiAngle: Extended;
Bools: Integer;
// Arrays
var
ISM: array of string;
ABC: array [1..26] of string;
Intro: array[1..5] of string;
Chats: array[1..10] of string;
Saids: array[1..10] of Boolean;
Wc: array [1..3] of Integer;
Fc: array [1..3] of Integer;
NetColors: array [1..3] of Integer;
// Replaced poor ReadLn player setup with PlayerForm...
////////////////////////////////////
// Forwards
function RandomLoggedOut: Boolean; forward;
procedure LoadISM; forward;
procedure Click(Left: Boolean); forward;
////////////////////////////////////////////////////////////////////////
procedure IntRoBot(Text: string; Style: Integer);
// By n3ss3s
var I: Integer;
begin
for I := 1 to Length(Text) do
case Style of
1: begin
ClearDebug;
Writeln(Copy(Text, 1, I));
Wait(50);
end;
2: begin
Writeln(Copy(Text, I, 1));
Wait(50);
end;
3: begin
Writeln(Text);
Break;
end;
end;
end;
procedure SetMiniMapAngle(Degrees: Extended); // Thx to Doofy
var
tmpStartDegrees, StartDegrees, DegreeChange, NeededDegrees: Extended;
TimeHeld, TimeToHold, KeyPressed: Integer;
begin
tmpStartDegrees:= rs_GetCompassAngleDegrees;
SendInterSCARExtended('StartDegrees', tmpStartDegrees);
if (Degrees > tmpStartDegrees) then
begin
MarkTime(KeyPressed);
KeyDown(VK_Right);
Wait(250 + random(250));
TimeHeld:= TimeFromMark(KeyPressed);
KeyUp(VK_Right);
StartDegrees:= ReadInterSCARExtended('StartDegrees');
DegreeChange:= Abs(rs_GetCompassAngleDegrees - StartDegrees);
NeededDegrees:= Abs(Degrees - rs_GetCompassAngleDegrees);
TimeToHold:= Round(Abs((NeededDegrees / DegreeChange) * TimeHeld));
KeyDown(VK_Right);
Wait(TimeToHold);
KeyUp(VK_Right);
end;
if (Degrees < tmpStartDegrees) then
begin
MarkTime(KeyPressed);
KeyDown(VK_Left);
Wait(250 + random(250));
TimeHeld:= TimeFromMark(KeyPressed);
KeyUp(VK_Left);
StartDegrees:= ReadInterSCARExtended('StartDegrees');
DegreeChange:= Abs(StartDegrees - rs_GetCompassAngleDegrees);
NeededDegrees:= Abs(rs_GetCompassAngleDegrees - Degrees);
TimeToHold:= Round(Abs((NeededDegrees / DegreeChange) * TimeHeld));
KeyDown(VK_Left);
Wait(TimeToHold);
KeyUp(VK_Left);
end;
end;
function GetUpTextColors: array of Integer;
var
W, H: Integer;
begin
SetArrayLength(Result, 1);
for H := 4 to 27 do
begin
for W := 4 to 249 do
begin
Result[GetArrayLength(Result)] := GetColor(H, W);
SetArrayLength(Result, GetArrayLength(Result) + 1);
end;
end;
end;
function ColorInUpText(Color: Integer): Boolean;
var
I: Integer;
var
Colors: array of Integer;
begin
Colors := GetUpTextColors;
for I := 0 to GetArrayLength(Colors) do
begin
if(Color = Colors[i])then
begin
Result := True;
Break;
end;
end;
end;
function FlagPresent2: Boolean;
var bmpFlag: Integer;
begin
bmpFlag := BitmapFromString(3, 3, 'z78DA7373330002373009016E182298' +
'0000333D0AD1');
Result := FindDeformed(x, y, bmpFlag, MMX1, MMY1, MMX2, MMY2);
FreeBitmap(bmpFlag);
end;
procedure CompassMMouse(Dx, Dy, RandX, RandY, Degrees, Direction, LowHigh: Integer);
var I, Cx, V, Cy, DirAdj, VertAdj, CMark, SMark: Integer;
Path: TPointArray;
begin
MarkTime(SMark);
GetMousePos(Cx, Cy);
Path := MakeMouseSplinePath(Cx, Cy, Dx, Dy, 7, 50, 40);
repeat
for I := 0 to Degrees / 10 do
begin
DirAdj := Direction;
VertAdj := LowHigh;
case DirAdj of
1: begin
case VertAdj of
1: begin
KeyDown(VK_LEFT);
Wait(1 + random(1));
KeyDown(VK_UP);
Wait(10 + random(5));
KeyUp(VK_UP);
KeyUP(VK_LEFT);
end;
2: begin
KeyDown(VK_LEFT);
Wait(1 + random(1));
KeyDown(VK_DOWN);
Wait(10 + random(5));
KeyUp(VK_DOWN);
KeyUP(VK_LEFT);
end;
end;
end;
2: begin
case VertAdj of
1: begin
KeyDown(VK_RIGHT);
Wait(1 + random(1));
KeyDown(VK_UP);
Wait(10 + random(5));
KeyUp(VK_UP);
KeyUP(VK_RIGHT);
end;
2: begin
KeyDown(VK_RIGHT);
Wait(1 + random(1));
KeyDown(VK_DOWN);
Wait(10 + random(5));
KeyUp(VK_DOWN);
KeyUP(VK_RIGHT);
end;
end;
end;
end;
MarkTime(CMark);
while (TimeFromMark(CMark) < 10) do
begin
try
MMouse(Path[V].x, Path[V].y, RandX, RandY);
V := V + 1;
except
Wait(1 + Random(2));
end;
end;
end;
until (V = GetArrayLength(Path) - 1) or (TimeFromMark(SMark) > 5000);
end;
procedure ImpatiencyEruption(Ms: Integer);
var FL: array[1..12] of Integer;
KMark, F: Integer;
begin
FL[1] := 112;
FL[2] := 113;
FL[3] := 114;
FL[4] := 115;
FL[5] := 116;
FL[6] := 117;
FL[7] := 118;
FL[8] := 119;
FL[9] := 120;
FL[10] := 121;
FL[11] := 122;
FL[12] := 123;
MarkTime(KMark);
while TimeFromMark(KMark) < MS do
begin
try
F := Random(12);
KeyDown(FL[F]);
Wait(50 + Random(20));
KeyUp(FL[F]);
Wait(100 + Random(25));
except
F := Random(10);
end;
end;
end;
function FindFastRandoms: Boolean; //By WT-Fakawi.
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;
7: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
8: RC;
end;
wait(1);
end;
end;
procedure FasterRandoms;
var R: Integer;
begin
for R := 1 to 3 + Random(3) do
begin
case R of
1: FindDemon;
2: SolveBox;
3: FindTalk;
5: if(not(FindFastRandoms))then FindNormalRandoms;
end;
end;
end;
procedure HumanTab2(Tabs, LastTab: Integer);
var RealMouseSpeed, I: Integer;
begin
RealMouseSpeed := MouseSpeed;
MouseSpeed := (7 + Random(3));
for i := 1 to Tabs do
begin
GameTab(1 + random(13));
end;
GameTab(LastTab);
MouseSpeed := RealMouseSpeed;
end;
procedure AntiBottyChat;
var C: Integer;
begin
Chats[1] := 'Is mithril armor lighter than other armors?';
Chats[2] := 'Do things spawn faster in busy worlds?';
Chats[3] := 'Whats the weather like in ur places? Here sunny...';
Chats[4] := 'If there were no ents I would watch tv same time';
Chats[5] := 'What new minigame would you want ppl?';
Chats[6] := 'Willows go down pretty fast';
Chats[7] := 'I hate the molly random... Its hard...';
Chats[8] := 'I wish I had phat...';
Chats[9] := 'It would be nice if you could get 100k from randoms';
Chats[10] := '**** sigh **';
for C := 1 to 10 do
begin
if(Saids[C] = False)then
begin
Saids[C] := True;
TypeSend(Chats[C]);
Break;
end;
end;
end;
procedure NontiBan;
begin
case Random(8) of
1: CompassMMouse(MSCX, MSCX, 200, 200, 180, Random(2), Random(2));
2: BoredHuman;
3: RandomMovement;
4: begin
if (CountColor(16777215, MMX1, MMY1, MMX2, MMY2) > 1) then
begin
case Random(3) of
1: RandomChat;
2: AntiBottyChat;
end;
if (FindChatText('wc')) or (FindChatText('oodcut')) then
begin
SayCurrentLevels('woodcutting');
end;
end;
end;
5: Wait(500 + Random(20));
6: HumanTab2(1 + Random(3), 1 + Random(13));
7: ImpatiencyEruption(1000 + Random(115));
end;
end;
function FindNet(var Nx, Ny: Integer): Boolean;
var
I, C, R, T, D: Integer;
var
F: Boolean;
begin
for T := 1 to 50 do
begin
T := T + 4;
for I := 1 to 4 do
begin
for C := 1 to 10 do
begin
for R := 1 to 3 do
begin
if(FindColorTolerance(x, y, NetColors[R], MSX1, MSY1, MSX2, MSY2, T))then
begin
MMouse(x, y, 0, 0);
if(IsUpText('Small'))then
begin
GetMousePos(Nx, Ny);
try
NetColors[R] := GetColor(x, y);
except
Writeln('Runtime error would come if we´d update a net color');
end;
F := True;
Result := True;
end;
end;
if(F)then
begin
Break;
end;
end;
if(F)then
begin
Break;
end;
end;
if(F)then
begin
Break;
end else
begin
D := Random(10);
SetMiniMapAngle(Rs_GetCompassAngleDegrees + 90.0);
end;
end;
if(F)then
begin
Break;
end;
end;
end;
function Fish: Boolean;
var
FMark, F: Integer;
A, Found, LoopRandomLO: Boolean;
begin
repeat
if(FindSymbol(x, y, 'fish'))then
begin
Mouse(x, y, 3, 3, True);
FFlag(0);
repeat
for F := 1 to 3 do
begin
case F of
1: A := FindColorTolerance(x, y, Fc[F], MSX1, MSY1, MSX2, MSY2, 10);
2: A := FindColorTolerance(x, y, Fc[F], MSX1, MSY1, MSX2, MSY2, 10);
3: A := FindColorTolerance(x, y, Fc[F], MSX1, MSY1, MSX2, MSY2, 10);
end;
Wait(100 + Random(25));
end;
if (A) then
begin
MMouse(x, y, 2, 2);
if (IsUpText('Net')) then
begin
Found := True;
try
Fc[F] := GetColor(x, y);
except
Writeln('Lol, runtime error would´ve come if we´d update color');
Writeln('Well, theres nothing wrong with our colors since we could');
Writeln('Find the fishing spot :)');
end;
Click(True);
MarkTime(FMark);
end;
end;
if(RandomLoggedOut)then
begin
Writeln('*Sigh* Logged out due to a random');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
LoopRandomLO := True;
end;
if(not(LoggedIn)) and (not(RandomLoggedOut)) then
begin
Writeln('We are logged out. Not due to a random.');
Writeln('Player stays active, but nextplayer comes.');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
until (Found) or(LoopRandomLO) or (not(LoggedIn));
end;
while (TimeFromMark(FMark) < 20000) do
begin
try
NontiBan;
Wait(100 + Random(25));
FasterRandoms;
Wait(100 + Random(25));
HandleWhirlPool;
Wait(100 + Random(25));
if(FindFight)then
begin
RunAwayDirection('w');
Wait(8500 + Random(250));
RunBack;
end;
if(not(FindDeformed(x, y, SmallNet, MIX1, MIY1, MIX2, MIY2)))
or(FindNpcChatText('You need a net')) then
begin
FindNet(x, y);
MMouse(x, y, 1, 1);
if(IsUpText('Small'))then
begin
Click(True);
end else
begin
MMouse(x, y, 0, 0);
if(IsUpText('Small'))then
begin
Click(True);
end else
begin
Writeln('Could not find your fishing equipment, changing player');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
end;
end;
except
Writeln('There was some crap in my Antiban and antirandoms');
Writeln('Problem handled with Try - Except. ');
end;
end;
GameTab(4);
if(InvCount = 27) then
begin
Result := True;
end;
until(not(LoggedIn)) or (Result);
end;
function RandomLoggedOut: Boolean;
// by n3ss3s
// Useful, aint it?
begin
if(not(LoggedIn))then
begin
if(Players[CurrentPlayer].Rand = '')then
begin
Result := True;
end;
end;
end;
function FireLogs: Boolean;
var RSpeed, Lx, Ly: Integer;
begin
RSpeed := MouseSpeed;
MouseSpeed := 8;
if(WeHaveLogs(Lx, Ly))then
begin
if(FindDeformed(x, y, TinderBox, MIX1, MIY1, MIX2, MIY2))then
begin
Writeln('TinderBox found!');
Mouse(x, y, 2, 2, True);
Wait(100 + Random(25));
Mouse(Lx, Ly, 2, 2, True);
if(CantLightCheck)then
begin
Mouse(MMCX, MMCY, 7, 7, True);
Result := False;
end else
begin
repeat
FTWait(1);
if(RandomLoggedOut)then
begin
Writeln('We got logged out while lighting fire due to random.');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
if(not(LoggedIn)) and (RandomLoggedOut) then
begin
Writeln('We got logged out while lighting fire.');
Writeln('Not due to a random');
NextPlayer(True);
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
// Yes, I used ISM, because I dont wanna be
// setting off and on sum global boolean all the time...
end;
until(FindChatText('fire catches')) or (not(LoggedIn));
Result := True;
end;
end else
begin
Writeln('TinderBox not found!! Current player goes false');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
end;
end;
procedure FireAll;
begin
repeat
begin
FindFastRandoms;
if(FireLogs)then
begin
Fired := Fired + 1;
end;
end;
until(not(WeHaveLogs(x, y)));
DwarfItem;
end;
function FindFire(var WhereX, WhereY: Integer): Boolean;
var
I: Integer;
Time: Integer;
Cx, Cy: Integer;
Cx2, Cy2: Integer;
Dx, Dy: Integer;
var
F: Boolean;
var
FlameColors: array of Integer;
var
C: Integer;
begin
SetArrayLength(FlameColors, 7);
FlameColors[0] := 2724541;
FlameColors[1] := 2200253;
FlameColors[2] := 3777238;
FlameColors[3] := 2196124;
FlameColors[4] := 4373239;
FlameColors[5] := 3782375;
FlameColors[6] := 11321;
Dx := MSX2 - MSCX;
Dy := MSY2 - MSCY;
for C := 1 to 4 do
begin
for Time := 1 to 20 do
begin
if(not(LoggedIn))then
begin
Break;
end;
for I := 0 to 6 do
begin
if(not(LoggedIn))then
begin
Break;
end;
Cx := MSCX - (Time) * (Dx / 20);
Cy := MSCY - (Time) * (Dy / 20);
Cx2 := MSCX + (Cx / 2);
Cy2 := MSCY + (Cy / 2);
if(FindColorTolerance(x, y, FlameColors[I], Cx, Cy, Cx2, Cy2, 10))then
begin
MMouse(x, y, 0, 0);
if(IsUpText('Fire'))then
begin
F := True;
GetMousePos(WhereX, WhereY);
end else
begin
Break;
Click(False);
Wait(50 + Random(25));
Result := FindText(x, y, 'Fire', UpChars, MSX1, MSY1, MSX2, MSY2);
Break;
end;
end;
if(F) then
begin
Break;
end;
end;
if(F)then
begin
Break;
end;
end;
if(not(F))then
begin
SetMiniMapAngle(Rs_GetCompassAngleDegrees + 90.0 + Random(10));
end;
end;
end;
function CookShrimpz: Boolean;
var Fx, Fy, CookMark: Integer;
begin
dtmFish := DTMFromString('78DA633CC9C4C0F094012B6084D1978954739' +
'F809AF340357708A801B9E736013567816ADE1061CE07026A8E00' +
'D57C24A0661F50CD7B026A7601D5BC2642CD33026AB603D53C22A' +
'0662F50CD5D026AF600D53CC4AF0600C7FC1789');
repeat
if(FindFire(x, y))then
begin
Writeln('Found fire! Attempting to find sum shrimp from inv');
if(FindDTM(dtmFish, Fx, Fy, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(Fx, Fy, 2, 2, True);
Wait(100 + Random(25));
Mouse(x, y, 2, 2, True);
FFlag(0);
repeat
Wait(10 + Random(2));
until(FindText(x, y, 'How many would', NPCChars, 129, 356, 378, 379));
ClickMouseBox(223, 379, 303, 438, False);
ChooseOption(x, y, 'All');
MarkTime(CookMark);
PerfectNorth;
repeat
FasterRandoms;
NontiBan;
until(not(FindDTM(dtmFish, x, y, MIX1, MIY1, MIX2, MIY2)))
or (TimeFromMark(CookMark) > 45000);
end;
end;
until(not(FindDTM(dtmFish, Fx, Fy, MIX1, MIY1, MIX2, MIY2))) or (not(FindFire(x, y)));
if(not(FindDTM(dtmFish, x, y, MIX1, MIY1, MIX2, MIY2)))then
begin
Result := True;
end;
FreeDTM(dtmFish);
end;
function TextCLength(Text:string; Font: Integer): Integer;
// Not totally complete yet, but enough for my uses
// By n3ss3s
var T: Integer;
begin
case Font of
UpChars, SmallChars, NPCChars: Result := Length(Text) * 7;
StatChars: Result := Length(Text) * 4;
end;
for T := 1 to Length(Text) do
begin
if(Copy(Text, T, 1) = ' ')then
begin
Result := (Result - (Result / Length(Text))) + 4;
end;
end;
end;
procedure Click(Left: Boolean);
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, Left);
end;
function IzEnt(Tx, Ty: Integer): Boolean;
begin
MMouse(Tx, Ty, 0, 0); // Ya its 0, 0 because I wanna find the ent.
Wait(100 + Random(25));
Result := FindColor(x, y, 2221022, 4, 4, TextCLength('Chop down Willow',
UpChars), 22);
end;
function FindWillow(var Wx, Wy: Integer): Boolean;
var
I, C: Integer;
A: Boolean;
begin
repeat
for I := 1 to 3 do
begin
case I of
1: A := FindColorTolerance(x, y, Wc[1], MSX1, MSY1, MSX2, MSY2, 10);
2: A := FindColorTolerance(x, y, Wc[2], MSX1, MSY1, MSX2, MSY2, 10);
3: A := FindColorTolerance(x, y, Wc[3], MSX1, MSY1, MSX2, MSY2, 10);
end;
if (A) then
begin
Break;
end;
end;
if (A) then
begin
MMouse(x, y, 2, 2);
if (IsUpText('illo')) then
begin
Wc[I] := GetColor(x, y);
GetMousePos(Wx, Wy);
Result := True;
end;
end;
C := C + 1;
until (Result) or (I > 25) or (not (LoggedIn));
end;
function ClickWillow(Left: Integer): Boolean;
var Gx, Gy: Integer;
begin
HighestAngle;
if (FindWillow(x, y)) then
begin
SendInterScarInteger('WilX', x); // Thats rite I keep using
SendInterScarInteger('WilY', y); // ISM and u cant stop me lol...
WiAngle := Rs_GetCompassAngleDegrees;
if(not(IzEnt(x, y)))then
case Left of
1: begin
MMouse(x, y, 0, 0);
if (IsUpText('illo')) then
begin
Click(True);
GetMousePos(Gx, Gy);
if (FindColorTolerance(x, y, 255, Gx - 10, Gy - 10, Gx + 10, Gy + 10, 5)) then
begin
Result := True;
end;
end;
end;
2: begin
Mouse(x, y, 0, 0, False);
Result := ChooseOption(x, y, 'Chop');
end;
end;
end;
end;
function ChopWillow: Boolean;
var B, C: Integer;
begin
ClickWillow(1 + Random(2));
MarkTime(B);
x := ReadInterScarInteger('WilX');
y := ReadInterScarInteger('WilY');
repeat
Wait(10 + Random(2));
case Random(2) of
0: FasterRandoms;
1: NontiBan;
end;
SetMiniMapAngle(WiAngle);
HighestAngle;
if(IzEnt(x, y))then
begin
for C := 1 to 4 do
begin
Mouse(MMCX, MMCY, 3, 3, True);
end;
end;
until(WeHaveLogs(x, y)) or (TimeFromMark(B) > 10000);
Result := WeHaveLogs(x, y);
end;
function TreeWalk: Boolean;
begin
PerfectNorth;
bmpRocks := BitmapFromString(6, 6, 'z78DA858D4B0A80300C44AF9466F259' +
'AB78FF2B193B154A057D8BC740264C68E6E6D1AD8AA68E3292960' +
'EF377A76812343B1521FEE41B3B6CB773580C6231ADBF3BFCE575' +
'D9FAE5028FF72B84');
if (FindDeformed(x, y, bmpRocks, MMX1, MMY1, MMX2, MMY2)) then
begin
FreeBitmap(bmpRocks);
Mouse(x + 40, y - 5, 2, 2, True);
MarkTime(SomeMark);
while FlagPresent2 and (TimeFromMark(SomeMark) < 8000) do
begin
NontiBan;
end;
Result := True;
end;
end;
function BankWalk: Boolean;
var Stairs, Street, SC: Integer;
begin
if(5 = 5)then
begin
Mouse(x, y, 3, 3, True);
FFlag(0);
end else
begin
Stairs := BitmapFromString(9, 6, 'z78DA3335323432B034259A34000308' +
'DBC4C9D0D9C0003F89539791A1015612AF2E5CAE226017D12E240' +
'F00009A3740F9');
if (FindDeformed(x, y, Stairs, MMX1, MMY1, MMX2, MMY2)) then
begin
SC := GetColor(x, y);
FreeBitmap(Stairs);
if (FindColorCircleTolerance(x, y, SC, MMCX, MMCY, 73, 10)) then
begin
Mouse(x + 15, y + 40, 3, 3, True);
while FlagPresent2 do
begin
NontiBan;
end;
end;
Street := BitmapFromString(33, 2, 'z78DA33773235357134C74BBA99BBB' +
'AB99A9B3999199A190F0AD218449A1B9B1A1A1B1A0C2300003E00' +
'4FBA');
Result := FindDeformed(x, y, Street, 603, 1, 707, 15);
FreeBitmap(Street);
end else
begin
Writeln('I think we are lost.');
Writeln('Gambling time! Result depends of FindSymbol!!Woot1!!1!!');
Result := FindSymbol(x, y, 'bank');
if(Result) then
Mouse(x, y, 2, 2, True);
FFlag(0);
end;
end;
end;
function OpenTehBank: Boolean;
begin
Result := OpenBankGlass('db', True, True);
if (PinScreen) then
begin
InPin(UrPin);
end;
if (not (Result)) then
begin
Result := OpenBankQuiet('db');
if (PinScreen) then
begin
InPin(UrPin);
end;
end;
end;
procedure Bank;
begin
DwarfItem;
FindNormalRandoms;
if (not (OpenTehBank)) then
begin
Writeln('Shit happens, the bank doesnt open');
Exit;
end else
begin
repeat
dtmFish := DTMFromString('78DA633CC9C4C0F094012B6084D1978954739' +
'F809AF340357708A801B9E736013567816ADE1061CE07026A8E00' +
'D57C24A0661F50CD7B026A7601D5BC2642CD33026AB603D53C22A' +
'0662F50CD5D026AF600D53CC4AF0600C7FC1789');
if (FindDTM(dtmFish, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 0, 0, False);
ChooseOption(x, y, 'Store X');
repeat
Wait(10 + Random(2));
until (FindText(x, y, 'Enter amount', UpChars, 200, 380, 310, 410)) or
(not (LoggedIn));
TypeSend(IntToStr(50 + Random(49)));
repeat
Wait(10 + Random(2));
until (not(FindDTM(dtmFish, x, y, MIX1, MIY1, MIX2, MIY2))) or (not (LoggedIn));
end;
if (not (LoggedIn)) then
begin
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
until (not (LoggedIn));
CloseBank;
DropTo(4, 28); // To make sure there is no crap in inventory.
end;
end;
procedure HandleBank;
begin
if (BankWalk) then
begin
Bank;
end;
end;
function BrokenAxe: Boolean; // No axe.
begin
Result := FindAxeHeadColor;
end;
procedure HandleBrokenAxe;
begin
if (BrokenAxe) then
begin
Writeln('Broken Axe');
if(BankWalk)then
begin
if(OpenTehBank)then
begin
Deposit(1, 28, 2);
Wait(100 + Random(25));
Withdraw(1, 1, 1);
end;
end else
begin
Writeln('Could not find bank, your broken axe stays broken.');
NextPlayer(False);
LoadISM;
SendInterScarMessage(ISM[ISMno], 'Break');
ISMno := ISMno + 1;
end;
end;
end;
function BreakTime: Boolean;
begin
if(ReadInterScarMessage(ISM[ISMno]) = 'Break')then
begin
Result := True;
end;
end;
procedure LoadISM;
begin
SetArrayLength(ISM, ISMno + 1);
ISM[GetArrayLength(ISM)] := ABC[ISMno];
if(ISMno = 26)then
begin
Writeln('We cannot afford anymore false players, terminating');
TerminateScript;
end;
end;
function FindMiniMapDTM(var MdX, MdY: Integer; TheDTM: Integer): Boolean;
{ by n3ss3s
Finds a DTM on the minimap.
If cant find, rotates by 1 degree using Doofys SetMiniMapAngle.
Rotates until found or not logged in or rotated 5 times.
}
var I: Integer;
begin
if(not(FindDTM(TheDTM, MdX, MdY, MMX1, MMY1, MMX2, MMY2)))then
begin
repeat
for I := 1 to 360 do
begin
SetMiniMapAngle(Rs_GetCompassAngleDegrees + 1);
Wait(10 + Random(2));
if(FindDTM(TheDTM, MdX, MdY, MMX1, MMY1, MMX2, MMY2))then
begin
Result := True;
Writeln('Minimap DTM Found in '+FloatToStr(Rs_GetCompassAngleDegrees)+
' degrees angle');
Break;
end;
if(not(LoggedIn))then
begin
Break;
end;
end;
I := I + 1;
until(I >= 5) or (not(LoggedIn));
end else
begin
Result := True;
Exit;
end;
end;
procedure LoadCrap;
begin
Wc[1] := 6062224;
Wc[2] := 3303520;
Wc[3] := 2398336;
Fc[1] := 15513744;
Fc[2] := 16576760;
Fc[3] := 15515792;
NetColors[1] := 3225666;
NetColors[2] := 2172969;
NetColors[3] := 3225674;
Intro[1] := '-----------------------';
Intro[2] := '| Welcome to use DETA |';
Intro[3] := '| DraynorExTremenator |';
Intro[4] := '| Brought to you by : |';
Intro[5] := '|_______n3ss3s _______|';
end;
procedure Introduction;
var I: Integer;
begin
for I := 1 to 5 do
begin
IntRoBot(Intro[I], 1);
end;
Writeln('Thank you for interest');
end;
procedure SetupScript;
var I: Integer;
begin
SetupSRL;
SetupSRLFishing;
LoadFireMakingBitmaps;
LoadCrap;
NewLine := '';
ISMno := 1;
SetupPlayers;
ActivateClient;
if(not(LoggedIn))then
begin
LoginPlayer;
end;
if(not(FindAxeHeadColor))then
begin
Writeln('Hey dude you forgot your axe!!');
Writeln('Restart script');
TerminateScript;
end;
for I := 1 to GetArrayLength(Players) do
begin
Players[I].Rand := '';
end;
end;
procedure MainLoop;
begin
if(Fish)then
begin
if(BreakTime)then
begin
MainLoop;
end else
begin
if(ChopWillow)then
begin
if(BreakTime)then
begin
MainLoop;
end else
begin
if(CookShrimpz)then
begin
if(BreakTime)then
begin
MainLoop;
end else
begin
HandleBank;
if(BreakTime)then
begin
MainLoop;
end;
if(TimeFromMark(PlayMark) > 720000)then
begin
NextPlayer(True);
MarkTime(PlayMark);
end;
end;
end;
end;
end;
end;
end;
for Bools := 1 to GetArrayLength(Players) do
begin
Writeln('Player '+ IntToStr(Bools)+' status = '+ BoolToStr(Players[Bools].Active));
end;
end;
begin
SetupSRL;
end.EDIT: The procedures propably wont work with the new runescape look but whatever..