Vinyl Scratch
2013-03-14 23:14:54
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
no
Were you Referred to SRL?
What is your general programming knowledge?
Pascalscript, Java, C++, learning C#, a little VB.
Are you a member of any other communities?
Stickpage.com
darkdemon.org
Tell us about yourself…
Please show us one (or multiple) of your scripts.
Here's an updated version of the script:
6 Year(s)
Are you affilated in anyway with Jagex LTD?
no
Were you Referred to SRL?
What is your general programming knowledge?
Pascalscript, Java, C++, learning C#, a little VB.
Are you a member of any other communities?
Stickpage.com
darkdemon.org
Tell us about yourself…
From: Vinyl Scratch
You guys have heard me many times before.
Last time I applied, I almost got in. But, a fatal flaw on my part helped me learn. Quite a bit, honestly.
So, there was a ton I needed to fix before I could get in. Fixed waits, incorrect Pixelshift,
I didn't even check for stuff, and my Proggy didn't work. I've fixed most of these, added some stuff to make it even better, and I'm still thinkong of a couple of thing I might need to do.
So, here goes nothin', I guess.
(I would apply with more scripts, but I don't have any, and I'm about to be gone for a little while. I'll have the next couple of days, but that's it.)
[——-====Vinyl Runespan====——-]
[Time Ran: 49 Minutes and 26 Seconds
[You have gained: 2952
[You are gaining about: 3582
[——-====Vinyl RuneSpan====——-]
This is the last proggy I got before I left and RS messed up.
Please show us one (or multiple) of your scripts.
program VinylRunespan;
//{$DEFINE SMART}
{$i SRL/SRL.simba}
{$IFDEF SMART}
{$i SRL/SRL/misc/smartgraphics.Simba}
{$ENDIF}
const
Member = True; //Are you a Member? True = yes, False = no.
Version = '10.0A'; // Don't Touch.
var
StartingExperience: integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := ''; // Your Username.
Pass := ''; // Your Password.
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Runecrafting;
Active := True;
Strings[0] := 'air';
{Esslings: air, water, fire, earth. }
{Esshound: body, law, cosmic, nature.}
{Esswraith: blood, death, soul. }
end;
end;
{*******************************************************************************
All of these mouse movements are credited to bENland100 and flight
And Brad for linking me.
*******************************************************************************}
//By Bandland100, modified to shift mouse speeds after every step
Procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
Var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
Begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
While hypot(xs - xe, ys - ye) > 1 Do
Begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
If dist >= targetArea Then
Begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
End Else
Begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
If (maxStep < 3) Then
Begin
maxStep:= random(3) + 3.0;
End Else
Begin
maxStep:= maxStep / sqrt5;
End;
End;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
Begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
End;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
Case Random(50) Of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
End;
If (W < 1) Then
W := 1;
If (lastX <> Round(xs)) Or (lastY <> Round(ys)) Then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;
If (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) Then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
End;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
Var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
Begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
If MP < 0 Then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
End;
///////////////\\\\\\\\\\\\\\\\\\\
//credit to CynicRus for this part.\\
type TRune = record
DTM: integer;
name: string;
end;
type TRuneArray = array of TRune;
var
Air, Water, Fire, Earth, Blood, Death: TRune;
Runes: TRuneArray;
Procedure FillDTMs;
begin
//intialise array
SetLength(Runes, 6);
//Air
Air.DTM:= DTMFromString('m1gAAAHic42JgYNjJzMCwB4i3APFqIF4FxOuAeDcQHwHi40B8EIhLGRkY0qE4G4jLgLgJiFuAuA6Ii4A4B4hv3rwJNJUJihmR2OiYOMBIJEYAAIiCDpI=');
SetDTMName(Air.DTM, 'airDTM');
//Water
Water.DTM:=DTMFromString('mAAEAAHic42FgYNjOzMCwjxlCbwDiVVC8Doi3AfEhID4KxMeA+CAQz2BkYOgF4i4g7gPi6UA8B4iXAfEKIF4KxHOBeAoQ9wOxfP0uoC1MDHzSCmAaGXt7eTCYmhgxqKmpMoiKijDwScoxkAoYScTIAAAswxQl');
SetDTMName(Water.DTM, 'waterDTM');
//Fire
Fire.DTM:=DTMFromString('m6wAAAHic42ZgYOBhYWAQBWJeIGYF4v/MEMwMZPMBsTgQSwOxFBDPYmRgmADE3UDcB8STgXgOEC8D4hVQei4QTwXib4ssgaYzgbGVpTkDn7QCQ3hoMENIcCBc3EBBgUFUVISBFMBIAkYCAFF0DuM=');
SetDTMName(Fire.DTM, 'fireDTM');
//Earth
Earth.DTM:=DTMFromString('mKgEAAHic42NgYHjEzMDwDIjfAvErIP4IxO+A+DUQPwHiO0B8DYivQPEtIH4AxCWMDAzpQJwHxNmMEH4NEDcBcQsQtwJxAxBXAnExVA1IfW+XI9BWJqKxrY0VlE0eYCQTowIA9/UVRg==');
SetDTMName(Earth.DTM, 'earthDTM');
//Blood rune
Blood.DTM:=DTMFromString('maQEAAHicE2RgYOhjZmCYDcRTgXgCEHcBcRsQ1wNxExA3QOlOqPwMIJ4C1TMHiOcC8SNGBoabQHwFiC9D8TUgvgvET4D4JRC/A+L3QPwRiN9A+S+h8g+A+JBmMgOftAIYMzAwwTGfpByDt5cHnB0ZHspgoKDA4ORgD8YgNkI95YCRChgDAAB+8x+l');
SetDTMName(Blood.DTM, 'bloodDTM');
//Death rune
Death.DTM:=DTMFromString('mqAEAAHicrc7fCwFBEAfw73Kl/Lg8nNx00b643Ju/Q1KiJH8kItJdKS8U/xPfXSMvHm/q0+7OzE4TAWgFQJvqFNCr+uPeDYooVgn1lFBX6zX9fzHAjrZ0oJP55G70oKe601VrBZ3pSHu10RlFnkMkRpYNsZjPEEof69WSm1e86WSMkbX+nqYDf7qeZkcQJtb79rp82WFK9i/eG8Abuw==');
SetDTMName(Death.DTM, 'deathDTM');
Runes:=[Air, Water, Fire, Earth, Blood, Death];
end;
procedure FreeRune(r: TRune);
begin
FreeDTM(r.DTM);
end;
procedure FreeDmt;
var
i: integer;
begin
for i:=0 to Length(runes) -1 do
begin
FreeRune(runes[i]);
end;
end;
function RunesCounter(RuneDTM: integer): Integer;
var
Count, x, y:Integer;
begin
If FindDTM(RuneDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Count := GetAmount(x, y);
Result:= Count;
end;
end;
procedure PrintRuneCount(const r: TRune; count: integer);
begin
WriteLn('You have'+#32+toStr(count)+#32+r.name+#32+'runes');
end;
function CheckInventory(): boolean;
var
i, x, y : integer;
begin
result:=false;
FillDTMs;
for i:=0 to Length(runes)-1 do
begin
If FindDTM(runes[i].DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
PrintRuneCount(runes[i],RunesCounter(runes[i].DTM));
result:=true;
end;
end;
FreeDmt;
end;
////////\\\\\\\\
procedure proggy;
var
xp, xph: integer;
begin
if not IsXPBarOpen then
begin
WriteLn('Xp bar not open. Opening.');
ToggleXPBar(true);
end;
XP := (GetXPBarTotal - StartingExperience);
XPH := (Round(XP * (3600.0 / (GetTimeRunning / 1000.0))));
WriteLn('[-------====Vinyl Runespan====-------]');
WriteLn('[Time Ran: ' + TimeRunning);
WriteLn('[You have gained: ' + IntToStr(xp));
WriteLn('[You are gaining about: ' + IntToStr(xph));
WriteLn('[-------====Vinyl RuneSpan====-------]');
CheckInventory;
end;
procedure LogPlayerIn;
begin
LoginPlayerToLob;
ChangeWorld(RandomWorld(Member, False));
sleep(4000 + Random(3000))
end;
function isSiphoning: Boolean;
var
SBox: TBox;
begin
SBox:= IntToBox((233), (187-50), (276), (239-50));
//SMART_DrawBoxEx(false, false, SBox, CLBlue);
Result:= (AveragePixelShift(SBox, 20, 500) > 200);
WriteLn('The average shift of the pixels is: ' + IntToStr(AveragePixelShift(Sbox, 20, 500)));
end;
procedure antiban;
var
w, h, w2, h2: integer;
begin
case Random(3) of
0: begin
GetClientDimensions(w, h);
w2:= w / 5;
h2:= h / 5;
HumanMMouse(Random(w), Random(h), Random(w2), Random(h2));
end;
1: begin
MMouse(300, 0, 300, 0);
Wait(RandomRange(30000, 50000));
end;
2: begin
HumanMMouse(RandomRange(500, 600), 0, 0, 0);
Wait(RandomRange(10000, 20000));
HumanMMouse(RandomRange(100, 700), RandomRange(100, 700), RandomRange(100, 500), RandomRange(100, 500));
HumanMMouse(Random(w), Random(h), 30, 30);
end;
end;
end;
procedure CheckForSiphon;
begin
if isSiphoning then
begin
WriteLn('We''re still siphoning..');
Wait(RandomRange(1000, 2000));
end;
end;
function Siphon(UpText: TStringArray; Color, Tol: Integer; HMod, SMod: Extended): Boolean;
var
TPA: TPointArray;
ATPA: T2DPointArray;
CTS, i, x, y: Integer;
begin
if not LoggedIn then
LogPlayerIn;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HMod, SMod);
if FindColorsSpiralTolerance(x, y, TPA, Color, MSX1, MSY1, MSX2, MSY2, Tol) then
begin
ATPA := SplitTPA(TPA, 6);
SortATPASize(ATPA,True);
for i := 0 to High(ATPA) do
begin
if length(atpa[i]) < 2 then
begin
MiddleTPAEx(ATPA[i], x, y);
HumanMMouse(x, y, 2, 2);
if WaitUpTextMulti(UpText, 150) then
begin
ClickMouse2(True);
if (DidRedClick) then
begin
Result := True;
Wait(RandomRange(500, 1000));
if isSiphoning then
begin
writeln('We''re Siphoning!');
AntiBan;
wait(RandomRange(5000, 7000));
repeat
CheckForSiphon;
until(not(isSiphoning));
if not isSiphoning then
WriteLn('Finished siphoning the monster, or siphoning took to long.');
MakeCompass(RandomRange(0, 360));
Break;
end;
end
else
begin
FindNormalRandoms;
Result := False;
WriteLn('We didn''t find the monster, we''ll look again.');
end;
end;
end;
end;
end;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
proggy;
end;
procedure SetupArguments;
begin
case Lowercase(Players[currentplayer].Strings[0]) of
'air': Siphon(['iphon Air', 'hon Air', 'hon Air essling'], 8682082, 3, 0.85, 1.05);
'fire': Siphon(['iphon Fire', 'hon fire', 'hon Fire Essling'], 5401236, 7, 0.10, 0.75);
'earth': Siphon(['iphon earth', 'hon earth', 'hon earth Essling'], 4287110, 2, 0.33, 0.40);
'water': Siphon(['iphon Water', 'hon Water', 'hon Water Essling'], 5194866, 7, 0.10, 0.75);
'body': Siphon(['iphon body', 'body', 'hon body Esshound'], 7093602, 7, 2.40, 0.83);
'law': Siphon(['iphon law', 'hon law', 'hon law Esshound'], 16771982, 7, 0.68, 1.2);
'astral': Siphon(['iphon astral', 'hon astral', 'hon astral Esshound'], 13346751, 7, 1.07, 0.35);
'blood': Siphon(['iphon blood', 'hon blood', 'hon blood Esswraith'], 3826285, 7, 0.39, 0.93);
'soul': Siphon(['iphon soul', 'hon soul', 'hon soul esswraith'], 8026467, 7, 4.16, 0.24);
'death': Siphon(['iphon death', 'hon death', 'hon death Esswraith'], 7692132, 7, 1.69, 0.24);
end;
end;
begin
ClearDebug;
{$IFDEF SMART}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
DeclarePlayers;
SetupSRL;
StartingExperience:= GetXPBarTotal;
repeat
SetupArguments;
FindNormalRandoms;
Proggy;
until not LoggedIn;
end.Here's an updated version of the script:
program VinylRunespan;
//{$DEFINE SMART}
{$i SRL/SRL.simba}
{$IFDEF SMART}
{$i SRL/SRL/misc/smartgraphics.Simba}
{$ENDIF}
const
BreakTime = 10; //How long to break for? 1 = 1 minute.
Member = True; //Are you a Member? True = yes, False = no.
Version = '10.0A'; // Don't Touch.
var
StartingExperience: integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := ''; // Your Username.
Pass := ''; // Your Password.
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Runecrafting;
Active := True;
Strings[0] := 'air';
{Esslings: air, water, fire, earth. }
{Esshound: body, law, cosmic, nature.}
{Esswraith: blood, death, soul. }
Booleans[0] := True; //Do you want to take breaks? True = yes, false = no
Integers[0] := 50; // Minimum play time before breaking
Integers[1] := 120; // Maximum play time before breaking
end;
end;
{*******************************************************************************
procedure ResetBreakTimer;
Description: Resets the timer.
*******************************************************************************}
procedure ResetBreakTimer;
begin
BreakTime := GetSystemTime + RandomRange(Players[CurrentPlayer].Integers[0] * 60000, Players[CurrentPlayer].Integers[1] * 60000);
end;
{**************************************************************************
procedure TakeBreak;
Description: Logs your character out for a random time.
**************************************************************************}
procedure TakeBreak;
var
H, M, S, T, BreakFor: Integer;
begin
if (GetSystemTime >= BreakTime) and Players[CurrentPlayer].Booleans[0] then
begin
Logout;
BreakFor := RandomRange(10 * 60000, 25 * 60000); // Between 10-25 minutes
ConvertTime(BreakFor, H, M, S);
Writeln('Break for: ' + IntToStr(M)+ 'm:' + IntToStr(S)+ 's');
MarkTime(T);
Repeat
Wait(1000);
until (BreakFor < TimeFromMark(T))
LogInPlayer;
ResetBreakTimer; //Important!!
Wait(4000);
FindNormalRandoms;
end;
end;
/////////\\\\\\\\\
{*******************************************************************************
All of these mouse movements are credited to bENland100 and flight
And Brad for linking me.
*******************************************************************************}
//By Bandland100, modified to shift mouse speeds after every step
Procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
Var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
Begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
While hypot(xs - xe, ys - ye) > 1 Do
Begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
If dist >= targetArea Then
Begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
End Else
Begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
If (maxStep < 3) Then
Begin
maxStep:= random(3) + 3.0;
End Else
Begin
maxStep:= maxStep / sqrt5;
End;
End;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
Begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
End;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
Case Random(50) Of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
End;
If (W < 1) Then
W := 1;
If (lastX <> Round(xs)) Or (lastY <> Round(ys)) Then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;
If (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) Then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
End;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
Var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
Begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
If MP < 0 Then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
End;
///////////////\\\\\\\\\\\\\\\\\\\
//credit to CynicRus for this part.\\
type TRune = record
DTM: integer;
name: string;
end;
type TRuneArray = array of TRune;
var
Air, Water, Fire, Earth, Blood, Death: TRune;
Runes: TRuneArray;
Procedure FillDTMs;
begin
//intialise array
SetLength(Runes, 6);
//Air
Air.DTM:= DTMFromString('m1gAAAHic42JgYNjJzMCwB4i3APFqIF4FxOuAeDcQHwHi40B8EIhLGRkY0qE4G4jLgLgJiFuAuA6Ii4A4B4hv3rwJNJUJihmR2OiYOMBIJEYAAIiCDpI=');
SetDTMName(Air.DTM, 'airDTM');
//Water
Water.DTM:=DTMFromString('mAAEAAHic42FgYNjOzMCwjxlCbwDiVVC8Doi3AfEhID4KxMeA+CAQz2BkYOgF4i4g7gPi6UA8B4iXAfEKIF4KxHOBeAoQ9wOxfP0uoC1MDHzSCmAaGXt7eTCYmhgxqKmpMoiKijDwScoxkAoYScTIAAAswxQl');
SetDTMName(Water.DTM, 'waterDTM');
//Fire
Fire.DTM:=DTMFromString('m6wAAAHic42ZgYOBhYWAQBWJeIGYF4v/MEMwMZPMBsTgQSwOxFBDPYmRgmADE3UDcB8STgXgOEC8D4hVQei4QTwXib4ssgaYzgbGVpTkDn7QCQ3hoMENIcCBc3EBBgUFUVISBFMBIAkYCAFF0DuM=');
SetDTMName(Fire.DTM, 'fireDTM');
//Earth
Earth.DTM:=DTMFromString('mKgEAAHic42NgYHjEzMDwDIjfAvErIP4IxO+A+DUQPwHiO0B8DYivQPEtIH4AxCWMDAzpQJwHxNmMEH4NEDcBcQsQtwJxAxBXAnExVA1IfW+XI9BWJqKxrY0VlE0eYCQTowIA9/UVRg==');
SetDTMName(Earth.DTM, 'earthDTM');
//Blood rune
Blood.DTM:=DTMFromString('maQEAAHicE2RgYOhjZmCYDcRTgXgCEHcBcRsQ1wNxExA3QOlOqPwMIJ4C1TMHiOcC8SNGBoabQHwFiC9D8TUgvgvET4D4JRC/A+L3QPwRiN9A+S+h8g+A+JBmMgOftAIYMzAwwTGfpByDt5cHnB0ZHspgoKDA4ORgD8YgNkI95YCRChgDAAB+8x+l');
SetDTMName(Blood.DTM, 'bloodDTM');
//Death rune
Death.DTM:=DTMFromString('mqAEAAHicrc7fCwFBEAfw73Kl/Lg8nNx00b643Ju/Q1KiJH8kItJdKS8U/xPfXSMvHm/q0+7OzE4TAWgFQJvqFNCr+uPeDYooVgn1lFBX6zX9fzHAjrZ0oJP55G70oKe601VrBZ3pSHu10RlFnkMkRpYNsZjPEEof69WSm1e86WSMkbX+nqYDf7qeZkcQJtb79rp82WFK9i/eG8Abuw==');
SetDTMName(Death.DTM, 'deathDTM');
Runes:=[Air, Water, Fire, Earth, Blood, Death];
end;
procedure FreeRune(r: TRune);
begin
FreeDTM(r.DTM);
end;
procedure FreeDmt;
var
i: integer;
begin
for i:=0 to Length(runes) -1 do
begin
FreeRune(runes[i]);
end;
end;
function RunesCounter(RuneDTM: integer): Integer;
var
Count, x, y:Integer;
begin
If FindDTM(RuneDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Count := GetAmount(x, y);
Result:= Count;
end;
end;
procedure PrintRuneCount(const r: TRune; count: integer);
begin
WriteLn('You have'+#32+toStr(count)+#32+r.name+#32+'runes');
end;
function CheckInventory(): boolean;
var
i, x, y : integer;
begin
result:=false;
FillDTMs;
for i:=0 to Length(runes)-1 do
begin
If FindDTM(runes[i].DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
begin
PrintRuneCount(runes[i],RunesCounter(runes[i].DTM));
result:=true;
end;
end;
FreeDmt;
end;
////////\\\\\\\\
procedure proggy;
var
xp, xph: integer;
begin
if not IsXPBarOpen then
begin
WriteLn('Xp bar not open. Opening.');
ToggleXPBar(true);
end;
XP := (GetXPBarTotal - StartingExperience);
XPH := (Round(XP * (3600.0 / (GetTimeRunning / 1000.0))));
WriteLn('[-------====Vinyl Runespan====-------]');
WriteLn('[Time Ran: ' + TimeRunning);
WriteLn('[You have gained: ' + IntToStr(xp));
WriteLn('[You are gaining about: ' + IntToStr(xph));
WriteLn('[-------====Vinyl RuneSpan====-------]');
CheckInventory;
end;
procedure occasionCompass;
begin
case Random(2) of
0: begin
MakeCompass(RandomRange(0, 360));
WriteLn('occasionCompass has moved the Angle!');
end;
1: begin
WriteLn('occasionCompass has done nothing!');
end;
end;
end;
procedure LogPlayerIn;
begin
LoginPlayerToLob;
ChangeWorld(RandomWorld(Member, False));
sleep(4000 + Random(3000))
end;
function isSiphoning: Boolean;
var
SBox: TBox;
begin
SBox:= IntToBox((233), (187-50), (276), (239-50));
//SMART_DrawBoxEx(false, false, SBox, CLBlue);
Result:= (AveragePixelShift(SBox, 20, 500) > 200);
WriteLn('The average shift of the pixels is: ' + IntToStr(AveragePixelShift(Sbox, 20, 500)));
end;
procedure antiban;
var
w, h, w2, h2: integer;
begin
case Random(13) of
0: begin
GetClientDimensions(w, h);
w2:= w / 5;
h2:= h / 5;
HumanMMouse(Random(w), Random(h), Random(w2), Random(h2));
end;
1: begin
MMouse(300, 0, w, 0);
Wait(RandomRange(30000, 50000));
end;
2: begin
HumanMMouse(RandomRange(500, 600), 0, 0, 0);
Wait(RandomRange(10000, 20000));
HumanMMouse(RandomRange(100, 700), RandomRange(100, 700), RandomRange(100, 500), RandomRange(100, 500));
HumanMMouse(Random(w), Random(h), 30, 30);
end;
3: begin
BoredHuman;
WriteLn('Bot is bored..');
end;
4: begin
ExamineInv;
WriteLn('Bot examines random stuff..');
end;
5: begin
RandomFKeys(false);
WriteLn('Bot is pressing random stuff.');
end;
6: begin
GameTab(Tab_stats);
HoverSkill('Runecrafting', false);
WriteLn('Bot is checking Runecrafting skill level.');
end;
7: begin
PickupMouse;
WriteLn('Ohh.. What an interesting mouse..');
end;
8..12: begin
WriteLn('Bot is not doing AntiBan this time.');
end;
end;
end;
procedure CheckForSiphon;
begin
if isSiphoning then
begin
WriteLn('We''re still siphoning..');
Wait(RandomRange(1000, 2000));
AntiBan;
end;
end;
procedure Siphon(UpText: TStringArray; Color, Tol: Integer; HMod, SMod: Extended);
var
TPA: TPointArray;
ATPA: T2DPointArray;
CTS, i, x, y: Integer;
begin
if not LoggedIn then
LogPlayerIn;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HMod, SMod);
if FindColorsSpiralTolerance(x, y, TPA, Color, MSX1, MSY1, MSX2, MSY2, Tol) then
begin
ATPA := SplitTPA(TPA, 6);
SortATPASize(ATPA,True);
for i := 0 to High(ATPA) do
begin
if length(atpa[i]) < 2 then
begin
MiddleTPAEx(ATPA[i], x, y);
HumanMMouse(x, y, 2, 2);
if WaitUpTextMulti(UpText, 150) then
begin
ClickMouse2(True);
if (DidRedClick) then
begin
Wait(RandomRange(500, 1000));
if isSiphoning then
begin
writeln('We''re Siphoning!');
AntiBan;
wait(RandomRange(5000, 7000));
repeat
CheckForSiphon;
until(not(isSiphoning));
if not isSiphoning then
WriteLn('Finished siphoning the monster, or siphoning took to long.');
occasionCompass;
Break;
end;
end
else
begin
FindNormalRandoms;
WriteLn('We didn''t find the monster or missclicked, we''ll look again.');
end;
end;
end;
end;
end;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
proggy;
end;
procedure SetupArguments;
begin
case Lowercase(Players[currentplayer].Strings[0]) of
'air': Siphon(['iphon Air', 'hon Air', 'hon Air essling'], 8682082, 3, 0.85, 1.05);
'fire': Siphon(['iphon Fire', 'hon fire', 'hon Fire Essling'], 5401236, 7, 0.10, 0.75);
'earth': Siphon(['iphon earth', 'hon earth', 'hon earth Essling'], 4287110, 2, 0.33, 0.40);
'water': Siphon(['iphon Water', 'hon Water', 'hon Water Essling'], 5194866, 7, 0.10, 0.75);
'body': Siphon(['iphon body', 'body', 'hon body Esshound'], 7093602, 7, 2.40, 0.83);
'law': Siphon(['iphon law', 'hon law', 'hon law Esshound'], 16771982, 7, 0.68, 1.2);
'astral': Siphon(['iphon astral', 'hon astral', 'hon astral Esshound'], 13346751, 7, 1.07, 0.35);
'blood': Siphon(['iphon blood', 'hon blood', 'hon blood Esswraith'], 3826285, 7, 0.39, 0.93);
'soul': Siphon(['iphon soul', 'hon soul', 'hon soul esswraith'], 8026467, 7, 4.16, 0.24);
'death': Siphon(['iphon death', 'hon death', 'hon death Esswraith'], 7692132, 7, 1.69, 0.24);
end;
end;
begin
ClearDebug;
{$IFDEF SMART}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
DeclarePlayers;
SetupSRL;
StartingExperience:= GetXPBarTotal;
repeat
SetupArguments;
FindNormalRandoms;
Proggy;
TakeBreak;
until not LoggedIn;
end.