SRL Archive - Archive

Vinyl Scratch - SRL Member Application


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…
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.

Vinyl Scratch

2013-03-14 23:17:52

Whoa, sorry guys. I didn't mean to post twice. My internet lagged, and I didn't know.

Sorry again.

[XoL]

2013-03-14 23:27:36

Yep, you seemed to have changed enough and your script isn't bad. I really see no reason to vote no.

Also calm down, we won't flame you lol ^^^ accidents happen

Vinyl Scratch

2013-03-14 23:31:19

Thanks, R4ndom.

Sorry for any bolds that are capitalized, and for not capitalizing the constants, I didn't know that was a good idea(On the constants, but the bolds.. BAD ME!)

Olly

2013-03-14 23:37:42

The main functions that are yours are:
  • Siphon
  • proggy
  • isSiphoning

The problem i have is that its not really "much" of a script, sure it works but in honestly there's only a basic tpa function, a pixelshift function and a proggy. Personally i would like to see a script that shows more such as banking, walking and such.

Also in my eyes your script lacks some logic, first off all you call your antiban function every 5-7 seconds and the antiban has a 100% chance of activating (and not many antibans what so ever).

Secondly every time you finish siphoning a NPC you change the compass angle.

Also in your siphon function if you don't do a red click you set the result to false and debug that you dont find a monster, when in fact you did you just missclicked it.

And lastly your siphon function is a function, but you never actually do anything with the result, I would like to see some sort of failsafe such as if not find a npc in 5 mins then terminate.

Vinyl Scratch

2013-03-14 23:44:46

From: Ollybest
The main functions that are yours are:
  • Siphon
  • proggy
  • isSiphoning

The problem i have is that its not really "much" of a script, sure it works but in honestly there's only a basic tpa function, a pixelshift function and a proggy. Personally i would like to see a script that shows more such as banking, walking and such.

Also in my eyes your script lacks some logic, first off all you call your antiban function every 5-7 seconds and the antiban has a 100% chance of activating (and not many antibans what so ever).

Secondly every time you finish siphoning a NPC you change the compass angle.

Also in your siphon function if you don't do a red click you set the result to false and debug that you dont find a monster, when in fact you did you just missclicked it.

And lastly your siphon function is a function, but you never actually do anything with the result, I would like to see some sort of failsafe such as if not find a npc in 5 mins then terminate.


Thanks, Olly. I'll be sure to fix that.

Anything else?

I've got:
Siphon nodes occasionally
Failsafe: Terminate if can't find monster
Better antiban
And fix the compass angle thing

To add.

But, there is no banking in the Runespan, I thought that when it clicks the monster it will walk, and if it missclicks, it doesn't say that it didn't find the monster, I don't think. I'll double check here in a second, but if it missclicks, it just tries again.

Edit: You were right Olly, Sorry about that.

Olly

2013-03-14 23:52:19

From: Vinyl Scratch
Thanks, Olly. I'll be sure to fix that.

Anything else?

I've got:
Siphon nodes occasionally
Failsafe: Terminate if can't find monster
Better antiban
And fix the compass angle thing

To add.

But, there is no banking in the Runespan, I thought that when it clicks the monster it will walk, and if it missclicks, it doesn't say that it didn't find the monster, I don't think. I'll double check here in a second, but if it missclicks, it just tries again.


Exactly why another script would be nice, I like to put a script in simple terms such as:

Yours
Find and click a npc
wait until little pixelshift

Some other script.. such a plank runner

find and click banker
walk to sawmill
find and click sawmil
walk back to bank
handle banking
& all would include good failsafes.

Lastly im a huge fan of seeing public scripts, you get lots of feedback and can improve it alot I honestly cannot remember the last time you released a public script.

Gucci

2013-03-14 23:55:28

Yes from me based on activity here and skype

Sin

2013-03-15 00:00:02

I voted yes on activity and attitude. The fact that you gave me a free account doesn't hurt either :3

Justin

2013-03-15 00:01:08

Voted no. Will explain why when I get home.

Vinyl Scratch

2013-03-15 00:03:55

Thanks, Sin.

@Justin Alright, thanks.

Le Jingle

2013-03-15 00:52:52

I don't see any differences involving suggestions from your previous applications (Granted I favor persistent behavior, but I also like progression too).

However, I see you did indeed update your old application regularly with suggested steps to better example learning.
Therefore, I correct myself from previously hindering your learning experience, and vote yes as I've also learned more from my time here at SRL.

Wish you the best,
Lj :)

Vinyl Scratch

2013-03-15 00:59:05

Thanks, Le Jingle.

The updates I did to this one from the old are not as noticeable, but are pretty big in their own.

The script didn't work AT ALL at first, and I figured that out.

Did some extra checks with pixelshift, and now it has nice failsafes.

