Aegis
2011-12-12 22:20:03
Well, after working on this script a while, I figured I'd release it. It's not perfect, but, with school finals coming, my free-time is going to be nearly non-existant in the next week or so. Don't get me wrong, the script only really stops because of those pesky randoms you'll ever-so-often receive. Feel free to make/post edits where you see fit. I won't have much time for this, but if you're having problems, feel free to let me know. I'll do my best to correct any issues you may be having. It's not the best, but it does its' job pretty well!
http://img97.imageshack.us/img97/5241/screenshot8ty.png
It has some pesky requirements, so bear with me:
Basic Requirements:
- Start the script in Edge Bank
- You own POH w/ Gilded Altar (75 construction)
- Mounted Glory
- (Enabling Ancients is HIGHLY SUGGESTED!!!)
Bank and House Setup:
I've not tested it with any other house setups, so I highly suggest trying to recreate mine as best you can. I also suggest you refrain from having many decorative items in your house, as they may have ill-effect the script. (The same goes for your character's clothing/equipment!)
Clean Marrentil and Bones:
It doesn't matter which tab, just make sure these are in this location of whatever tab you have visible when the bank opens.

Inventory:
Put your tinderbox in your tool belt. Keep all of your house tabs in this inventory slot:

Altar:
You absolutely MUST have your altar NORTH of you when entering your house. Also, you should be using using Fancy Stone for your house. And having a room(door) placed south of the portal may cause the script to mess up. Try to match this is closely as possible!

Mounted Glory:
Your mounted glory should in the room adjacent (left or right) to your Altar.

