SRL Archive - Archive

tomtomsparklingstar - SRL Member Application Form


tomtomsparklingstar

2007-04-07 18:08:10

<!– BEGIN TEMPLATE: formanswers –>
tomtomsparklingstar - SRL Member Application Form
tomtomsparklingstar

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
no

Other Communitys
no

How Long have You Played Runescape
2 years

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

I have always been interested in computers and what makes them act the way they do. I decided to take a career in computers so I have applied for CSET at Oregon Institute of Technology, and have been accepted. I think making scripts like this might give me a slight advantage in my career.

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted

{ [----------]     /----\         m   m
[] [ ] m m m m
[] ] [ m m m
[] [ ] m m
[] \____/ m m

[=========================================================================]
[ Instructions ]
[==========================================================================]
[ 1. Set your screen color to 32 bits color. ]
[ 2. Close all unnecessary programs and fill the setup lines. ]
[ 3. Set Runescape on low details and on Very Bright Mode. ]
[ 4. Drag the crosshair on Runescape Window. ]
[ 5. Wield your pickaxe, if you can't, have it on first inventory slot. ]
[ 6. Click on Play. ]
[==========================================================================}

program TomsPowerminer;
{.include SRL\SRL.scar}
{.include SRL\SRL\Skill\Mining.scar}
{.include SRL\SRL\Misc\Trade.scar}

const
Clay = 4553880;
Copper = 4088198;
Tin = 9277080;
Iron = 2371664;
Coal = 2834753;

var
loads, ores, rockcolor, rockwait, LoadsD, OreTol, exp, Ox, Oy, trying2, Center, trying3 : Integer;
Rdirection : String;
Pickaxew : Boolean;
AngleVar : extended;

// ************************** Setup lines ****************************
const
Ms = 10; // Mouse Speed?
Autotalka = true; // Auto talk?
Autoresponda = true; // Auto respond?
Keepjunks = true; // Keep junks and rewards from randoms?
NextPlayerR = true; // Continue to switch players until all players' active are false?

procedure DeclarePlayers;
begin
HowManyPlayers:=6;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:=0;

Players[0].Name :=''; //Runescape username
Players[0].Pass :=''; //Runescape password
Players[0].Nick :=''; //Type 3-4 letters of your runescape username.
Players[0].String1 :='E'; //If you are attacked, what direction do you want to run ?
Players[0].String2 :='tin'; //What kind of ore do you want to mine ?
Players[0].Integer1 :=10; //How many loads do you want to do ?
Players[0].Integer2 :=4000; //How much times between each click ?
Players[0].Active :=true; //Use player 0 ?

Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].String1 :='E';
Players[1].String2 :='tin';
Players[1].Integer1 :=10;
Players[1].Integer2 :=4000;
Players[1].Active :=true; //Use player 1 ?

Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].String1 :='n';
Players[2].String2 :='iron';
Players[2].Integer1 :=1;
Players[2].Integer2 :=4000;
Players[2].Active :=false; //Use player 2 ?

Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].String1 :='n';
Players[3].String2 :='iron';
Players[3].Integer1 :=1;
Players[3].Integer2 :=4000;
Players[3].Active :=false; //Use player 3 ?

Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].String1 :='n';
Players[4].String2 :='iron';
Players[4].Integer1 :=1;
Players[4].Integer2 :=4000;
Players[4].Active :=false; //Use player 4 ?

Players[5].Name :='';
Players[5].Pass :='';
Players[5].Nick :='';
Players[5].String1 :='n';
Players[5].String2 :='iron';
Players[5].Integer1 :=1;
Players[5].Integer2 :=4000;
Players[5].Active :=false; //Use player 5 ?
end;

// ************************** End of setup lines ***********************

// ------ SRL function with a few modifications ------ \\

procedure NextPlayer2(Active: Boolean);
begin
if RandomPlayer then
RandomNextPlayer(Active)
else
begin
Writeln('NextPlayer');
if not Active then
Players[CurrentPlayer].Active := False;
LogOut;
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked + ((PlayerCurTime - PlayerStartTime) / 60);
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
CurrentPlayer := 0;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
CurrentPlayer := 0;
WriteLn('All players are inactive. Script terminated.');
TerminateScript;
end;
end;
if Players[CurrentPlayer].Active = True then
begin
Logs := Logs + 1;
end;
LoginPlayer;
end;
end;

// --------------------------------------------------- \\

procedure Setvariables;
begin
MouseSpeed := Ms+random(4);
Rdirection:=Players[CurrentPlayer].String1;
Case LowerCase(Players[CurrentPlayer].String2) of
'clay' : rockcolor:=Clay;
'copper' : rockcolor:=Copper;
'tin' : rockcolor:=Tin;
'iron' : rockcolor:=Iron;
'coal' : rockcolor:=Coal;
end;
Case LowerCase(Players[CurrentPlayer].String2) of
'clay' : exp:=5;
'copper' : exp:=17;
'tin' : exp:=17;
'iron' : exp:=35;
'coal' : exp:=50;
end;
LoadsD:=Players[CurrentPlayer].Integer1;
rockwait:=Players[CurrentPlayer].Integer2;
if not FindPickHeadColor then NextPlayer2(false);
OreTol := 10;
FreeBitMap(NickNameBmp);
NickNameBmp:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars);
GameTab(4);
FindOreColors(rockcolor, 9, 14);
if (FindBitmapSpiralTolerance(PickAxe,x,y,546,198,745,468,100)) then begin Pickaxew := false; WriteLn('Pickaxe not wielded'); end else begin Pickaxew := true; WriteLn('Pickaxe wielded'); end;
loads := 0;
end;

