SRL Archive - Archive

JOEbot - SRL Member Application


Joe

2012-04-27 19:54:30

How Long have You Played Runescape?
5 Year(s)


Are you affilated in anyway with Jagex LTD?
Nope

Were you Referred to SRL?
In an indirect way by YoHoJo


What is your general programming knowledge?
I can script in the Pascal language that SIMBA uses, Java, and some HTML


Are you a member of any other communities?
Runescape


Tell us about yourself…
From: JOEbot
After the botnuke, I was searching Youtube and Google for working bots. I came across one of YoHoJo's tutorials and VOILA! Here I am.



Please show us one (or multiple) of your scripts.
program JOEbotsGiants; // This is what I Named my Script
{$DEFINE SMART} // From Benland100
{$i SRL/srl.simba} // From SRL
{$i srl\srl\skill\fighting.simba}
{$i sps/sps.simba} // From Marpis (Creator of SPS) Used as a Failsafe
{$i ObjectDTM\ObjDTMInclude.simba} // From ODTM Generation Tool by Euphenism (Primary Walking Path System)
{CrashSMART is not in here because only very cocky people include CrashSMART}

//
// This Script is 100% JOEbot
// What this Script does is Kills Hill Giants in the Misthalin (Around Varrock) Hill Giants Resource Dungeon and Loots several Items
// Feel free to take anything from this script as long as you give credit where needed
// This is a VERY GOOD Script to Learn off of, as I have //'d EVERYTHING!
// Don't forget to Rep+ if you like it! Although most of you will LEACH :( Dayum Shame...
// This Script was Officially Intended for Putonajonny's Scripting Compertition, Credz to him for the motivation
//

// This Script got a 92% in BobboHobbo's Membership Application Tool

{ ALL Colors were found using the ACA Color Finder by Nielsie95 and Sumulion
This is the Colors Progress Log with Hue, Saturation, and Tolerance for Future Reference
color 1 = 7434604, hue 3.89, sat 0.16, tol 12 (Silver Clothing stuff)
color 2 = 6334413, hue 0.10, sat 1.81, tol 14 (Skin)
color 3 = 7369324, hue 5.83, sat 0.30, tol 7 (Silver Clothing backup)
color 4 = 15857114, hue 6.91, sat 6.67, tol 7 (Bones)
color 5 = 7908038, hue 7.84, sat 9.19, tol 4 (Skin backup)
color 6 = 11711143, hue 5.35, sat 0.32, tol 9 (Runes)
color 7 = 4905207, hue 0.72, sat 4.24, tol 2 (Coins)
}

const
WerePoor = True; // It's OK to admit it... Also, True = Picking up Stuff
Swag = 'Runes'; // Are you going to Pick Up 'Runes' or 'Coins' (Only ones available at the moment...) To do this, make WerePoor = True


