Simba Code:
program JOEbotsUrns;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i ObjectDTM\ObjDTMInclude.simba} // Primary Walking Function
{$i sps/sps.simba} // Backup Walking System - Except in Rockwalk
{
*******************************************************************************
* REQUIREMENTS *
* 1. 40 Crafting Level or higher *
* 2. Brown Apron equipped (Or the script can't do anything) *
* 3. A pickaxe in the INVENTORY *
* 4. Clan vexillum wielded *
* 5. Ring of Kinship equipped *
* 6. ODTM Include downloaded *
*******************************************************************************
}
// This is my first dry run in the Crafting Guild, after this I'll be reviving cause's Crafting Guild script
// This script is 100% JOEbot- feel free to use anything as long as you give credit
// This script makes Clay Urns in the Rimmington Crafting Guild and Banks them in Daemonheim
// Please post anything related to the script on the original thread
const
Which = 'Mining';
Kind = 'Cracked'; // Right now only Normal Urn Support
{================================ ! FILL THIS OUT ! ==========================================}
{=============================================================================================}
{_____________________________________________________________________________________________}
{=============================================================================================}
{=============================================================================================}
procedure DeclarePlayers; // Login information. You want to play, dont you? Fancy Shmancy
begin
HowManyPlayers := 2; // You can add more if you want, Just copy and paste a Player Section and write a different number in the [0], [1], [2] Box
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0; // Starts at Players[0]
with Players[0] do
begin
Name := ''; // Enter your username in the blue things
Pass := ''; // Enter your password in the blue things
Nick := '';
Pin := '';
Active := True;
BoxRewards := ['Xp', 'ostume', 'aphire'];
end;
with Players[1] do // Multiplayer!
begin
Name := ''; // Enter your username in the blue things
Pass := ''; // Enter your password in the blue things
Nick := '';
Pin := '';
Active := True;
BoxRewards := ['Xp', 'ostume'];
end;
end;
{=============================================================================================}
{=============================================================================================}
{_____________________________________________________________________________________________}
{=============================================================================================}
{=============================================================================================}
procedure NewAntiBanJoe; // This is a new, completely original, custom antiban by me- JOEbot
begin
if(not LoggedIn) then Exit;
case Random(500) of // For increased randomness
'10' :
begin
TypeSend('Mining lvls?');
end;
'25' :
begin
TypeSend('Craft lvls?');
end;
'31' :
begin
TypeSend('Crafting levels?');
end;
'32' :
begin
TypeSend('Mining levels?');
end;
'47' :
begin
TypeSend('What are you crafting? Im making urns');
end;
'54' :
begin
TypeSend('lolol');
end;
'400' :
begin
TypeSend('My Crafting Level is 99.');
end;
end;
end;
procedure iNotBanned;
begin
if(not LoggedIn) then Exit;
case Random(250) of
10:
begin
SetAngle(SRL_ANGLE_HIGH);
Hoverskill('Mining', False);
wait(1551+Random(2111));
end;
20:
begin
SetAngle(SRL_ANGLE_HIGH);
Hoverskill ('Crafting', False);
wait(1661+Random(2221));
end;
30:
begin
Hoverskill ('Magic', False);
wait(1771+Random(2331));
end;
40: RandomRClick;
50: PickUpMouse;
end;
end;
procedure AntiRandoms;
begin
FindNormalRandoms;
LampSkill := 'Crafting';
LevelUp;
end;
// Thanks to PatDuffy (D.U.R.P Urns) and Kyle Undefined for the function!
function FindSelection(text: String): Boolean;
var
x, y : Integer;
begin
if FindTextTpaEx(2070783, 0, MCX1, MCY1, MCX2, MCY2, x, y, text, statchars, Nothing) then
begin
Mouse(x, y, 5, 5, mouse_Left);
Wait(RandomRange(150, 350));
Result := True;
end;
end;
// Idea derived from PatDuffy's D.U.R.P Urns
procedure CraftSetup;
begin
case Which of
'Mining' :
begin
FindSelection('inin');
end;
'Smithing' :
begin
FindSelection('melt');
end;
'Fishing' :
begin
FindSelection('ishi');
end;
'Woodcutting' :
begin
FindSelection('Woo');
end;
'Prayer' :
begin
FindSelection('raye');
end;
end;
end;
procedure UrnTypeSetup;
begin
case Kind of
'Cracked' :
begin
FindSelection('rack');
end;
'Fragile' :
begin
FindSelection('ragi');
end;
{'Normal' :
begin
NormalUrn; // Needs a DTM or seperate Procedure
end;}
end;
end;
procedure SinkWalk; // Walks from the "Mine" to the Sink
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
if ObjDTM_Find ('63:93:4:0:7:52:84:5:7:81:101:5:7:85:66:1:7:105:81:5:35:74:97:43:127:84:87:120:35:111', cx, cy, True) then
begin
WriteLn('Walking to the Sink [ODTM]');
ObjDTM_Walk('63:93:4:0:7:52:84:5:7:81:101:5:7:85:66:1:7:105:81:5:35:74:97:43:127:84:87:120:35:111', 2, 102, 8, True);
end else
begin
WriteLn('Walking to the Sink [SPS]');
SPS_Setup(RUNESCAPE_SURFACE, ['8_8']);
myPath := [Point(3594, 3529), Point(3584, 3530), Point(3574, 3534)];
end;
end;
procedure WheelWalk; // Walks from the Sink to the Wheel
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
if ObjDTM_Find ('72:63:4:0:7:52:84:1:7:105:81:5:7:81:101:5:7:85:66:6:33:71:80:43:117:64:117:101:87:129:43:129', cx, cy, True) then
begin
WriteLn('Walking to the Sink [ODTM]');
ObjDTM_Walk('72:63:4:0:7:52:84:1:7:105:81:5:7:81:101:5:7:85:66:6:33:71:80:43:117:64:117:101:87:129:43:129', 2, 102, 8, True);
end else
begin
WriteLn('Walking to the Sink [SPS]');
SPS_Setup(RUNESCAPE_SURFACE, ['8_8']);
myPath := [Point(3571, 3536), Point(3574, 3528), Point(3577, 3519), Point(3583, 3502)];
end;
end;
procedure FurnaceWalk; // Walks from the Wheel to the Furnace
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
if ObjDTM_Find ('46:62:4:0:7:52:84:1:7:51:37:1:7:73:32:1:7:85:35:5:32:33:86:19:104:53:59:106:26:70', cx, cy, True) then
begin
WriteLn('Walking to the Furnace [ODTM]');
ObjDTM_Walk('46:62:4:0:7:52:84:1:7:51:37:1:7:73:32:1:7:85:35:5:32:33:86:19:104:53:59:106:26:70', 2, 102, 8, True);
end else
begin
WriteLn('Walking to the Furnace [SPS]');
SPS_Setup(RUNESCAPE_SURFACE, ['8_8']);
myPath := [Point(3583, 3502), Point(3580, 3513), Point(3573, 3518), Point(3560, 3513), Point(3554, 3500)];
end;
end;
procedure BankerWalk; // From the default Daemonheim Teleport to the Fremenik Banker
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
if ObjDTM_Find ('104:35:3:10:7:57:66:10:7:73:66:5:7:47:70:4:91:28:26:73:103:79:116:28', cx, cy, True) then
begin
WriteLn('Walking to the Fremenik Banker [ODTM]');
ObjDTM_WalkPath(['104:35:3:10:7:57:66:10:7:73:66:5:7:47:70:4:91:28:26:73:103:79:116:28','79:34:4:6:7:56:38:6:7:105:39:10:7:73:24:10:7:90:24:4:46:15:111:11:128:57:28:65'], 2, 102, 8, True, True);
end else
begin
WriteLn('Walking to the Fremenik Banker [SPS]');
SPS_Setup(RUNESCAPE_SURFACE, ['14_4']);
myPath := [Point(5638, 1796), Point(5636, 1783), Point(5633, 1773), Point(5631, 1764)];
end;
end;
procedure GuildWalk; // From the default Vexillum Teleport to the Crafting Guild
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
begin
if ObjDTM_Find ('25:35:5:10:7:87:54:10:7:62:41:1:7:23:68:1:7:11:89:1:7:62:125:5:21:32:81:40:113:76:62:147:8:97', cx, cy, True) then
begin
WriteLn('Walking to the Crafting Guild [ODTM]');
ObjDTM_WalkPath (['25:35:5:10:7:87:54:10:7:62:41:1:7:23:68:1:7:11:89:1:7:62:125:5:21:32:81:40:113:76:62:147:8:97', '10:59:5:10:7:120:89:5:7:23:104:1:7:44:55:1:7:61:33:1:7:24:71:4:8:56:67:18:134:95:17:118', '71:111:4:1:7:62:92:1:7:86:87:1:7:99:90:5:7:98:123:5:52:96:53:70:118:75:114:135:49:131'], 2, 102, 8, True, True);
end else
begin
WriteLn('Walking to the Crafting Guild [SPS]')
SPS_Setup(RUNESCAPE_SURFACE, ['9_8','8_8']);
myPath := [Point(3696, 3508), Point(3671, 3510), Point(3658, 3500), Point(3643, 3481), Point(3629, 3469), Point(3615, 3449), Point(3594, 3449), Point(3579, 3458), Point(3569, 3469), Point(3572, 3481), Point(3569, 3497)];
end;
end;
end;
procedure RockWalk; // Walks from the Crafting Guild door to the centre of the "Mine"
var
myPath:TPointArray;
cx, cy: Integer;
begin
if(not(LoggedIn))then Exit;
iNotBanned;
AntiRandoms;
if ObjDTM_Find ('82:82:5:0:7:51:84:1:7:110:63:1:7:106:82:5:7:85:66:5:7:81:94:5:35:75:96:41:128:71:119:114:46:117', cx, cy, True) then
begin
WriteLn('Walking to the Rocks [ODTM]');
ObjDTM_Walk('82:82:5:0:7:51:84:1:7:110:63:1:7:106:82:5:7:85:66:5:7:81:94:5:35:75:96:41:128:71:119:114:46:117', 2, 102, 8, True);
end else
begin
WriteLn('Walking to the Rocks [SPS]')
SPS_Setup(RUNESCAPE_SURFACE, ['8_8']);
myPath := [Point(3568, 3510), Point(3571, 3517), Point(3578, 3526), Point(3598, 3525)];
end;
end;
procedure Miner; // TPA to find and click the Clay
var
tmpCTS, CTS, I, x ,y: Integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
if(not(LoggedIn))then Exit;
if (InvFull) then Exit;
begin
GameTab(Tab_Inv);
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.09, 2.86);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 7058906, MSX1, MSY1, MSX2, MSY2, 14);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 3, 3);
for I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 1, 1);
begin
clickMouse2(false);
chooseoption('ine');
if (DidRedClick) then
Wait(2000 + Random(500)); // You should be able to get Clay by this time
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.22, 0.22);
end;
end;
end;
end;
procedure WetClay; // Makes wet Clay
var
x,y, Sink, dClay: Integer;
GetIt: Extended;
begin
Sink := DTMFromString('mGQAAAHicY2RgYPgBxM+BuGfTfwYmIM0IxAwAPmEEIQ==');
dClay := DTMFromString('mLgAAAHicY2JgYHBgYmCwB2JORgYGNiCeUhvE0FPqxQADjFDMwAAAVYoDRw==');
if(not(LoggedIn))then Exit;
begin
SinkWalk;
if (FindSymbol(x,y,'fountain')) then
GameTab(Tab_Inv);
if FindDTMRotated(Sink, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
FindDTMRotated(dClay, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt);
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('se');
FindDTMRotated(Sink, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt);
MMouse(x,y,1,1);
ClickMouse2(True);
end;
end;
end;
// Right now only makes Normal Urns- no cracked or fragiles
procedure Craft; // Makes Urns at the Pottery Wheel
var
x,y, Wheel, BoxUrn: Integer;
GetIt: Extended;
begin
BoxUrn := DTMFromString('mLgAAAHicY2JgYEhlZGAoB+JZUHxtlgTDnEIBBhhghGIGBgCI1QS+'); // For Normal Urn
Wheel := DTMFromString('mLgAAAHicY2JgYAhgZGDwAOK9QPZpIJ4zbQpDdaQhAwwwQjEDAwCLrQTy');
if(not(LoggedIn))then Exit;
begin
Wheelwalk;
GameTab(Tab_Inv);
if FindDTMRotated(Wheel, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('orm');
if (DidRedClick) then
Wait(1000 + Random(1500));
FindDTMRotated(BoxUrn, x, y, MCX1, MCY1, MCX2, MCY2, -Pi/4, Pi/4, Pi/60, GetIt);
MMouse(x,y,1,1);
ClickMouse2(True);
Wait(15000 + Random(1500));
end;
end;
end;
procedure Bake; // Fires the Urns
var
x,y, Furnace, wUrn: Integer;
GetIt: Extended;
begin
Furnace := DTMFromString('mLgAAAHicY2JgYBBkZGCQBmJ7INsTiKt9nRgMDQwZYIARihkYAD7NAlc=');
wUrn := DTMFromString('mLgAAAHicY2JgYChmYmDIBOJnQPZbIHYy4GBwMpFggAFGKGZgAAB18APA');
if(not(LoggedIn))then Exit;
begin
FurnaceWalk;
GameTab(Tab_Inv);
if FindDTMRotated(Furnace, x, y, MSX1, MSY1, MIX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
FindDTMRotated(wUrn, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt);
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('se');
FindDTMRotated(Furnace, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt)
MMouse(x,y,1,1);
ClickMouse2(True);
if (DidRedClick) then
Wait(15000 + Random(1500));
end;
end;
end;
procedure Bank; // Banks the Urns
var
x,y, Banker, Urn: Integer;
GetIt: Extended;
begin
Banker := DTMFromString('mLgAAAHicY2JgYLgPxI+BuAeIZwKxoWsyQ5CvFwMMMEIxAwMAk4wErg==');
Urn := DTMFromString('mLgAAAHicY2JgYEhmYmAoAuIXQPZjIM4O1WSYUmrJAAOMUMzAAACNkgTU');
if(not(LoggedIn))then Exit;
begin
BankerWalk;
GameTab(Tab_Inv);
if FindDTMRotated(Banker, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then
repeat
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('ank');
if (DidRedClick) then
Wait(1500 + Random(1500));
until(BankScreen or PinScreen);
if(PinScreen) then
begin
InPin(Players[0].Pin);
end;
if (BankScreen) then
FindDTMRotated(Urn, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt);
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('eposit-all');
CloseBank;
Wait(2000 + Random(1500));
WriteLn('We banked some Urns, now lets do it again');
end;
end;
procedure DaemonheimTele; // Teleports to Daemonheim using the Ring of Kinship
var
x,y, Ring: Integer;
GetIt: Extended;
begin
Ring := DTMFromString('mQwAAAHicY2ZgYNjAxMCwHYj3A3EtIwNDMRCXA7GTjSbD+/MtDP99FRmQASMSBgIAVV8H8w==');
if(not(LoggedIn))then Exit;
if (InvFull) then
begin
GameTab(Tab_Equip);
if FindDTMRotated(Ring, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('elepor');
Wait(5000 + Random(1500));
end;
end;
end;
procedure VexTele; // Teleports to the Clan Camp using the Vexillum
var
x,y, Vex: Integer;
GetIt: Extended;
begin
Vex := DTMFromString('mQwAAAHicY2ZgYHBiYmDwAWI3IFZhZGBQA2J9IHbynQLEcxg0dTQZkAEjEgYCAKrqBCk=');
if(not(LoggedIn))then Exit;
if (invEmpty) then
begin
GameTab(Tab_Equip);
if FindDTMRotated(Vex, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('elepor');
Typesend('1');
Wait(5000 + Random(1500));
end;
end;
end;
procedure OpenDoor; // Opens the Crafting Guild door
var
x,y, Door: Integer;
GetIt: Extended;
begin
Door := DTMFromString('mQwAAAHicY2ZgYGBhZGD4BqSFgbQ6FKsCcZQjB4OXCQdDcaQiAytQHoYZkTAQAACdFgOx');
if(not(LoggedIn))then Exit;
if (invFull) then Exit;
begin
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then
begin
MMouse(x,y,1,1);
ClickMouse2(False);
ChooseOption('pen');
if (DidRedClick) then
Wait(5000 + Random(1500));
end;
end;
end;
procedure CraftLoop; // Loop for making Urns
begin
if(not(LoggedIn))then Exit;
if (invFull) then
begin
WetClay;
Craft;
Bake;
end;
end;
procedure BankLoop; // Loop for Banking
begin
if(not(LoggedIn))then Exit;
if (invFull) then
begin
repeat
DaemonheimTele;
BankerWalk;
Bank;
until (invEmpty);
end;
end;
procedure BackLoop; // Loop for going back to the Guild
begin
if(not(LoggedIn))then Exit;
if (invEmpty) then
begin
VexTele;
GuildWalk;
OpenDoor;
RockWalk;
end;
end;
begin
Smart_server := 11;
Smart_Signed := TRUE;
Smart_Members := FALSE;
Smart_SuperDetail := FALSE;
SetupSRL;
ObjDTM_Setup;
DeclarePlayers;
LoginPlayer;
Wait(2000);
GameTab(tab_Inv);
if (not(LoggedIn)) then
if Players[CurrentPlayer].Active then
LoginPlayer;
repeat
repeat
Miner;
CraftLoop;
BankLoop;
BackLoop;
until (not LoggedIn);
NextPlayer(Players[CurrentPlayer].Active = False);
until AllPlayersInactive;
end.
// ****************************** ObjDTM Log *****************************************
{'82:82:5:0:7:51:84:1:7:110:63:1:7:106:82:5:7:85:66:5:7:81:94:5:35:75:96:41:128:71:119:114:46:117' // Center Mine
'63:93:4:0:7:52:84:5:7:81:101:5:7:85:66:1:7:105:81:5:35:74:97:43:127:84:87:120:35:111' // Sink
'72:63:4:0:7:52:84:1:7:105:81:5:7:81:101:5:7:85:66:6:33:71:80:43:117:64:117:101:87:129:43:129' // Wheel
'46:62:4:0:7:52:84:1:7:51:37:1:7:73:32:1:7:85:35:5:32:33:86:19:104:53:59:106:26:70' // Furnace
['104:35:3:10:7:57:66:10:7:73:66:5:7:47:70:4:91:28:26:73:103:79:116:28', '79:34:4:6:7:56:38:6:7:105:39:10:7:73:24:10:7:90:24:4:46:15:111:11:128:57:28:65'] // Daemonheim
['25:35:5:10:7:87:54:10:7:62:41:1:7:23:68:1:7:11:89:1:7:62:125:5:21:32:81:40:113:76:62:147:8:97', '10:59:5:10:7:120:89:5:7:23:104:1:7:44:55:1:7:61:33:1:7:24:71:4:8:56:67:18:134:95:17:118', '71:111:4:1:7:62:92:1:7:86:87:1:7:99:90:5:7:98:123:5:52:96:53:70:118:75:114:135:49:131'] // Vex Walk
}