Hoodz
2013-10-10 14:47:44
How Long have You Played Runescape?
7 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
I dont really know a programming languages. if i want to script for something i look up some tutorials and try to script. so i guess i know some pascalscript and a little bit html.
Are you a member of any other communities?
-
Tell us about yourself…
Please show us one (or multiple) of your scripts.
Private servers:
soulscript script package:
http://villavu.com/forum/showthread.php?t=105121
(contains a simple fighter, thiever, fisher and miner with auto login)
Oldschool Runescape:
HoodzFighter:
http://villavu.com/forum/showthread.php?t=99977
(AIO fighter)
HoodzGhouls:
http://villavu.com/forum/showthread.php?t=105446
(simple fighting script that kills ghouls and banks)
HoodzBarbFisher:
http://villavu.com/forum/showthread.php?t=105608
(barbarian village fisher, banking, power fishing, whirlpool detection, fly fishing rod recovery)
HoodzPC:
(not public yet)
youtube link for preview: http://www.youtube.com/watch?v=CQBXfLNGEBw
novice - enters boat -> defends the knight, if the bot cant find the npcs that attack the knight it will search for other npcs. this script still need some changes/fixes
HoodzCooker:
(not public yet)
youtube link for preview (OLD): http://www.youtube.com/watch?v=_c1dzvgp7Ak
(cooks at rouges den)
script still need some changes: logout and change world if there is no banker found after some time. and i need to add some more dtms.
- all my scripts for oldschool runescape use reflection+color. (HoodzFighter got a color only version too)
- all my scripts for oldschool runescape have an Auto updater
- all my scripts for oldschool runescape use flight's Al_functions and customrandoms -C_randoms. and my own MiniReflection include (i didnt make the functions but i just change the hooks after updates)
- i try to make all scripts for runescape as human as possible. -> random clicks, random walking, random dropping (drop + random missclick on examine), random interface interaction (will use: Bank-10 and then bank-all (human flaw), or with cooking cook-cancel, cook-x+number) etc…
sorry for my bad english.
7 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
I dont really know a programming languages. if i want to script for something i look up some tutorials and try to script. so i guess i know some pascalscript and a little bit html.
Are you a member of any other communities?
-
Tell us about yourself…
From: hoodz
about me:
- name: Laurens
- 16 years old, i will turn 17 in 1 month
- im from the Netherlands
- still in highschool (havo 5, dutch people will understand :P )
- field hockey (national level)
Runescape:
I play runescape since 2006 and i never was into botting, i was more someone who was reporting all the bots. Since i dont have a lot of time around ~2011 i decided to use bots. First i used rsbuddy and later i used powerbot. 2012 nov i quitted because of eoc, but i came back as soon as the oldschool servers were released. At the start of the oldschool servers there were no public bot clients and i still knew that villavu (simba) had scripts for the server called project rs06, so i went over here and i really liked (and still do!) the community. After watching yohojo's tutorials i decided to give it a shot and tried scripting myself and wrote a shitty goblin killer with the p07 include. and now we are here…
Please show us one (or multiple) of your scripts.
Private servers:
soulscript script package:
http://villavu.com/forum/showthread.php?t=105121
(contains a simple fighter, thiever, fisher and miner with auto login)
Oldschool Runescape:
HoodzFighter:
http://villavu.com/forum/showthread.php?t=99977
(AIO fighter)
HoodzGhouls:
http://villavu.com/forum/showthread.php?t=105446
(simple fighting script that kills ghouls and banks)
HoodzBarbFisher:
http://villavu.com/forum/showthread.php?t=105608
(barbarian village fisher, banking, power fishing, whirlpool detection, fly fishing rod recovery)
HoodzPC:
(not public yet)
youtube link for preview: http://www.youtube.com/watch?v=CQBXfLNGEBw
novice - enters boat -> defends the knight, if the bot cant find the npcs that attack the knight it will search for other npcs. this script still need some changes/fixes
HoodzCooker:
(not public yet)
youtube link for preview (OLD): http://www.youtube.com/watch?v=_c1dzvgp7Ak
(cooks at rouges den)
script still need some changes: logout and change world if there is no banker found after some time. and i need to add some more dtms.
program HoodzCooker;
{$DEFINE SMART8}
{$I SRL-OSR/SRL.simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.simba}
{$I SRL-OSR/SRL/misc/al_functions.simba}
{$i SRL-OSR/SRL/misc/MiniReflection.simba}
{$I SRL-OSR/SRL/core/antirandoms/C_AntiRandoms.simba}
var
x, y, Count1, FoodXp, StartXp, CookTimer, BankTimer, FindBankCounter, FindFireCounter, RawFoodDTM, RawFoodBankDTM, GainedXp, GainedXpHour, Catched, CatchedHour: integer;
const
NICKNAME = '';
USERNAME = '';
PASSWORD = '';
BANKPIN = '';
TRAININGSKILL = Skill_Cooking;
WORLD = 4;
VERSION = '1';
FOOD = 'shark';
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := USERNAME;
Pass := PASSWORD;
nick := NICKNAME;
Active := True;
lampskill := TRAININGSKILL;
end;
end;
procedure SetupUpdater;
var
NewFile: integer;
OnlineVersion, NewScript, NewFileName: string;
begin
writeln('Checking for script updates...');
OnlineVersion := GetPage('http://pastebin.com/raw.php?i=cncuctxW');
if (trim(OnlineVersion) > VERSION) then
begin
writeLn('Script update available!');
writeLn('Updating script to v' + OnlineVersion);
NewScript := GetPage('http://pastebin.com/raw.php?i=kZCLNfnH');
NewFileName := 'C:\Simba\Scripts\' + 'Hoodzcooker.simba';
NewFile := Rewritefile(NewFileName, true);
try
WriteFileString(NewFile, NewScript);
except
begin
writeLn('Fatal error writing to ' + NewFileName + '!!');
terminatescript;
end;
end;
CloseFile(NewFile);
writeLn('New script downloaded to ' + NewFileName + '. Please restart Simba.');
TerminateScript;
end
else
writeLn('You have the latest version of the script!');
end;
procedure LoadTheDTMs;
begin
if FOOD = 'lobster' then
begin
RawFoodDTM := DTMFromString('mrAAAAHic42BgYBAAYn4GCGAFYjEglgZiESibD4hlgFgUiLmR1HEBsTgQ13koAElGnBhmNi6AWycEwwAA634B/A==');
RawFoodBankDTM := DTMFromString('mKgEAAHicnc1NCkBQGIXhczNnE1ZCRCLlrsySmBgYkPKzG6/cAUNOPX11+ur4kmZPWjCiQ48dKwYc2JzJ/V19ZiSLCgVS1GhQIkeCCPHjtjZk1XwW6F++L93eOQFLOhDU');
FOODXP := 120;
end;
if FOOD = 'shark' then
begin
RawFoodDTM := DTMFromString('mggAAAHicY2NgYDjNAsEHgPg4EN8C4ptAHMPIwJAKxGlAHAjEuUAcC8SzJvQDdTFiYH4G7ABTJQRDAACXKwkK');
RawFoodBankDTM := DTMFromString('mKgEAAHic42NgYNBnYWDQBmINFgjbCIjNgNgUSttCsTUQqwKxMhCrAPFboN5fQPwXiL8B8Ucg/grEP4H4PxR/YoCoew9VA1I7a0I/kGQkGfMzkAdItwmCUQEAgtcSRw==');
FOODXP := 210;
end;
if FOOD = 'monkfish' then
begin
RawFoodDTM := DTMFromString('mggAAAHicY2NgYLBmYWBwAGJPKAbxjYC4gpGBoQGKS4C4CIhrgLgr1R+oixED8zNgB5gqIRgCACe1BdE=');
RawFoodBankDTM := DTMFromString('mFQEAAHic42VgYAhhZmDIgOJEII4B4kggDgPiYCD2B2IfKPYG4iQgNmRkYLAEYhMgtoBiEN8KCZszQtTpArEeEPekBwBtYyQJ8zOQDkizAYJRAACX8gjc');
FOODXP := 150;
end;
if FOOD = 'tuna' then
begin
FOODXP := 100;
end;
if FOOD = 'salmon' then
begin
FOODXP := 90;
end;
if FOOD = 'trout' then
begin
FOODXP := 70;
end;
if FOOD = 'swordfish' then
begin
FOODXP := 140;
end;
addonterminate('ClearTheDTMs');
end;
procedure ClearTheDTMs;
begin
FreeDTM(RawFoodDTM);
FreeDTM(RawFoodBankDTM);
end;
function IsItemActivated: Boolean;
var
i: Integer;
begin
for i := 1 to 28 do
begin
Result := ItemActivated(i);
if Result then
Exit;
end;
end;
procedure WriteStatus(Status: string);
begin
GainedXp := Round(R_GetSkillExp(Skill_Cooking) - StartXp);
GainedXpHour := Round((GainedXp) / (GetTimeRunning / 3600000.0));
Catched := Round(GainedXp / FOODXP);
CatchedHour := Round(Catched / (GetTimeRunning / 3600000.0));
ClearDebug;
Writeln('time running: ' + MsToTime(GetTimeRunning, 3));
Writeln('status: ' + Status);
Writeln('gained xp: ' + Inttostr(GainedXp));
Writeln('gained xp/hour: ' + Inttostr(GainedXpHour));
Writeln('cooked: ' + Inttostr(Catched));
Writeln('cooked/hour: ' + Inttostr(CatchedHour));
end;
procedure HoodzCBRandom;
begin
if (R_GetAnimation = 424) or (FindColor(x, y, 65280, MSX1, MSY1, MSX2, MSY2)) then
begin
WriteStatus('***HoodzCBRandom**** in combat, running away!');
BlindWalk(Point(3060 + Randomrange( - 3, 3), 4978 + Randomrange( - 3, 3)));
Sleep(4000 + Random(2000));
WriteStatus('***HoodzCBRandom*** Walking back');
BlindWalk(Point(3043 + Randomrange( - 1, 1), 4973 + Randomrange( - 1, 1)));
Flag;
Sleep(1000 + Random(2000));
Exit;
end;
end;
procedure AntiBan;
begin
case random(2800) of
0..1:
begin
Al_hoverSkill(TRAININGSKILL, False);
Sleep(800 + Random(500));
end;
4..10:
begin
MakeCompass(Randomrange(0, 360));
Sleep(800 + Random(500));
end;
11..26:
begin
Al_HumanRandomMouse;
Sleep(800 + random(500));
end;
18:
begin
AdjustMouseSpeed(2, 10, 20);
Sleep(800 + Random(500));
end;
19:
begin
RandomRClick;
Sleep(800 + Random(500));
end;
20:
begin
HoverMovingObject;
Sleep(800 + Random(500));
end;
21:
begin
MMouseOffClient('top');
Sleep(800 + Random(500));
end;
22:
begin
MMouseOffClient('left');
Sleep(800 + Random(500));
end;
23:
begin
MMouseOffClient('right');
Sleep(800 + Random(500));
end;
24:
begin
MMouseOffClient('bottom');
Sleep(800 + Random(500));
end;
25..28:
begin
if IsRunOn(false) then
begin
SetRun(true);
Sleep(800 + Random(500));
end;
end;
34..36:
begin
RandomTab(false);
Sleep(3000 + Random(500));
end;
end;
FindCustomRandoms;
HoodzCBRandom;
FindNonInventoryRandoms;
Exit;
end;
procedure Banking;
var
FoodBox2: TBox;
begin
MarkTime(BankTimer);
WriteStatus('banking');
if (PinScreen) then
begin
InPin(BANKPIN);
Banking;
end
else
begin
QuickDeposit('inv');
Sleep(200 + Random(45));
if (FindDTM(RawFoodBankDTM, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
case random(15) of
0..10:
begin
FoodBox2 := IntToBox(x - 18, y - 18, x + 18, y + 18);
Smart_DrawBoxEx(False, False, FoodBox2, clBlue);
Al_MissMouse(Point(x, y), Randomrange( - 10, 10), Randomrange( - 10, 10));
Sleep(100 + Random(76));
Al_FastClick(Mouse_Right);
Sleep(100 + Random(150));
Al_ChooseOption('Withdraw-All');
Sleep(100 + Random(150));
Smart_ClearCanvas;
CloseBank;
Sleep(100 + Random(100));
Exit;
end;
11..14:
begin
FoodBox2 := IntToBox(x - 18, y - 18, x + 18, y + 18);
Smart_DrawboxEx(False, False, FoodBox2, clBlue);
Al_MissMouse(Point(x, y), Randomrange( - 10, 10), Randomrange( - 10, 10));
Sleep(100 + Random(76));
Al_FastClick(Mouse_Right);
Sleep(100 + Random(150));
Al_ChooseOption('Withdraw-10');
Sleep(300 + Random(150));
Al_MissMouse(Point(x, y), Randomrange( - 10, 10), Randomrange( - 10, 10));
Sleep(100 + Random(76));
Al_Fastclick(Mouse_right);
Sleep(100 + Random(150));
Al_ChooseOption('Withdraw-All');
Smart_ClearCanvas;
CloseBank;
Sleep(100 + Random(100));
Exit;
end;
end;
end
else
begin
if (BankScreen) then
begin
CloseBank;
LogOut;
TerminateScript;
end
else
begin
Exit;
end;
end;
end;
if (TimeFromMark(BankTimer) > 5000) then
Closebank;
end;
function Banker: boolean;
var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I: Integer;
Mp: TPoint;
Box: TBox;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.79);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1586491, MSX1, MSY1, MSX2, MSY2, 10);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 25, 20);
SortATPASize(TPAA, True);
for I := 0 to High(TPAA) do
if GetArraylength(TPAA[i]) > 60 then
begin
Result := True;
MiddleTPAEx(TPAA[i], x, y);
Mp := MiddleTPA(TPAA[i]);
Box := IntToBox(Mp.x - 16, Mp.y - 16, Mp.x + 16, Mp.y + 16);
Smart_drawDotsEx(False, TPA, clpurple);
SMART_DrawBoxEx(False, false, Box, clGreen);
Al_MissMouse(Point(x, y), RandomRange( - 10, 10), RandomRange( - 10, 10));
Sleep(120 + Random(50));
if IsUpText('ald') then
begin
FindBankCounter := 0;
Al_FastClick(Mouse_Right);
WriteStatus('banker found!');
Sleep(200 + Random(200));
Al_Chooseoption('Bank');
Sleep(200 + Random(100));
Flag;
Sleep(200 + Random(30));
Smart_ClearCanvas;
Banking;
end
else
begin
if (Pinscreen) or (Bankscreen) then
Banking;
end;
Smart_ClearCanvas;
Exit;
end;
end;
procedure FixBanker;
begin
if (PinScreen) or (BankScreen) then
begin
Banking;
end
else
begin
if FindBankCounter > 2 then
begin
FindBankCounter := 0;
BlindWalk(Point(3042 + Randomrange( - 2, 2), 4968 + Randomrange( - 2, 2)));
Banker;
end
else
begin
Inc(FindBankCounter);
WriteStatus('no banker found');
MakeCompass(Randomrange(0, 360));
Banker;
end;
end;
end;
function FindFire: Boolean;
var
TPAA: T2DPointArray;
TPA: TPointArray;
CTS, I: Integer;
Mp: TPoint;
Box: TBox;
begin
if (BankScreen) then
begin
CloseBank;
FindFire;
Exit;
end
else
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
setcolorspeed2modifiers(0.07, 1.55);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 2796506, MSX1, MSY1, MSX2, MSY2, 14);
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 5, 10);
SortATPASize(TPAA, True);
for I := 0 to High(TPAA) do
if GetArraylength(TPAA[i]) > 20 then
begin
Result := True;
FindFireCounter := 0;
MiddleTPAEx(TPAA[i], x, y);
Mp := MiddleTPA(TPAA[i]);
Box := IntToBox(Mp.x - 13, Mp.y - 13, Mp.x + 13, Mp.y + 13);
Smart_DrawDotsEx(False, TPA, clBlue);
SMART_DrawBoxEx(False, False, Box, clGreen);
Al_MissMouse(Point(x, y), Randomrange( - 10, 10), Randomrange( - 10, 10));
Sleep(120 + Random(50));
Al_FastClick(Mouse_Right);
WriteStatus('fire found!');
Smart_ClearCanvas;
begin
Sleep(270 + Random(59));
if (Al_ChooseOption('ire')) then
begin
Flag;
Sleep(200 + Random(90));
Al_MouseBoxEx(230, 392, 285, 447, 25, 3);
Sleep(500 + Random(120));
MarkTime(CookTimer);
if (WaitUpText('ook', 300)) then
begin
Al_FastClick(Mouse_Right);
Sleep(200 + Random(90));
case random(16) of
0..12:
begin
Al_ChooseOption('Cook All');
Sleep(2200 + Random(200));
FindCustomRandoms;
HoodzCBRandom;
FindNonInventoryRandoms;
Exit;
end;
13..14:
begin
Al_ChooseOption('Cancel');
Sleep(300 + Random(200));
Al_MouseBoxEx(230, 392, 285, 447, 15, 3);
Al_FastClick(Mouse_Right);
Sleep(200 + Random(90));
Al_ChooseOption('Cook All');
Sleep(2200 + Random(200));
FindCustomRandoms;
HoodzCBRandom;
FindNonInventoryRandoms;
Exit;
end;
0..15:
begin
Al_ChooseOption('Cook X');
Sleep(500 + Random(200));
TypeSendEx(IntToStr(Randomrange(28, 99)), True);
Sleep(2200 + Random(200));
FindCustomRandoms;
HoodzCBRandom;
FindNonInventoryRandoms;
Exit;
end;
end;
end;
if (TimeFromMark(CookTimer) > 3000) then
Exit;
end
else
FindFire;
end;
end;
end;
end;
procedure FixFire;
begin
if (FindFireCounter > 3) then
begin
FindFireCounter := 0;
BlindWalk(Point(3044 + Randomrange( - 1, 1), 4972 + Randomrange( - 1, 1)));
Exit;
end
else
begin
Inc(FindFireCounter);
WriteStatus('no fire found');
MakeCompass(Randomrange(0, 360));
FindFire;
Exit;
end;
end;
function FindFood: Boolean;
var
FoodBox1: TBox;
begin
FindCustomRandoms;
FindNonInventoryRandoms;
HoodzCBRandom;
if (FindDTM(RawFoodDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
FoodBox1 := IntToBox(x - 18, y - 18, x + 18, y + 18);
WriteStatus('we found the raw ' + food);
Result := True;
Smart_DrawBoxEx(False, False, FoodBox1, clBlue);
Al_MissMouse(Point(x, y), Randomrange( - 10, 10), Randomrange( - 10, 10));
Sleep(50 + Random(20));
Al_FastClick(Mouse_Left);
Sleep(30 + Random(50));
Smart_ClearCanvas;
Exit;
end;
end;
procedure FixFood;
begin
FindCustomRandoms;
FindNonInventoryRandoms;
HoodzCBRandom;
if (not LoggedIn) then
begin
LogInPlayer;
WriteStatus('logging in');
end
else
begin
if (not Banker) then
begin
FixBanker;
end;
WriteStatus('didnt find the raw ' + FOOD);
FindFood;
Exit;
end;
end;
procedure GoCooking;
begin
FindCustomRandoms;
FindNonInventoryRandoms;
HoodzCBRandom;
if (not IsItemActivated) then
begin
if (not Findfood) then
FixFood;
end
else
begin
if (FindDTM(RawFoodDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Sleep(100 + Random(200));
WriteStatus('going to cook');
if (not FindFire) then
FixFire;
end
else
begin
case random(2) of
0:
begin
Al_MouseBoxEx(520, 211, 555, 383, 5, Mouse_Left);
Sleep(30 + Random(50));
end;
1:
begin
Al_MouseBoxEx(524, 128, 568, 164, 5, Mouse_Left);
Sleep(30 + Random(50));
end;
end;
Banker;
end;
end;
end;
procedure MainLoop;
begin
if (not LoggedIn) then
begin
LogInPlayer;
SetAngle(0);
AL_gametab(tab_inv);
SetRun(True);
end;
if (LoggedIn) then
begin
FindCustomRandoms;
HoodzCBRandom;
FindNonInventoryRandoms;
if (WaitForAnimation(2050)) and (FindDTM(RawfoodDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
WriteStatus('cooking (' + FOOD + ')');
Sleep(150 + Random(25));
FindCustomRandoms;
FindNonInventoryRandoms;
HoodzCBRandom;
AntiBan;
end
else
GoCooking;
end;
end;
begin
DeclarePlayers;
Smart_World := WORLD;
SetupUpdater;
SetupUptext;
SetupReflection;
SetupSRL();
SRL_CombatRandoms := False;
SetupCustomRandoms;
LoadTheDTMs;
ActivateClient;
ClearDebug;
WriteStatus('HoodzCooker');
repeat
if Count1 = 0 then
begin
Inc(Count1);
LogInPlayer;
SetAngle(0);
Al_GameTab(Tab_Inv);
StartXp := Round(R_GetSkillExp(TRAININGSKILL));
Writeln('start xp = ' + IntTostr(StartXp));
end
else
begin
MainLoop;
end;
until (False)
end.
- all my scripts for oldschool runescape use reflection+color. (HoodzFighter got a color only version too)
- all my scripts for oldschool runescape have an Auto updater
- all my scripts for oldschool runescape use flight's Al_functions and customrandoms -C_randoms. and my own MiniReflection include (i didnt make the functions but i just change the hooks after updates)
- i try to make all scripts for runescape as human as possible. -> random clicks, random walking, random dropping (drop + random missclick on examine), random interface interaction (will use: Bank-10 and then bank-all (human flaw), or with cooking cook-cancel, cook-x+number) etc…
sorry for my bad english.