{================================ ! 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 := ''; // use four characters from your username
Pin := ''; // Enter bank PIN here, leave empty if you don't have one
Active := True; // Use this Player
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 := ''; // use four characters from your username
Pin := ''; // Enter bank PIN here, leave empty if you don't have one
Active := True; // Use this Player?
BoxRewards := ['Xp', 'ostume', 'aphire'];
end;
end;
{=============================================================================================}
{=============================================================================================}
{_____________________________________________________________________________________________}
{=============================================================================================}
{=============================================================================================}





{ !!!STOP!!! }
{=============================================================================================}
{ * PLEASE DO NOT EDIT ANYTHING BEYOND THIS POINT *
{ * UNLESS YOU KNOW WHAT YOU ARE DOING *
( * OR WISH TO BORROW SOMETHING FROM THE SCRIPT *
( * IF THERE IS A PROBLEM OR A BUG WITH THE SCRIPT *
( * LET ME KNOW SO I CAN FIX IT *
( * IF YOU HAVE ANY ADVICE OR SUGGESTIONS *
( * POST THEM ON THE ORIGINAL THREAD OR PM ME *
( * ! THANK YOU AND ENJOY ! *
{=============================================================================================}

procedure iWelcomeU; // Everyone deserves a warm welcome!
begin
WriteLn('******************************************************************');
WriteLn('********************* JOEbots Giants- Enjoy! *********************');
WriteLn('******************************************************************');
end;

procedure iNotBanned; // You won't get banned while this is around
begin
if(not LoggedIn) then Exit; // If you aren't Logged In then it Exits the Procedure to move on to Multiplayer
case Random(250) of // Yay 100 Lines!!!

10:
begin
Hoverskill('Strength', False); // Hovers over the Strength Skill
wait(1551+Random(2111));
end;

20:
begin
Hoverskill ('Attack', False); // Hovers over the Attack Skill
wait(1661+Random(2221));
end;

30:
begin
Hoverskill ('Defence', False); // Hovers over the Defence Skill
wait(1771+Random(2331));
end;

40: RandomRClick; // Randomly Right Clicks (Anywhere)


50: PickUpMouse; // Simulates a human Picking Up a Mouse


end;
end;

procedure AntiRandoms; // Senses and completes random events. Failure isn't my fault.
begin
FindNormalRandoms; // Searches the area for Random Events
LampSkill := 'Strength'; // Puts the Random Event Rewards towards Strength Exprience
LevelUp; // Checks if you levelled up
end;

procedure KillHill; // Finds the Giants
var
x, y, a, tmpCTS, HillGiant: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;

begin
if(not(LoggedIn))then Exit; // If you aren't Logged In then it Exits (To get to a Multiplayer Change)
if (InvFull) then Exit; // If your Inventory is Full then it Exits (To get to a Banking Loop)
iNotBanned; // So you don't get Banned
AntiRandoms; // Finds Random Events
tmpCTS := GetColorToleranceSpeed; // Gets the CTS
ColorToleranceSpeed(2); // This is the CTS I used in the ACA Color Finder by Nielsie95 and Sumulion
SetColorSpeed2Modifiers(0.10, 1.81); // The Hue and Saturation Modifiers

FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2108978, MSX1, MSY1, MSX2, MSY2, 14); // Finds the Hill Giant in the Runescape Mainscreen at a Tolerance of 14
SortTPAFrom(TPA, Point(MSCX, MSCY)); // Sorts the TPA
ATPA := TPAtoATPAEx(TPA, 3, 3); // Finds the Hill Giant using a Box of 3x3 Pixels of the same Color

for a := 0 to High(ATPA) do
begin
if (IsUpTextMultiCustom(['ttack', 'ill', 'iant'])) then // The multiple possibilities of Uptext
begin
mouse(x,y,1,1,False); // Right Clicks rather than Left Clicks
ChooseOption('ttack'); // Chooses the Option 'Attack'
Break; // Straightforward...
inc(HillGiant); // Adds to the Amount of Hill Giants the Script has Killed by 1
end;
end;

ColorToleranceSpeed(tmpCTS); // Defaults the CTS
SetColorSpeed2Modifiers(0.22, 0.22); // Resets the Hue and Saturation Modifiers
end;

function Boner (var x, y : Integer): Boolean; // Need I say more?
var
a, Bones, tmpCTS: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
GetIt : Extended;


begin
if(not(LoggedIn))then Exit; // If you aren't Logged In, then it Exits (To get to a Multiplayer Change)
iNotBanned; // So you don't get Banned
AntiRandoms; // Finds Random Events
tmpCTS := GetColorToleranceSpeed; // Gets the CTS
ColorToleranceSpeed(2); // This is the CTS I used to find the Color in ACA Color Finder by Nielsie95 and Sumulion
SetColorSpeed2Modifiers(6.91, 6.67); // Hue and Saturation Modifiers

FindColorsSpiralTolerance(MSCX, MSCY, TPA, 15857114, MSX1, MSY1, MSX2, MSY2, 7); // Finds the Bones in the Runescape Mainscreen at a Tolerance of 7
SortTPAFrom(TPA, Point(MSCX, MSCY)); // Sorts the TPA out
ATPA := TPAtoATPAEx(TPA, 2, 2); // Finds the Bones using a Box of 2x2 Pixels of the same Color

for a := 0 to High(ATPA) do
begin
if (IsUpTextMultiCustom(['ake', 'ig', 'bones'])) then // The multiple possibilities that the Uptext may find
begin
result := True; // If it finds the Bones...
mouse(x,y,1,1,False); // Right Clicks rather than Left Click
ChooseOption('ake'); // Chooses the Option 'Take'
Break; // Straightforward...
WriteLn('We picked up some Big Bones!'); // If it doesn't say this, something went Wrong
end;
end;

ColorToleranceSpeed(tmpCTS); // Defaults the CTS
SetColorSpeed2Modifiers(0.22, 0.22); // Resets the Hue and Saturation Modifiers
// Yay 200 Lines!!!
begin // Buries the Big Bones in your Inventory
Bones := DTMFromString('mbQAAAHicY2VgYPjBxMDwDoj/AvE/IP4MxF5A7AvEAUDsCcQuQJydmc2QnZrMsHTWHIbqwmKGYiDGBhixYDAAANV5DWo='); // The DTM I used for Bones is from the SIMBA DTM Editor by Nielsie95
if(InvFull) then // If your Inventory is Full then...
begin
repeat // Keeps Burying Bones until your Inventory is Empty
if FindDTMRotated(Bones, x, y, MIX1, MIY1, MIX2, MIY2, -Pi/4, Pi/4, Pi/60, GetIt) then
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('ury') // Chooses the Option 'Bury'
inc(Bones); // Adds to the Amount of Bones the Script has Buried by 1
Until not(IsUpTextMultiCustom(['ury', 'ig', 'bones'])or(InvEmpty)) // If there is no UpText for the Bones or our Inventory is Empty then it is finished
end;
FreeDTM(Bones);
end;
end;

function BankStroll: Boolean; // Super tricky Walking Path from the Resource Dungeon to the Bank
var
a, tmpCTS, cx, cy, x, y, Ladder, Door, Bwalk: Integer;
myPath:TPointArray;
TPA: TPointArray;
ATPA: T2DPointArray;
GetIt: Extended;

begin
if(not(LoggedIn))then Exit; // If you aren't Logged In it Exits (To get to a Multiplayer Change)
if(InvFull) then // If your Inventory is Full, then it Starts Walking to the Bank
begin // Inside the Resource Dungeon at by the Entrance Yay 300 Lines!!!
if ObjDTM_Find ('85:82:3:10:7:41:108:10:7:49:97:10:7:68:111:5:57:67:89:31:131:99:63:148:3:74', cx, cy, True) then // If it Finds my Points for the ODTM then...
begin
WriteLn('We will now walk to the Bank!'); // If it doesn't say This, Something went Wrong
ObjDTM_Walk ('85:82:3:10:7:41:108:10:7:49:97:10:7:68:111:5:57:67:89:31:131:99:63:148:3:74', 2, 102, 8, True); // This Walks the ODTM Path generated with Euphenism's ODTM Path Generator
end;
end;

begin // Resource Dungeon Exiter
tmpCTS := GetColorToleranceSpeed; // Gets the CTS
ColorToleranceSpeed(2); // We click 2 in the ACA Color Finder
SetColorSpeed2Modifiers(0.81, 0.16); // Hue then Saturation Modifiers

FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2171937, MSX1, MSY1, MSX2, MSY2, 13); // Finds the Resource Dungeon Entrance in the Runescape Mainscreen at a Tolerance of 13
SortTPAFrom(TPA, Point(MSCX, MSCY)); // Sorts the TPA
ATPA := TPAtoATPAEx(TPA, 4, 4); // Finds the Door using a Box of 4x4 Pixels of the same Color

for a := 0 to High(ATPA) do
begin
if (IsUpTextMultiCustom(['xit', 'ysterious', 'oor'])) then // Multiple possibilities of Uptext for the Door
begin
AntiRandoms; // Finds Random Events
iNotBanned; // So you don't get Banned
result := True; // If it finds the Door then...
mouse(x,y,1,1,False); // Right Clicks rather than Left Clicks
ChooseOption('xit'); // Chooses the Option 'Take'
Break; // Straightforward...
WriteLn('We have Left the Resource Dungeon!'); // If it doesn't say this, something went wrong
end;
end;

ColorToleranceSpeed(tmpCTS); // Defaults the CTS
SetColorSpeed2Modifiers(0.22, 0.22); // Resets the Hue and Saturation Modifiers

begin // Inside of the Misthalin Underground by the Ladder
SPS_Setup(RUNESCAPE_SURFACE,['0_3','0_2']); // From Wolygon's Path Creator
myPath := [Point(248, 1275), Point(260, 1254), Point(275, 1244), Point(292, 1228), Point(291, 1214), Point(292, 1200), Point(292, 1183), Point(293, 1166)]; // From Wolygon's Path Creator
SPS_WalkPath(myPath); // From Wolygon's Path Creator
FFlag(2); // When your Character is 2 Pixels away from the Flag, it Clicks the Next SPS Point
end;

begin // Ladder Leaver
Ladder := DTMFromString('mbQAAAHicY2VgYEhghOA4II4F4nggLgDiBiCeC8QngfgFEHs5GjIkhzoxeNkYMjhZaDI4mWgyMAH1o2NGLBgMAIFQCOY='); // DTM I used to Find the Ladder was Found using the SIMBA DTM Editor by Nielsie95
if FindDTMRotated(Ladder, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('limb-up') // Chooses the Option 'Climb-up'
end;
end;

begin // Door Exiter
Door := DTMFromString('mggAAAHicY2NgYIhiZGAoBmIbILYDYg9GiFg0lO0LxEFAbA/FigoSDIoqEgyWFpYMEhISDJoaimAxZqBZ2DAjDgwBADFoBkc=');
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('pen') // Chooses the Option 'Open'
end;

begin
SPS_Setup(RUNESCAPE_SURFACE,['10_7','11_7']); // Outside the Door to the Misthalin Underground
myPath := [Point(4301, 2860), Point(4319, 2880), Point(4330, 2897), Point(4341, 2916), Point(4359, 2931), Point(4376, 2945), Point(4394, 2961), Point(4417, 2977), Point(4451, 2983), Point(4485, 2970), Point(4494, 2953), Point(4512, 2939), Point(4538, 2939), Point(4573, 2931), Point(4580, 2909), Point(4576, 2899)];
SPS_WalkPath(myPath); // From Wolygon's Path Creator
FFlag(2); // When your Character is 2 Pixels away, it Clicks the Next SPS Point
end;
end;

begin // Little Debug Failsafe
if FindSymbol (x,y,'bank') then
WriteLn('We are at the Bank fo shizzle');
end;

inc(Bwalk); // Adds to the Amount of BankWalks the Script has Completed by 1
FreeDTM(Ladder);
FreeDTM(Door);
end;
end;

function Bankinator: Boolean;
var
Banked, Key, x, y: Integer;
GetIt: Extended;

begin
Key := DTMFromString('mQwAAAHicY2ZgYFjCxMCwDohnAPEURgaGHiCeB8QtsQIMW5skwDQyYETCQAAANAEG6Q=='); // My DTM for the Brass Key
if (not Loggedin) then Exit;
if (invFull) then
begin
AntiRandoms; // Looks for Random Events
iNotBanned; // Does something Human like
if not OpenBankFast('veb') then // If it can't find the counter...
OpenBankNPC // Then if it can't find the banker...
else
Bankinator; // Then it uses my own function. TRIPLE FAILSAFE!

if BankScreen then // If it is at the Bankscreen the...
DepositAll; // Deposits EVERYTHING

if PinScreen then // If you have a Pin then...
InPin(Players[CurrentPlayer].Pin); // It Enters your PIN

Result := True; // It happened.

if FindDTMRotated(Key, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin // This takes the Key out the the Bank after Everything is Deposited
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('ake') // Chooses the Option 'Take'
end;
end;
inc(Banked); // Adds to the Amount of Loads the Script has Banked by 1
end;

procedure DungeonStroll; // Another tricky Walking Path from the Bank to the Resource Dungeon
var
myPath:TPointArray;
x,y, cx, cy, Door, LadderIn, Entrance, Dwalk: Integer;
GetIt: Extended;

begin
if(InvEmpty) then // Makes sure the Inventory is Empty before Walking Back Yay 400 Lines!!!
begin
SPS_Setup(RUNESCAPE_SURFACE,['11_7','10_7']); // Outside of the Door to the Misthalin Underground
myPath := [Point(4578, 2909), Point(4564, 2932), Point(4539, 2935), Point(4515, 2938), Point(4494, 2956), Point(4485, 2970), Point(4467, 2976), Point(4445, 2985), Point(4432, 2973), Point(4405, 2962), Point(4380, 2946), Point(4354, 2923), Point(4341, 2913), Point(4325, 2894), Point(4324, 2875), Point(4309, 2868), Point(4299, 2856)];
SPS_WalkPath(myPath); // From Wolygon's Path Creator
FFlag(2); // When your Character is 2 Pixels away, it Clicks the Next SPS Point
end;

begin //Door Opener (From BankStroll)
Door := DTMFromString('mggAAAHicY2NgYIhiZGAoBmIbILYDYg9GiFg0lO0LxEFAbA/FigoSDIoqEgyWFpYMEhISDJoaimAxZqBZ2DAjDgwBADFoBkc=');
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('pen') // Chooses the Option 'Open'
end;
end;

begin // Ladder Enterer
iNotBanned; // So you don't get Banned
AntiRandoms; // Finds Random Events
LadderIn := DTMFromString('mWAAAAHicY2FgYFjAyMAwC4gPMELYDkAcC6XVgZiDh4PByUKAwclEgCHI15CBCagHGTOiYRAAAGUgBbM=');
if FindDTMRotated(LadderIn, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('limb-down') // Chooses the Option 'Climb-down'
end;
end;

begin // Would've used ODTM, But there is absolutely nothing down there to Use as Points
SPS_Setup(RUNESCAPE_SURFACE,['0_2','0_3']); // Inside the Misthalin Underground
myPath := [Point(289, 1169), Point(288, 1187), Point(285, 1204), Point(277, 1221), Point(263, 1236), Point(253, 1254), Point(246, 1270), Point(237, 1273)];
SPS_WalkPath(myPath); // From Wolygon's Path Creator
FFlag(2); // When your Character is 2 Pixels away, it Clicks the Next SPS Point
end;

begin // Entrance Enterer
Entrance := DTMFromString('mWAAAAHicY2FgYKhiZGCYAcRxQFwOxN5A7AfErkAcAMR7TTQZkhOjGHq6WhiCQoMYWIF6kDEjGgYBALyhCAU=');
if FindDTMRotated(Entrance, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('nter') // Chooses the Option 'Enter'
end;
end;

begin // In the Middle of the Resource Dungeon
if ObjDTM_Find ('26:118:3:10:7:60:116:10:7:68:92:10:7:48:92:5:86:37:4:79:29:137:101:137:122:56', cx, cy, True) then // If it Finds my Points for the ODTM then...
begin
WriteLn('We will now walk to the Center of the Dungeon! Dah Dun Dun Dahhhhhh!'); // If it doesn't say This, Something went Wrong
ObjDTM_Walk ('26:118:3:10:7:60:116:10:7:68:92:10:7:48:92:5:86:37:4:79:29:137:101:137:122:56', 2, 102, 8, True); // This Walks the ODTM Path generated with Euphenism's ODTM Path Generator
end;
end;

inc(Dwalk); // Adds to the Amount of DungeonStrolls the Script has Completed by 1
FreeDTM(Door);
FreeDTM(LadderIn);
FreeDTM(Entrance);
end;

procedure Progress;
var
Bones, HillGiant, Dwalk, Bwalk, Loot, Banked, Time: Integer;

begin // This gives the User a Debug Box of what the Script has Completed (Please Post These on the Original Thread!)
Time := GetTimeRunning div 1000; // Gets the Time the Script has been Running and Divides it by 1000 to make it in Seconds rather than Miliseconds
WriteLn('*************************** ! JOEbots Giants ! *********************************');
WriteLn('Loads Banked:' + IntToStr(Banked)); // Writes in the Debug Box how many Loads the Script has Banked
WriteLn('Bones Buried:' + IntToStr(Bones)); // Writes in the Debug Box how many Bones the Script has Buried
WriteLn('Hill Giants Killed:' + IntToStr(HillGiant)); // Writes in the Debug Box how many Hill Giants the Script has Killed
WriteLn('Successful Bank Walks:' + IntToStr(Bwalk)); // Writes in the Debug Box how many Bank Walks the Script has Completed
WriteLn('Successful Dungeon Walks:' + IntToStr(Dwalk)); // Writes in the Debug Box how many Dungeon Walks the Script has Completed
WriteLn('Swag Picked:' + IntToStr(Loot)); // Writes in the Debug Box how much Loot the Script has Picked Up
WriteLn('Time Running:'+ IntToStr(Time)); // Writes in the Debug Box how Long the Script has been Running (in Seconds)
WriteLn('*************************** ! JOEbots Giants ! *********************************');
end;

procedure Inventory; // Checks to see if your Inventory is Full to initiate the Bank Loop
begin
if(InvFull) then // If your Inventory is Full, then it Initiates this
begin
WriteLn('Well be stepping out to catch some air now...'); // If it doesn't say this then you either don't have a Full Inventory, or something went Wrong
BankStroll; // Walks to the Bank
Wait(1000 + Random(1500)); // Waits.
Bankinator; // Banks your Swag
Wait(1000 + Random(1500)); // Waits..
DungeonStroll; // Walks back to the Dungeon
Wait(1000 + Random(1500)); // Waits...
Progress;
end;
end;

function SwagPicker: Boolean; // Picks Up: Runes (all of them) and Coins (all stacks) -> Working on more
var
Hue, Sat: Extended;
col, tol, a, x, y, tmpCTS, Loot: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;

begin
if (WerePoor = True) then // If you selected True up in the Const, then you will be Picking Up Items off of the Ground
begin // All of this is from ACA Color Finder by Nielsie95 and Sumulion
case Swag of
'Runes' : begin // Sorry, but it's just more convenient (linewise) to pick them all up
Col := 11711143; // Color
Hue := 5.35; // Hue
Sat := 0.32; // Saturation
Tol := 9; // Tolerance
end;

'Coins' : begin // Whether it be 2GP or 3M it should pick it up...
Col := 4905207; // Color
Hue := 0.72; // Hue
Sat := 4.24; // Saturation
Tol := 2; // Tolerance
end;
end; // Until I can get around the finicky Colors of these other Items

{ 'Iron Kite' : begin
Col :=
Hue :=
Sat :=
Tol :=
end;

'Stell Helm' : begin
Col :=
Hue :=
Sat :=
Tol :=
end;

'Limpwurt Root' : begin
Col :=
Hue :=
Sat :=
Tol :=
end;

IN DEVELOPEMENT
}
end;

begin
if(not(LoggedIn))then Exit; // If you aren't Logged In it Exits (To get to a Multiplayer Change)
if (invfull) then Exit; // If your Inventory is Full then it Exits (To get to a Banking Loop)
iNotBanned; // So you don't get Banned
AntiRandoms; // Finds Random Events
tmpCTS := GetColorToleranceSpeed; // Gets the CTS
ColorToleranceSpeed(2); // We click 2 in the ACA Color Finder
SetColorSpeed2Modifiers(Hue, Sat); // Hue then Saturation Modifiers

FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol); // Finds the Swag in the Runescape Mainscreen (Varied Tolerance)
SortTPAFrom(TPA, Point(MSCX, MSCY)) // Sorts the TPA
ATPA := TPAtoATPAEx(TPA, 2, 2); // Finds the Swag using a Box of 2x2 Pixels of the same Color

for a := 0 to High(ATPA) do
begin
if (IsUpTextMultiCustom(['ake', 'oins', 'unes'])) then // Multiple possibilities of Uptext for the Swag
begin
result := True; // If it finds the Swag then...
mouse(x,y,1,1,False); // Right Clicks rather than Left Clicks
ChooseOption('ake'); // Chooses the Option 'Take'
Break; // Straightforward...
WriteLn('We picked up some Swag!'); // If it doesn't say this, something went wrong
inc(Loot); // Adds to the Amount of Swag the Script has Looted by 1
Inventory; // Checks to see if your Inventory is Full (to Initiate a Banking Loop)
end;
end;

ColorToleranceSpeed(tmpCTS); // Defaults the CTS
SetColorSpeed2Modifiers(0.22, 0.22); // Resets the Hue and Saturation Modifiers
end;
end;

begin // Mainloop
Smart_server := 11; // Server 11 (Change if you want)
Smart_Signed := TRUE; // We have a Signed Applet
Smart_Members := FALSE; // We are not SRL Members and cannot use This
Smart_SuperDetail := FALSE; // Not using High Detail

SetupSRL; // Gets the SRL Variables and Stuff
ObjDTM_Setup; // Sets up the ODTM Walking
DeclarePlayers; // Gets you Login Information
LoginPlayer; // Logs you In
Wait(2000); // A moment to Adjust to Lag
iWelcomeU; // Welcome Message
GameTab(tab_Inv); // Clicks the Inventory Tab

if (not(LoggedIn)) then // If you aren't Logged In...
if Players[CurrentPlayer].Active then // And your Player is Active...
LoginPlayer; // Then it Logs You In
repeat
repeat
KillHill; // Kills Hill Giants
SwagPicker; // Finds the Loot on the Ground and Picks it Up
until (not LoggedIn); // Until You aren't Logged In
NextPlayer(Players[CurrentPlayer].Active = False); // Then goes on to the Next Player and Sets the Current Player to Inactive
until AllPlayersInactive; // Until ALL Players are Inactive
end.

// Thank you for using this script!
// Post Any and All Bugs, Proggies, Advice, or Suggestions on the Thread where you Downloaded this Script!
// LOLgoose.

// 500 lines. 24245 Characters

I also wrote:
- Joebots Falador TreeTANK
- JOEbots HighAlchPro
- I have a few more that are in developement, PM me to view them.

Thank you for voting! Please leave feedback :)

Sin

2012-04-27 20:06:51


Door := DTMFromString('mggAAAHicY2NgYIhiZGAoBmIbILYDYg9GiFg0lO0LxEFAbA/FigoSDIoqEgyWFpYMEhISDJoaimAxZqBZ2DAjDgwBADFoBkc=');
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
ClickMouse2(False); // Left Clicks rather than Right Click
ChooseOption('pen') // Chooses the Option 'Open'
end;
Am I missing something? Im sure you need an MMouse?

Joe

2012-04-27 20:26:46

From: Sin

Door := DTMFromString('mggAAAHicY2NgYIhiZGAoBmIbILYDYg9GiFg0lO0LxEFAbA/FigoSDIoqEgyWFpYMEhISDJoaimAxZqBZ2DAjDgwBADFoBkc=');
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
ClickMouse2(False); // Left Clicks rather than Right Click
ChooseOption('pen') // Chooses the Option 'Open'
end;
Am I missing something? Im sure you need an MMouse?


Doesn't it find the x,y of the DTM and then left click?

Sin

2012-04-27 21:06:09

No, that's Mouse.

ClickMouse2 just clicks the mouse where the current position is, whereas Mouse(x,y,rx,ry,variant) moves the mouse and clicks it.

Joe

2012-04-27 22:19:49

thanks Sin, I changed it and updated my script
I was just trying something fancy that didn't seem to work, but instead of wowing the members I'm only losing votes…

Sin

2012-04-27 22:24:22

From: JOEbot
thanks Sin, I changed it and updated my script
I was just trying something fancy that didn't seem to work, but instead of wowing the members I'm only losing votes…


Haha to be honest, doing it simple is the best way to go.
I remember someone (this was a while back), who thought he could oust me by writing complicated stuff (his script was 600+ lines, while mine was 300) but it failed. Horribly.

Joe

2012-04-28 09:43:21

From: Sin
Haha to be honest, doing it simple is the best way to go.
I remember someone (this was a while back), who thought he could oust me by writing complicated stuff (his script was 600+ lines, while mine was 300) but it failed. Horribly.


You got into members with a 300 line script? And I thought that application was to show the voters your true potential and highest abilities… If I don't make it in this time I'll definitely back soon.

Sin

2012-04-28 09:46:29

From: JOEbot
You got into members with a 300 line script? And I thought that application was to show the voters your true potential and highest abilities… If I don't make it in this time I'll definitely back soon.


No I believe it was like ~220…
Anyways.
What I was saying is that often times simplicity is the best.

Joe

2012-04-28 09:47:53

From: Sin
No I believe it was like ~220…
Anyways.
What I was saying is that often times simplicity is the best.


That's insane… thats like 3 TPAs and a declare players.
Well maybe I'll go for simplicity in my next endevour (not like findobj…)

Abu

2012-04-28 10:15:09

From: JOEbot

Well maybe I'll go for simplicity in my next endevour (not like findobj…)


Stop talking about your next application as though you've already been rejected. Have some faith man.

Anyway… gotta vouch for JOEbot, great member in the community and is very active and a lot of fun. He's not afraid to ask for help and I've worked with him on scripts in the past.

Great guy.


In terms of the script, it seems incomplete. The only function you have put into your main playing loop is 'KillHill;', which means all the other functions are there for no reason.

Standards could be better, but mine aren't perfect and standards come naturally.

And finally, ran your script through BH's SRL Member's Tool, filling in your details correctly and:
Add tdtmpointdef
Get rid of Clickmouse = ban.
You should Apply for members.
[==================================]
[= Result: 85% // [B]not 92%[/B]
[==================================]

Joe

2012-04-28 10:24:00

From: abu_jwka
Stop talking about your next application as though you've already been rejected. Have some faith man.

Anyway… gotta vouch for JOEbot, great member in the community and is very active and a lot of fun. He's not afraid to ask for help and I've worked with him on scripts in the past.

Great guy.


In terms of the script, it seems incomplete. The only function you have put into your main playing loop is 'KillHill;', which means all the other functions are there for no reason.

Standards could be better, but mine aren't perfect and standards come naturally.

And finally, ran your script through BH's SRL Member's Tool, filling in your details correctly and:
Add tdtmpointdef
Get rid of Clickmouse = ban.
You should Apply for members.
[==================================]
[= Result: 85% // [B]not 92%[/B]
[==================================]


I just changed the mouse for simplicity, I should update that.
EDIT: thanks for saying all that nice stuff too :)
And about the stuff being obsolete, I have Inventory, which if the inventory is full makes a loop for the bank, and I realized that the Swag procedure isn't connected. Thanks Abu!

Gala

2012-04-28 11:18:31

From: JOEbot
You got into members with a 300 line script? And I thought that application was to show the voters your true potential and highest abilities… If I don't make it in this time I'll definitely back soon.


What Sin said is true. I think you can even show in a 300 line script your scripting skills. Simple solutions are always better than unnecessary complicated ones.

my opinion:
- great attitude and activity (helpful) :)
- basic use of TPAs and DTMs
- nice structure of the script (standards sometimes a bit weird)
- use of SRL include is ok

You could have used some more advanced methods in this combat script. (Like a check if the giant is already in a fight or so)
Comments are always good and absolutely necessary for bigger projects as you will work on the same code for a longer period. Nevertheless, I think it is a bit too much to comment every single line. (You wrote your script is made for teaching purposes, therefore it is ok I think)

I will hold my vote at the moment.

Joe

2012-04-28 11:26:10

From: Gala
What Sin said is true. I think you can even show in a 300 line script your scripting skills. Simple solutions are always better than unnecessary complicated ones.

my opinion:
- great attitude and activity (helpful) :)
- basic use of TPAs and DTMs
- nice structure of the script (standards sometimes a bit weird)
- use of SRL include is ok

You could have used some more advanced methods in this combat script. (Like a check if the giant is already in a fight or so)
Comments are always good and absolutely necessary for bigger projects as you will work on the same code for a longer period. Nevertheless, I think it is a bit too much to comment every single line. (You wrote your script is made for teaching purposes, therefore it is ok I think)

I will hold my vote at the moment.


Thanks for your consideration.

Harry

2012-04-28 12:08:54

From: Sin
Haha to be honest, doing it simple is the best way to go.
I remember someone (this was a while back), who thought he could oust me by writing complicated stuff (his script was 600+ lines, while mine was 300) but it failed. Horribly.

Woah now… Logic is more important than how many lines that logic took to complete, or how complex the logic was. Your logic must have been better than his; not due to it being advanced vs simple. Someone else's code in 600 lines could 'beat' your 300 lines, if they had better executed logic. Not to mention the logic in your scripts isn't very good, especially regarding humanization and logical flow… so I think it's a tad bit inappropriate for you to be saying these things .

Anyways not to derail Joe's thread…
{CrashSMART is not in here because only very cocky people include CrashSMART}

:(

Standards are a bit weird in some places. The comments are a bit interesting, most are self explanatory but should help other people to learn. You have obviously learned much in the past few months looking at your older threads (2? other released scripts). So I say yes, don't disappoint.

cause

2012-04-28 12:11:52

Yes from me

Er1k

2012-04-28 12:12:59

From: Harry
Woah now… Logic is more important than how many lines that logic took to complete, or how complex the logic was. Your logic must have been better than his; not due to it being advanced vs simple. Someone else's code in 600 lines could 'beat' your 300 lines, if they had better executed logic. Not to mention the logic in your scripts isn't very good, especially regarding humanization and logical flow… so I think it's a tad bit inappropriate for you to be saying these things .


Harry, you remind me how badly I handle humanization with my scripts - totally none :P

OT: Nice work you have got here. I have seen you around quite often and I think I like you in general. You deserve a yes for the efforts, good luck.

Sin

2012-04-28 12:20:44

From: Harry
Woah now… Logic is more important than how many lines that logic took to complete, or how complex the logic was. Your logic must have been better than his; not due to it being advanced vs simple. Someone else's code in 600 lines could 'beat' your 300 lines, if they had better executed logic. Not to mention the logic in your scripts isn't very good, especially regarding humanization and logical flow… so I think it's a tad bit inappropriate for you to be saying these things .



Haha yeah, that's what I was talking about.
Most of the time, simple logic > advanced ones.

For example,
if findgiant then attack.

//advanced

if findgiant then check tpabounds if still on screen, mouse over check uptext if still there.


That just took longer and the giant might've moved :p

Joe

2012-04-28 12:42:32

Thanks everyone! I appreciate all the help!

Gala

2012-04-28 13:11:04

I didn't know you had other scripts. I would post them with a little comment like 'here are some older scripts blabla' so we can see your progress.
Yes from me.

Joe

2012-04-28 13:29:45

From: Gala
I didn't know you had other scripts. I would post them with a little comment like 'here are some older scripts blabla' so we can see your progress.
Yes from me.


Oh, I'm sorry for that. It says "Show us one OR multiple scripts" I though that it would be better to show my best script rather then my lesser ones, but if that would effect my voting turnout I shall include them.

Gala

2012-04-28 13:37:07

Of course it is your decision what you want to put into your app. I am not very active in the usual scripts section so I didn't know your other scripts.
For me, the difference between your scripts shows your progress in scripting.

masterBB

2012-04-28 14:39:14

I voted no. I think the script isn't good enough. It seems like a great script and I can see you putt much effort into it. But the standards aren't good enough. There were also some other thingies that make me vote no, but those are more of a personal matter.

Joe

2012-04-28 19:40:04

From: masterBB
I voted no. I think the script isn't good enough. It seems like a great script and I can see you putt much effort into it. But the standards aren't good enough. There were also some other thingies that make me vote no, but those are more of a personal matter.


Could you please PM me what those were? I would very much like know. And maybe tell me what I could do to improve the script to make it "good enough"?
Thank you!

putonajonny

2012-04-29 09:08:18

From: abu_jwka
Stop talking about your next application as though you've already been rejected. Have some faith man.

Anyway… gotta vouch for JOEbot, great member in the community and is very active and a lot of fun. He's not afraid to ask for help and I've worked with him on scripts in the past.

Great guy.


In terms of the script, it seems incomplete. The only function you have put into your main playing loop is 'KillHill;', which means all the other functions are there for no reason.

Standards could be better, but mine aren't perfect and standards come naturally.

And finally, ran your script through BH's SRL Member's Tool, filling in your details correctly and:
Add tdtmpointdef
Get rid of Clickmouse = ban.
You should Apply for members.
[==================================]
[= Result: 85% // [B]not 92%[/B]
[==================================]


That clickmouse thing is wrong though, his result should be higher than that

edit:
Yes from me :) user is active and an asset to the community, script isn't perfect but it is a hell of a lot better than the one I got into SRL members with

Abu

2012-04-29 09:53:47

From: putonajonny
That clickmouse thing is wrong though, his result should be higher than that


Yeh he told me he updated the script.

I voted yes anyway :p

Joe

2012-04-29 12:15:20

From: abu_jwka
Yeh he told me he updated the script.

I voted yes anyway :p


Thanks for that. And yes I did update it, thanks to this poll my Hill Giant script has changed a lot. Anybody who made any contributions has a lot of respect from me- plus a lot of others.

bg5

2012-04-29 21:04:49

I like your credits ,also you put efford into comments ,script meets requiments ,so I voted yes.

Anyway finding doors using DTM's, is very unstable method ,also you don't use proper logic ,so your script is very linear ,I mean:
      begin // Ladder Leaver
Ladder := DTMFromString('mbQAAAHicY2VgYEhghOA4II4F4nggLgDiBiCeC8QngfgFEHs5GjIkhzoxeNkYMjhZaDI4mWgyMAH1o2NGLBgMAIFQCOY='); // DTM I used to Find the Ladder was Found using the SIMBA DTM Editor by Nielsie95
if FindDTMRotated(Ladder, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('limb-up') // Chooses the Option 'Climb-up'
end;
end;

begin // Door Exiter
Door := DTMFromString('mggAAAHicY2NgYIhiZGAoBmIbILYDYg9GiFg0lO0LxEFAbA/FigoSDIoqEgyWFpYMEhISDJoaimAxZqBZ2DAjDgwBADFoBkc=');
if FindDTMRotated(Door, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/4, Pi/4, Pi/60, GetIt) then // If it Finds my DTM at any Angle, then...
begin
mouse(x,y,1,1,False); // Left Clicks rather than Right Click
ChooseOption('pen') // Chooses the Option 'Open'
end;

What if ladder was not found? Regardless of this scripts moves to finding doors ,so everything will crash ,because you didn't make any alternative. And there is few possible situations , that DTM can't be found ,for example lagg ,or other player can cover it ,so if you rely only on one try to find DTM ,your script is unstable as hell.
Also I don't see any timing function.

Jakkle

2012-04-30 13:33:38

I like your documentation and your script is easy to read.
You show a decent knowledge of scripting.
Your Activity is great.
I vote yes. Good luck.

~Jakkle

Joe

2012-04-30 14:58:32

From: Jakkle
I like your documentation and your script is easy to read.
You show a decent knowledge of scripting.
Your Activity is great.
I vote yes. Good luck.

~Jakkle


Thank you so very much! I try to make it easy to read and it's nice for people to notice.

~Joe

Joe

2012-05-04 19:36:26

If nobody else is going to vote could this poll be closed soon?
EDIT: By vote I mean leave feedback as well.

BobboHobbo

2012-05-04 20:37:13

Voting Yes. :). Goodluck.

Joe

2012-05-04 22:04:32

From: BobboHobbo
Voting Yes. :). Goodluck.


Thank you! Both for voting (in general) and posting feedback. This actually made my day :)

Frement

2012-05-04 22:12:03

Voted yes, pleasant community member, scripting abilities that meet the SRL member standards in my opinion and activity is more then enough.

Joe

2012-05-05 20:26:05

From: Frement
Voted yes, pleasant community member, scripting abilities that meet the SRL member standards in my opinion and activity is more then enough.


Thanks! I appreciate that!

nielsie95

2012-05-06 12:59:26

Welcome in!