procedure PlayerReport;
var
Active: String;
I:Integer;
begin
for I := 0 to HowManyPlayers - 1 Do
begin
if Players[i].Active=True Then Active := 'True' Else Active := 'False';
AddtoReport(+Players[I].name);
AddtoReport('Ores dropped : '+inttostr(Players[I].Integer3));
AddtoReport('Exp gained : '+inttostr(Players[I].Integer3*exp));
AddtoReport('');
end;
end;

procedure ProgressReport;
begin
SRLRandomsReport;
AddtoReport('');
AddtoReport('<======== Total report ========>');
AddtoReport(' Total time working : ' + TimeRunning);
AddtoReport(' Total ores dropped : ' + inttostr(ores));
AddtoReport('');
AddtoReport('<======== User report ========>');
PlayerReport;
ChangeReportWidth(430);
end;


function SolveFroggy : Boolean;
var
Crown, Froggy : Integer;
begin
WriteLn('******** FOUND FROG CAVE RANDOM ********');
Crown := DTMFromString('78DA63CC616460D8C480027E9C9265B001D24' +
'01986FF40C0988F50C30C5573798D345C0D08306603591B50D5FC' +
'3E6F86AA0664D71654359F8FC9A2AAC9C4B4EBE57E54350015B91' +
'3ED');
MarkTime(Froggy);
repeat
if (FindDTMRotated(Center, x, y, MMX1, MMY1, MMX2, MMY2, 0, pi*2, 0.1, AngleVar)) then
begin
Mouse(x, y, 0, 0, true);
FFlag(0);
Wait(300+Random(400));
end;
if (FindDTM(Crown, x, y, 90, 102, 473, 334)) then
begin
MMouse(x,y,2,2);
if (IsUpText('Talk')) then
begin
Mouse(x,y,2,2,true);
FFlag(0);
Wait(500+random(500));
if (FindText(x, y, 'urrah', NPCChars, MCX1, MCY1, MCX2, MCY2)) then
begin
ClickToContinue;
end;
if (FindText(x, y, 'mph', NPCChars, MCX1, MCY1, MCX2, MCY2)) then
begin
ClickToContinue;
Wait(1000+random(700));
ClickToContinue;
Wait(1000+random(700));
ClickToContinue;
Wait(1000+random(700));
end;
end;
end;
if (TimeFromMark(Froggy)>120000) then begin NOFrogs := NOFrogs + 1; WriteLn('******** FROG CAVE RANDOM MISSED ********'); ProgressReport; wait(1000+random(500)); NextPlayer2(false); Setvariables; Exit; end;
until (not(FindDTMRotated(Center, x, y, MMX1, MMY1, MMX2, MMY2, 0, pi*2, 0.1, AngleVar)));
WriteLn('******** FROG CAVE RANDOM SOLVED ********');
Result := True;
Frogs := Frogs + 1;
FreeDTM(Crown);
end;

procedure AntiRandomsV;
begin
FindTalk;
Wait(1);
if (FindFight) then
begin
WriteLn('You are attacked, trying to escape.');
RunAwayDirection(Rdirection);
Wait(8000+random(3000));
WriteLn('Escape done, now, go back to mining.');
RunBack;
end;
Wait(1);
FindTalk;
Wait(1);
if FindBitmapToleranceIn(NewBox, x, y, 556, 206, 738, 463, 50) then SolveBox;
Wait(1);
FindLamp('mining');
Wait(1);
if FindDTMRotated(Center, x, y, MMX1, MMY1, MMX2, MMY2, 0, pi*2, 0.1, AngleVar) then SolveFroggy;
Wait(1);
FindDemon;
Wait(1);
FindMod;
Wait(1);
FindScapeRune;
Wait(1);
SolvePinball;
Wait(1);
FindQuiz;
Wait(1);
NoGameTab;
Wait(1);
FindTalk;
Wait(1)
end;



procedure AutorespondV;
var
Respond : String;
begin
OldLine := TheLine;
TheName := lowercase(trim(GetTextAtEx(20, 415, 45, SmallChars, False, False, 0, 2, 0, 40, True, tr_NormalChars)));
TheLine := lowercase(trim(GetTextAtEx(20, 415, 45, SmallChars, False, False, 0, 2, 16711680, 40, False, tr_NormalChars)));
NewLine := TheLine;
if OldLine <> NewLine then
if (pos('yo', TheName) <> 0) or (pos('th', TheName) <> 0) or (pos(Players[CurrentPlayer].Nick, TheName) <> 0) then
begin
end
else
begin
if (IsChatMessage('ing')) or (IsChatMessage('mini')) and (IsChatMessage('lvl')) or (IsChatMessage('evel')) or (IsChatMessage('lv')) then
begin
SayCurrentLevels('mining');
if Random(6) < 5 then
begin
wait(50+random(50));
end
else
begin
wait(3000+random(1000));
Case Random(5) of
1: Respond := 'nice';
2: Respond := 'good';
3: Respond := 'not too bad';
4: Respond := 'good good';
5: Respond := 'not bad';
end;
TypeSend(Respond);
end;
end;
if (IsChatMessage('hi ')) or (IsChatMessage('ello')) or (IsChatMessage('hey')) then
begin
Case Random(4) of
1: Respond := 'hi';
2: Respond := 'hello';
3: Respond := 'howdy';
4: Respond := 'yo';
end;
TypeSend(Respond);
end;

