John
2012-05-13 07:43:29
Before We Continue, I have updated the script allot and cleaned it up take another look if you want ;)
How Long have You Played Runescape?
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Pascal And extremely limited Java
Are you a member of any other communities?
http://www.sythe.org/member.php?u=300079
Tell us about yourself…
Sorry for the name confusion guys, I am actually Evlin, My siggy did not show..
Proof if your still not sure http://villavu.com/forum/showthread.php?p=1010185#post1010185
Please show us one (or multiple) of your scripts.
How Long have You Played Runescape?
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Pascal And extremely limited Java
Are you a member of any other communities?
http://www.sythe.org/member.php?u=300079
Tell us about yourself…
From: John
My name's john(hence the UserName :p)
I'm interested in computer I.T., Love Flying small RC helicopters/Planes. I Enjoy a good ol' chat, Hit me up if you want one :)
I also Love Playing fast paced sports like dodge ball Or European Hand Ball. Personally I would love to excel at Villavu.com Because of it's Helpful, Kind Community :)
Sorry for the name confusion guys, I am actually Evlin, My siggy did not show..
Proof if your still not sure http://villavu.com/forum/showthread.php?p=1010185#post1010185
Please show us one (or multiple) of your scripts.
program JohnsNatureRuneCrafter;
{$i srl/srl/misc/smart.simba}
{$i SRL\SRL.simba}
{$i SPS\SPS.simba}
{$i srl/srl/skill/summoning.simba}
{$i ObjectDTM\ObjDTMInclude.simba}
//Notes
{ OBJDTM is only used for area gathering.
Fixed Logical Flaws
And Fixed The Name Mix up :p sorry about that.}
const
{______________________________Script Setup____________________________________}
{What Pouches}
GiPouch = False; //Next 4 Options True/False? Giant Pouch repairing currently Unavailable, I don't have one :(
LaPouch = True;
MePouch = True;
SmPouch = True;
{Where Are The Essence?}
Collum = 0;
Row = 0;
{Where Are The NPC Contact Runes?}
AstralCollum = 3;
AstralRow = 0;
AirCollum = 2;
AirRow = 0;
CosmicCollum = 1;
CosmicRow = 0;
{____________________________END OF SCRIPT SETUP_______________________________}
var
Ring, GPouch, MPouch, LPouch, SPouch, GraahkPouch, SPot, Retry, TripNumber: integer;
ExpGained, DegPouch, GraahkPouch1: integer;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Active := True;
Players[0].Pin := '';
end;
procedure LoadDTMs;
begin
Ring := DTMFromString('mggAAAHicY2NgYHgGxG+A+BUQPwLih0D8Eog5GSGYCUoLA/F/BhBgAmPBMhE4G4SNgCQ2zIgDQwAAPDoIeg==');
GPouch := DTMFromString('m1gAAAHic42JgYHBgYmDwAmJfIPYB4kAgtgFiJyB2B2JnIPYH4jdAtU+B+DEQv2SA8L9A8WcgfgDEH4A4IsCFISQ4AMhiYoiPjQLTyDg5KQ5MGwFJYjAjkRgBABaoEkQ=');
MPouch := DTMFromString('mPwEAAHic42dgYMhiYmDIB+JiKF0KxDlAXATEJUCcCZVLAeJsqByInQzEz4D6nwLxEyD+CMRvgPgBEH8A4hdQsTtA/A6I70L5t6FyEQEuDPGxUUAWExynpyWBaSFBPhTxxAhHFL4RkCQXM1KA0QAAsc4biw==');
LPouch := DTMFromString('mAAEAAHic42FgYMhiYmAoBOJsIM4F4jIgLgfifCDOAOICIC4G4hQgTgTiVwwQ/BCI7wLxcyB+D8SfoPgZED8G4ttQ8RAfBwZ/Px+G7Kw0hogAa6AIEwoGySHzjYAkKZiRRIwMAABEF2U=');
SPouch := DTMFromString('mFQEAAHic42VgYNjHBMEngPgAEB8F4iNAfAyIdwLxNiDeDpUHqTsIxM+B+t4D8TMgvg/Et4H4FRC/A+J7UPZbqNwNqNowPycgyQTGYX6WYDoqMgwuhg0bAUlSMSMZGAUAAE/KGwg=');
SPot := DTMFromString('mbQAAAHicY2VgYDjFyMBwEYivAvFZKHsTUHw9EG8H4j1AvAuI5a/dBZJMKNgISKJjRiwYDAA45AqA');
GraahkPouch := DTMFromString('mlwAAAHicY2dgYOBgZGAQAGIxIGYDYlEg5gJiYSDuAMpPAeIJQDwNiNuhdBMQ1+eEAkkmrFgSSOLCjHgwFAAAdQ0GWA==');
GraahkPouch1 := DTMFromString('mwQAAAHic42RgYHjDzMDwC4h/AvFHIH4OxD+A+DUQf4GKL2WE4DVAvBGINwHxIii9AYhXAvGNakcGAwUFoIlMOLEckCSEGYnAcAAATg0R5A==');
DegPouch := DTMFromString('mrAAAAHic42BgYHjJzMDwHIg/A/EDIH4NxO+B+BkQfwDiCkYGhjYgbgLidiDuguJuqLikJDuDlZkR0CQmBkdbCwZ9HQ0GNRVFsJiOjhoDP1AGH2YkgGEAANVXD8k=');
end;
procedure FreDTMs;
begin
FreeDTM(Ring);
FreeDTM(GPouch);
FreeDTM(MPouch);
FreeDTM(LPouch);
FreeDTM(SPouch);
FreeDTM(SPot);
FreeDTM(GraahkPouch);
FreeDTM(GraahkPouch1);
FreeDTM(DegPouch);
end;
Procedure ProgressReport;
begin
WriteLn('-----Nature RuneCrafter Pro-----');
WriteLn('Time Ran For ' + TimeRunning + '');
WriteLn('You Have Gained ' + IntToStr(ExpGained) + ' Rune Crafting xp');
WriteLn('You Have Done ' + IntToStr(TripNumber) + ' Trips');
WriteLn('--------------------------------');
end;
procedure SetUpScript;
begin
Smart_Server := 77;
Smart_Members:= true;
Smart_Signed := true;
Smart_SuperDetail := false;
SetupSRL;
ObjDTM_Setup;
AddOnTerminate('FreDTMs');
AddOnTerminate('ProgressReport');
DeclarePlayers;
MouseSpeed:= 23;
LoadDTMs;
if not LoggedIn then
LoginPlayer;
SetAllChats('all', 'off', 'off', 'off', 'off', 'off', 'off');
SetAngle(SRL_ANGLE_HIGH);
end;
procedure ShutDown;
begin
ProgressReport;
If LoggedIn then
LogOut;
FreDTMs;
TerminateScript;
end;
function IsAtAltar: Boolean;//Only Used for Area getting.
begin
Result := ObjDTM_InArea(
'80:80:2:10:7:87:58:1:7:129:67:4:53:61:112:62:103:100:53:100', True);
end;
function IsAtBank: Boolean;
begin
Result := ObjDTM_InArea(
'80:80:3:10:7:85:75:2:7:75:16:2:7:116:79:6:67:38:75:36:85:42:102:43:100:96:66:107', True);
end;
function IsAtChest: Boolean;
begin
Result := ObjDTM_InArea(
'80:80:2:1:7:66:133:1:7:109:129:4:64:66:98:66:98:93:65:91', True);
end;
procedure ChooseClickType(Option: string);//Just a small bit of antiban.
begin
case random(2) of
0 : begin
ClickMouse2(True);
end;
1 : begin
ClickMouse2(False);
WaitOption(Option, 400+random(200));
end;
end;
Wait(randomrange(500,1000));
end;
procedure WithdrawDTM(DTMx: integer; Optionx: string);//Custom function that withdraws a DTM.
var
x, y: integer;
begin
If FindDTM(DTMx, x, y, MBX1, MBY1, MBX2, MBY2) then
begin//Logic Flaws fixed Here
MMouse(x, y, 4, 4);
ChooseClickType(Optionx);
Wait(300+random(75));
end;
end;
Procedure ToAltar;//Perfect Path that ALWAYS makes it to the altar under normal conditions :)
Var
myPath: TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE, ['8_11','7_11']);
myPath := [Point(2979, 4662), Point(2986, 4662), Point(2994, 4662), Point(3002, 4663), Point(3010, 4662), Point(3021, 4660), Point(3028, 4660), Point(3034, 4661), Point(3045, 4662), Point(3054, 4660), Point(3068, 4657), Point(3078, 4656), Point(3085, 4653), Point(3095, 4647), Point(3103, 4642), Point(3110, 4638), Point(3120, 4634), Point(3130, 4632), Point(3138, 4630), Point(3148, 4630), Point(3159, 4630), Point(3168, 4631), Point(3179, 4631), Point(3188, 4628), Point(3195, 4628), Point(3202, 4628), Point(3212, 4625), Point(3219, 4625), Point(3228, 4627), Point(3236, 4622), Point(3243, 4622), Point(3254, 4622), Point(3261, 4619), Point(3270, 4615), Point(3276, 4614), Point(3285, 4614), Point(3291, 4612), Point(3303, 4606), Point(3310, 4601)];
SPS_WalkPath(myPath)
FFlag(1);
Wait(500+random(500));
end;
procedure PointWalk;//Walks to the inner altar, Simple yet Affective.
var
x, y: integer;
begin
MakeCompass('N');
if FindColorTolerance(x, y, 455414, 629, 59, 639, 71, 20) then
begin//More Logical Flaws Fixed
MMouse(x, y, 2, 2);
Wait(300+random(50));
ClickMouse2(true);
FFlag(1);
Wait(700+random(200));
GameTab(tab_Inv);
end;
end;
Function FindAltar: Boolean;
var
x, y: integer;
begin
if FindObjcustom(x, y, ['nter'], [5045670], 10) then
begin
MMouse(x, y, 4, 4);
result := true;
end else
result := false;
end;
Function FindInnerAltar: Boolean;
Var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I, X, Y: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5854551, MSX1, MSY1, MSX2, MSY2, 50); // Enter the Color and Tolerance Here at the Right place.
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 5);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 9 Then
Begin
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
Result := True;
Break;
end;
end;
Function Enter: boolean;
begin
SetAngle(SRL_ANGLE_HIGH);
if FindAltar then
begin
ClickMouse2(True);
Flag;
Wait(2000+random(1000));//Random Wait For laggy users.
Repeat
Wait(50);
until(IsAtAltar) or not loggedin
if IsAtAltar then
begin
WriteLn('Is At Altar');
PointWalk;
end;
end;
end;
procedure UsePouchEss;
var
x, y: integer;
begin
if GiPouch and FindDTM(GPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Giant Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(True);
Wait(700+random(1000));
end;
if LaPouch and FindDTM(LPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Large Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(True);
Wait(700+random(1000));
end;
if FindDTM(MPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Medium Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(True);
Wait(700+random(1000));
end;
if SmPouch and FindDTM(SPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Small Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(True);
Wait(700+random(1000));
end;
end;
procedure FillPouches;
var
x, y: integer;
begin
if GiPouch and FindDTM(GPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Giant Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(False);
WaitOption('ill', 100);
Wait(500+random(1000));
end;
if LaPouch and FindDTM(LPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Large Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(False);
WaitOption('ill', 100);
Wait(500+random(1000));
end;
if MePouch and FindDTM(MPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Medium Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(False);
WaitOption('ill', 100);
Wait(500+random(1000));
end;
if SmPouch and FindDTM(SPouch, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Small Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(False);
WaitOption('ill', 100);
end;
end;
procedure CraftRunes;
begin
if FindInnerAltar then
ClickMouse2(true);
end;
procedure Craft;
begin
CraftRunes;
Wait(1500+Random(500));//Waits may look messy but are required for laggy Users.
UsePouchEss;
Wait(100+Random(500));
CraftRunes;
Wait(100+Random(500));
ExpGained := ExpGained + 387;
TripNumber := TripNumber + 1;
end;
function OpenBankCw: Boolean;//Simplied bank opener.
begin
repeat
Inc(Retry);
if OpenBankChestEdge(SRL_BANK_CW) then
begin
if PinScreen then
InPin(Players[CurrentPlayer].Pin);
end;
until(BankScreen) or (retry = 5);
end;
procedure DepositSPot;
var
x, y: integer;
begin
if OpenBankCw then
begin
if FindColorTolerance(x, y, 13617180, 550, 206, 731, 461, 5) then
begin
Wait(500+random(400));
MMouse(x, y, 4, 4);
Wait(500+random(400));
ClickMouse2(True);
Wait(500+random(400));
end;
if FindColorTolerance(x, y, 3960770, 550, 206, 731, 461, 5) then
begin
Wait(500+random(400));
MMouse(x, y, 4, 4);
ClickMouse2(True);
Wait(500+random(400));
CloseBank;
end;
end;
end;
procedure RenewGraahk;
var
x, y: integer;
begin
if OpenBankCw then
Begin
Wait(500+random(50));
WithdrawDTM(GraahkPouch, '-1');
WithdrawDTM(SPot, '-1');
CloseBank;
GameTab(tab_Inv);
end;
If FindDTM(GraahkPouch1, x, y, 550, 206, 731, 461) then
begin
WriteLn('Found The Graahk Pouch');
MMouse(x , y, 3, 3);
ClickMouse2(False);
WaitOption('ummon', 100);
Wait(500+random(1000));
end;
if FindColorTolerance(x, y, 13617180, 550, 206, 731, 461, 5) then
begin
Wait(500+random(400));
MMouse(x, y, 4, 4);
Wait(500+random(400));
ClickMouse2(True);
Wait(500+random(400));
end;
DepositSPot;
WriteLn('Graahk Summoned');
end;
function CheckFamiliar : boolean;//Sex(SRL Juniour Member) Helped me Simplify the Function
begin
result := UsingFamiliar
if result then
Writeln('We still have our Graahk')
else
begin
Writeln('We need a new Graahk');
RenewGraahk;
end;
end;
procedure RepairPouches;
var
x, y: integer;
begin
OpenBankCw;
if Withdraw(AstralCollum, AstralRow, 1) then
if Withdraw(CosmicCollum, CosmicRow, 1) then
if Withdraw(AirCollum, AirRow, 2) then
begin
CloseBank;
if GameTab(tab_magic) then
begin
MouseBox(680, 310, 694, 318, MOUSE_LEFT);
Wait(500+random(250));
MouseBox(407, 309, 459, 317, MOUSE_LEFT);
Wait(7000+random(1000));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
MouseBox(180, 406, 312, 410, MOUSE_LEFT);
Wait(800+random(250));
ClickContinue(False, True);
Wait(800+random(250));
ClickContinue(False, True);
end;
end;
end;
procedure CheckPouches;
var
x, y: integer;
begin
if FindDTM(DegPouch, x, y, 550, 206, 731, 461) then//MIX1 ect ect was not working.
begin
WriteLn('Pouch Needs Repairs, Repairing.');
RepairPouches;
Exit;
end else
WriteLn(' Our Pouches are Fine.');
end;
Procedure ToChestFS;
Var
myPath: TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE, ['4_10','3_10','4_11']);
myPath := [Point(1597, 4308), Point(1603, 4318), Point(1605, 4329), Point(1610, 4332), Point(1615, 4338), Point(1620, 4340)];
SPS_WalkPath(myPath)
if IsAtChest then
Exit
else
WriteLn(' Failed to make it to the Bank Chest, Shutting Down');
ShutDown;
end;
procedure ToChest;//Used Simple Symbol finding because the symbol is never covered by players.
var
x, y, Time: integer;
begin
MarkTime(Time);
if FindSymbol(x, y, 'bank') then
begin
MMouse(x, y, 4, 4);
ClickMouse2(true);
end;
repeat
Wait(100)
until(IsAtChest) or (TimeFromMark(Time) > 7000);
If IsAtChest Then
Exit
else
begin
ToChestFS;//Just Incase
Wait(1000+random(700));
end;
end;
procedure Bank;
begin
OpenBankCw;
begin
if Withdraw(Collum, Row, 0) then
begin
Wait(200+random(200));
FillPouches;
end;
if Withdraw(Collum, Row, 0) then
begin
Wait(200+random(200));
CloseBank;
end;
end;
end;
procedure RenewRing;
var
x, y: integer;
begin
OpenBankCw;
Wait(500+random(500));
if FindDTM(Ring, x, y, MBX1, MBY1, MBX2, MBY2) then
begin
MMouse(x, y, 4, 4);
Wait(100+random(50));
ClickMouse2(true);
CloseBank;
end;
if GameTab(tab_Inv) and FindDTM(Ring, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
MMouse(x, y, 5, 5);
ChooseClickType('ear');
end;
end;
Function DuelRingCheck: Boolean;
begin
if GameTab(tab_Equip) then
begin
MMouse(696, 385, 10, 10);
Wait(800+Random(500));
end;
If IsUpText('emove') then
Begin
WriteLn('We Have Our Ring');
Exit;
end else
begin
WriteLn('We Need To Renew Our Ring');
RenewRing;
Exit;
end;
end;
Procedure TeleToKaram;
begin
MMouse(707, 140, 5, 5);
ClickMouse2(False);
if WaitOption('nteract', 200) then
Wait(1500+random(1000));
FindNPCChatTextMulti(['eleport'], ClickLeft);
end;
procedure Tele;
var
Time: integer;
begin
if GameTab(tab_Equip) then
begin
MMouse(696, 385, 10, 10);
Wait(500+Random(500));
If IsUpText( 'emove') then
begin
WriteLn('Found Ring, Teleporting');
ClickMouse2(False);
WaitOption('astle', 300);
end;
end;
MarkTime(Time);
Repeat
Wait(50);
until(IsAtBank) or (TimeFromMark(Time) > 4000);
if IsAtBank then
WriteLn('At Bank, Banking.');
end;
procedure MainLoop;
begin
repeat
CheckPouches;
DuelRingCheck;
CheckFamiliar;
Bank;
TeleToKaram;
ToAltar;
Enter;
Craft;
Tele;
ToChest;
ProgressReport;
until(Not LoggedIn);
end;
begin
SetUpScript;
MainLoop;
end.
{Progress report:
-----Nature RuneCrafter Pro-----
Time Ran For 48 Minutes and 38 Seconds
You Have Gained 10449 Rune Crafting xp
You Have Done 27 Trips
--------------------------------
}
//note The MIX1 ect ect for some reason was not working at times, so i just put digits in.
//Credits To Mat and Main for Encouragement and great ideas ;)