Pierre, here you go. Sorry for taking so long.
Program NewIronMinerByMasterKill;
{.include SRL/SRL/Misc/Smart.scar}
{.include srl/srl.scar}
{.include srl/srl/skill/mining.scar}
var
World, HowManyResponds: Integer;
TheQuestion, TheRespond: array of array of String;
ShowingDebug: Boolean; //move if you like
{/----------------------------------------------------------------------------//
Welcome to the varrock east mine and banker!
This script is created by MasterKill from SRL-Forums
SCAR : 3.15b
SRL REV : 19
SCRIPT VERSION : 15.2
DO NOT COPY THIS SCRIPT AND CLAIM IT AS YOUR OWN.
If you want to use some procedures, it's ok, but CREDIT MASTERKILL.
//----------------------------------------------------------------------------//
Start your players in the varrock east bank. Some stuff this script is including:
* Fast Auto Responder
* Perfect Bank And Mine Finding
* Anti Randoms, Anti Ban
* Awesome Reports
* Very Fast
* TPoint Array Object Finding (for bank, iron and mine).
* Pick Related:
- Get New Pick From Bank When No Pick
- Bank Pickaxe If Broken
- Attamps to find the pickhead if it flies of
//----------------------------------------------------------------------------//
Start your players in the Varrock east bank with a pickaxe in first slot OR
wielded. Make sure the mining level is > 14. Be smart and add some responds
in the responds setup. plz setup the script:
//----------------------------------------------------------------------------//
Credits:
n3ss3s: Download Function
Wizzup?: helping me making l33t stuff
Raymond: Some help with the form
//----------------------------------------------------------------------------/}
{Script Setup!}
//----------------------------------------------------------------------------//
Procedure SetupPlayers;
begin
MouseSpeed := 12; // Mouse speed
end;
// PLAYER SETUP IS WHEN YOU RUN THE SCRIPT!
Procedure SetupResponds; // ADD RESPONDS FOR BETTER ANTI BAN !
begin
HowManyResponds := 2; {<-- SETUP CORRECT !!
NOTE: respond to your nickname and your mining level are allready in the script!}
SetArrayLength(TheQuestion, HowManyResponds); SetArrayLength(TheRespond, HowManyResponds);
TheQuestion[0] := ['noob'];
TheRespond[0] := ['Im not a noob!', 'your the noob', 'look in the mirror', 'noob noob', 'no way noob', 'your more noob', 'whoes noob?'];
TheQuestion[1] := ['respond'];
TheRespond[1] := ['what to say?', 'i dont have anything to say', 'no im bussy'];
end;
//----------------------------------------------------------------------------//
{End Script Setup!}
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
{Script Code! don't touch all below}
//----------------------------------------------------------------------------//
var
x, y, I, Load, RockWaitTime, Responds, bankers, IronMined, IronOre: Integer;
PickaxeStick, BrokenPickaxe, PickaxeD, Banked, ScriptRunTime, warn: Integer;
Bankers2, MKLOGO, SetTime: Integer;
Wielded: Boolean;
SafeReportFileName, LastRespond: String;
PickaxeDTM: Array [1..6] Of Integer;
RespondsList: TStringList;
Procedure SetupDTM;
begin
MKLOGO := BitmapFromString(60, 55, 'beNrNmslTG0cUxr' +
'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' +
'PP7z67Zc3P33/1e9vv3nz9V7sH72cp4U=');
Bankers2 := DTMFromString('78DA639CC5C4C07098010514667A30FC07D28' +
'C40FC1F08182700D59C81C83143D5BC7DCBC020025503028C5388' +
'5033830835738950B39008354B09AB01007BF81BA4');
Bankers := DTMFromString('78DA633CC3CCC070890105FCFFFF9FE13F906' +
'684B0FF331E02AAB905916383AAF9F38789810BAA060418AF01D5' +
'DC26A0E614617300197B14BA');
IronOre := DTMFromString('78DA6314616060106640038C482490660712A' +
'204D408000945026AE481840C0135AA40828F801A2920C141400D' +
'C85FECF8D50000ACCF0135');
PickaxeStick := DTMFromString('78DA6314666060906140038C4824901601124' +
'204D44801095E026A40F2CA04D408000929026A048184220135E2' +
'404214BF1A00B23A014A');
BrokenPickaxe := DTMFromString('78DA6334676660A8656440058C4824907603A' +
'A2926A0C61BA8A688801A3BA09A4C026A8C806A728950D34A408D' +
'13504D3E7E3500C8FC050A');
PickaxeDTM[1] := DTMFromString('78DA639CC0CCC0708B91011530229140BA13A' + //rune//
'8E60301350B816AEE1350330DA8E60A01350B30CD71894A611041' +
'52030015D70885');
PickaxeDTM[2] := DTMFromString('78DA63DCC5CCC0708B91011530C2C9FF40C0B' + //addy//
'819A8E6036E3560FA3450CD7D026A0E00D55C21A0E614A6394E41' +
'4E0CBC486A00B2A90D20');
PickaxeDTM[3] := DTMFromString('78DA637CC2CCC0708B91011530229140FA2E5' + //mith//
'0CD07026ABE02D5DC27A0E61550CD15026ABE609AE3E010C72082' +
'A40600C3490A05');
PickaxeDTM[4] := DTMFromString('78DA63E4636160B8C5C8800A18914820CD0E5' + //steel//
'4F381801A79A09AFB04D48800D55C21A0460ED39C8A8202061124' +
'35000D5E0656');
PickaxeDTM[5] := DTMFromString('78DA639CC0CCC0F08F91011530229140BA13A' + //iron//
'8468409BF9A854035CC04D44C03AAF941C0AE0598E604F9FA3288' +
'20A901004D1D0626');
PickaxeDTM[6] := DTMFromString('78DA63DCC5CCC0F08F910115302291407A335' + //bronz//
'08D08137E35A7816A9809A8390054F383805DA730CDF1B5516110' +
'41520300A15606B9');
PickaxeD := DTMFromString('78DA6314606060E06540038C4824909605125' +
'C04D470020976026A40662810502302245808A801B9590CBF1A00' +
'612000CF');
end;
// srl function, edited the WriteLn out
function FindVarrockRoadColor2: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
GC := 7304312;
Flag;
FindColorsSpiralTolerance(x, y, P, GC, MMX1, MMY1, MMX2, MMY2, 60);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
TestColor := GetColor(P[a].x, P[a].y);
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Red - Blue <= 12 then if Red - Blue >= 8 then
if Red - Green <= 6 then if Red - Green >= -1 then
if Green - Blue <= 10 then if Green - Blue >= 4 then
if GetColor(P[a].x + 5, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 3) = TestColor then
if GetColor(P[a].x, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 5, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y) = TestColor then
if GetColor(P[a].x + 5, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 5) = TestColor then
begin
Result := TestColor;
Exit;
end;
end;
WriteLn('Could not find Varrock Road Color!');
Result := 0;
end;
function FindStoneColor2: Integer;
var
GC, a, l, TestColor: integer;
var
P:array of Tpoint;
begin
GC := 3561615;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1,MMY1,MMX2,MMY2, 60);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
TestColor := GetColor(P[a].x,P[a].y);
if (GetColor(P[a].x-1,P[a].y)=TestColor-527120) then
begin
Result := TestColor;
Status('#Stone Color = ' + IntToStr(TestColor) + '.');
Exit;
end;
end;
Status('#Not found stone color.');
Result := 0;
end;
Function TheResponder: boolean;
var
I, II, Rand, CurTime: Integer;
Text, Name, MakeRespond: String;
TextP: TPoint;
Awnser: TStringArray;
begin
CurTime := GetSystemTime;
If (CurTime - SetTime < 20000) Then Exit;
For I := 8 DownTo 4 Do
Begin
TextP := TextCoords(I);
If findcolor(x, y, 16711680, TextP.x, TextP.y, TextP.x + 200, TextP.y + 14) Then
Begin
Text := LowerCase(Trim(GetTextAtEx(x - 3, textp.y - 2, 0, SmallChars, False, False, -1, 1, 16711680, 60, False, tr_allChars)));
If (Text = LastRespond) Then
Exit;
LastRespond := Text;
Name := GetBlackText(I);
If (Pos(Players[CurrentPlayer].nick, Name) <> 0) then Exit;
Break;
End;
If (I = 4) Then Exit;
End;
If (Pos(Players[CurrentPlayer].Nick, Text) <> 0) Then
Begin
If (Pos('nice', Text) <> 0) Or (Pos('cool', Text) <> 0) Then
Begin
Awnser := ['thanks', ':)', 'tnx', 'ur cool to'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
If (Pos('friends', Text) <> 0) Then
Begin
Awnser := ['no', 'no way', 'sorry my list is full', 'no sorry'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
If (Pos('macro', Text) <> 0) Or (Pos('bot', Text) <> 0) Or (Pos('auto', Text) <> 0) Then
Begin
Awnser := ['lol im not!', 'why?', 'no way', 'not me', 'dream on', 'nah'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
Begin
Awnser := ['no, im bussy', 'go away plz', 'leave me alone', 'im bussy'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End;
WriteLn('Respond:');
WriteLn('/ ' + Name + ' ' + Text);
TypeSend(MakeRespond);
WriteLn('/ ' + Players[CurrentPlayer].Name + ': ' + MakeRespond);
Responds := Responds + 1;
ReportVars[2] := ReportVars[2] + 1;
Result := True;
SetTime := GetSystemTime;
exit;
End;
If (Pos('mining', Text) <> 0) Then
Begin
If (Pos('my mining level is', Text) <> 0) Or (Pos('m mining ore', Text) <> 0) Then
Begin
Awnser := ['gratz', ':)', 'kewl', 'cool'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
If (Pos('what is your level in mining', Text) <> 0) Then
Begin
Awnser := [IntToStr(Players[CurrentPlayer].integers[1]), 'me ' + IntToStr(Players[CurrentPlayer].integers[1]), 'My Mining level is '+ IntToStr(Players[CurrentPlayer].integers[1]) + '.'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
If (Pos('what ore are you mining', Text) <> 0) Then
Begin
Awnser := ['iron', 'iron ore'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
If (Pos('s a good place for me', Text) <> 0) Then
Begin
Awnser := ['here', 'what about here', 'here i guess', 'here?'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End Else
Begin
Awnser := [IntToStr(Players[CurrentPlayer].integers[1]), 'me ' + IntToStr(Players[CurrentPlayer].integers[1]), 'My Mining level is '+ IntToStr(Players[CurrentPlayer].integers[1]) + '.'];
I := random(High(Awnser));
MakeRespond := Awnser[I];
End;
WriteLn('Respond:');
WriteLn('/ ' + Name + ' ' + Text);
TypeSend(MakeRespond);
WriteLn('/ ' + Players[CurrentPlayer].Name + ': ' + MakeRespond);
Responds := Responds + 1;
ReportVars[2] := ReportVars[2] + 1;
Result := True;
SetTime := GetSystemTime;
exit;
End;
For I := 0 To HowManyResponds - 1 Do
begin
For II := 0 To High(TheQuestion[I]) Do
begin
If (Pos(TheQuestion[I][II], Text) <> 0) then
begin
WriteLn('Respond:');
WriteLn('/ ' + Name + ' ' + Text);
Rand := Random(High(TheRespond[I]));
TypeSend(TheRespond[I][Rand]);
WriteLn('/ ' + Players[CurrentPlayer].Name + ': ' + TheRespond[I][Rand]);
Responds := Responds + 1;
ReportVars[2] := ReportVars[2] + 1;
Result := True;
SetTime := GetSystemTime;
exit;
end;
end;
end;
end;
Procedure Randoms;
begin
FindNormalRandoms;
if FindFight then
begin
MakeCompass('n');
mouse(630, 154, 5, 5, True);
fflag(0);
SleepAndMoveMouse(15000+random(5000));
Mouse(630, 15, 5, 5, True);
SleepAndMoveMouse(2000 + random(2000));
fflag(0);
end;
end;
Function NumberOfActive(WriteLin: boolean): Integer;
var
R: Integer;
begin
Result := 0;
for R := 0 To HowManyPlayers - 1 do
if (Players[R].active = True) then
Result := Result + 1;
If WriteLin Then
If (Result = 0) Then WriteLn('No More Players Active.')
Else WriteLn('Still ' + IntToStr(Result) + ' players of the ' + IntToStr(howManyPlayers) + ' players are active.');
end;
Procedure WieldPickaxe;
var
rx, ry: Integer;
begin
Wielded := False;
Status('$Pickaxe wield check.');
If (Players[CurrentPlayer].Integers[4] < 1) Then
Players[CurrentPlayer].Integers[4] := GetSkillInfo('attack', False);
Gametab(4);
Wait(500 + random(500));
if FindDTM(PickaxeD, rx, ry, 525, 182, 745, 473) then
begin
case Players[CurrentPlayer].strings[0] of
'Rune': begin
If (Players[CurrentPlayer].Integers[4] > 39) then
begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
end;
'Addy': begin
If (Players[CurrentPlayer].Integers[4] > 29) then
begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
end;
'Mith': begin
If (Players[CurrentPlayer].Integers[4] > 19) then
begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
end;
'Steel': begin
If (Players[CurrentPlayer].Integers[4] > 4) then
begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
end;
'Iron': begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
'Bronz': begin
Mouse(rx, ry, 0, 0, True);
Wielded := True;
end;
end;
If Wielded Then
Begin
WriteLn('Your strong enough to wield your pickaxe... Wielded.');
Status('#Pickaxe wieled');
End;
end;
end;
Function MasterRoadWalk(TheColor, StartRadial, EndRadial, Radius, Xmod, Ymod: Integer; FailWait: Boolean): Boolean; // BETA
Var
ResultTPA: TPointArray;
Begin
If RadialWalkEx(ResultTPA, MMCX, MMCY, TheColor, 0, StartRadial, EndRadial, Radius) Then
Begin
Mouse(ResultTPA[0].x, ResultTPA[0].y, Xmod, Ymod, True);
If FailWait Then
Begin
Wait(4000);
FFlag(20);
End Else
Begin
SleepAndMoveMouse(Random(2000));
Wait(2000 + Random(2000));
End;
Result := True;
End;
End;
Function GetPickAxe: Integer;
Var
MK: Integer;
Begin
Result := 0;
For MK := 1 To 6 Do
Begin
If FindDTM(PickaxeDTM[MK], x, y, 532, 183, 751, 485) Then
Begin
Result := MK;
Exit;
End;
End;
End;
Function SetupPick(PickaxeNumber: Integer): Boolean;
Begin
Case PickaxeNumber Of
0: Exit;
1: Begin
RockWaitTime := 4000;
Players[CurrentPlayer].Strings[0] := 'Rune';
End;
2: Begin
RockWaitTime := 5000;
Players[CurrentPlayer].Strings[0] := 'Addy';
End;
3: Begin
RockWaitTime := 6000;
Players[CurrentPlayer].Strings[0] := 'Mith';
End;
4: Begin
RockWaitTime := 7000;
Players[CurrentPlayer].Strings[0] := 'Steel';
End;
5: Begin
RockWaitTime := 8000;
Players[CurrentPlayer].Strings[0] := 'Iron';
End;
6: Begin
RockWaitTime := 8000;
Players[CurrentPlayer].Strings[0] := 'Bronz';
End;
End;
Result := True;
WriteLn(Players[CurrentPlayer].Strings[0] + ' pickaxe found.');
End;
Procedure WhatPickaxeDoWeHave;
Begin
If Not LoggedIn Then Exit;
WriteLn('Checking your Pickaxe...');
Status('$Getting pickaxe status');
GameTab(4);
If Not SetupPick(GetPickaxe) Then
Begin
GameTab(5);
If Not SetupPick(GetPickaxe) Then
Begin
WriteLn('You do not have a pickaxe! Plz get a pickaxe to mine iron.');
Players[CurrentPlayer].Loc := 'No Pickaxe!';
LogOut;
End Else Wielded := True;
End Else WieldPickaxe;
End;
Function GetInMine: boolean;
Var
RockCoords: Array Of TPoint;
CheckCol: Integer;
Begin
WriteLn('prolly found the mine, try entering now...');
Status('$Entering VE mine');
FFlag(0);
CheckCol := FindStoneColor2;
If (CheckCol = 0) Then
Begin
If FindSymbol(x, y, 'mining spot') Then
Begin
Mouse(x, y, 2, 2, True);
Wait(2000);
FFlag(0);
CheckCol := FindStoneColor2;
If (CheckCol = 0) Then
Begin
WriteLn('Enterd the mine by using the symbol :(');
Exit;
End;
End;
End;
Begin
FindColorsSpiralTolerance(x, y, RockCoords, FindStoneColor2, MMX1, MMY1, MMX2, MMY2, 1);
If (High(RockCoords) > 0) Then
Begin
MiddleTPAEx(RockCoords, X, Y);
Mouse(x, y, 0, 0, True);
FFlag(0);
Status('#Walking in the mine');
WriteLn('succesfully enterd the mine.');
Result := True;
End Else
WriteLN('wieeeerd we lost it again.');
End;
End;
Procedure ToThaMine;
Var
RicksRoadWalk, TCol: Integer;
begin
Status('$Walking to the mine');
MakeCompass('N');
If Not LoggedIn Then Exit;
Players[CurrentPlayer].Loc := 'Moving To The Mine';
WriteLn('');
WriteLn('[To The Mine]');
WriteLn('');
WriteLn('Walking to the mine...');
If Not MasterRoadWalk(FindVarrockRoadColor2, 133, 20, 65, 3, 3, True) Then
Begin
WriteLn('Walking failsave!');
Mouse(670, 53, 5, 5, True); // this will never hapen.
SleepAndMoveMouse(3000 + Random(2000));
FFlag(10);
End;
RadialRoadWalk(FindVarrockRoadColor2, 133, 60, 65, 3, 3);
Repeat
RicksRoadWalk := RicksRoadWalk + 1;
If Not LoggedIn Then
Begin
WriteLn('player logged out while walking to the bank...');
Players[CurrentPlayer].Loc := 'Logged Out To Mine';
exit;
End;
If Not RadialRoadWalk(FindVarrockRoadColor2, 127, 228, 55, 1, 1) Then Break;
If (RicksRoadWalk > 2) Then
Begin
TCol := FindStoneColor2;
If (TCol > 0) Then
Begin
If FindColorTolerance (x, y, TCol, MMX1, MMY1, MMX2, MMY2, 1)
Or FindSymbol(x, y, 'mining spot') Then
If GetInMine Then Exit;
End Else
If FindSymbol(x, y, 'mining spot') Then
If GetInMine Then Exit;
End;
Until(RicksRoadWalk > 15)
WriteLn('We did not found the mine, logging out player.');
Status('#Player fucked up walking');
Players[CurrentPlayer].Loc := 'Not Found Mine';
LogOut;
end;
Function FindTheBank: Boolean;
Begin
If Not LoggedIn Then Exit;
FFlag(0);
//If FindDTM(bankers, x, y, MMX1, MMY1, MMX2, MMY2) Then
if DTMRotated(Bankers2, x, y, MMX1, MMY1, MMX2, MMY2) then
Begin
WriteLn('We have found the bankers DTM, entering bank...');
Status('$Moving inside the bank');
Mouse(x, y, 2, 2, True);
Result := True;
Wait(3000);
FFlag(0);
WriteLn('Welcome in the Varrock east bank.');
End;
End;
Procedure ToThaBank;
var
RRoadWalk: Integer;
begin
If Not LoggedIn Then Exit;
Players[CurrentPlayer].Loc := 'Moving To The Bank';
Status('$Walking back to bank');
WriteLn('');
WriteLn('[To The Bank]');
WriteLn('');
RadialRoadWalk(FindVarrockRoadColor2, 5, 50, 70, 1, 1);
Randoms;
Mouse(626, 21, 10, 10, True); // if you don't like this then eat shit.
FFlag(10);
RadialRoadWalk(FindVarrockRoadColor2, 337, 385, 65, 1, 1);
Randoms;
repeat
If Not LoggedIn then
begin
WriteLn('Player logged out while walking to the bank.');
Players[CurrentPlayer].Loc := 'Logged Out To Bank';
Exit;
end;
RadialRoadWalk(FindVarrockRoadColor2, 240, 380, 65, 1, 1);
Randoms;
RRoadWalk := RRoadWalk + 1;
If (RRoadWalk > 1) Then
if DTMRotated(Bankers2, x, y, MMX1, MMY1, MMX2, MMY2) then
If FindTheBank Then Exit;
until (RRoadWalk > 20)
WriteLn('Omg, can not find the bank! logging out...');
Status('#Player fucked up walking to bank');
Players[CurrentPlayer].Loc := 'Not Found The Bank';
LogOut;
end;
Function FindIron(var xr, yr: Integer): Boolean;
Var
RealIron, IronRock: Array Of TPoint;
CurPoint: TPoint;
TolSpeed, MK, xx, yy: Integer;
Begin
TolSpeed := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x, y, RealIron, 2832989, MSX1, MSY1, MSX2, MSY2, 6);
For MK := 0 To High(RealIron) Do
Begin
CurPoint := RealIron[MK];
FindColorsTolerance(IronRock, 1659234, CurPoint.X - 15, CurPoint.Y - 15, CurPoint.X + 15, CurPoint.Y + 15, 20);
If (High(IronRock) > 15) Then
Begin
MiddleTPAEx(IronRock, xx, yy);
MMouse(xx, yy, 0, 0);
If FindColorTolerance(x, y, 2832989, xx - 15, yy - 15, xx + 15, yy + 15, 6) Then
Begin
Wait(100 + Random(100));
If (Pos('ine', rs_getuptext) <> 0) Then
Begin
xr := xx; yr := yy;
Result := True;
Exit;
End;
End;
End;
End;
ColorToleranceSpeed(TolSpeed);
End;
Function CheckPickaxe: Boolean;
begin
If Wielded Then
GameTab(5) Else GameTab(4);
If FindDTM(PickaxeStick, x, y, 532, 183, 751, 485) Then
Begin
WriteLn('Noes! your pickhead flyd off!');
Status('[error] no pickaxe head');
Wielding := Wielded;
If Not FindPick Then
Begin
Result := True;
WriteLn('We lost your pickaxe head... moving back to bank...');
Status('[error] pickaxe head lost');
GameTab(5);
Mouse(584, 302, 10, 10, True);
Wielded := False;
Exit;
End;
End;
If FindDTM(BrokenPickaxe, x, y, 532, 183, 751, 485) Then
Begin
Result := True;
WriteLn('Sorry, but ' + Players[CurrentPlayer].Nick + ' broke your pickaxe, not MasterKills foult ;)');
WriteLn('Moving back to the bank...');
Status('[error] broken pickaxe');
GameTab(5);
Mouse(584, 302, 10, 10, True);
Wielded := False;
Exit;
End;
If Not FindDTM(PickaxeD, x, y, 532, 183, 751, 485) Then
Begin
Result := True;
WriteLn('We cant find your pickaxe at all! Back to bank...');
Status('[error] no pickaxe');
Wielded := False;
End;
End;
Procedure MineThaLoad;
Var
NotF, errF, RWTime: Integer;
BlackText: String;
begin
If Not LoggedIn Then Exit;
Players[CurrentPlayer].Loc := 'Mining Full Load';
LastRespond := '';
WriteLn('');
WriteLn('[MineThaLoad]');
WriteLn('');
FindPickHeadColor;
Status('$Mining full load');
SetRun(true);
WriteLn('Run activated.');
WriteLn('Starting mining...');
Repeat
If Not LoggedIn Then Exit;
If FindIron(x, y) Then
begin
Status('#Found Iron $Mining rock');
Mouse(x, y, 0, 0, True);
MarkTime(RWTime);
NotF := 0;
TheResponder;
SleepAndMoveMouse(1500);
If FlagPresent Then Wait(1000);
Repeat
BlackText := GetBlackChatMessage;
if (getcolor(471, 383) = 0) then
if FindNpcChatText('ickaxe', Nothing) then
If CheckPickaxe Then Exit;
If FindGas(x, y) then
begin
Mouse(633, 83, 8, 8, True);
SleepAndMoveMouse(25000);
end;
Randoms;
If (Pos('anage', BlackText) <> 0) or (Pos('vailable', BlackText) <> 0) then break;
SleepAndMoveMouse(200 + random(1000));
Until(TimeFromMark(RWTime) > RockWaitTime)
end else
begin
Wait(300);
Randoms;
NotF := NotF + 1;
Status('#Not Found Iron ' + IntToStr(NotF) + '/15');
If (NotF > 14) Then
Begin
errF := errF + 1;
If (errF > 4) Then
Begin
WriteLn('huh the script can not find any iron, while were in the mine...');
Exit;
End;
WriteLn('Not found any iron, try to find the mine again...');
If Not GetInMine Then
Begin
WriteLn('O dear, we got lost while mining... How wierd is that?');
Players[CurrentPlayer].Loc := 'Lost While Mining';
LogOut;
Exit;
End;
Status('#Mine found $Starting mining');
WriteLn('Resume mining...');
NotF := 0;
End;
End;
Until InvFull
WriteLn('... until where full.');
End;
Function CurrentStatus: String;
var
MK, PlayerCount: Integer;
begin
for MK := 0 To HowManyPlayers - 1 do
if (Players[MK].active = True) then
PlayerCount := PlayerCount + 1;
IF (PlayerCount = 0) then
Result := 'Script succesfully ended. All players False.' else
Result := 'there still where ' + IntToStr(PlayerCount) + ' of the ' + IntToStr(HowManyPlayers) + ' players active.';
end;
Procedure SafeReport;
var
SaveFileCreate: TStringList;
MK: Integer;
begin
SaveFileCreate := TStringList.Create;
SaveFileCreate.Add('Varrock east mine and banker version 14.0');
SaveFileCreate.Add(' created by MasterKill');
SaveFileCreate.Add('');
SaveFileCreate.Add('Last status found in script:');
SaveFileCreate.Add(' ' + CurrentStatus);
SaveFileCreate.Add('');
SaveFileCreate.Add('Script Report:');
SaveFileCreate.Add(' Time Running : ' + TimeRunning);
SaveFileCreate.Add(' Iron Mined : ' + IntToStr(IronMined));
SaveFileCreate.Add(' Times Banked : ' + IntToStr(Banked));
SaveFileCreate.Add(' Responds Made : ' + IntToStr(Responds));
SaveFileCreate.Add('');
SaveFileCreate.Add('Player Report:');
For MK := 0 To HowManyPlayers - 1 Do
begin
SaveFileCreate.Add(' ' + Players[MK].Name);
SaveFileCreate.Add(' Iron Mined : ' + IntToStr(Players[MK].integers[2]));
SaveFileCreate.Add(' Location : ' + Players[MK].Loc);
SaveFileCreate.Add(' Mining level : ' + IntToStr(Players[MK].integers[1]));
SaveFileCreate.Add('');
end;
SaveFileCreate.Add('Respond That Are Made:');
SaveFileCreate.Add('');
Try
For MK := 0 To getarraylength(RespondsList) - 1 Do
SaveFileCreate.Add(RespondsList[MK]);
Except
WriteLn('Could not save the responds...');
End;
If Not SaveToFile(SaveFileCreate, SafeReportFileName) Then
WriteLn('Could not save your report.');
end;
Procedure WhileReport;
Var
MK: Integer;
begin
WriteLn('');
WriteLn('[Time Running: ' + TimeRunning + ']');
WriteLn('[Iron Mined: ' + IntToStr(IronMined) + ']');
WriteLn('[Times Banked: ' + IntToStr(Banks) + ']');
WriteLn('[Respond[s] made: ' + IntToStr(Responds) + ']');
WriteLn('[Mining ' + FloatToStr(IronMined div TimeFromMark(ScriptRunTime) * 3600000.0) + ' Iron a hour]');
For MK := 0 To HowManyPlayers - 1 Do
WriteLn(Players[MK].Name + ' = [' + IntToSTr(players[MK].integers[2]) + ' Iron Mined] [active? ' + BoolToStr(Players[MK].Active) + '] [Location: ' + Players[MK].Loc + ']');
SrlRandomsReport;
SafeReport;
WriteLn('Progress report saved to: ' + SafeReportFileName);
end;
Function FindThaBankTPA: boolean;
Var
BankCoords, BoothCoords: Array Of TPoint;
MK, mx, my, TolSpeed, NumberOfLenght: Integer;
DaPoint: TPoint;
begin
TolSpeed := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(mx, my, BankCoords, 1593183, MSX1, MSY1, MSX2, MSY2, 6);
NumberOfLenght := High(BankCoords);
For MK := 1 To NumberOfLenght Do
begin
DaPoint := BankCoords[MK];
FindColorsTolerance(BoothCoords, 1593183, DaPoint.X - 15, DaPoint.Y - 15, DaPoint.X + 15, DaPoint.Y + 15, 11);
If(GetArrayLength(BoothCoords)-1 > 30)Then
Begin
MiddleTPAEx(BoothCoords, x, y);
Mouse(x, y, 0, 0, False);
Wait(100 + Random(50));
If ChooseOption('uick') Then
Begin
Result := True;
Break;
End Else WriteLn('No bank booth here.');
End;
End;
ColorToleranceSpeed(TolSpeed);
End;
Function PickaxeFound: Boolean;
Begin
If Wielded Then Result := True Else
Result := FindDTM(PickaxeD, x, y, MIX1, MIY1, MIX2, MIY2);
End;
Function GetNewPickFromBank: Boolean;
Begin
If (Players[CurrentPlayer].Integers[1] > 40) then
begin
if FindDTM(PickaxeDTM[1], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
end;
If (Players[CurrentPlayer].Integers[1] > 30) then
begin
if FindDTM(PickaxeDTM[2], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
end;
If (Players[CurrentPlayer].Integers[1] > 20) then
begin
if FindDTM(PickaxeDTM[3], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
end;
If (Players[CurrentPlayer].Integers[1] > 5) then
begin
if FindDTM(PickaxeDTM[4], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
end;
if FindDTM(PickaxeDTM[5], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
if FindDTM(PickaxeDTM[6], x, y, msx1, msy1, msx2, msy2) then
begin
Result := True;
Mouse(x, y, 0, 0, True);
Exit;
end;
End;
Procedure SetupPlayer;
begin
If Not LoggedIn Then Exit;
WriteLn('');
WriteLn('[' + Players[CurrentPlayer].name + ' setup]');
WriteLn('');
SetAngle(True);
MakeCompass('N');
GameTab(2);
Players[CurrentPlayer].integers[1] := GetSkillInfo('mining', False);
WriteLn('Players mining level is ' + IntToStr(Players[CurrentPlayer].integers[1]));
If (Players[CurrentPlayer].Integers[3] < 1) Then
Players[CurrentPlayer].integers[3] := GetCombatLevel;
WriteLn('Players combat level is ' + IntToStr(Players[CurrentPlayer].Integers[3]));
WhatPickaxeDoWeHave;
SetupResponds;
end;
Procedure BankThaLoad;
Var
IronLoad, NotF: integer;
noobarray: TPointArray;
begin
If Not LoggedIn Then Exit;
WriteLn('');
WriteLn('[Bank The Load]');
WriteLn('');
Players[CurrentPlayer].Loc := 'In The Bank';
noobarray := ItemCoordinates('inv', 'dtm', IronOre, [0]);
IronLoad := getarraylength(noobarray);
Repeat
If Not LoggedIn Then
begin
WriteLn('Player logged out while banking?!');
Players[CurrentPlayer].Loc := 'Logged Out While Banking';
Exit;
end;
If FindThaBankTPA Then
begin
WriteLn('Opening the bank...');
FFlag(0);
players[CurrentPlayer].integers[2] := players[CurrentPlayer].integers[2] + IronLoad;
IronMined := IronMined + IronLoad;
WriteLn('Mined ' + IntToStr(IronLoad) + ' Iron, wich makes the grand total ' + IntToStr(IronMined) + '.');
ReportVars[0] := ReportVars[0] + 1;
ReportVars[1] := ReportVars[1] + IronLoad;
Wait(1000 + Random(1000));
If FindDTM(BrokenPickaxe, x, y, MIX1, MIY1, MIX2, MIY2)
Or FindDTM(pickaxestick, x, y, MIX1, MIY1, MIX2, MIY2)
Or Not PickaxeFound then
Begin
WriteLn('Your pickaxe is dead, looking for a new one...');
Deposit(1, 28, True);
If GetNewPickFromBank Then
Begin
WriteLn('We got a new pickaxe from your bank, lukky bastard.');
Mouse(RandomRange(483, 495), RandomRange(29, 41), 0, 0, True);
WhatPickaxeDoWeHave;
End Else
Begin
WriteLn('This player has runned out of pickaxes... WHEHE!');
Players[CurrentPlayer].Loc := 'Out Of PickAxes';
Mouse(RandomRange(483, 495), RandomRange(29, 41), 0, 0, True);
LogOut;
Exit;
End;
End Else
Begin
WriteLn('Banking all stuff except for your pickaxe.');
If Wielded Then Deposit(1, 28, True) else Deposit(2, 28, True);
Mouse(RandomRange(483, 495), RandomRange(29, 41), 0, 0, True);
End;
SetAngle(true);
Banked := Banked + 1;
WriteLn('banking succesfully completed.');
Banks := Banks + 1;
Wait(100 + Random(50));
MakeCompass('N');
Exit;
end else
begin
FFlag(0);
If FindDTM(bankers, x, y, 547, 6, 703, 163) Then
Begin
Mouse(x, y, 0, 0, True);
SleepAndMoveMouse(500 + Random(1000));
FFlag(0);
End Else
Begin
NotF := NotF + 1;
SleepAndMoveMouse(2000 + Random(1000));
If (NotF > 1) Then
Begin
WriteLn('We can not find the bank anymore. Player logout...');
Players[CurrentPlayer].Loc := 'Lost Around Bank';
LogOut;
Exit;
End;
End;
end;
Until False
end;
Function GetSafeReportFilePath: String;
Var
Hour, Mins, Sec, MSec, Year, Month, Day: Word;
M: String;
Begin
DecodeDate(Date, Year, Month, Day);
DecodeTime(Now, Hour, Mins, Sec, MSec);
case Month of
1: M := 'Jan-';
2: M := 'Feb-';
3: M := 'Mar-';
4: M := 'Apr-';
5: M := 'May-';
6: M := 'Jun-';
7: M := 'Jul-';
8: M := 'Aug-';
9: M := 'Sep-';
10: M := 'Oct-';
11: M := 'Nov-';
12: M := 'Dec-';
end;
Result := AppPath + 'MasterKill_Progress_Reports\IronMiner__' + IntToStr(Day) + '-' + M + IntToStr(Year) + '__' + Padz(IntToStr(Hour), 2) + '-' + Padz(IntToStr(Mins), 2) + '-' + Padz(IntToStr(Sec), 2) + '.txt';
End;
procedure StartUp;
begin
ClearDeBug;
WriteLn('MasterKill prezents: ');
WriteLn(' ___ __ ');
WriteLn('| |_______ ____ ____ _____ |__| ____ _____ _______ ©');
WriteLn('| |\_ __ \ / \ / \ / \ | | / \ / __ \\_ __ \ ');
WriteLn('| | | | \/( () )| | \ | \| || | \\ ___/ | | \/ ');
WriteLn('|___| |__| \____/ |___| / |__|_| /|__||___| / \___ \ |__| ');
WriteLn(' \/ \/ \/ \/ ');
WriteLn(' and banker! V15');
Status('MasterKill productions! ©');
disguise('MasterKill ©');
Wait(3000);
SafeReportFileName := GetSafeReportFilePath;
RespondsList := TStringList.Create;
SetTime := GetSystemTime;
for I := 0 to getarraylength(players)-1 do
begin
If (Players[I].Active = True) then
Players[I].Loc := 'In The Bank' else
Players[I].Loc := 'Not In Use';
//SetArrayLength(Players[I].integers, 5);
//SetArrayLength(Players[I].Strings, 1);
end;
end;
procedure HyperMainLoop;
begin
Repeat
ToThaMine;
MineThaLoad;
ToThaBank;
BankThaLoad;
WhileReport;
Load := Load + 1;
disguise('P: ' + IntToStr(NumberOfActive(False)) + '/' + IntToStr(getarraylength(players)) + ' Iron: ' + IntToStr(IronMined));
Until (Not LoggedIn) Or (Load - 1 > Players[CurrentPlayer].Integers[0])
end;
Procedure LogInFalseTrue;
begin
If Not LoggedIn then Players[CurrentPlayer].active := False;
If (NumberOfActive(False) = 0) then exit;
WriteLn('');
WriteLn('[Player Done]');
WriteLn('');
NextPlayer(LoggedIn);
Load := 0;
SetupPlayer;
end;
// Function Download is created by n3ss3s
Function Download(URL, WhereTo: String; Shared: Boolean): Boolean;
Var
theFile: Integer;
fileData: String;
Begin
theFile := ReWriteFile(WhereTo, Shared);
If theFile > -1 Then
Begin
fileData := GetPage(URL);
If fileData <> '' Then
If WriteFileString(theFile, fileData) Then
Result := True;
End;
End;
var
frmDesign : TForm;
Txt: Array [0..1] Of TLabel;
SRLStatz: Array [0..2] Of TLabel;
Labelz: Array [0..4] Of TLabel;
CurPlayerLabel, NumbPlayers, BProg: TLabel;
LBar: TProgressBar;
Stage, img: Integer;
MKBanner: TImage;
Start, DelPlayer, Next, Prev, VSite, SAExit, EResponds: TButton;
MusicLoop: TTimer;
EditBox: Array [0..2] Of TEdit;
SRLStats: Array [0..2]Of TEdit;
EditCombo: Array [0..1] Of TComboBox;
CurPlayer: Integer;
ReadyForStart, SaveIt: Boolean;
PlayerList, BestProggy: TListBox;
Procedure UpdateList;
Var
MK: Integer;
Begin
PlayerList.Clear;
For MK := 0 To getarraylength(players)-1 Do
PlayerList.Items.Add(IntToStr(MK) + ': ' + Players[MK].Name);
End;
Procedure GetPlayer(Sender: TObject);
Begin
Try
Players[CurPlayer].Name := EditBox[0].Text;
Players[CurPlayer].Nick := EditBox[1].Text;
Players[CurPlayer].Pass := EditBox[2].Text;
Players[CurPlayer].Integers[0] := StrToInt(EditCombo[0].Text);
Players[CurPlayer].Active := StrToBool(EditCombo[1].Text);
Except
ShowMessage('Plz finnish this player first, or delete it.');
Exit;
End;
CurPlayer := PlayerList.ItemIndex;
If (CurPlayer = 0) Then Prev.Enabled := False Else Prev.Enabled := True;
If (CurPlayer + 1 = HowManyPlayers) Then Next.Caption := 'Add Player' Else Next.Caption := '-->';
EditBox[0].Text := Players[CurPlayer].Name;
EditBox[1].Text := Players[CurPlayer].Nick;
EditBox[2].Text := Players[CurPlayer].Pass;
EditCombo[0].Text := IntToStr(Players[CurPlayer].Integers[0]);
EditCombo[1].Text := BoolToStr(Players[CurPlayer].Active);
CurPlayerLabel.Caption := 'Setup Player ' + IntToStr(CurPlayer) + ':';
UpdateList;
End;
Procedure StartClick(Sender: TObject);
Var
ActiveCount, MK: Integer;
Begin
Try
Players[CurPlayer].Name := EditBox[0].Text;
Players[CurPlayer].Nick := EditBox[1].Text;
Players[CurPlayer].Pass := EditBox[2].Text;
Players[CurPlayer].Integers[0] := StrToInt(EditCombo[0].Text);
Players[CurPlayer].Active := StrToBool(EditCombo[1].Text);
World := StrToInt(SRLStats[2].text);
Except
ShowMessage('Plz finnish this player first, or delete it.');
Exit;
End;
Case World Of
1, 3, 4, 5, 7, 8, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 25, 29, 30, 32, 33,
34, 35, 37, 38, 40, 41, 43, 47, 50, 51, 52, 55, 57, 61, 62, 63, 67, 68, 72,
73, 74, 75, 80, 81, 85, 86, 87, 90, 93, 94, 95, 96, 101, 102, 105, 106, 107,
108, 109, 113, 117, 118, 119, 123, 125, 126, 127, 128, 133, 134, 136, 141,
142, 149, 152, 153, 154, 155: WriteLn('Correct non-member world');
Else
Begin
ShowMessage('Wrong world, make sure it is non members');
Exit;
End;
End;
SRLid := SRLStats[0].text;
SRLPassword := SRLStats[1].text;
If (SRLid = '') Then
Begin
ShowMessage('You need a SRL ID and Password to run this script...');
ShowMessage('Go to "http://www.stats.srl-forums.com" and hit register.');
Exit;
End;
If (SRLPassword = '') Then
Begin
ShowMessage('You forgot your SRL Password!');
Exit;
End;
For MK := 0 To getarraylength(players)-1 Do
If Players[MK].Active Then
ActiveCount := ActiveCount + 1;
If (ActiveCount > 0) Then
Begin
frmDesign.ModalResult:= mrOk;
ReadyForStart := True;
End Else
ShowMessage('You need at least 1 active player to run the script');
UpdateList;
SaveIt := True;
End;
Procedure SetZero;
Begin
EditBox[0].Text := '';
EditBox[1].Text := '';
EditBox[2].Text := '';
EditCombo[0].Text := '';
EditCombo[1].Text := '';
End;
Procedure OpenForum(Sender: TObject);
Begin
OpenWebPage('http://www.villavu.com/forum/showthread.php?t=32786');
End;
Procedure LoadPlayers;
Var
MKload: TStringList;
MK, I: integer;
Begin
If FileExists(AppPath + 'MasterKill_Script_Includes\FormSaveFiles\IronMinerForm.txt') Then
Begin
MKload := TStringList.create;
Try
If LoadFromFile(MKload, AppPath + 'MasterKill_Script_Includes\FormSaveFiles\IronMinerForm.txt') then
Begin
HowManyPlayers := StrToInt(MKload.Strings[0]);
NumbPlayers.Caption := 'You Currently Have ' + IntToStr(HowManyPlayers) + ' Player[s].';
NumberOfPlayers(HowManyPlayers);
If (HowManyPlayers > 1) Then
Begin
Next.Caption := '-->';
DelPlayer.Enabled := True;
End;
For MK := 0 To getarraylength(players)-1 Do
Begin
SetArrayLength(Players[MK].integers, 5);
SetArrayLength(Players[MK].Strings, 1);
End;
SRLStats[0].Text := MKload.Strings[1];
SRLStats[1].Text := MKload.Strings[2];
SRLStats[2].Text := MKload.Strings[3];
For MK := 0 To HowManyPlayers -1 Do
Begin
I := 5 * MK;
Players[MK].Name := MKload.Strings[I + 4];
Players[MK].Nick := MKload.Strings[I + 5];
Players[MK].Pass := MKload.Strings[I + 6];
Players[MK].Integers[0] := StrToInt(MKload.Strings[I + 7]);
Players[MK].Active := StrToBool(MKload.Strings[I + 8]);
End;
EditBox[0].Text := Players[CurPlayer].Name;
EditBox[1].Text := Players[CurPlayer].Nick;
EditBox[2].Text := Players[CurPlayer].Pass;
EditCombo[0].Text := IntToStr(Players[CurPlayer].Integers[0]);
EditCombo[1].Text := BoolToStr(Players[CurPlayer].Active);
UpdateList;
End;
Finally
MKload.Free;
End;
End;
End;
Procedure SavePlayers;
Var
SaveFileCreate: TStringList;
MK: Integer;
Begin
SaveFileCreate := TStringList.Create;
SaveFileCreate.Add(IntToStr(HowManyPlayers));
SaveFileCreate.Add(SRLid);
SaveFileCreate.Add(SRLPassword);
SaveFileCreate.Add(IntToStr(World))
For MK := 0 To HowManyPlayers -1 Do
Begin
SaveFileCreate.Add(Players[MK].Name);
SaveFileCreate.Add(Players[MK].Nick);
SaveFileCreate.Add(Players[MK].Pass);
SaveFileCreate.Add(IntToStr(Players[MK].Integers[0]));
SaveFileCreate.Add(BoolToStr(Players[MK].Active));
End;
SaveToFile(SaveFileCreate, AppPath + 'MasterKill_Script_Includes\FormSaveFiles\IronMinerForm.txt');
End;
Procedure SaveAndExit(Sender: TObject);
Begin
Try
Players[CurPlayer].Name := EditBox[0].Text;
Players[CurPlayer].Nick := EditBox[1].Text;
Players[CurPlayer].Pass := EditBox[2].Text;
Players[CurPlayer].Integers[0] := StrToInt(EditCombo[0].Text);
Players[CurPlayer].Active := StrToBool(EditCombo[1].Text);
World := StrToInt(SRLStats[2].Text);
SRLid := SRLStats[0].text;
SRLPassword := SRLStats[1].text;
Except
ShowMessage('Plz finnish this player first, or delete it.');
Exit;
End;
SaveIt := True;
frmDesign.ModalResult:= mrOk;
End;
Procedure EditRespondsForm(Sender: TObject);
Begin
End;
Procedure DeletePlayer(Sender: TObject);
var
MK: Integer;
Begin
If ((CurPlayer + 1) = HowManyPlayers) Then
Begin
CurPlayer := CurPlayer - 1;
If (CurPlayer = 0) Then
Prev.Enabled := False;
HowManyPlayers := HowManyPlayers - 1;
NumberOfPlayers(HowManyPlayers);
If (HowManyPlayers < 2) Then
DelPlayer.Enabled := False;
CurPlayerLabel.Caption := 'Setup Player ' + IntToStr(CurPlayer) + ':';
End Else
Begin
If (CurPlayer + 2 = HowManyPlayers) Then
Begin
Players[CurPlayer].Name := Players[CurPlayer + 1].Name;
Players[CurPlayer].Nick := Players[CurPlayer + 1].Nick;
Players[CurPlayer].Pass := Players[CurPlayer + 1].Pass;
Players[CurPlayer].Integers[0] := Players[CurPlayer + 1].Integers[0];
Players[CurPlayer].Active := Players[CurPlayer + 1].Active;
End Else
Begin
For MK := CurPlayer To HowManyPlayers - 2 Do
Begin
Players[MK].Name := Players[MK + 1].Name;
Players[MK].Nick := Players[MK + 1].Nick;
Players[MK].Pass := Players[MK + 1].Pass;
Players[MK].Integers[0] := Players[MK + 1].Integers[0];
Players[MK].Active := Players[MK + 1].Active;
End;
End;
HowManyPlayers := HowManyPlayers - 1;
NumberOfPlayers(HowManyPlayers);
If (HowManyPlayers < 2) Then
DelPlayer.Enabled := False;
End;
NumbPlayers.Caption := 'You Currently Have ' + IntToStr(HowManyPlayers) + ' Player[s].';
EditBox[0].Text := Players[CurPlayer].Name;
EditBox[1].Text := Players[CurPlayer].Nick;
EditBox[2].Text := Players[CurPlayer].Pass;
EditCombo[0].Text := IntToStr(Players[CurPlayer].Integers[0]);
EditCombo[1].Text := BoolToStr(Players[CurPlayer].Active);
UpdateList;
End;
Procedure PrevPlayer(Sender: TObject);
Begin
Try
Players[CurPlayer].Name := EditBox[0].Text;
Players[CurPlayer].Nick := EditBox[1].Text;
Players[CurPlayer].Pass := EditBox[2].Text;
Players[CurPlayer].Integers[0] := StrToInt(EditCombo[0].Text);
Players[CurPlayer].Active := StrToBool(EditCombo[1].Text);
Except
ShowMessage('Plz finnish this player first, or delete it.');
Exit;
End;
Next.Caption := '-->';
CurPlayer := CurPlayer - 1;
CurPlayerLabel.Caption := 'Setup Player ' + IntToStr(CurPlayer) + ':';
EditBox[0].Text := Players[CurPlayer].Name;
EditBox[1].Text := Players[CurPlayer].Nick;
EditBox[2].Text := Players[CurPlayer].Pass;
EditCombo[0].Text := IntToStr(Players[CurPlayer].Integers[0]);
EditCombo[1].Text := BoolToStr(Players[CurPlayer].Active);
If (CurPlayer = 0) Then
Prev.Enabled := False;
UpdateList;
End;
// fucntion explode my by: A G E N T 83
function Explode(Delimiter : string; Str : string) : array of string;
var
DelimPos, i : integer;
Arr1 : array of string;
begin
SetArrayLength(Arr1, 100000);
i := 0;
repeat
if (pos(Delimiter, Str) = 0) then Break;
DelimPos := pos(Delimiter, Str);
Arr1[i] := Replace((copy(Str,0,DelimPos)),Delimiter,'');
Delete(Str,1,DelimPos);
i := i + 1;
until(pos(Delimiter, Str) = 0);
Arr1[i] := Str;
SetArrayLength(Arr1, i+1);
Result := Arr1;
end;
Procedure NextFormPlayer(Sender: TObject);
Var
MK: Integer;
Begin
Try
Players[CurPlayer].Name := EditBox[0].Text;
Players[CurPlayer].Nick := EditBox[1].Text;
Players[CurPlayer].Pass := EditBox[2].Text;
Players[CurPlayer].Integers[0] := StrToInt(EditCombo[0].Text);
Players[CurPlayer].Active := StrToBool(EditCombo[1].Text);
Except
ShowMessage('Plz finnish this player first, or delete it.');
Exit;
End;
Prev.Enabled := True;
If ((CurPlayer + 1) = HowManyPlayers) Then
Begin
HowManyPlayers := HowManyPlayers + 1;
NumberOfPlayers(HowManyPlayers);
CurPlayer := CurPlayer + 1;
CurPlayerLabel.Caption := 'Setup Player ' + IntToStr(CurPlayer) + ':';
NumbPlayers.Caption := 'You Currently Have ' + IntToStr(HowManyPlayers) + ' Player[s].';
For MK := 0 To getarraylength(players)-1 Do
Begin
SetArrayLength(Players[MK].integers, 5);
SetArrayLength(Players[MK].Strings, 1);
End;
SetZero;
End Else
Begin
CurPlayer := CurPlayer + 1;
CurPlayerLabel.Caption := 'Setup Player ' + IntToStr(CurPlayer) + ':';
EditBox[0].Text := Players[CurPlayer].Name;
EditBox[1].Text := Players[CurPlayer].Nick;
EditBox[2].Text := Players[CurPlayer].Pass;
EditCombo[0].Text := IntToStr(Players[CurPlayer].Integers[0]);
EditCombo[1].Text := BoolToStr(Players[CurPlayer].Active);
If ((CurPlayer + 1) = HowManyPlayers) Then
Next.Caption := 'Add Player';
End;
DelPlayer.Enabled := True;
UpdateList;
End;
Procedure PlayMusic(Sender: TObject);
Begin
PlaySound(AppPath + 'MasterKill_Script_Includes\MasterKillLoopSound.wav');
End;
procedure InitForm;
Var
MK, b, w, h: Integer;
BestProgString: String;
Proggy: TStringArray;
begin
Case Stage Of
1: Begin
frmDesign := CreateForm;
frmDesign.Left := 259;
frmDesign.Top := 132;
frmDesign.Width := 400;
frmDesign.Height := 100;
frmDesign.Caption := 'MasterKills Includes Download';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
For MK := 0 To 1 Do
Begin
Txt[MK] := TLabel.Create(FrmDesign);
Txt[MK].Parent := FrmDesign;
Txt[MK].Left := 5;
Txt[MK].Top := 5 + 20 * MK;
End;
LBar := TProgressBar.Create(FrmDesign);
LBar.Parent := FrmDesign;
LBar.Left := 2;
LBar.Top := 46;
LBar.Width := 388;
LBar.Height := 20;
LBar.Min := 0;
LBar.Max := 100;
end;
2: Begin
frmDesign := CreateForm;
frmDesign.Left := 259;
frmDesign.Top := 132;
frmDesign.Width := 530;
frmDesign.Height := 556;
frmDesign.Caption := 'MasterKills Player Setup';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
frmDesign.VertScrollBar.Visible := False;
frmDesign.HorzScrollBar.Visible := False;
MKBanner := TImage.Create(FrmDesign);
MKBanner.Parent := FrmDesign;
MKBanner.Top := 0;
MKBanner.Left := 0;
MKBanner.Width := 522;
MKBanner.Height := 524;
b := loadbitmap(AppPath + 'MasterKill_Script_Includes\MKBackGround.bmp');
getbitmapsize(b, w, h);
copycanvas(getbitmapcanvas(b), MKBanner.canvas, 0, 0, w, h, 0, 0, w, h);
Start := TButton.Create(FrmDesign);
Start.Parent := FrmDesign;
Start.Left := 8;
Start.Top := 487;
Start.Width := 100;
Start.Height := 30;
Start.OnClick := @StartClick;
Start.Caption := 'Start Script';
Start.Enabled := True;
Start.TabOrder := 12;
For MK := 0 To 2 Do
Begin
EditBox[MK] := TEdit.Create(FrmDesign);
EditBox[MK].Parent := FrmDesign;
EditBox[MK].Left := 150;
EditBox[MK].Top := 150 + 30 * MK;
EditBox[MK].Height := 20;
EditBox[MK].Width := 100;
EditBox[MK].TabOrder := 1 + MK;
End;
EditBox[2].passwordchar := '*';
EditBox[1].MaxLength := 4;
For MK := 0 To 1 Do
Begin
EditCombo[MK] := TComboBox.Create(FrmDesign);
EditCombo[MK].Parent := FrmDesign;
EditCombo[MK].Left := 150;
EditCombo[MK].Top := 240 + 30 * MK;
EditCombo[MK].Width := 100;
EditCombo[MK].TabOrder := 4 + MK;
End;
For MK := 0 To 2 Do
Begin
SRLStatz[MK] := TLabel.Create(FrmDesign);
SRLStatz[MK].Parent := FrmDesign;
SRLStatz[MK].Left := 395;
SRLStatz[MK].Top := 135 + 60 * MK;
SRLStats[MK] := TEdit.Create(FrmDesign);
SRLStats[MK].Parent := FrmDesign;
SRLStats[MK].Left := 395;
SRLStats[MK].Top := 150 + 60 * MK;
SRLStats[MK].Width := 100;
SRLStats[MK].Height := 20;
SRLStats[MK].TabOrder := 9 + MK;
End;
SRLStatz[2].Caption := 'What world to macro in?';
SRLStats[1].PasswordChar := '*';
SRLStatz[0].Caption := 'Your SRL ID';
SRLStatz[1].Caption := 'Your SRL password';
EditCombo[0].Items.Add('2');
EditCombo[0].Items.Add('3');
EditCombo[0].Items.Add('4');
EditCombo[0].Items.Add('5');
EditCombo[0].Items.Add('6');
EditCombo[1].Items.Add('True');
EditCombo[1].Items.Add('False');
EditCombo[0].MaxLength := 2;
For MK := 0 To 4 Do
Begin
Labelz[MK] := TLabel.Create(FrmDesign);
Labelz[MK].Parent := FrmDesign;
Labelz[MK].Top := 155 + 30 * MK;
Labelz[MK].Left := 20;
End;
Labelz[0].Caption := 'Full Player Name';
Labelz[1].Caption := '3/4 Chars Of Name';
Labelz[2].Caption := 'Player Password';
Labelz[3].Caption := 'Loads To Do Each Login';
Labelz[4].Caption := 'Use This Account?';
DelPlayer := TButton.Create(FrmDesign);
DelPlayer.Parent := FrmDesign;
DelPlayer.Caption := 'Delete this player';
DelPlayer.Top := 300;
DelPlayer.Left := 150;
DelPlayer.Width := 100;
DelPlayer.Height := 20;
DelPlayer.OnClick := @DeletePlayer;
DelPlayer.Enabled := False;
DelPlayer.TabOrder := 7;
Next := TButton.Create(FrmDesign);
Next.Parent := FrmDesign;
Next.Caption := 'Add Player';
Next.Top := 300;
Next.Left := 260;
Next.Width := 100;
Next.Height := 20;
Next.OnClick := @NextFormPlayer;
Next.Hint := 'Edit setting for next player OR add a player';
Next.Showhint := True;
Next.TabOrder := 6;
Prev := TButton.Create(FrmDesign);
Prev.Parent := FrmDesign;
Prev.Caption := '<--';
Prev.Top := 300;
Prev.Left := 40;
Prev.Width := 100;
Prev.Height := 20;
Prev.OnClick := @PrevPlayer;
Prev.Hint := 'Edit settings for previous player';
Prev.ShowHint := True;
Prev.Enabled := False;
Prev.TabOrder := 8;
SAExit := TButton.Create(FrmDesign);
SAExit.Parent := FrmDesign;
SAExit.Left := 413;
SAExit.Top := 487;
SAExit.Width := 100;
SAExit.Height := 30;
SAExit.Caption := 'Save and Exit';
SAExit.OnClick := @SaveAndExit;
SAExit.TabOrder := 15;
EResponds := TButton.Create(FrmDesign);
EResponds.Parent := FrmDesign;
EResponds.Left := 303;
EResponds.Top := 487;
EResponds.Width := 100;
EResponds.Height := 30;
EResponds.Caption := 'Edit Responds';
EResponds.OnClick := @EditRespondsForm;
EResponds.TabOrder := 14;
CurPlayerLabel := TLabel.Create(FrmDesign);
CurPlayerLabel.Parent := FrmDesign;
CurPlayerLabel.Top := 130;
CurPlayerLabel.Left := 150;
CurPlayerLabel.Caption := 'Setup Player 0:';
HowManyPlayers := 1;
CurPlayer := 0;
NumberOfPlayers(HowManyPlayers);
For MK := 0 To getarraylength(players)-1 Do
Begin
SetArrayLength(Players[MK].integers, 5);
SetArrayLength(Players[MK].Strings, 1);
End;
NumbPlayers := TLabel.Create(FrmDesign);
NumbPlayers.Parent := FrmDesign;
NumbPlayers.Left := 20;
NumbPlayers.Top := 100;
NumbPlayers.Caption := 'You Currently Have 1 Player.';
VSite := TButton.Create(FrmDesign);
VSite.Parent := FrmDesign;
VSite.Top := 487;
VSite.Left := 118;
VSite.Height := 30;
VSite.Width := 100;
VSite.Caption := 'View Site !';
VSite.OnClick := @OpenForum;
VSite.TabOrder := 13;
PlayerList := TListBox.Create(FrmDesign);
PlayerList.Parent := FrmDesign;
PlayerList.Left := 260;
PlayerList.Top := 150;
PlayerList.Width := 100;
PlayerList.Height := 140;
PlayerList.OnClick := @GetPlayer;
BestProggy := TListBox.Create(FrmDesign);
BestProggy.Parent := FrmDesign;
BestProggy.Left := 20;
BestProggy.Top := 355;
BestProggy.Width := 480;
BestProggy.Height := 120;
BestProggy.Font.Name := 'Courier New';
BestProggy.Font.Size := 10;
BestProgString := GetPage('http://www.freewebs.com/srlfiles/BestProggy.txt');
Proggy := Explode('$', BestProgString);
For MK := 0 To High(Proggy) Do
BestProggy.Items.Add(Proggy[MK]);
BProg := TLabel.Create(FrmDesign);
BProg.Parent := FrmDesign;
BProg.Left := 20;
BProg.Top := 340;
BProg.Caption := 'Best Progress report made with MasterKills Iron Mine And Banker:';
LoadPlayers;
MusicLoop := TTimer.Create(FrmDesign);
MusicLoop.INTERVAL := 13700;
MusicLoop.ENABLED := True;
MusicLoop.ONTIMER := @PlayMusic;
PlaySound(AppPath + 'MasterKill_Script_Includes\MasterKillStartSound.wav');
End;
end;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
If (Stage = 1) Then FrmDesign.Show Else frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
Var
DownloadFiles_URL: Array [0..2] Of Array [0..2] Of String;
Procedure DownloadIncludes;
Var
MK: Integer;
ToWhere: String;
Downloaded: Boolean;
begin
Stage := 1;
Downloaded := False;
ClearDeBug;
SafeInitForm;
SafeShowFormModal;
ToWhere := AppPath + 'MasterKill_Script_Includes\';
DownLoadFiles_URL[0][0] := 'http://www.freewebs.com/srlfiles/MasterKillStartSound.wav';
DownloadFiles_URL[0][1] := ToWhere + 'MasterKillStartSound.wav';
DownLoadFiles_URL[1][0] := 'http://www.freewebs.com/srlfiles/MasterKillLoopSound.wav';
DownloadFiles_URL[1][1] := ToWhere + 'MasterKillLoopSound.wav';
DownloadFiles_URL[2][0] := 'http://www.freewebs.com/srlfiles/MKBackGround.bmp';
DownloadFiles_URL[2][1] := ToWhere + 'MKBackGround.bmp';
LBar.Position := 10;
For MK := 0 To 2 Do
Begin
If Not FileExists(DownloadFiles_URL[MK][1]) Then
Begin
Downloaded := True;
Txt[0].Caption := 'Downloading include ' + IntToStr(MK + 1) + ' of 3... (this might take some time) (only once)';
ClearDeBug;
WriteLn('Downloading include ' + IntToStr(MK + 1) + ' of 3... (this might take some time) (only once)');
WriteLn('');
WriteLn('Do NOT stop the script during this proces');
Txt[1].Caption := DownloadFiles_URL[MK][0];
If Not Download(DownloadFiles_URL[MK][0], DownloadFiles_URL[MK][1], True) Then
Begin
ClearDeBug;
WriteLn('COULD NOT DOWNLOAD THE INCLUDES');
WriteLn('');
WriteLn('* Go to scar > tools > options > fire wall settings > allways allow');
WriteLn('* Turn your firewall off for 5 mins.');
WriteLn('');
TerminateScript;
End;
LBar.Position := 36 + 26 * MK;
//CloseFile(DownloadFiles_URL[MK][1]);
End;
End;
LBar.Position := 90
Txt[0].Caption := 'All includes are downloaded on your pc.';
Txt[1].Caption := ToWhere;
Wait(4000);
LBar.Position := 100;
Wait(1000);
If Downloaded Then
Begin
Txt[1].Caption := '(!) Plz ReStart the script (!)'
Wait(15000);
WriteLn('Restart the script!'); WriteLn('');
TerminateScript;
End;
FrmDesign.Visible := False;
end;
Procedure SetupPlayersForm;
Begin
Stage := 2;
ReadyForStart := False;
SaveIt := False;
//GetSelf.Hide;
//MoveToTray;
SafeInitForm;
SafeShowFormModal;
//GetSelf.Show;
MusicLoop.ENABLED := False;
If SaveIt Then SavePlayers;
If Not ReadyForStart Then TerminateScript;
End;
Procedure Pasted_Bitches(bmp, x1, y1, x2, y2, xx1, yy1, xx2, yy2: Integer);
Var
old: Integer;
Begin
old := GetClientWindowHandle;
SetTargetDC(SmartGetDebugDC);
CopyCanvas(GetBitmapCanvas(bmp), GetClientCanvas, x1, y1, x2, y2, xx1, yy1, xx2, yy2);
SetTargetDC(old);
End;
{*******************************************************************************
procedure CopyClient;
By: Nava2 and Tootoot222
Description: Copies the client and puts the image of it onto the debug window
Usage: Press F12 to start copying, and press F11 to stop (you can start back
again by just pressing F12)
*******************************************************************************}
procedure CopyClient;
var
W, H, X, Y, T, bmp, MDot: Integer;
begin
try
T:= 500;
if (IsFKeyDown(12)) and (not (ShowingDebug)) then
begin
DisplayDebugImgWindow(766, 504);
ShowingDebug:= True;
Writeln('Showing Debug;');
end;
if ((IsFKeyDown(11)) and (ShowingDebug)) then
begin
ShowingDebug:= False;
Writeln('Not showing Debug;');
end;
if(ShowingDebug) then
begin
GetClientDimensions(w, h);
bmp := bitmapFromString(w, h, '');
CopyClientToBitmap(bmp, 0, 0, w, h);
MDot := BitmapFromString(9, 9, 'beNpjYPjPAEJo4D8qwhTH' +
'w8ZvAkIWCAbEXgAgCS7S');
SetTransparentColor(MDot, 0);
GetMousePos(x, y);
FastDrawTransparent(x - 5, y - 5, MDot, Bmp);
SafeCopyCanvas(GetBitmapCanvas(bmp), GetDebugCanvas, 0, 0, w, h, 0, 0, w, h);
end;
except
Writeln('Unable to copy canvas');
ShowingDebug:= False;
finally
ClearTimeouts;
if(not(GetSCARVersion = 320)) then
if(not(Round(T / 1000) < 1)) then
SetTimeout(Round(T / 1000), 'CopyClient')
else
SetTimeout(Round(T / 1000) + 1, 'CopyClient')
else
SetTimeout(T, 'CopyClient');
FreeBitMap(bmp);
FreeBitmap(MDot);
end;
end;
begin
//Setup
SetupSRL;
SetupDTM;
SetupPlayers;
//Startup, make ready
ScriptID := '275';
WriteLn('Plz allways allow popups');
SrlRandomsReport;
DownLoadIncludes;
SetupPlayersForm;
StartUp;
WriteLn('Loading RuneScape.SMART ... (world ' + IntToStr(World) + ')');
SmartSetupEx(world, True, True, False);
SetTargetDC(SmartGetDC);
ReplaceDebugLine(8, 'Loading RuneScape ...');
Wait(2000);
//Script play
SmartSetDebug(True);
Pasted_Bitches(MKLOGO, 0, 0, 60, 55, 0, 0, 60, 55);
SetTargetDC(SmartGetDC);
LoginPlayer;
MarkTime(ScriptRunTime);
SetupPlayer;
CopyClient;
Repeat
HyperMainLoop;
LogInFalseTrue;
Until(NumberOfActive(False) = 0)
ClearDeBug;
WhileReport;
WriteLn('');
end.
~Camo