if (IsChatMessage('cya')) or (IsChatMessage('bye')) or (IsChatMessage('by'))then
begin
Case Random(3) of
1: Respond := 'cya';
2: Respond := 'bye';
3: Respond := 'bye bye';
end;
TypeSend(Respond);
end;

If(isChatMessage('wat u')) or (isChatMessage('what yo')) or (isChatMessage('wot u')) or (isChatMessage('wut u')) or (isChatMessage('watcha'))
And
(isChatMessage('doing')) or (isChatMessage('doin'))then
Begin
Case random(13) of
0 : Respond:= ('nuttin');
1 : Respond:= ('nothing');
2 : Respond:= ('nothin');
3 : Respond:= ('eh, nothin');
4 : Respond:= ('being bored');
5 : Respond:= ('bored');
6 : Respond:= ('bored, you?');
7 : Respond:= ('chillin');
8 : Respond:= ('chilling, you?');
9 : Respond:= ('chilling');
10 : Respond:= ('playing runescape haha');
11 : Respond:= ('nothin, im sick =[');
12 : Respond:= ('talkin to you =]');
end
TypeSend(Respond);
end;


if (IsChatMessage('lol')) or (IsChatMessage('hah')) or (IsChatMessage('rofl')) or (IsChatMessage('lmao')) then
begin
if Random(3) = 1 then
begin
Case (Random(24)+1) of
0 : Respond:= ('lolz');
1 : Respond:= ('hah');
2 : Respond:= ('bwaha');
3 : Respond:= ('....');
4 : Respond:= ('funny..');
5 : Respond:= ('heh');
6 : Respond:= ('lololol');
7 : Respond:= ('ha ha!');
8 : Respond:= ('haaaa!');
9 : Respond:= ('lmao');
10 : Respond:= ('Whats so funny?');
11 : Respond:= ('Ur funny lol');
12 : Respond:= ('Hillarious');
13 : Respond:= ('*Giggles*');
14 : Respond:= ('rofllll');
15 : Respond:= ('Gahhaa');
16 : Respond:= ('*laughing* haha');
17 : Respond:= ('tehehe');
18 : Respond:= ('psht');
19 : Respond:= ('uh..ya');
20 : Respond:= ('ya i bet');
21 : Respond:= ('funny lil critter...');
22 : Respond:= ('think thats funny?');
23 : Respond:= ('funny funny');
24 : Respond:= ('*snorts as i laugh*');
25 : Respond:= ('funy');
26 : Respond:= ('if i was in a good mood i would laugh..');
27 : Respond:= ('pretty pretty funny');
28 : Respond:= ('=p');
29 : Respond:= ('X[)');
30 : Respond:= ('roflmao!');
end;
end;
TypeSend(Respond);
end;
end;
end;

Procedure dropore;
var
Clay2, OreMask, Old: Integer;
begin
MouseSpeed := Ms+(-9);
Clay2 := BitmapFromString(4, 4, '86714C89734D8B7650907A52978' +
'1569781569A8357957E55A1895CA38B5D9F875B9C8559AC9262A8' +
'8F60A58D5FA1895C');
OreMask := BitmapFromString(11, 11, 'z78DA73730301033070436' +
'2238B60024C35B84CC0A5923C13F0BB937813F0EB22DE04CC5022' +
'CF04CADD404CC890EA0BFCE2F85D4E4C6A212FF470998FCC0600F' +
'B599CC1');
WriteLn('Load complete. Ore dropping.');
old := CountItemBmpMaskTol(OreMask, 20, 25);
old := old+CountItemBmpTol(Clay2, 10);
if (old = 0) then
begin
if (keepjunks) then begin WriteLn('You have too much junks and rewards from randoms in your inventory, changing player.'); NextPlayer2(false); old := 0; end;
end;
Players[CurrentPlayer].Integer3 := Players[CurrentPlayer].Integer3 + old;
ores := ores + old;
old := 0;
if (keepjunks = false) then
begin
if (Pickaxew) then
begin
if Random (20) < 18 then
begin
DropAll;
end
else
begin
Case Random(3) of
1: begin DropTo(4, 28); DropTo(1, 3); end;
2: begin DropTo(12, 28); DropTo(1, 11); end;
3: begin DropTo(5, 20); DropTo(1, 4); DropTo(21, 28); end;

end;
end;
end
else
begin
if Random (20) < 18 then
begin
DropTo(2, 28);
end
else
begin
Case Random(3) of
1: begin DropTo(4, 28); DropTo(2, 3); end;
2: begin DropTo(10, 28); DropTo(2, 9); end;
3: begin DropTo(5, 20); DropTo(2, 4); DropTo(21, 28); end;
end;
end;
end;
end;
if (keepjunks) then
begin
if Random (20) < 18 then
begin
ClickAllItemsBmpMaskTolWait('rop', OreMask, 20, 25, 30+Random(30));
ClickAllItemsBmpTolWait('rop', Clay2, 10, 30+Random(30));
end;
end;
WriteLn('Drop finish.');
loads := loads + 1;
wait(200+random(800));
FreeBitMap(Clay2);
FreeBitMap(OreMask);
ProgressReport;
MouseSpeed := Ms+random(4);
end;

procedure LeaveScreen;
var
rx, a: Integer;
begin
rx := Random(300);
a := Random(2);
if (a = 0) then
begin
MMouse(rx, 1, 0, 0);
ClickMouse(rx, -1, True);
Wait(1000 + Random(1000));
end;
if (a = 1) then
begin
MMouse(rx, 502, 0, 0);
ClickMouse(rx, 503, True);
Wait(1000 + Random(1000));
end;
end;

