Simba Code:
program UOrbCrafter
{$DEFINE SMART}
{$I AEROLIB/AEROLIB.SIMBA}
var
GbP, MtG, UpO, x, y, Failed: Integer;
loop, run: boolean;
const
Username = '';
Password = '';
item = 'fishbowl'; // - Choose lamp,vial, fishbowl, orb, lens
{Have glassblowing pipe in first inv slot and molten glass
visible in bank, banks on a chest.
}
Procedure DeclarePlayer
begin
Me.Name := Username;
Me.Pass := Password;
Me.Member := True;
Me.Active := True;
end;
Procedure DTMSet
begin
GbP := DTMFromString('mPwEAAHicnc3BBoBAEMbx2eteerm99Q4lUVq7pVWHiJQeuD+7p0js8BufjzGFiHRKpEGNKuVWxd7CYcSMkLJHj437HQcu3DhTtyJggofFAIcFpTFslUXL9+gfeR+j1zzz6RB9');
MtG := DTMFromString('mkwEAAHicrc5NCoNQDEbRvKlTdyMiBVEUrEjR9VhaxR9E6ypcgHtxPV4xww7fByckEEJcEUmMyBMpYoQI4CkfD0S6kyHHCxVKVaDj3qoWTBjRo8UHb9Taf3W+NBgw44dj36jGCkfsxc5Htz85AUchEe4=');
UpO := DTMFromString('mFQEAAHic42VgYMhiYmBIB+J8IC4E4hIgLobyc6FyKVCcDcR5QPwcqO81EL8A4idA/BiIHwDxPSB+COU/hcq/hao9d/w4kGQkCXMxkA5IswGCUQAAEVgTyw==');
addOnTerminate('FreeIt');
end;
Procedure FreeIt;
begin
freeDTM(GbP);
freeDTM(MtG);
freeDTM(UpO);
end;
Procedure Craft;
begin
if isBankOpen() then
exit;
if not GameTab(TAB_INV) then
begin
fTab(Tab_inv);
end;
if (waitXPBarChange(2000)) then
exit();
if waitFindDTM(GbP, x, y, inttobox(MIX1, MIY1, MIX2, MIY2),50,400) then
begin
HumanMMouse(Point(x, y), 6, 6);
if waitUpTextMulti(['Use', ' Glassblowing pipe', 'Use Glassblowing pipe'], 500) then
FastClick(Mouse_LEFT);
if FindDTM(MtG, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
HumanMMouse(Point(x, y), 6, 6);
if waitUpTextMulti(['Use', 'Glassblowing pipe', ' Molten', 'glass'], 500) then
FastClick(Mouse_LEFT);
sleep(750+random(500));
end;
end else
exit;
end;
Procedure mouseBoxHover(x1, y1, x2, y2: Integer; Dist: Integer);
var
PT : TPoint;
begin
getMousePos(pt.x,pt.y);
PT := randomPointBoxEx(pt,inttobox(x1,y1,x2,y2),Dist);
brakeMMouse(PT, 0, 0, True);
wait(randomRange(50,150));
end;
procedure customMouse(point: TPoint);
begin
case random(0, 6) of
0..2: BrakeMMouse(point, random(5), random(5), true);
3: BrakeMMouse(point, random(5), random(5), false);
4..5: MissMouse(point, random(5), random(5));
6: HumanMMouse(point, random(5), random(5));
end;
end;
procedure openBank
var
TPA: TPointArray;
ATPA: T2DPointArray;
color: TColEx;
I: Integer;
location: TPoint;
begin
//Bank has already been opened
if(isBankOpen()) then
begin
exit;
end;
color.create(3425887, 21, 0.04,0.09);
if (not color.findAllIn(AREA_MS, TPA)) then
begin
loop := false;
exit;
end;
ATPA := FloodFillTPA(TPA);
if (length(ATPA) <= 0) then
begin
loop := false;
exit;
end;
SortATPAFromFirstPoint(ATPA, Point(275, 155));
for I:= 0 to high(ATPA) do
begin
if(length(ATPA[I]) < 36) then
continue;
location := MiddleTPA(ATPA[I]);
customMouse(location);
if (waitUpTextMulti(['ank', 'ast'], 300)) then
begin
fastClick(MOUSE_LEFT);
break;
end;
end;
sleep(random(900,1200));
end;
Procedure banking;
var
g: Timer;
begin
if isBankOpen() then
if getCurrentBankTab() <> 0 then
SwitchBankTab(0);
begin
if (getinvcount > 1) then
if not interactSlot(2+random(6), 'Deposit-All') then
exit;
sleep(500+random(500));
if FindDTM(MtG, x, y, msx1, msy1, msx2, msy2) then
begin
HumanMMouse(Point(x, y), 5, 5);
if WaitUpTextMulti(['Withdraw', 'Molten ', 'glass'], 400) then
FastClick(Mouse_Right);
waitOption('Withdraw-All ', 250);
end else
begin
WriteLn('Ran out of supplies, logging off.');
CloseInterface();
LogoutPlayer();
TerminateScript;
end;
end;
CloseInterface();
end;
Procedure Antiban;
begin
case Random(310) of
0..150:
if pointInBox(getMousePnt(), intToBox(1, 1, 766, 505)) then
begin
MMouseOffClient('random');
end else
exit;
201..210:
if pointInBox(getMousePnt(), intToBox(1, 1, 766, 505)) then
begin
HoverSkill(SKILL_CRAFTING, false);
FTab(TAB_INV);
MMouseOffClient('Random');
end else
exit;
211..300:
if pointInBox(getMousePnt(), intToBox(1, 1, 766, 505)) then
begin
Wait(RandomRange(2000, 4000));
PickUpMouse;
HumanRandomMouse();
end else
exit;
301..310:
if pointInBox(getMousePnt(), intToBox(1, 1, 766, 505)) then
begin
CheckMovingObjs(True);
end else
exit;
end;
end;
Procedure doInterface;
var
TimeOut:Integer;
begin
case item of
'vial': gaussMouseBox(371, 77, 401, 132, Mouse_Move);
'fishbowl': gaussMouseBox(99, 197, 136, 251, Mouse_Move);
'orb': gaussMouseBox(198, 191, 223, 252, Mouse_Move);
'lamp': gaussMouseBox(275,79, 316,136 , Mouse_Move);
'lens': gaussMouseBox(275, 191, 316, 259, Mouse_Move);
End;
Wait(RandomRange(100, 250));
if WaitUpText('ake', 400) then
begin
FastClick(Mouse_RIGHT);
WaitOption('Make X', 200);
Wait(RandomRange(1000, 1500));
case random(49) of
0..10: TypeSend('123');
11..19: TypeSend('66');
20..29: TypeSend('33');
30..39: TypeSend('99');
40..49: TypeSend('44');
50..59: TypeSend(inttostr(randomrange(27,999)));
end;
end else
begin
inc(Failed);
if (Failed > 5) then
Failed := 0;
exit;
end;
TimeOut := GetTickCount64() + Random(78000, 100000);
while (FindDTM(MtG, x, y, mix1, miy1, mix2, miy2)) and(TimeOut >= GetTickCount64()) do
begin
if ContinueChat(False) then
begin
exit;
end else;
antiban;
end;
wait(randomrange(250, 500));
exit;
end;
Procedure MainLoop;
var
findPipe:array of Tpoint;
begin
if isLoggedIn then
setAngle(ANGLE_HIGH);
repeat
if (anySlotActivated() or isUpTextMulti(['Use','olten','lassblowing'])) then
begin
mouseBox(AREA_MS, MOUSE_RIGHT);
waitOption('Cancel', 200);
end;
MouseSpeed := RandomRange(15, 22);
FindDTMs(gbp, findPipe, mix1, miy1, mix2, miy2);
if not(length(findPipe) > 0) or not (FindDTM(mtg, x,y, 680, 425, mix2, miy2)or not (FindDTM(gbp, x,y, mix1, miy1, mix2, miy2))) then
openBank;
if isBankOpen() then
Banking;
if isInvFull and (FindDTM(mtg, x,y, mix1, miy1, mix2, miy2)) then
Craft;
doInterface;
until not isLoggedIn;
end;
begin
InitAL();
DTMSet;
DeclarePlayer;
LoginPlayer(false);
while isLoggedIn() do
Mainloop;
end;