(Temporary Fix by Home)
program Gilded_Altar;
{$DEFINE SMART}
{$DEFINE CRASHSMART}
{$i SRL\SRL.scar}
{$i SPS\SPS.simba}
const
S_World = 65;
S_Signed = True;
S_Member = True;
Version = '1.00';
UseFailSafe = False; //READ THIS@@@@@@@@@
//For fail-safes to be effectively used, the user must be on the Ancients Spellbook.
//If you are on Ancients, leave this True. Otherwise, change it to False.
// (it's HIGHLY suggested you are on Ancients!)
var
N, HouseTab, EdgeHome, Marrentil, DragonBones: Integer;
procedure DeclarePlayer;
begin
with Players[0] do
begin
Name := ''; //USERNAME
Pass := ''; //PASSWORD
Pin := ''; //PIN (if any)
Active := True;
Strings[0] := 'eb';
BoxRewards := ['Xp'];
LampSkill := 'prayer'; // or change to whatever skill exp you want
end;
end;
Function FindNPCChatText_F(Option: String; Action: fnct_ActionOptions): Boolean;
var
X,Y: Integer;
begin
Result := False;
if Option = '' then
begin
srl_Warn('FindNPCChatText', 'txt is empty', warn_AllVersions);
Exit;
end;
if FindText(X, Y, Option, UpChars, MCX1, MCY1, MCX2, MCY2) then
begin
Result := True;
case Action of
Move: MMouse(X, Y + 2, Random(Length(Option) * 5), 4);
ClickLeft: Mouse(X, Y + 2, Random(Length(Option) * 5), 4, True);
ClickRight: Mouse(X, Y + 2, Random(Length(Option) * 5), 4, False);
end;
end;
end;
procedure RightClickBurner;
var
MyTPA : TPointArray;
MyPoint : TPoint;
x, y, i : Integer;
begin
x := MSCx;
y := MSCy;
FindColorsSpiralTolerance(x, y, MyTPA, 2409460, MSx1, MSy1, MSx2, MSy2, 10);
if Length(MyTPA) = 0 then
FindColorsSpiralTolerance(x, y, MyTPA, 2078161, MSX1, MSY1, MSX2, MSY2, 10);
for i := 0 to High(MyTPA) do
begin
MyPoint := MyTPA[i]
MMouse (MyPoint.x, MyPoint.y, 5, 12);
if WaitUpTextMulti(['Inc','se bu','ner'], 1000) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
end;
Exit;
end;
end;
procedure AntiRandoms;
begin
FindNormalRandoms;
LevelUp;
end;
procedure ProgressReport;
begin
ClearDebug;
WriteLn('Running for: ' + TimeRunning);
end;
procedure FailSafe;
var
X, Y: Integer;
begin
if UseFailSafe=False then
begin
Logout;
TerminateScript;
end;
AntiRandoms;
N:=0;
EdgeHome := DTMFromString('mbQAAAHicY2VgYOBggABeIBYAYmYgZgdibiDmA2IWqPy+I58Y2ubcQMFuDJiAEQsGAwBv+wr5');
Writeln('Error, using failsafe!');
begin
repeat
if GameTab(tab_Magic) then
if FindDTM(EdgeHome, X, Y, MIX1, MIY1, MIX2, MIY2) then
Mouse(x, y, 5, 5, false);
until ChooseOption('Cast');
end;
Wait(14500 + Random(1000));
begin
SPS_Setup(RUNESCAPE_SURFACE, ['10_6']);
SPS_Continue := true;
SPS_WalkPath([Point(4214, 2686)]);
FFlag(0);
AntiRandoms;
FreeDTM(EdgeHome);
//FreeDTM(Marrentil);
//FreeDTM(DragonBones);
Wait(2200 + Random(400));
end;
end;
procedure AntiBan;
begin
If(not LoggedIn)then Exit;
MouseSpeed := 12 + Random(5);
Case Random(20) of
0: MMouse(Random(MIX2), Random(MIY2), 10, 10);
1: HoverSkill(SKILL_prayer, False);
2: PickUpMouse;
3: GameTab(RandomRange(tab_Combat, tab_Notes));
4: SleepAndMoveMouse(400+Random(Random(4000)));
5: IdleTime(100+random(700), 100+Random(100), 0.2+RandomE/2);
6, 8, 9: MakeCompass(IntToStr(Random(360)));
10:
begin
SetAngle(False);
SetAngle(True);
end;
11, 12, 13, 15, 16: Wait(100 + Random(600));
17, 18, 19, 20: Exit;
end;
end;
{*******************************************************************************
function OpenBankNPC/UseBankNPC(Modified): Boolean;
By: Home
Description: Modifed to correctly bank at Edge NPC.
*******************************************************************************}
function UseBankNPC: Boolean;
var
bx, by, Speed, ColFace, ColGrey, ColBlue, ColHair, t: Integer;
begin
Result := (LoggedIn) and (BankScreen or PinScreen);
if (Result) then exit;
Speed := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
ColFace := 4468276;
ColGrey := 4995649;
ColBlue := 4468276;
ColHair := 5125177;
if (FindObjThroughMM(bx, by, 'npc', [ColFace, ColBlue, ColGrey, ColHair], [5, 5, 5, 5],
['ounter', 'se Co', 'anke', 'to B', 'Banker', 'nker'], 2, 2)) then
begin
Mouse(bx, by, 0, 0, False);
if (WaitOptionMulti(['kly Co', 'se-qu', 'ank B', 'Bank Banker', 'ank', 'nker'], 750)) then
begin
t := (GetSystemTime + 5000);
repeat
if (BankScreen) or (PinScreen) then
begin
Result := true;
Break;
end;
Wait(50);
until(GetSystemTime > t);
if (Length(Players) > 0) then
if ((PinScreen) and (Players[CurrentPlayer].Pin <> '')) then
InPin(Players[CurrentPlayer].Pin);
Result := (BankScreen) or (PinScreen);
end;
end;
ColorToleranceSpeed(Speed);
end;
{******************************************************************************}
procedure TeleToBank;
var
x, y: Integer;
begin
if (N > 3) then
begin
Failsafe;
Exit;
end;
N:=0;
ClickNorth(True);
AntiRandoms;
begin
repeat
Inc(N);
//if FindObjTPA(x, y, 6982558, 10, 2, 25, 20, w, ['mulet']) then
if FindObjCustom(X, Y, ['mulet','et Gl','lory'], [7114144,6982558], 3) then
GetMousePos(X, Y);
Mouse(x, y, 0, 0, false);
AntiRandoms;
until ChooseOption('Rub') or (N > 5);
end;
if (N > 5) then
begin
FailSafe;
Exit;
end;
Antiban;
FFlag(0);
N:=0;
repeat
Inc(N);
Wait(500);
until FindNpcChatText_F('dgev', ClickLeft) or (N > 10);
//Wait(4912 + Random(957));
begin
SPS_Setup(RUNESCAPE_SURFACE, ['10_6']);
SPS_Continue := true;
SPS_WalkPath([Point(4214, 2686)]);
Antiban;
FFlag(0);
Wait(2500 + Random(200));
AntiRandoms;
N:=0;
end;
end;
procedure StartAltar;
var
x, y, T: Integer;
//TPA:TPointArray;
//ATPA: T2DPointArray;
begin
if (N > 3) then
Exit;
N:=0;
ClickNorth(False);
Wait(5500 + Random(200));
begin
repeat
Inc(N);
if FindObjCustom(X, Y, ['oor','Doo'], [4740445,3883076,5400700], 3) then
GetMousePos(X, Y);
Mouse(x, y, 10, 10, false);
AntiRandoms;
until ChooseOption('Open') or (N > 3);
end;
if (N > 3) then
Exit;
SetAngle(True);
FFlag(2);
Wait(900 + Random(100));
Mouse(185, 37, 130, 50, true);
FFlag(2);
Wait(1000 + Random(300));
N:=0;
begin
repeat
Inc(N);
//RightClickBurner;
if FindObjCustom(X, Y, ['Inc','se bu','ner'], [2476026], 6) then
GetMousePos(X, Y);
Mouse(x, y, 3, 5, false);
AntiRandoms;
until WaitOption('Light', 2000) or (N > 3);
end;
if (N > 3) then
Exit;
FFlag(2);
Wait(2000 + Random(300));
N:=0;
begin
repeat
Inc(N);
//RightClickBurner;
if FindObjCustom(X, Y, ['Inc','se bu','ner'], [2476026], 6) then
GetMousePos(X, Y);
Mouse(x, y, 3, 5, false);
AntiRandoms;
until WaitOption('Light', 2000) or (N > 3);
end;
if (N > 3) then
Exit;
InvMouse(5, 2);
ChooseOption('Use');
ProgressReport;
FFlag(0);
Wait(600 + Random(250));
if FindObjCustom(X, Y, ['Alt', 'tar'], [11840684], 3) then
Mouse(x, y, 0, 0, true);
MouseBox(227, 405, 284, 435, 3);
T := GetSystemTime + 44000;
while (GetSystemTime < T) and not(FindColor(x, y, 2070783, 251, 434, 286, 446)) do
Wait(100 + Random(100));
if not(FindColor(x, y, 2070783, 251, 434, 286, 446)) then
Exit;
GetMousePos(x, y);
if not(PointInBox(Point(x, y), IntToBox(227, 405, 284, 435))) then
MouseBox(227, 405, 284, 435, 1)
else
ClickMouse2(True);
while (GetSystemTime < T) do
begin
if LevelUp then
Wait(800 + Random(100));
AntiBan;
AntiRandoms;
end;
end;
procedure BankandTele;
begin
N:=0;
//Marrentil := DTMFromString('mggAAAHicY2NgYJjOyMCwGIjnAfEEIG4H4olAnA2USwXiQiAuAOIsIM4AYp5gPiDJhIFFGLADRhwYAgCsawah');
//DragonBones := DTMFromString('mggAAAHicY2NgYOBlgAAQLQPEbEAsBcRMQMwB5XMBMSNU3fIFC6CyqJifATtgxIEhAADMUAJ+');
AntiRandoms;
begin
repeat
Inc(N);
UseBankNPC;
until BankScreen or (N > 3);
end;
if (N > 3) then
Exit;
begin
//if WithdrawItem(Marrentil, 'dtm', 1, 'lean', []) then
//if WithdrawItem(Marrentil, 'dtm', 1, 'lean', []) then
//WithdrawItem(DragonBones, 'dtm', 25, 'ragon', []) then
if Withdraw(8, 0, 1) then
if Withdraw(8, 0, 1) then
if Withdraw(9, 0, 25) then
if BankScreen then
CloseBank;
Wait(1000 + Random(350))
AntiRandoms;
KeyDown(VK_F1);
Wait(300 + Random(100))
KeyUp(VK_F1);
InvMouse(1, 1);
//FreeDTM(Marrentil);
//FreeDTM(DragonBones);
end;
end;
procedure Main;
begin
repeat
ProgressReport;
BankandTele;
StartAltar;
TeleToBank;
until not(LoggedIn);
end;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;
Players[0].Active:= True;
Smart_Server := S_World;
Smart_Signed := S_Signed;
Smart_Members := S_Member;
Smart_SuperDetail := False;
SetupSRL;
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
DeclarePlayer;
if not(LoggedIn) then
begin
LogInPlayer;
Wait(3000 + Random(2000));
AntiRandoms;
end;
SetRun(True);
Main;
end.