procedure AntibanVe;
begin
Case Random(7) of
1: begin SendArrowSilentWait(Random(4), 500 + Random(500)); SendArrowSilentWait(Random(4), 500 + Random(500)); MakeCompass('n'); SendArrowSilentWait(0, 1400 + Random(100)); end;
2: begin HoverSkill('Mining', false); GameTab(4); end;
3: PickUpMouse;
4: MouseSpeed := Ms-1+random(5);
5: BoredHuman;
6: HoverSkill('random', false);
7: GameTab(1 + Random(13));
end;
end;

procedure Move;
begin
Case Random(7) of
1: mmouse(30+random(20),120+random(20),3,3);
2: mmouse(150-random(10),120+random(30),3,3);
3: mmouse(200+random(50),50+random(50),3,3);
4: mmouse(90+random(50),120+random(50),3,3);
5: mmouse(300-random(20),300-random(20),3,3);
6: mmouse(300+random(20),120+random(50),3,3);
7: mmouse(500+random(100),300+random(100),3,3);
end;
end;

procedure AntibanVe2;
begin
wait(100+random(500));
Case Random(4) of
1: begin GameTab(1+random(12)); wait(1000+random(1000)); GameTab(4); end;
2: RandomRClick;
3: RandomMovement;
4: begin Move; wait(500+random(1000)); end;
end;
end;


// ----- Procedure taken from Wizzup?'s PowerMiner
procedure ChangeGasPixels (Var Gasx,GasY:Integer);
var
TempX, TempY: Integer;
begin
if FlagPresent then
begin
if FindColorSpiralTolerance(x,y,rockcolor,MSX1,MSY1,MSX2,MSY2,4) then
begin
x := TempX;
y := TempY;
if CheckOre(x,y,rockcolor,4) > 2 then
begin
if Distance(MSCX,MSCY,TempX,Tempy) < 40 then
begin
GasX := x;
GasY := y;
end;
end;
end;
end;
end;

// ----------------------------------------------------- \\

procedure Mine2;
var
Mx, My, Orewait, trying : Integer;
begin
if (Autoresponda) then AutorespondV;
if not GasCheck(Ox,Oy) then
begin
wait(100+random(100));
if Random (40) < 38 then
begin
Mouse(Ox, Oy, 0, 0, True);
ChangeGasPixels(Ox,Oy);
end
else
begin
Mouse(Ox, Oy, 0, 0, False);
ChooseOption(Mx, My, 'ine');
end;
ChangeGasPixels(Ox,Oy);
if (FlagPresent) then
begin
FFlag(0);
Wait(300+Random(400));
end;
end
else
begin
Mouse(Ox-30-random(20),Oy-30-random(20),0,0,true);
Wait(8000+random(3000));
Move;
Wait(4000+random(3000));
Mouse(Ox+30+random(20),Oy+30+random(20),0,0,true);
end;
HandleTrade;
FindTalk;
AntiRandomsV;
MarkTime(Orewait);
Wait(800+random(500));
repeat
if (GasCheck(Ox,Oy)) then
begin
Mouse(Ox-30-random(20),Oy-30-random(20),0,0,true);
Wait(8000+random(3000));
Move;
Wait(4000+random(3000));
Mouse(Ox+30+random(20),Oy+30+random(20),0,0,true);
end;
wait(50+random(10));
until (TimeFromMark(Orewait)>rockwait+random(500)) or (FindColor(x, y, 0,51, 421, 51, 421));
FindPick;
if Random (100) < 2 then LeaveScreen;
if Random (110) = 1 then AntibanVe;
if (AutotalkA) then
begin
if Random (900) = 1 then RandomChat;
end;
FindTalk;
if (NoPick) then
begin
SendArrowSilentWait(Random(4), 500 + Random(500));
SendArrowSilentWait(Random(4), 500 + Random(500));
MakeCompass('n');
SendArrowSilentWait(0, 1400 + Random(100));
trying := trying + 1;
if (trying > 4) then begin NextPlayer2(False); WriteLn('Head of pickaxe missing and impossible to find it, changing player.'); end;
end;
end;

procedure mineore;
begin
repeat
if (LoggedIn) then
begin
if (FindObjOre2(Ox,Oy,'Mine',orecolor1,OreTol,4)) then
begin
Mine2;
end
else
begin
trying2 := trying2 + 1;
if (trying2 > 3) then begin ClickToContinue; OreTol := OreTol + 1; WriteLn('OreTol : '+IntToStr(OreTol)); trying2 := 0; AntiRandomsV; end;
if (OreTol > 20) then
begin
if (trying3 = 1) then
begin
NextPlayer2(false);
Setvariables;
trying3 := 0;
end
else
begin
Logout;
OreTol := 10;
trying3 := trying3 + 1;
Wait(20000+random(5000));
LoginPlayer;
end;
end;
end;


end
else
begin
ProgressReport;
wait(1000+random(500));
NextPlayer2(NextPlayerR);
Setvariables;
end;
until (InvFull);
end;

