Nemesis3X
2012-03-19 14:19:56
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?
Java
Are you a member of any other communities?
No
Tell us about yourself…
Please show us one (or multiple) of your scripts.
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Java
Are you a member of any other communities?
No
Tell us about yourself…
From: Nemesis3X
Hello everyone, this is my 2nd application for SRL membership Statue. As I already did a resume of who I am before, I am going to do a brief return on what I have said in my first application.
If you didn’t know, my name is Marc-André Gagné, I live in Canada and I am 19 years old. I live in the province of Quebec, so English isn’t my first language, but I did evolve in the gaming community for more than 10 years(but I did started to play on computer at the age of 4 years old! I even remember my first ever game played, Adibou :-)), so I learned mainly English from interactions I had with other people and my courses at school. Actually, I am in college and I will go to university in 2 years when I am done with college!
Why I am applying for SRL Member? Well, the answer is pretty much easy, I want the community to recognize I am a good scripter and they can believe in my scripting skill while using one of my scripts. As many of you know, when I am trying a script from Registered User like me, I always try the script first to see how it is going and then I go through all the code to see what could be done better before using it for real on extended period of time. As, I don’t want to come back one hour later and discover myself, stuck in a corner mass clicking on the screen for no reason…
For me, this statue mean people will even more believe me when I try to help other, as I am often reading the Help section and giving tips to people or sending a PM to tell them how to do it with a piece of code. I was even surprise when I did received a message from someone asking how to make correctly a good DTM for walking near the bank at castle wars and I want to help this community. So, this statue will not just give credit to my scripting skill, but also give credit to explication I give to people when I help them because they know that if I am a member, it is surely because I know what I am doing! And I know what I am doing!
So, I guess we are pretty much at the point where I will talk which script I chosen to show. I could have use my Abyss Script like some Thought when I first made my Thread about the development of this script, but It isn’t done yet, as there are some bugs I need to fix (I am in the beta testing phase with 3 awesome people that is testing my Script and do give some constructive feedback and where did it mess up sometime, so I can fix it and try with a newer version to see if there are still some problems!)So, I am going to apply with this same script I used one month Ago. I got a copy of this very old version I posted on my first application! But, maybe some did already use my Ectunfuntus Script and know the Code, but if your last memory of this Script is back from when I posted in my application. What to say else than, you won’t recognize it since I edited it, so much! To the point where I got many people using it right now :-)
Let’s the fun begin!
Please show us one (or multiple) of your scripts.
program Ecto;
{$DEFINE SRL5}
{$DEFINE SMART}
{$i SRL\SRL.simba}
const
//SRL 5
SRLStats_Username = '';
SRLStats_Password = '';
//Set Break Value
TimePlaying = 120; // Enter the time You want to Play before taking a Break
TimeBreaking = 30; //Enter How long you want to Break
RangeTimePLaying = 30; //Enter the Variation you want for Play time
RangeTimeBreaking = 10; //Enter the Variation you want for Break Time
// Set the Value here
WayOfBanking = '1'; // 0 = Edge with Glory/ 1 = Castle Wars with Emerald Ring
WearArmors = '0'; // 0 = no mean Cape and Glory, 1 = Yes Armor mean Helm/Wep/Shield/Body and Legs
TypeOfBones = '1'; // 0 = Dragon Bones/ 1 = Big bones/2 = Infernal Ashes/3 = BabyDragon bone
Var
Path: Array[0..12] of Integer;
WalkToTresor: Array[0..2] of Integer;
FailSafe: Array[0..2] of integer;
aFound, xFound : Extended;
x, y, EctoT, CloseTrap2, OpenTrap, Pray, Tokens, BabyDragon, Stairuse: Integer;
AntiStuck, PrayerXPGain,PrayerXPGainC, BonesWorkshiped, NumberTrips, EctoT2 : integer;
BreakRounds, TotalBreaks, Bonemeal, BucketSlime, Charge : integer;
GloryChecking, tokenss, BoneDTM, EmeraldRing, CommitTime : integer;
Glory2, Dbones, Glory3, Glory4, Bucket, Stuck, WayToTeleport, PixelShiftss, Stair : integer;
Bucket2, BigBones, InfernalAsh, XpPerTrip, BonesPerRun : integer;
KindOfBones : String;
{
*************************************************************************
** Nemesis3X Ectofuntus **
*************************************************************************
** SETUP **
*************************************************************************
** Read The Setup I have wrote on the forum or you will never be able **
** to get this script going in the right direction **
** Thanks and have a Nice botting session **
*************************************************************************
}
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Pin := '';
Players[0].BoxRewards := ['oins', 'ins', 'oin', 'oins'];
end;
Procedure LoadVariables;
begin
// Set the number of charged used on your Actual glory
Charge := 1; //Example Glory(3), you would change the 0 for a 1.
//DTMS
//Items
EctoT := DTMFromString('mggAAAHicY2NgYAhhYmAIBeJAIA4D4nAo+x0jA8M9IH4FxR+A+CMQ+/cnMETFRzEETEli8GuJZvDrimPwm5bIIAk0CxtmxIEhAADoDg9t');
EctoT2 := DTMFromString('mWAAAAHicY2FgYAhlYmAIAeJAIA4C4neMDAz3gPgtEH8GYu/2aAY7RzsG3/5YBh8gFgHqQcaMaBgEABoKCbg=');
Bucket := DTMFromString('mQwAAAHicY2ZgYOhgYmBoB+I+IJZkZGBQgWIvS3GGykQzhupkMwZ2oDoYZkTCQAAA0b8E4Q==');
Dbones := DTMFromString('mQwAAAHicY2ZgYJBnZGCQAWIlIF4ExIuBeCEQN1RXMUzq6WFoa2hgYAeqg2FGJAwEABCwBwo=');
InfernalAsh := DTMFromString('mbQAAAHicY2VgYKhlZWCoA+JWIK4B4nIg3snIwLAJiLcB8T4g3gXEfOxsDMJcHHAahNmB+tExIxYMBgA5fQb9');
BigBones := DTMFromString('mbQAAAHicY2VgYFjFysCwAIiXAvEGIF4PxNsZGRh2A/E2IN4CxPuAeFp/P0NWWhrD0nnzGFYsXMiweO4cBnagfnTMiAWDAQBELg/F');
Bucket2 := DTMFromString('mbQAAAHicY2VgYDjLxMBwBohPAvEFIL4MxGsZGRjmAfFSIF4OxKuBuCLBlMHbUpwhLUiXoSTWmKEs3oSBE6gfHTNiwWAAAJCXDCg=');
BabyDragon:= DTMFromString('mbQAAAHicY2VgYAgEYg8gDodiEP8GEN+C0veB+DIQlxTkM2SkpDDkZGQw1JSXM8yeMoWBHyiOjhmxYDAAAG20DRY=');
EmeraldRing := DTMFromString('mWAAAAHicY2FgYDjJxMCwF4iPAvEpIE4H4gIgLgXifCAWnSbBcH6TLMPKiRIMz44pMNgA9SBjRjQMAgBxmQtY');
CloseTrap2 := DTMFromString('mbQAAAHicY2VgYHjCyMDwEYi/AfEXIL4PxFVA3A3ETUBcDsWGnoYYmB2oHx0zYsFgAABEFgqi');
Stair := DTMFromString('mggAAAHicY2NgYPgMxLeB+DkQfwPiv0D8BYiboLgaiMuAuBmIJwCxlKoAg6gcL4OEIj+DrIYgGIPY7EA5bJgRB4YAACORCqY=');
//Walking Paths
Path[12] := DTMFromString('mFQEAAHic42VgYHBjYmDwAuIkIK4E4jooXQzEaUAcDMTuQFyKhHOA+qKA2ANKZwJxHRD3AvFsIO6B8nOBuAKI04HYx8uBISrCB4wdHczBfJgYiA/CIPaHLz/gOACoj1TMSAZGAQBYciB8');
Path[11] := DTMFromString('mKgEAAHic42NgYEhjYmBIAeJsIC4B4kYg7gfiKUA8A4inA/FEIG4D4jogzmOC6ClkZGBIB+JoIPYHYh8gDgbiGCAuAOJGIO4A4klAPAeI+4C4DqTO3YUhKjQAAzvZWoPlYPIwPowdAHQrOZiRTIwKANRbHj8=');
Path[9]:= DTMFromString('mwQAAAHic42RgYNjPxsCwCIj3APEDIH4DxAeBeD0QbwDi60Bsz8jAoAfEqkBsDMShQJwPxJFA7AHE4UDs6mbF4OdlzpCQHs7g7Q2hTWx0GBwdzRhcnO0YfHwdGfiB9hHCjERgOAAAQhIRyg==');
Path[5] := DTMFromString('mVAEAAHicpc0xC0FRAMXx816JRdmwGQyv90rdnpHL9WJgk97GSlaLRSkTX8DgU1hk96WM/t1ksL5Tv852Tk3SPZQO2OOIM664fPuBF564YYcN1jghDiSDBC3U0cAQOaZIEaKEKtoo483/eDZS3ql4bmK9QeZks56MNeq6VKvt8me+MOpnkaI48ZpsFBEU9J8PBZ8aGw==');
Path[6] := DTMFromString('m1gAAAHic42JgYMhlYmAoA+JOIJ4PxFOAuAWIC4G4FIgnAvEMIPZhZGAwBWItIPYD4lwgrgXiZCBOAmJjIA4BYjcvF4aQiAAGGwdrOBtEg/jvPn0F48+//jAYAe0mBjMSiREAAGFoGP0=');
Path[0] := DTMFromString('mKgEAAHic42NgYMhgYmDIBOICIK4A4hYgngrEC4F4DhC3AnE5VE0bEHcA8XIgFmFkYGAD4p9AM94D8Tsg/grEXEAxTSC2BGITIFYBYk8g/gKUEwbSPq72DFHB3ijYydoMjJHZIPz31Vc4lgTqJwczkolRAQB7PyB9');
Path[3] := DTMFromString('mrAAAAHic42BgYDjIxMCwCYiPAfFdIH4KxM+BeA8QPwBif0YGBmcgVoNiByA2AGIdRoicv58bQ5QOO5h2drIG08iYC2gHPsxIAMMAADATD18=');
Path[4] := DTMFromString('mrAAAAHic42BgYGhmYmDIBeJaIJ4GxGuBeBMQ9wFxGRB/B6r5CcS3gfguEH8DYgZGBgZRIFYBYlsHewZvfwcGV19zhqT8JAYPX1cGFjZ2BjNrSwYbVwsGfqByfJiRAIYBAEqKD7k='); //Se rendre à l'escalier 3
Path[2] := DTMFromString('mlwAAAHicY2dgYLjKxMBwEIjvA/FLIGZiZmD4BaSvA3EZEFcBcRwUtwPxTCCeB8ROLpYMru6mDDbuegyJ2dEMzFAxF3drBn6gubgwIx4MBQDP+A4S');
Path[1] := DTMFromString('mrAAAAHic42BgYHjBxMBwCYj/APF9INZhZmAQB+JnQDYjkPZmZGDwB2IDIDYG4nwonQLEWUBsY2HG4OpuyJCaGcPg52UFpkHY1ckKjPmBduDDjAQwDAAAxPEPCQ==');
Path[8] := DTMFromString('mlwAAAHicY2dgYFjLxMCwDIi3APFxIJ4JxEuAeD4QmzMyMAQCcSoQawOxIRBrAHEyEId6uzCkRQcxhIYEM3h7qjH4B2oyBLg7MhgnSDLwA83FhRnxYCgAADdCDQU=');
Path[7] := DTMFromString('mwQAAAHic42RgYFjHxMCwDIgnA/FmIL4CxNuBeBoQrwTio0Ccy8jAkAHEeUC8EIgTgTgQiLuAuBuIO4DY38+ZITbSl8HVX43BPywITHtA2YmxAQyOLkoM/ED7CGFGIjAcAACmuxLI');
WalkToTresor[0] := DTMFromString('m1gAAAHic42JgYFjKxsAwB4h7gXgDEO8H4kNQvASIT0DxO6Dab0D8EIhvAvEzIGZiZGCQAWJZIOYH4o9AsYSEOIacHFUGF1MJhmgPBYasrAw4Bsml9xmAMT9QLTGYkUiMAACiBhgq');
WalkToTresor[1] := DTMFromString('maQEAAHicrc8xCwEBAIbhj12RQQb8gMtqkVxiw26iI3Rdl4mOpESKgRRSYjT6Cfw0b9dlMfLVM33TG5O0DEtj3AJXHLFFGy1YsLHHGXc88MQLuZDkwkENBjKIoo4q7ODfYIIZGijDxHDg+Jyu9dGspLRan+T0LJUKedWKCZnZuIx0RHNvpMXU0+Ww87n9jpL0/Cr0B197AyctJNA=');
WalkToTresor[2] := DTMFromString('mKgEAAHic42NgYFjOxMAwG4j3QPFJJLwCiFuhuB6IG4G4CYjXAbEAIwODFxB7ADEfEAsCsSEQuwFxOBDrArEmEKsBsT4QBwHxd6B9hXkZDNkZyQzpKfFg/Pb5NziuLS9hyExPZHCwtYSLNXdOBmMNoF5yMCOZGBUAAIafKEA=');
Path[10] := DTMFromString('mFQEAAHic42VgYJjKxMDQD8RLgHgbEO8C4u1AvA/KXwDEq4F4BhB3A3EzEKcyMjBEM0LoZCB2A2ILIPYC4lAgNgdiEyA2BmJLIA4Gyfk4gLGdgxmDs4sVnI8sjsyP1GVlkAS6j1TMSAZGAQCHmRfk');
//Glory
GloryChecking := DTMFromString('mbQAAAHicY2VgYDjPxMBwGojPAfElIL4IxO8YGRjeAvErRgj7NRCnCLcx3Lohz7BhnSSYPXeOGAM/UD86ZsSCwQAAcNgPnw==');
Glory2 := DTMFromString('mWAAAAHicY2FgYGBkgAAWIGaG0jA+SC5FuI1hwzpJMD13jhiDJFAMGTOiYRAAAOfeBT4=');
Glory4 := DTMFromString('mbQAAAHicY2VgYJjFxMAwHYjnAfE0IF4MxGJALA7EkkDMAcTcQJwrMpHh7m15hkULxRnOHT3K8PL+PQY5oH50zIgFgwEAWWANVw==');
Tokenss := DTMFromString('mbQAAAHicY2VgYHjLxMDwAIifAvEXKE4E4iQgjgLiCCBOA2KDPBeGvARPhsqsAIbKNGcwzQ/Uj44ZsWAwAACTbQxg');
//TrapDoor
OpenTrap := DTMFromString('mbQAAAHicY2VgYFjMwsAwF4iXIdEXGBkYTgPxKSC+BsRXgZiXhwcDswP1o2NGLBgMAKR2CDk=');
//Failsafe
Failsafe[0]:= DTMFromString('mrAAAAHic42BgYJjJxMAwDYgnAPFEJgh/DhDPBuIFQJzFyMBQzgihY4A4CsouA+IUIJ643Z6hf5sdQ9d6G4bpm2wZepdbwcVAtBzQDnyYkQCGAQDknxUi');
FailSafe[1] := DTMFromString('mbQAAAHicY2VgYJACYl0gNgdiJgYIkITS+kDsAMTSQGxrIs3g7ecCxvZOlgwq+lIM7EBxdMyIBYMBACuQBL4=');
FailSafe[2] := DTMFromString('mLgAAAHicY2JgYLjExMBwFYh3Atl7gZh5nxMDa5UWAz+QDcKMUMzAAACapATw');
end;
Procedure SettingScriptValue;
begin
Case Lowercase(TypeOfBones) of
'0' :
begin
KindofBones := ' Dragon bones' ;
XpPerTrip := 2592;
PrayerXPGainC := 2592
BonesPerRun := 9;
BoneDTM := Dbones;
end;
'1':
begin
KindofBones := ' Big bones' ;
XpPerTrip := 540 ;
PrayerXPGainC := 540;
BonesPerRun := 9;
BoneDTM := BigBones;
end;
'2':
begin
KindofBones := ' Infernal ashes' ;
XpPerTrip := 3250;
PrayerXPGainC := 3250;
BonesPerRun := 13;
BoneDTM := InfernalAsh;
end;
'3':
begin
KindofBones := ' BabyDragon Bone' ;
XpPerTrip := 1080;
PrayerXPGainC := 1080;
BonesPerRun := 9;
BoneDTM := Babydragon;
end;
end;
end;
Procedure ProgressReport;
begin
ClearDebug;
Writeln('********************************************');
Writeln('* Nemesis3X Ectofuntus *');
Writeln('********************************************');
Writeln('* You have Worshiped ' + IntToStr(BonesWorkshiped) +''+ KindOfBones);
Writeln('* You have Gained ' + IntToStr(PrayerXPGain) + ' Prayer Experience');
Writeln('* You have done ' + IntToStr(NumberTrips) + ' trips');
Writeln('* Ran for ' + TimeRunning + '');
Writeln('********************************************');
end;
Procedure AntiRandomS; //Detect Randoms and set Back the Script compass + Angle!
begin
if FindnormalRandoms then
begin
FindNormalRandoms;
MakeCompass('s');
SetAngle(SRL_ANGLE_HIGH);
end;
end;
Procedure AntistuckR; //Fail Counts!
Begin
Antistuck := Antistuck + 1;
If (Antistuck = 15) then
TerminateScript;
end;
Procedure CommitStats;
begin
if stats_Commit() then
begin
writeln('Commit success!');
MarkTime(CommitTime);
Stats_IncVariable('Prayer EXP (Gained)', PrayerXPGainC);
Stats_IncVariable('Loads Done', 1);
end;
end;
Procedure FreDTM;
begin
FreeDTM(Path[12]);
FreeDTM(Path[11]);
FreeDTM(EctoT);
FreeDTM(EctoT2);
FreeDTM(EmeraldRing);
FreeDTM(Path[9]);
FreeDTM(GloryChecking);
FreeDTM(Tokenss);
FreeDTM(OpenTrap);
FreeDTM(Path[5]);
FreeDTM(Path[6]);
FreeDTM(Path[0]);
FreeDTM(FailSafe[0]);
FreeDTM(Bucket);
FreeDTM(Pray);
FreeDTM(Path[3]);
FreeDTM(FailSafe[1]);
FreeDTM(Path[4]);
FreeDTM(Path[2]);
FreeDTM(Path[1]);
FreeDTM(Glory2);
FreeDTM(Path[8]);
FreeDTM(Path[7]);
FreeDTM(Glory3);
FreeDTM(Dbones);
FreeDTM(BigBones);
FreeDTM(InfernalAsh);
FreeDTM(WalkToTresor[0]);
FreeDTM(Bucket2);
FreeDTM(FailSafe[2]);
FreeDTM(WalkToTresor[1]);
FreeDTm(WalkToTresor[2]);
FreeDTM(Path[10]);
FreeDTM(CloseTrap2);
end;
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean; // Credit : Echo_
var
w, x, y, z: Integer;
begin
if not LoggedIn then Exit;
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
Writeln('Taking a break for about ' + IntToStr(BreakFor) + ' minutes.');
Logout;
Wait((x) + (z));
Writeln('Logging in.');
LoginPlayer;
Result := LoggedIn;
FindNormalRandoms;
IncEx(BreakRounds, (w) + (x));
IncEx(TotalBreaks, 1);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
Makecompass('s');
end;
end;
if (HowManyPlayers > 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
Writeln('Taking a break for about ' + IntToStr(BreakFor) + ' minutes.');
Logout;
IncEx(BreakRounds, (w));
IncEx(TotalBreaks, 1);
NextPlayer(True);
Exit;
while (LoggedIn) do Wait((x) + (z));
NextPlayer(True);
end;
end;
end;
procedure HoverSkills(Skill: variant; Click: Boolean); //Small modification for My scrip to Make it a little bit faster
var
TP: TPoint;
Skills: TStringArray;
TheSkill: string;
begin
if(not(GameTab(tab_Stats))) then exit;
if ((VarType(Skill) = varInteger) or (VarType(Skill) = varByte)) then
begin
if Skill >= 0 then
TP := SkillToCoords(Skill)
else
repeat
Skill := RandomRange(skill_Attack, skill_Summoning);
TP := SkillToCoords(Skill);
until(GetSkillLevel(TheSkill) > 1)
end else begin
if(Lowercase(Skill) <> 'random')then
TP := SkillToCoords(Skill)
else
repeat
Skills := ['attack','defence','strength','hitpoints','mining','smithing','woodcutting','firemaking','magic',
'fletching','hunter', 'summoning','fishing','construction','herblore','agility','thieving','crafting',
'ranged','slayer','farming', 'prayer', 'runecrafting', 'cooking', 'dungeoneering'];
TheSkill := Skills[Random(Length(Skills))];
TP := SkillToCoords(TheSkill);
until (TP.x > 0) and (GetSkillLevel(TheSkill) > 1);
end;
if(Click)then
begin
Mouse(TP.X, TP.Y, 10, 10, mouse_left);
Wait(3000+Random(3000));
CloseWindow;
end else begin
MMouse(TP.x, TP.y, 10, 10);
Wait(1000 + Random(500));
end;
Gametab(25);
end;
procedure TeleportEcto;
var
T : integer;
begin
Gametab(25);
if (FindDTM(EctoT, x, y, MIX1, MIY1, MIX2, MIY2) or FindDTM(EctoT2, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 4, 4, true);
Writeln('Teleporting to Ecto');
wait(2000 + random (1000));
Marktime(T);
repeat
wait(50 + random(100));
until (FindDTM(EctoT, x, y, MIX1, MIY1, MIX2, MIY2) or FindDTM(EctoT2, x, y, MIX1, MIY1, MIX2, MIY2) or (TimeFromMark(t) > 20000));
Wait(100 + random(2000));
AntiRandomS;
end
else
begin
Writeln('for some unkown Reason, We cannot find the fial, so script ended!');
Terminatescript;
end;
end;
procedure CheckRandomTab;
var
TabViewed: integer;
Begin
case random(6) of
0:TabViewed := 27 ;
1:TabViewed := 30 ;
2:TabViewed := 29 ;
3:TabViewed := 22 ;
4:TabViewed := 23 ;
5:TabViewed := 32 ;
end;
Gametab(TabViewed);
Wait (1000 + random(2000));
Gametab(25);
end;
Procedure CheckGlory;
begin
If FindDTMRotated(GloryChecking,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
MMouse(x, y, 5, 5);
wait(3000 + random (1000));
end;
Procedure CheckEmerald;
begin
MouseBox(690,375,705,395,2);
GetMousePos(X, Y);
Mmouse(X,Y, 5,5);
wait(3000 + random (1000));
end;
procedure CheckGloryOrEmerald ;
begin
Gametab(26);
wait(500 + random(500));
Case Lowercase(WayOfBanking) of
'0' : CheckGlory;
'1' : CheckEmerald;
end;
Gametab(25);
end;
procedure RandomMouvMouse;
var
Del, Eld : integer;
begin
Del := random(1000);
Eld := random(1000);
MMouse(del, eld, 5, 5);
end;
procedure AntiRandom;
begin
case random(500) of
1: PickUpMouse;
2: CheckRandomTab;
3:HoverSkills(skill_Prayer, False);
4:CheckGloryOrEmerald;
5:RandomMouvMouse;
6:RandomMouvMouse;
7:RandomMouvMouse;
8:RandomMouvMouse;
9:RandomMouvMouse;
10:RandomMouvMouse;
11:RandomMouvMouse;
12:RandomMouvMouse;
end;
end;
Function Stair2: Boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I, T, tries: Integer;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 859926, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 10, 20);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 0 Then
begin
inc(tries);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
wait(200 + random(200));
If WaitUpText('tair', 300) Then
begin
GetMousePos(X, Y);
mouse(x,y,0,0,true);
wait(250 + random(500));
Marktime(T);
repeat
wait(50 + random(25));
until (FindDTMRotated(Failsafe[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or (TimeFromMark(t) > 5000));
Wait(1000 + random(500));
AntirandomS;
if FindDTMRotated(Failsafe[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) then
begin
result := true;
Break;
end
else
begin
AntiStuckR;
Stair2;
end;
end;
if (Tries = 10) then
begin
AntiStuckR;
Stair2;
end;
end;
end;
procedure WalkToEctofield;
begin
if (FindDTMRotated(Path[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[11], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound)) then
begin
Mouse(x, y, 3, 3, True);
Writeln('Going to Next Stair');
FFlag(3);
wait(1500 + random (1000));
AntiRandomS;
end
else
begin
Writeln('We are Stuck');
TerminateScript;
end;
end;
Function Stair1: boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I, Tries, T: Integer;
Begin
if (StairUse = 1) then
begin
Writeln('Trying to find the Stair');
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1322016, MSX1, MSY1, MSX2, MSY2, 5);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 7, 10);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 5 Then
Begin
inc(tries);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
wait(200 + random(100));
If WaitUpText('tair', 300) Then
begin
GetMousePos(X, Y);
mouse(x,y,2,2,true);
wait(250 + random(400));
MarkTime(T);
repeat
wait(50 + random(25));
until (FindDTMRotated(Path[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[11], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[12], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or (TimeFromMark(t) > 7000));
Wait(500 + random(500));
result := true;
Break;
AntiRandomS;
End;
if (tries = 10) then
begin
AntiStuckR;
Stair1;
end;
end;
End;
end;
Procedure CheckStairCase;
var
T : integer;
begin
wait(500 + random(1000));
If WaitUpText('tair', 300) Then
begin
GetMousePos(X, Y);
mouse(x,y,2,2,true);
wait(250 + random(400));
MarkTime(T);
repeat
wait(50 + random(25));
until (FindDTMRotated(Path[6], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[11], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or FindDTMRotated(Path[12], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, xFound) or (TimeFromMark(t) > 7000));
if (TimeFromMark(t) > 7000) then
begin
Writeln('We miss Clicked the stair');
StairUse := 1;
end;
Wait(500 + random(500));
end
else
begin
StairUse := 1;
Writeln('We did not have the Right Uptext, so the stair is not on our mouse. We need to find it!');
end;
end;
Procedure AgilityObs;
var
MyTPA : TPointArray;
MyPoint : TPoint;
x, y, i, Tries, T: Integer;
begin
x := MSCx;
y := MSCy;
FindColorsSpiralTolerance(x, y, MyTPA, 2571064, MSx1, MSy1, MSx2, MSy2, 3);
if Length(MyTPA) = 0 then FindColorsSpiralTolerance(MSCx, MSCy, MyTPA, 1977643, MSX1, MSY1, MSX2, MSY2, 5);
for i := 0 to High(MyTPA) do
begin
inc(Tries);
Writeln('Trying to find Agility Obstacle');
MyPoint := MyTPA[i]
MMouse (MyPoint.x, MyPoint.y, 0, 0);
Wait(450 + random(150));
if (IsUpTextMultiCustom(['Jump', 'Weathered'])) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, true);
wait(500 + random(250));
Marktime(T); //Start the Timer
repeat
wait(50 + random(100));
if (TimeFromMark(T) > 10000) then
AgilityObs;
until not(FindDTMRotated(FailSafe[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound));
Wait(500 + random(500));
Break;
end;
if (Tries = 10) then
begin
Writeln('Lets try again!');
AntiStuckR;
AgilityObs;
end;
end;
end;
procedure EnterTrapDoor;
var
T : integer;
begin
MarkTime(T);
Repeat
Wait(100 + random(50));
until (FindDTMRotated(OpenTrap, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) or (TimeFromMark(t) > 5000));
MMouse(x, y, 3, 3);
wait(500 + random(100));
if IsUpText('own')then
begin
ClickMouse2(True);
sleep(1000+random(1000));
repeat
wait(50 + random(25));
until (IsMoving = false);
wait(500 + random (500));
AntiRandomS;
end
else
Stuck := 1;
end;
procedure OpenTrapDoor;
var
T : integer;
begin
MarkTime(T);
Repeat
Wait(100 + random(50));
if FindDTMRotated(CloseTrap2, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
MMouse(x, y, 5, 5);
until (IsUpTextMultiCustom(['Open']) or (TimeFromMark(t) > 1500));
if IsUpText('Open')then
ClickMouse2(True);
sleep(500 + random(500));
repeat
wait(50 + random(25));
until (IsMoving = false);
wait(250 + random (500));
AntiRandomS;
end;
procedure TrapDoor;
begin
openTrapdoor;
EnterTrapDoor;
end;
procedure WalkToTrap;
begin
if FindDTMRotated(Path[5], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, true);
FFlag(6);
Writeln('Walking to Trap');
wait(500 + random (500));
AntiRandomS;
end
else
begin
AntiStuckR;
TeleportEcto;
WalkToTrap;
end;
end;
Procedure GoingToPool;
begin
TrapDoor;
If (Stuck = 1) then
begin
Stuck := 0 ;
Writeln('We Are not Inside');
AntistuckR;
WalkToTrap;
TrapDoor;
end;
AgilityObs;
CheckStairCase;
Stair1;
StairUse := 0;
WalkToEctofield;
Stair2;
end;
Procedure Clickbucket;
begin
Gametab(25);
if (FindDTM(Bucket, x, y, MIX1, MIY1, MIX2, MIY2) or FindDTM(Bucket2, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 7, 7, true);
Writeln('Click on Bucket');
wait(250 + random (250));
Exit;
end
else
begin
AntiStuckR;
ClickBucket;
end;
end;
procedure CheckEcto;
begin
if FindColorTolerance(x, y, 1813784, MIX1, MIY1, MIX2, MIY2, 15) then
begin
BucketSlime := 0;
end
else
BucketSlime := 1;
end;
Function FillingBuckets: Integer;
var
TPA : TPointArray;
Begin
FindColorsTolerance(TPA, 1813784, MIX1, MIY1, MIX2, MIY2, 15);
RAaSTPAEx(TPA, 42, 36);
Result := Length(TPA);
End;
Procedure PoolOfSlime;
var
MyTPA : TPointArray;
MyPoint : TPoint;
x, y, i, counts : Integer;
begin
x := MSCx;
y := MSCy;
FindColorsSpiralTolerance(x, y, MyTPA, 9492374, MSx1, MSy1, MSx2, MSy2, 30);
if Length(MyTPA) = 0 then FindColorsSpiralTolerance(MSCx, MSCy, MyTPA, 9820058, MSX1, MSY1, MSX2, MSY2, 30);
for i := 0 to High(MyTPA) do
begin
inc(counts);
Writeln('Trying to find Pool of Slime');
MyPoint := MyTPA[i]
MMouse (MyPoint.x, MyPoint.y, 3,3);
Wait(150+random(250))
if (Counts = 15) then
begin
Writeln('We are Stuck');
TerminateScript;
end;
if (IsUpTextMultiCustom(['Pool', 'Slime'])) then
begin
GetMousePos(x, y);
Mouse(x, y, 3, 3, true);
Break;
AntiRandomS;
end;
end;
end;
Procedure WeAreFillingBucketBones;
var
T: integer;
begin
MarkTime(t);
repeat
wait(50 + random(300));
antirandom;
until ((FillingBuckets = 9) or (TimeFromMark(t) > 22000)) ;
end;
Procedure WeAreFillingBucketAshes;
var
T: integer;
begin
MarkTime(t);
repeat
wait(50 + random(300));
antirandom;
until ((FillingBuckets = 13) or (TimeFromMark(t) > 32000)) ;
end;
procedure EctoField;
begin
Clickbucket;
PoolOfSlime;
Case Lowercase(TypeOfbones) of
'0', '1', '3' : WeAreFillingBucketBones;
'2' : WeAreFillingBucketAshes;
end;
CheckEcto;
If (BucketSlime = 0) then
begin
Writeln('We are done');
end
else
begin
BucketSlime := 0;
PoolOfSlime;
end;
end;
Function CrushingBones: boolean;
var
PBox: TBox;
begin
PBox := IntToBox(245, 130, 285, 195);
Result := (AveragePixelShift(PBox, 250, 3500) > PixelShiftss);
end;
procedure CheckBonemeal;
begin
if FindColorTolerance(x, y, 932195, MIX1, MIY1, MIX2, MIY2, 7) then
Bonemeal := 0
else
Bonemeal := 1
end;
Function Bin: Boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I, Retry: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5464147, MSX1, MSY1, MSX2, MSY2, 7);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 10);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 1 Then
Begin
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 1, 1);
If WaitUpText('mpty', 300) Then
begin
Result := True;
GetMousePos(X, Y);
mouse(x,y,1,1,true);
Wait(4000 + random(1000));
AntiRandomS;
Case Lowercase(WearArmors) of
'0' : PixelShiftss := 300;
'1' : PixelShiftss := 425;
end;
while CrushingBones do
antirandom;
Break;
end;
if (Retry = 10) then
terminatescript;
end;
end;
Procedure BoneGrinder;
var
MyTPA : TPointArray;
MyPoint : TPoint;
x, y, i, t , counts: Integer;
begin
x := MSCx;
y := MSCy;
FindColorsSpiralTolerance(x, y, MyTPA, 8887431, MSx1, MSy1, MSx2, MSy2, 7);
if Length(MyTPA) = 0 then FindColorsSpiralTolerance(MSCx, MSCy, MyTPA, 9019016, MSX1, MSY1, MSX2, MSY2, 7);
for i := 0 to High(MyTPA) do
begin
MarkTime(T);
inc(counts);
Writeln('Trying to find the Ginder');
MyPoint := MyTPA[i]
MMouse (MyPoint.x, MyPoint.y, 2, 2);
Wait(350+random(350));
if (TimeFromMark(t) > 20000) then
begin
Writeln('Since we are Stuck, We are going to end this here.');
TerminateScript;
end;
if (IsUpTextMultiCustom(['Bone', 'grinder'])) then
begin
GetMousePos(x, y);
Mouse(x, y, 2, 2, true);
Wait(2000 + random(1000));
AntiRandomS;
Case Lowercase(WearArmors) of
'0' : PixelShiftss := 300;
'1' : PixelShiftss := 425;
end;
while CrushingBones do
antirandom;
Exit;
if (counts = 10) then
begin
Writeln('We are Stuck');
TerminateScript;
end;
end;
end;
end;
Procedure FixingEcto;
begin
Writeln('Procedure to Fix The Machine Have been Started');
AntiRandomS;
BoneGrinder;
CheckBonemeal;
If (Bonemeal = 1) then
begin
Writeln ('Problem have been fixed')
Bonemeal := 0;
end
else
begin
Bin;
CheckBonemeal;
If (Bonemeal = 1) then
begin
Writeln ('Problem have been fixed')
Bonemeal := 0;
end
else
terminatescript;
end;
end;
Function CrushBones: Boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I, Retry: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3688504, MSX1, MSY1, MSX2, MSY2, 7);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 5);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 10 Then
Begin
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 1, 1);
wait(200 + random(100));
If WaitUpText('opper', 300) Then
begin
GetMousePos(X, Y);
mouse(x,y,1,1,true);
Wait(4000 + random(1000));
AntiRandomS;
Case Lowercase(WearArmors) of
'0' : PixelShiftss := 300;
'1' : PixelShiftss := 425;
end;
Break;
end;
if (Retry = 10) then
terminatescript
else
Result := false
end;
while CrushingBones do
antirandom;
end;
procedure CrushingsBones;
begin
wait(500 + random(500));
AntiRandomS;
Crushbones;
CheckBonemeal;
If (Bonemeal = 1) then
begin
Writeln ('We are Done')
Bonemeal := 0;
end
else
begin
FixingEcto;
CheckBonemeal;
If (Bonemeal = 1) then
begin
Writeln ('Problem have been fixed')
Bonemeal := 0;
end
else
Crushingsbones;
end;
end;
procedure WalkToMachine;
begin
if (FindDTMRotated(Path[3], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Path[10], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
Writeln('Getting Near Machine');
wait(300 + random (250));
end
else
begin
AntiStuckR;
WalkToMachine;
end;
end;
Function Stair3: Boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1715748, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 20, 60);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 50 Then
Begin
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
If WaitUpText('tair', 300) Then
begin
Result := True;
GetMousePos(X, Y);
mouse(x,y,3,3,true);
AntirandomS;
wait (1000 + random(250));
repeat
wait(50 + random(25));
until (IsMoving = false);
wait(1000 + random(500));
Break;
end;
End;
End;
procedure WalkToStair3;
begin
wait( 500 + random(250));
if (FindDTMRotated(Path[4], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Path[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Path[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
Writeln('Going to Crush bones');
wait(500 + random (2000));
end
else
begin
AntiStuckR;
TeleportEcto;
WalkToStair3;
end;
end;
Procedure GoingToCrushBone;
begin
TeleportEcto;
Stair3;
if (Not FindDTMRotated(Failsafe[1], x, y, MsX1, MsY1, MsX2, MsY2, -Pi/4, Pi/4, Pi/60, xFound)) then
begin
WalkToStair3;
Stair3;
end;
WalkToMachine;
CrushingsBones;
end;
procedure DropTokens;
begin
If FindDTMRotated(Tokenss,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
begin
Mouse(x, y, 5, 5, false);
ChooseOption('Drop');
Writeln('Tokens Have been Droped');
Wait(1000 + random(500));
AntiRandomS;
end
else
Stuck := 1;
end;
Function Collect: Boolean;
Var
TPAA: T2DPointArray; //Declare the variables
TPA: TPointArray;
CTS, I, Retry: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA,6844269, MSX1, MSY1, MSX2, MSY2, 13);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 1, 1);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 1 Then
Begin
repeat
inc(Retry);
Wait(50 + random(50));
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 0, 0);
until ((IsUpTextMultiCustom(['ost', 'ciple'])) or (Retry = 7));
if (IsUpTextMultiCustom(['ost', 'ciple'])) then
begin
GetMousePos(X, Y);
mouse(x,y,1,1,false);
wait(100 + random(200));
if (ChooseOption('lect')) then
begin
wait(500 + random(1000));
repeat
wait(50 + random(100));
until (IsMoving = false); //Tokens are collected!
wait(500 + random(1000));
If FindDTMRotated(Tokenss,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
begin
Writeln('Tokens Have been Collected');
Result := True;
end
else
begin
AntiStuckR;
Collect;
end;
AntiRandomS;
case random(2) of
0: Tokens := 0;
1: Tokens :=(-1);
end;
Break;
End
else
result := false;
end;
end
else
Stuck := 1;
end;
procedure WalkToGhost;
begin
if FindDTMRotated(Path[9], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
Writeln('Getting Near Ghosts');
sleep(1500+random(1000));
end;
end;
Function CheckRoomInInventory: Integer;
var
TPA : TPointArray;
Begin
case lowercase(TypeOfBones) of
'0', '1', '3' :
begin
FindColorsTolerance(TPA, 9869213, MIX1, MIY1, MIX2, MIY2, 15);
RAaSTPAEx(TPA, 42, 36);
Result := Length(TPA) - 9;
End;
'2' :
begin
FindColorsTolerance(TPA, 526610, MIX1, MIY1, MIX2, MIY2, 15);
RAaSTPAEx(TPA, 42, 36);
Result := Length(TPA) - 5;
End;
end;
end;
Procedure GettingTokens;
begin
CheckRoomInInventory;
if (CheckRoomInInventory < 9) then
begin
Writeln('We are okay to Collect Tokens');
end
else
begin
Writeln('We are Going to Drop one item!');
If FindDTM(BoneDTM,X,Y,MIx1,MIy1,MIx2,MIy2)then
begin
mouse(X,Y,2,2,False);
wait(150 + random(200));
ChooseOption('rop');
wait(450 + random(300));
end
else
begin
Writeln('We are Stuck At Collection Tokens');
TerminateScript;
end;
end;
Collect;
DropTokens;
If (Stuck = 1) then
begin
Stuck := 0;
AntiStuckR;
WalkToGhost;
GettingTokens;
end;
end;
procedure MouseSpeeds;
begin
case Random(3) of
0: Wait(200 + random(200));
1: wait(200 + random(150));
2: wait(150 + random(200));
end;
end;
procedure Workship;
var
Works : integer;
begin
case lowercase(TypeOfBones) of
'0', '1', '3' :
Case Random(7) of
0: Works := 2;
1: Works := 1;
2: Works := 2;
3: Works := 3;
4: Works := 4;
5: Works := 3;
6: Works := 4;
end;
'2':
Case Random(7) of
0: Works := 0;
1: Works := (-1);
2: Works := 0;
3: Works := 0;
4: Works := (-1);
5: Works := 1;
6: Works := 1;
end;
end;
Case random(4) of
0:Pray := DTMFromString('mbQAAAHicY2VgYJBmZWAQAWJlIJYCYlkgDmaEYF8g9gHiKCBumJnJUNIdz9C2KJ+hoCOeYcHLOQz8QP3omBELBgMAf+IKiQ==');
1:Pray := DTMFromString('mbQAAAHicY2VgYJBjZWAQAmJNKJYA4jhGBoZIIPaC0vFAvOzDQoYFL+YwTLg0gWHxm3kMyz8tYuAH6kfHjFgwGAAALvUNfA==');
2:Pray := DTMFromString('mbQAAAHicY2VgYIhiZGDIBGJ/II6H0l+B4p+AmBHI/geknwFx+4IChhm3pzGs+LCIYfGr+QxV02IY2IHi6JgRCwYDAOssDzI=');
3:Pray := DTMFromString('mbQAAAHicY2VgYBBhZWBQA2JOIBYCYj0gzmRkYMgA4nQgLgHifCDunpvBMG1lAUNFRxRD7/wshumrCxn4gfrRMSMWDAYApQIK9A==');
end;
wait(500 + random(250));
if FindDTMRotated(Pray, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
repeat
Mouse(x, y, 4, 4, true);
AntiRandomS;
Writeln('Worship');
MouseSpeeds;
inc(works);
if FindNPCChatText('Woo',Nothing) then
begin
wait(1000 + random(500));
GettingTokens;
exit;
end;
until ( works = 15);
works := 0;
BonesWorkshiped := BonesWorkshiped + BonesPerRun;
PrayerXPGain := PrayerXPGain + XpPerTrip;
progressreport;
wait(50 + random(25));
Tokens := Tokens + 1;
Wait(50 + random(25));
case lowercase(TypeOfBones) of
'0', '1', '3' :
If (Tokens = 4) then
GettingTokens;
'2':
If (Tokens = 3) then
GettingTokens;
end;
end
else
begin
TeleportEcto;
Workship;
end;
end;
Procedure TeleportEdgevile;
Var
T:integer;
begin
If FindDTMRotated(Glory2,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
Mouse(x, y, 5, 5, false);
wait(100 + random(200));
if (ChooseOption('Edgeville')) then
begin
wait(1000 + random(1000));
AntiRandomS;
Marktime(T);
repeat
wait(50 + random(100));
until (FindDTMRotated(Path[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Path[8], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(t) > 10000));
wait(100 + random (2000));
end
else
begin
AntiStuckR;
TeleportEdgevile;
end;
end;
Procedure TeleportCastleWars;
Var
T: integer;
begin
MouseBox(690,375,705,395,2);
GetMousePos(X, Y);
mouse(x,y,5,5,false);
wait(250 + random(500));
if (ChooseOption('astl')) then
begin
wait(1000 + random(1000));
AntiRandomS;
Marktime(T);
repeat
wait(50 + random(100));
until (FindDTMRotated(WalkToTresor[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(WalkToTresor[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(WalkToTresor[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or (TimeFromMark(t) > 10000));
wait(100 + random (2000));
end
else
begin
AntiStuckR;
TeleportCastleWars;
end;
end;
procedure TeleportBank;
begin
ClearDebug;
Writeln('Teleporting to Bank');
Gametab(26); //Changing to Inventory Tab!
wait(500 + random(500));
Case Lowercase(WayOfBanking) of
'0' : TeleportEdgevile;
'1' : TeleportCastleWars;
end;
end;
Procedure WalkEdgevile;
begin
if (FindDTMRotated(Path[7], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Path[8], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
wait(1250 + random(1000));
end
else
begin
AntiStuckR;
WalkEdgevile;
end;
end;
Procedure WalkCastleWars;
begin
if (FindDTMRotated(WalkToTresor[0], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(WalkToTresor[1], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(WalkToTresor[2], x, y, MMX1, MMY1, MMX2, MMY2, -Pi/4, Pi/4, Pi/60, aFound)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(6);
wait(1500 + random(1000));
end
else
begin
AntistuckR;
WalkCastleWars;
end;
end;
procedure WalkToBank;
begin
Case Lowercase(WayOfBanking) of
'0' : WalkEdgevile;
'1' : WalkCastleWars;
end;
end;
Function FindEdgeBank: Boolean;
Var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I, T: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3622217, MSX1, MSY1, MSX2, MSY2, 9);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 8, 5);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 1 Then
Begin
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
Wait(200 + random(200));
if (IsUpTextMultiCustom(['ounte' , 'Counter'])) then
begin
Result := True;
GetMousePos(X, Y);
Wait(200 + random(200));
mouse(x,y,1,1,true);
MarkTime(T);
wait(500 + random(1000));
repeat
wait(50 + random(100))
until (BankScreen or PinScreen or (TimeFromMark(T) > 7000));
wait(1000 + random(500));
Break;
end;
End;
End;
Function FindCastleBank: Boolean;
Var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I, T: Integer;
Begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 11119025, MSX1, MSY1, MSX2, MSY2, 15);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 2, 8);
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 1 Then
Begin
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
If WaitUpText('ank', 300) Then
begin
Result := True;
GetMousePos(X, Y);
Wait(200 + random(200));
mouse(x,y,1,1,true);
wait(500 + random(1000));
MarkTime(T);
repeat
wait(50 + random(100))
until (BankScreen or PinScreen or (TimeFromMark(T) > 7000));
wait(1000 + random(500));
Break;
end;
End;
end;
procedure OpenBanks;
var
OpeningBank: integer;
begin
Repeat
inc(OpeningBank);
Case Lowercase(WayOfBanking) of
'0' : FindEdgeBank;
'1' : FindCastleBank;
end;
until (BankScreen or PinScreen or (OpeningBank = 15));
If (OpeningBank = 15) then
TerminateScript;
if PinScreen then
InPin(Players[CurrentPlayer].Pin);
If BankScreen then
Writeln('Bank Open');
end;
Procedure ChangeGlory;
begin
If (Charge = 4) then
begin
Writeln('Ohhh, We need to change Glory');
Withdraw(1,0,1);
wait(1000 + random(750));
If (FindDTMRotated(Glory2,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Glory3,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound) or FindDTMRotated(Glory4,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound))then
begin
Mouse(x, y, 5, 5, false);
wait(100 + random(200));
ChooseOption('Wear');
wait(1250 + random (500));
Mouse(x, y, 5, 5, True);
Wait(400 + random(500));
Charge := 0;
If FindDTMRotated(WayToTeleport,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
Mouse(x, y, 5, 5, true);
wait(350 + random(500));
end
else
begin
Writeln('no more glory');
terminatescript;
end;
end;
end;
Procedure ChangeEmeraldRing;
begin
If (Charge = 8) then
begin
Writeln('Ohhh, We need to change Emerald Ring');
Withdraw(1,0,1);
wait(1000 + random(1000));
If FindDTMRotated(WayToTeleport,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
begin
Mouse(x, y, 5, 5, false);
wait(100 + random(200));
ChooseOption('Wear');
wait(1200 + random (500));
Charge := 0;
If FindDTMRotated(WayToTeleport,x,y,MIx1,MIy1,MIx2,MIy2,-Pi/4, Pi/4, Pi/60, aFound)then
Mouse(x, y, 5, 5, true);
wait(350 + random(500));
end
else
begin
Writeln('no more Emerald Ring');
terminatescript;
end;
end;
end;
procedure WithdrawBones;
begin
Charge := Charge + 1
Case Lowercase(WayOfBanking) of
'0' : ChangeGlory;
'1' : ChangeEmeraldRing;
end;
If FindDTM(BoneDTM,X,Y,MBx1,MBy1,MBx2,MBy2)then
Case lowercase (TypeOfBones) of
'0', '1', '3' :
begin
Mouse(x, y, 5, 5, false);
wait(100 + random(200));
Case Random(3) of
0: ChooseOption('All');
1: ChooseOption('10');
2: ChooseOption('9');
end;
wait(1000 + random (500));
If FindDTM(BoneDTM,X,Y,MIx1,MIy1,MIx2,MIy2)then
begin
Writeln('We are good');
end
else
begin
Charge := Charge - 1;
AntiStuckR;
WithdrawBones;
end;
end;
'2' :
begin
Mouse(x, y, 5, 5, false);
wait(100 + random(200));
ChooseOption('13');
wait(1000 + random (500));
If (Not FindDTM(BoneDTM,X,Y,MIx1,MIy1,MIx2,MIy2))then
begin
Charge := Charge - 1;
AntiStuckR;
WithdrawBones;
end;
end;
end;
CloseBank;
Gametab(25);
NumberTrips := NumberTrips + 1
AntiStuck := 0;
end;
Procedure Banking;
begin
TeleportBank;
WalkToBank;
OpenBanks;
WithdrawBones;
If FindDTM(BoneDTM,X,Y,MIx1,MIy1,MIx2,MIy2)then
begin
Writeln('We are good');
If BankScreen then
Closebank;
TeleportEcto;
ProgressReport;
CommitStats;
end
else
begin
Charge := Charge - 1;
AntiStuckR;
OpenBanks;
WithdrawBones;
end;
end;
procedure SetupScript;
begin
Smart_Server := 25;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL();
SetupSRLStats(908, SRLStats_Username, SRLStats_Password);
DeclarePlayers;
LoginPlayer;
MakeCompass('s');
SetAngle(SRL_ANGLE_HIGH);
LoadVariables;
SettingScriptValue;
end;
begin
SetupScript;
repeat
Case Lowercase (TypeOfBones) of
'0','1','3' :
begin
GoingToPool;
EctoField;
GoingToCrushBone;
TeleportEcto;
Workship;
Banking;
end;
'2' :
begin
GoingToPool;
EctoField;
TeleportEcto;
Workship;
Banking;
end;
end;
BreakHandler(TimePlaying, TimeBreaking, RangeTimePLaying, RangeTimeBreaking );
until
AllPlayersInactive;
FreDTM;
end. .
