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
——————————————————
<!– END 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 –>