begin
SetupSRL;
SetupSRLMining;
ActivateClient;
DisguiseScar('WinAmp');
DeclarePlayers;
Center := DTMFromString('78DA63EC6462603061400191C14E0C46409A1' +
'188FF0301E302A01A17881C13548D7971025C0D08302E07CA5812' +
'50B30828A34E40CD2CA08C3C0135BD401929026A9A80323204D45' +
'401651408A82904CAA81050930B94D125A0261B11CE38D5E40065' +
'AC08A8A904CA781050534F841A505C381050B30428634B40CD3CA' +
'08C1201351D84E3020008042788');
Wait(200+random(100));
if (LoggedIn) then
begin
Setvariables;
end
else
begin
LoginPlayer;
Setvariables;
end;
repeat
repeat
if (LoggedIn) then
begin
mineore;
if Random (20) < 2 then AntibanVe2;
AntiRandomsV;
MouseSpeed := Ms+random(4);
LogOutEvery(1,5+random(5));
dropore;
if Random (20) < 3 then AntibanVe2;
end
else
begin
ProgressReport;
wait(1000+random(500));
NextPlayer2(NextPlayerR);
Setvariables;
end;
until (LoadsD = Loads);
ProgressReport;
wait(1000+random(500));
NextPlayer2(NextPlayerR);
Setvariables;
until (false);
end.

——————————————————
<!– END TEMPLATE: formanswers –>

Bobarkinator

2007-04-07 18:37:02

It looks like you know what you are doing. Script is good. As long as it isn't copied you will get a yes from me.

tomtomsparklingstar

2007-04-07 19:01:47

Thank you. and no I didn't copy it.

JAD

2007-04-07 19:16:33

You could have used proper standards.. (2 spaces after each begin, repeat and 2 back for end;'s, until's..etc) But Its a good script. I'll wait for Yohojo's copy bust before voting.

Buckleyindahouse

2007-04-07 20:14:06

That looks like the script this other dude in srl made. Hold on. Im double checking before I vote.

*Edit…Just as thought, Bibi26's powerminer.


//------------------------------------------------------------------------\\
// bibi26's PowerMiner 2.0 \\
// by bibi26 \\
//------------------------------------------------------------------------\\
// This PowerMiner will powermine for you at anyplace you want at anytime.\\
// Just read the setup. Don't forget to leave a comment or a suggestion. \\
// It's recommended to wield your pickaxe. \\
//------------------------------------------------------------------------\\
// Setup Lines : 42-66 \\
// Knowns bugs : xxx \\
// For nexts versions : Don't know \\
//------------------------------------------------------------------------\\