I'm working on updating it right now, adding more antiban, more and better failsafes, and loads of other things. But I haven't gotten a chance to put out another update because I'm still testing the ones that are suggested.

Thanks, for the yes, and I should have that update for you by tonight!

Le Jingle

2013-03-15 01:15:00

From: Vinyl Scratch
Thanks, Le Jingle.

The updates I did to this one from the old are not as noticeable, but are pretty big in their own.

The script didn't work AT ALL at first, and I figured that out.

Did some extra checks with pixelshift, and now it has nice failsafes.

I'm working on updating it right now, adding more antiban, more and better failsafes, and loads of other things. But I haven't gotten a chance to put out another update because I'm still testing the ones that are suggested.

Thanks, for the yes, and I should have that update for you by tonight!


Hmm, sorry I didn't communicate well enough.
My observation pertaining to "not noticing any differences," was based on reviewing your last application. And my "However" was meant to say/imply that you showed progression during your last application; therefore I said I redeemed myself this time around as I voted no before noticing more changes occur during your last application.

I say this in hopes to better your learning experience too.
-Lj

Vinyl Scratch

2013-03-15 01:24:28

From: Le Jingle
Hmm, sorry I didn't communicate well enough.
My observation pertaining to "not noticing any differences," was based on reviewing your last application. And my "However" was meant to say/imply that you showed progression during your last application; therefore I said I redeemed myself this time around as I voted no before noticing more changes occur during your last application.

I say this in hopes to better your learning experience too.
-Lj



Ohh.. I see. It was my fault, too. I should've read it better. Thanks, Lj.

Edit: I'm about 55 - 60% done with the updates.

CynicRus

2013-03-15 02:09:24

I vote yes.

Vinyl Scratch

2013-03-15 02:11:32

Thanks, Cynic.

Anything you need me to improve on?

CynicRus

2013-03-15 02:14:23

From: Vinyl Scratch
Thanks, Cynic.

Anything you need me to improve on?


Improve your skills to the benefit of the community:)

Vinyl Scratch

2013-03-15 02:22:21

Can, and will, do!

The Killer

2013-03-15 09:35:34

AS much as I love you <3, I had to vote no. Your attitude is good, I like you as a person and the only thing that's really caused me to say no is the script. What you've got is good but like olly says, its sort of short and perhaps lacks something :s, I like the record but I think the way you credited it to say that cynic did it :S

Anyway, sorry I had to vote no :/ but goodluck with your application :) <3

Vinyl Scratch

2013-03-15 11:30:32

Thanks, Killer.

What do you think I should add?

cause

2013-03-15 13:59:44

Man I think us SRL members should cut Vinyl Scratch some slack, the dude (assuming) is more than active enough in the community and has demonstrated persistence to make SRL members. Voting yes.

Vinyl Scratch: On that note, it would be nice if there was a significant increase in scripting skill compared to your last app :P, it seems you stopped scripting after your last app, and just whipped this together for this app. However still voting yes.

The Killer

2013-03-15 14:22:19

From: Vinyl Scratch
Thanks, Killer.

What do you think I should add?


Honestly, I'd like something that does more tasks (because like olly says it's mainly just finding them and using pixel shift for waiting) for example a basic woodcutter with banking if you get what I mean.

Just my opinion. :)

Vinyl Scratch

2013-03-15 14:46:16

@Cause

Thanks! I'm actually working on some more stuff right now, but I went out to eat breakfast, and have other plans for the day, so I should have a new update for you guys this afternoon, I'm spending time with my grandmother, having some fun.



@Killer

Look at what I said to Cause, with the adding of things.

Anything specific?

Ashaman88

2013-03-15 14:47:30

Enough for me, yes

Vinyl Scratch

2013-03-15 14:50:12

Thanks, Asha!

Do you have anything for the script you'd like to see added?

Kasi

2013-03-18 20:02:56

Yes.

Vinyl Scratch

2013-03-18 20:06:23

Thanks!


I'll be sure to heed your advice, (skype)

Anything you'd like to see added?


@everyone

Sorry for not updating, school just started, and I've been working on some songs, and trying to get a little of the update done. I'm about halfway done.

Echo_

2013-03-18 20:21:52

I'm voting yes because of you're activity and good attitude.

Vinyl Scratch

2013-03-18 20:31:05

Thanks, Echo!

Kevin

2013-03-22 13:45:17

Due to helpfulness as well as an admitted willingness to improve, take constructive criticism (I spoke with him and my thoughts on his script over Skype chat prior to voting), and adjust accordingly, I vote yes.

Vinyl Scratch

2013-03-22 15:35:51

Thanks, Nivek!

I'm at school right now, but I'm almost done with the updates. I'll have them for you.. probably
Sunday, going to Dungeons and Dragons night at my friends house, staying the night, and then going to another friends house.

Yeahp.

Thanks, again!

WT-Fakawi

2013-03-23 11:07:48

In.