{[=========================================================================]
[ Instructions ]
[==========================================================================]
[ 1. Set your screen color to 32 bits color. ]
[ 2. Close all unnecessary programs and fill the setup lines. ]
[ 3. Set Runescape on low details and on Very Bright Mode. ]
[ 4. Drag the crosshair on Runescape Window. ]
[ 5. Wield your pickaxe, if you can't, have it on first inventory slot. ]
[ 6. Click on Play. ]
[==========================================================================}

program Powerminer;
{.include SRL\SRL.scar}
{.include SRL\SRL\Skill\Mining.scar}

const
Clay = 4553880;
Copper = 4088198;
Tin = 9277080;
Iron = 2371664;
Coal = 2834753;

var
Loads, Ores, RockColor, RockWait, LoadsD, OreTol, Ox, Oy : Integer;
RDirection : String;
PickaxeW : Boolean;

// ************************** Setup lines ****************************

const
Ms = 18; // Mouse Speed
Autotalka = false; // Auto talk ?
AutoRespondA = false; // Auto respond ? (Can cause lag)
KeepJunks = false; // Keep junks and rewards from randoms ?
NextPlayerR = false; // Continue to switch players until all players' active are false ?

procedure DeclarePlayers;
begin
HowManyPlayers:=1; // How many players you want to use ?
NumberOfPlayers(HowManyPlayers); // Don't touch this line !
CurrentPlayer:=0; // Don't touch this line !

Players[0].Name :='Hownu123'; //Runescape username
Players[0].Pass :='xxxxxxx'; //Runescape password
Players[0].Nick :='wnu1'; //Type 3-4 letters of your runescape username - IT IMPORTANT TO CHOOSE A GOOD NICKNAME !!
Players[0].String1 :='N'; //If you are attacked, in what direction do you want to run ?
Players[0].String2 :='Copper'; //What kind of ore do you want to mine ?
Players[0].Integer1 :=1; //How many loads do you want to do ?
Players[0].Integer2 :=4000; //How much times between each click ?
Players[0].Active :=true; //Use player 0 ?
end;

// ************************** End of setup lines ***********************

procedure SetVariables;
begin
MouseSpeed := Ms+Random(2);
RDirection:=Players[CurrentPlayer].String1;
Case LowerCase(Players[CurrentPlayer].String2) of
'clay' : RockColor:=Clay;
'copper' : RockColor:=Copper;
'tin' : RockColor:=Tin;
'iron' : RockColor:=Iron;
'coal' : RockColor:=Coal;
end;
Case LowerCase(Players[CurrentPlayer].String2) of
'clay' : Players[CurrentPlayer].Integer4:=5;
'copper' : Players[CurrentPlayer].Integer4:=17;
'tin' : Players[CurrentPlayer].Integer4:=17;
'iron' : Players[CurrentPlayer].Integer4:=35;
'coal' : Players[CurrentPlayer].Integer4:=50;
end;
LoadsD:=Players[CurrentPlayer].Integer1;
RockWait:=Players[CurrentPlayer].Integer2;
if not FindPickHeadColor then begin NextPlayer(false); SetVariables; end;
OreTol := 10;
FreeBitMap(NickNameBmp);
NickNameBmp:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars);
Players[CurrentPlayer].Level[15] := GetSkillLevel('mining');
GameTab(4);
FindOreColors(RockColor, 9, 14);
if (FindBitmapSpiralTolerance(PickAxe,x,y,546,198,745,468,100)) or (FindBitmapSpiralTolerance(PickAxeSteel,x,y,546,198,745,468,100)) then begin PickaxeW := false; WriteLn('Pickaxe not wielded'); end else begin PickaxeW := true; WriteLn('Pickaxe wielded'); end;
Loads := 0;
end;

procedure PlayerReport;
var
Active: String;
I:Integer;
begin
for I := 0 to HowManyPlayers - 1 Do
begin
if Players[i].Active=True Then Active := 'True' Else Active := 'False';
AddtoReport(+Players[I].name);
AddtoReport('Ores dropped : '+IntToStr(Players[I].Integer3));
AddtoReport('Exp gained : '+IntToStr(Players[I].Integer3*Players[I].Integer4));
AddtoReport('Mining level : '+IntToStr(Players[i].Level[15]));
AddtoReport('');
end;
end;

procedure Move;
begin
Case Random(2) of
1: MMouse(5+Random(510),5+Random(333),3,3);
2: MMouse(150+Random(365),120+Random(218),3,3);
end;
end;

procedure ProgressReport;
begin
SRLRandomsReport;
AddtoReport('');
AddtoReport('<======== Total report ========>');
AddtoReport(' Total time working : ' + TimeRunning);
AddtoReport(' Total ores dropped : ' + IntToStr(Ores));
AddtoReport('');
AddtoReport('<======== User report ========>');
PlayerReport;
ChangeReportWidth(430);
end;

// ----------------------------------------------------------------- \\

procedure NextPlayer2(Active: Boolean);
begin
if RandomPlayer then
RandomNextPlayer(Active)
else
begin
Writeln('NextPlayer');
if not Active then
Players[CurrentPlayer].Active := False;
Players[CurrentPlayer].Level[15] := GetSkillLevel('mining');
LogOut;
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked + ((PlayerCurTime - PlayerStartTime) / 60);
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
CurrentPlayer := 0;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
CurrentPlayer := 0;
WriteLn('All players are inactive. Script terminated.');
TerminateScript;
end;
end;
if Players[CurrentPlayer].Active = True then Logs := Logs + 1;
LoginPlayer;
SetVariables;
ProgressReport;
end;
end;

function FindFight2: Boolean; // In testing...
var
xf, yf: Integer;
begin
if (FindColor(xf, yf, 65280, 217, 129, 297, 209)) then
begin
Result := True;
WriteLn('******** FOUND FIGHTING RANDOM ********');
WriteFileString(TheFile, '******** FOUND FIGHTING RANDOM ********' +
Chr(13))
Fights := Fights + 1;
end;
end;

// ----------------------------------------------------------------- \\

procedure AutoRespondV;
var
Respond : String;
begin
OldLine := TheLine;
TheName := lowercase(trim(GetTextAtEx(20, 415, 45, SmallChars, False, False, 0, 2, 0, 40, True, tr_NormalChars)));
TheLine := lowercase(trim(GetTextAtEx(20, 415, 45, SmallChars, False, False, 0, 2, 16711680, 40, False, tr_NormalChars)));
NewLine := TheLine;
if OldLine <> NewLine then
if (pos('yo', TheName) <> 0) or (pos('th', TheName) <> 0) or (pos(Players[CurrentPlayer].Nick, TheName) <> 0) then
begin
end
else
begin
if (IsChatMessage('ing')) and ((IsChatMessage('lvl')) or (IsChatMessage('evel'))) then
begin
SayCurrentLevels('mining');
if Random(6) < 5 then
begin
Wait(50+Random(50));
end
else
begin
Wait(2000+Random(1000));
if (IsChatMessage('1')) or (IsChatMessage('2')) or (IsChatMessage('3')) or (IsChatMessage('4')) or (IsChatMessage('5')) or (IsChatMessage('6')) or (IsChatMessage('7')) or (IsChatMessage('8')) or (IsChatMessage('9')) then
begin
Case Random(5) of
1: Respond := 'nice';
2: Respond := 'good';
3: Respond := 'not too bad';
4: Respond := 'good good';
5: Respond := 'not bad';
end;
TypeSend(Respond);
end;
end;
end;
if (IsChatMessage('ello')) then
begin
if Random(3) = 1 then
begin
Case Random(4) of
1: Respond := 'hi';
2: Respond := 'hello';
3: Respond := 'howdy';
4: Respond := 'yo';
end;
end;
TypeSend(Respond);
end;
if (IsChatMessage('cya')) or (IsChatMessage('bye')) then
begin
Case Random(3) of
1: Respond := 'cya';
2: Respond := 'bye';
3: Respond := 'bye bye';
end;
TypeSend(Respond);
end;
if (IsChatMessage('lol')) or (IsChatMessage('hah')) or (IsChatMessage('rofl')) or (IsChatMessage('lmao')) then
if Random(3) = 1 then
begin
Wait(100+Random(100));
Case Random(14) of
1: Respond := 'lol';
2: Respond := 'lolol';
3: Respond := 'lmao';
4: Respond := 'rofl';
5: Respond := 'nice';
6: Respond := 'roflz';
7: Respond := 'lmfao';
8: Respond := 'ahahah';
9: Respond := 'hahaha';
10: Respond := 'that funny';
11: Respond := 'hehe';
12: Respond := 'hoho';
13: Respond := 'hohoh';
14: Respond := 'heheh';
end;
end;
TypeSend(Respond);
end;
end;

procedure AntiRandomsV;
begin
FindTalk;
Wait(1);
if (FindFight2) then
begin
WriteLn('You are attacked, trying to escape.');
RunAwayDirection(RDirection);
Wait(4000+Random(3000));
Move;
Wait(4000+Random(3000));
WriteLn('Escape done, now, go back to mining.');
RunBack;
end;
Wait(1);
FindTalk;
Wait(1);
if FindBitmapToleranceIn(NewBox, x, y, 556, 206, 738, 463, 50) then SolveBox;
Wait(1);
FindLamp('mining');
Wait(1);
if (DetectFrogCave) then SolveFrogSwamp;
Wait(1);
FindDemon;
Wait(1);
FindMod;
Wait(1);
FindScapeRune;
Wait(1);
SolvePinball;
Wait(1);
FindQuiz;
Wait(1);
NoGameTab;
Wait(1);
FindTalk;
end;

procedure DropOre;
var
Clay2, OreMask, Old: Integer;
begin
Clay2 := BitmapFromString(4, 4, '86714C89734D8B7650907A52978' +
'1569781569A8357957E55A1895CA38B5D9F875B9C8559AC9262A8' +
'8F60A58D5FA1895C');
OreMask := BitmapFromString(11, 11, 'z78DA73730301033070436' +
'2238B60024C35B84CC0A5923C13F0BB937813F0EB22DE04CC5022' +
'CF04CADD404CC890EA0BFCE2F85D4E4C6A212FF470998FCC0600F' +
'B599CC1');
WriteLn('Load complete. Ore dropping.');
Old := CountItemBmpMaskTol(OreMask, 20, 25);
Old := Old + CountItemBmpTol(Clay2, 10);
if (Old = 0) then
begin
WriteLn('You have too much junks and rewards from randoms in your inventory, changing player.');
NextPlayer2(false);
end;
Players[CurrentPlayer].Integer3 := Players[CurrentPlayer].Integer3 + Old;
Ores := Ores + Old;
if (KeepJunks = false) then
begin
if (PickaxeW) then
begin
if Random (20) < 18 then DropAll else
begin
Case Random(3) of
1: begin DropTo(4, 28); DropTo(1, 3); end;
2: begin DropTo(12, 28); DropTo(1, 11); end;
3: begin DropTo(5, 20); DropTo(1, 4); DropTo(21, 28); end;
end;
end;
end
else
begin
if Random (20) < 18 then DropTo(2, 28) else
begin
Case Random(3) of
1: begin DropTo(4, 28); DropTo(2, 3); end;
2: begin DropTo(10, 28); DropTo(2, 9); end;
3: begin DropTo(5, 20); DropTo(2, 4); DropTo(21, 28); end;
end;
end;
end;
end;
if (KeepJunks) then
if Random (20) < 18 then
begin
ClickAllItemsBmpMaskTolWait('rop', OreMask, 20, 25, 30+Random(30));
ClickAllItemsBmpTolWait('rop', Clay2, 10, 30+Random(30));
end;
WriteLn('Drop finish.');
Loads := Loads + 1;
Wait(200+Random(800));
FreeBitMap(Clay2);
FreeBitMap(OreMask);
ProgressReport;
end;

procedure LeaveScreen;
var
rx, a: Integer;
begin
rx := Random(300);
a := Random(2);
if (a = 0) then
begin
MMouse(rx, 1, 0, 0);
ClickMouse(rx, -1, True);
Wait(800 + Random(1000));
end;
if (a = 1) then
begin
MMouse(rx, 502, 0, 0);
ClickMouse(rx, 503, True);
Wait(1000 + Random(800));
end;
end;

procedure AntibanVe;
begin
Case Random(4) of
1: begin SendArrowSilentWait(Random(4), 500 + Random(500)); SendArrowSilentWait(Random(4), 500 + Random(500)); MakeCompass('n'); SendArrowSilentWait(0, 1400 + Random(100)); end;
2: begin HoverSkill('Mining', false); GameTab(4); end;
3: PickUpMouse;
4: MouseSpeed := Ms-1+Random(2);
end;
end;

procedure AntibanVe2;
begin
Wait(100+Random(500));
Case Random(3) of
1: begin GameTab(1+Random(12)); Wait(1000+Random(1000)); GameTab(4); end;
2: RandomRClick;
3: begin Move; Wait(500+Random(1000)); end;
end;
end;

// ----- Procedure taken from Wizzup?'s PowerMiner ----- \\

procedure ChangeGasPixels (Var Gasx,GasY:Integer);
var
TempX, TempY: Integer;
begin
if FlagPresent then
begin
if FindColorSpiralTolerance(x,y,RockColor,MSX1,MSY1,MSX2,MSY2,4) then
begin
x := TempX;
y := TempY;
if CheckOre(x,y,RockColor,4) > 2 then
begin
if Distance(MSCX,MSCY,TempX,Tempy) < 40 then
begin
GasX := x;
GasY := y;
end;
end;
end;
end;
end;

function GetChatMessage: String;
begin
Result := Trim(GetTextAtEx(20, 415, 0, SmallChars, False, False, 0, 1, 0, 80, False, tr_AllChars));
end;

// ----------------------------------------------------- \\

procedure Mine2;
var
Mx, My, OreWait, trying : Integer;
begin
if (AutoRespondA) then AutoRespondV;
if not (GasCheck(Ox,Oy)) then
begin
Wait(100+Random(100));
if Random (40) < 38 then
begin
Mouse(Ox, Oy, 0, 0, True);
ChangeGasPixels(Ox,Oy);
end
else
begin
Mouse(Ox, Oy, 0, 0, False);
ChooseOption(Mx, My, 'ine');
end;
ChangeGasPixels(Ox,Oy);
if (FlagPresent) then
begin
FFlag(0);
Wait(300+Random(400));
end;
end
else
begin
Mouse(Ox-40-Random(20),Oy-40-Random(20),1,1,true);
Wait(4000+Random(3000));
Move;
Wait(3000+Random(3000));
Mouse(Ox+40+Random(20),Oy+40+Random(20),1,1,true);
Exit;
end;
FindTalk;
MarkTime(OreWait);
Wait(800+Random(500));
repeat
if (GasCheck(Ox,Oy)) then
begin
Mouse(Ox-40-Random(20),Oy-40-Random(20),1,1,true);
Wait(4000+Random(3000));
Move;
Wait(3000+Random(3000));
Mouse(Ox+40+Random(20),Oy+40+Random(20),1,1,true);
Break;
end;
if Random (220) = 1 then begin Move; Wait(100+random(100)); end;
Wait(100+Random(80));
until (TimeFromMark(OreWait)>RockWait+Random(500)) or (Pos('anage', GetChatMessage) <> 0);
if Random (100) = 1 then LeaveScreen;
if Random (120) = 1 then AntibanVe;
if (AutotalkA) then if Random (900) = 1 then RandomChat;
FindTalk;
FindPick;
if (NoPick) then
begin
SendArrowSilentWait(Random(4), 500 + Random(500));
SendArrowSilentWait(Random(4), 500 + Random(500));
MakeCompass('n');
SendArrowSilentWait(0, 1400 + Random(100));
trying := trying + 1;
if (trying >= 4) then
begin
WriteLn('Head of pickaxe missing and impossible to find it, changing player.');
NextPlayer2(False);
end;
end;
end;

function FindRock : Boolean;
begin
if (FindObj3(Ox, Oy, 'Mine', orecolor1, OreTol)) then Result := true else
if (FindObj3(Ox, Oy, 'Mine', orecolor2, OreTol)) then Result := true else
if (FindObj3(Ox, Oy, 'Mine', orecolor3, OreTol)) then Result := true else
Result := false;
end;

procedure MineOre;
begin
repeat
if (LoggedIn) then
begin
AntiRandomsV;
if (FindRock) then Mine2 else
begin
ClickToContinue;
OreTol := OreTol + 1;
WriteLn('OreTol : '+IntToStr(OreTol));
if (OreTol >= 25) then NextPlayer2(false);
end;
end else NextPlayer2(false);
until (InvFull);
end;

begin
SetupSRL;
SetupSRLMining;
ActivateClient;
DisguiseScar('Winamp');
DeclarePlayers;
Wait(200+Random(100));
if (LoggedIn) then
SetVariables else
begin
LoginPlayer;
SetVariables;
end;
repeat
repeat
if (LoggedIn) then
begin
MineOre;
if Random (20) < 2 then AntibanVe2;
AntiRandomsV;
DropOre;
if Random (20) < 3 then AntibanVe2;
LogOutEvery(1,5+Random(5));
end
else Break;
until (LoadsD = Loads);
Wait(1000+Random(500));
NextPlayer2(NextPlayerR);
until (false);
end.

JAD

2007-04-07 20:18:08

Buckley.. good copy bust, but you will never match up to yohojo without saying SILLY GOOSE! lol. Do it right next time.. and tom, don't be a noob like that.

Boreas

2007-04-07 20:28:03

From: tomtomsparklingstar
Thank you. and no I didn't copy it.


And that's why we trust no-one.

tomtomsparklingstar

2007-04-08 01:54:26

I made some changes to it though.

YoHoJo

2007-04-08 02:27:46

Nice try, but doesnt matter.
The script is BiBis, you did just about nothing,
and you know it.

Please just make your OWN script ant try again later.

tomtomsparklingstar

2007-04-08 02:42:16

Ok ill do my own next time but how long untill i can apply again?

I was just lazy.

Secet

2007-04-08 05:02:10

Why do they even deserve the second chance?

Boreas

2007-04-08 10:49:37

They don't. There were plenty of warnings, and next time we won't know if its legit or just better at copying.

GoF

2007-04-08 11:46:58

… Thats by Bibi26.. And im 100% sure someone has already mentioned about that.

tomtomsparklingstar

2007-04-08 18:13:26

so your saying i should just make another user so you dont know its me?

Boreas

2007-04-08 19:24:27

We will know it's you. Just be good and enjoy the free section.

Ejjman

2007-04-08 19:49:01

Heh..

Visit the tut section and learn?

Bobarkinator

2007-04-08 22:08:47

From: tomtomsparklingstar
Thank you. and no I didn't copy it.


And you lied to me…

tomtomsparklingstar

2007-04-08 22:19:07

how will you know it is me?

Boreas

2007-04-08 22:28:19

Lol, you want me to tell you so that you can get around it?

tomtomsparklingstar

2007-04-08 23:05:34

From: Boreas
Lol, you want me to tell you so that you can get around it?


what ever. im just going to make my own script and apply again.

JAD

2007-04-09 00:18:45

From: tomtomsparklingstar
what ever. im just going to make my own script and apply again.


Just so you know tom, your going to need to make a dam good script for me to ever vote yes for you. I am very hard to convince in the first place, and you copied somebody and even said you didn't copy it after.. Learn to script VERY well or you will probably be rejected..

YoHoJo

2007-04-09 01:08:08

They will know its yours because it will go past my inspection

Yohojo
Official Copy Buster
:p
Ghehehhehhehehehehehe

tomtomsparklingstar

2007-04-09 18:37:56

So what you guys are saying is, no matter how good of a script i make you will find some way to say that i copied it. Im almost done making my own script too.

Bobarkinator

2007-04-09 19:20:51

No we are saying if you copy a script no matter how obscure we will find it.

TheGodfather

2007-04-10 22:00:33

Okay you're a dumbfuck.