SRL Archive - Archive

hoodz - SRL Member Application


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…
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.

Sjoe

2013-10-10 14:54:43

instant yes :p

Hoodz

2013-10-10 14:57:14

From: Sjoe
instant yes :p

thanks sjoe!

The Killer

2013-10-10 15:01:02

1) Not active enough
2) Scripts suck
Good luck with the rest of your app.
Looking forward to your next app.


[spoiler=]LOL jks, shut up and take my yes![/spoiler]

Kevin

2013-10-10 15:20:58

I won't lie, I've actually been waiting on your application for quite a while now. You've been around for a while now, you're impressively active, and you're fairly courteous. From anything not related to script skill, it's an absolute yes. For everything related to skill, I'm probably gonna vote yes no matter your skill at this point; however, I'm gonna set aside a note to look over your cooker (the only one you pasted and therefore I assume your best one :p) later, before I absolutely vote.

On a side note, congratulations on your recent cup! ;)

Ian

2013-10-10 15:21:29

I've been waiting for you to apply :)


Ashaman88

2013-10-10 15:22:27

Easy yes

Hoodz

2013-10-10 15:42:51

From: The Killer
1) Not active enough
2) Scripts suck
Good luck with the rest of your app.
Looking forward to your next app.


[spoiler=]LOL jks, shut up and take my yes![/spoiler]

love your spoilers :p
From: Kevin
I won't lie, I've actually been waiting on your application for quite a while now. You've been around for a while now, you're impressively active, and you're fairly courteous. From anything not related to script skill, it's an absolute yes. For everything related to skill, I'm probably gonna vote yes no matter your skill at this point; however, I'm gonna set aside a note to look over your cooker (the only one you pasted and therefore I assume your best one :p) later, before I absolutely vote.

On a side note, congratulations on your recent cup! ;)

thanks!
From: BMWxi
I've been waiting for you to apply :)



From: Ashaman88
Easy yes


i didnt know that people were actually waiting for my application. thanks!

Silentcore

2013-10-10 16:13:54

I haven't really used much of your scripts but if im not mistaken, I tried your fighter and it ran really well. According to several posts, some people seem to be happy with your scripts.
You get my YES!

Edit: that PC script looks sexy!

Ian

2013-10-10 17:09:23

What's this about?


Hoodz

2013-10-10 17:16:21

From: BMWxi
What's this about?



[23:09] <Bart[euphoric]> overNINETHOUSAND!

i think bart has something to do with this..

rj

2013-10-10 17:36:00

From: hoodz
nah if i get rejected i will lose all my motivation and rage quit



Guess whos not going to quit

Ian

2013-10-10 17:39:39

From: hoodz
[23:09] <Bart[euphoric]> overNINETHOUSAND!

i think bart has something to do with this..


Haha I saw him at the "who is browsing this thread" bar, but I wasn't sure if he was changing it or fixing it. Possibly both :p

[XoL]

2013-10-10 18:06:00

Didn't even read the application, I have seen you around so much and your scripts are posted everywhere so YES from me :)

euphemism

2013-10-10 20:42:05

Yes, your code is fine and you are an active (and positive) member of the community.

Justin

2013-10-11 06:00:58

Yes from me :)

Kevin

2013-10-11 13:06:16

Hoodz, I voted yes a while ago, but I'm finally reading the script and I'm going to add some notes as I notice/read them :P Please don't take this as insulting or mean in any way, just advice on how to improve.

On that note: Why is your version number a string; won't that cause it to fail the version checking? Also, when you check the version for updating, you're using a static pastebin location; you can't update a pastebin file without creating a new pastebin url, can you? Or rather, looking at your code and the uploaded version, I'm going to assume that's possible and just ask how to do it instead? :p

You write out the new file to 'C:\Simba\Scripts\' + 'Hoodzcooker.simba'; however, that won't work [conveniently] for cases like myself, as I install Simba to a separate folder. Instead you can use the following to work for everyone:
ScriptPath + 'Hoodzcooker.simba';

When you load the DTMs, you should use a case statement instead of all those if statements for efficiency's reasoning, like this:
case FOOD of
'lobster':
begin
RawFoodDTM := DTMFromString('mrAAAAHic42BgYBAAYn4GCGAFYjEglgZiESibD4hlgFgUiLmR1HEBsTgQ13koAElGnBhmNi6AWycEwwAA634B/A==');
RawFoodBankDTM := DTMFromString('mKgEAAHicnc1NCkBQGIXhczNnE1ZCRCLlrsySmBgYkPKzG6/cAUNOPX11+ur4kmZPWjCiQ48dKwYc2JzJ/V19ZiSLCgVS1GhQIkeCCPHjtjZk1XwW6F++L93eOQFLOhDU');
FOODXP := 120;
end;
'shark':
begin
RawFoodDTM := DTMFromString('mggAAAHicY2NgYDjNAsEHgPg4EN8C4ptAHMPIwJAKxGlAHAjEuUAcC8SzJvQDdTFiYH4G7ABTJQRDAACXKwkK');
RawFoodBankDTM := DTMFromString('mKgEAAHic42NgYNBnYWDQBmINFgjbCIjNgNgUSttCsTUQqwKxMhCrAPFboN5fQPwXiL8B8Ucg/grEP4H4PxR/YoCoew9VA1I7a0I/kGQkGfMzkAdItwmCUQEAgtcSRw==');
FOODXP := 210;
end;
'monkfish':
begin
RawFoodDTM := DTMFromString('mggAAAHicY2NgYLBmYWBwAGJPKAbxjYC4gpGBoQGKS4C4CIhrgLgr1R+oixED8zNgB5gqIRgCACe1BdE=');
RawFoodBankDTM := DTMFromString('mFQEAAHic42VgYAhhZmDIgOJEII4B4kggDgPiYCD2B2IfKPYG4iQgNmRkYLAEYhMgtoBiEN8KCZszQtTpArEeEPekBwBtYyQJ8zOQDkizAYJRAACX8gjc');
FOODXP := 150;
end;
end;

At about this point I noticed every variable you have is global. You should definitely be trying to limit your variables to only use them as they exist. For example, you only use 'CatchedHour' in the WriteStatus method, but you declare it globally, instead of locally within the using procedure.

J J

2013-10-11 13:33:25

From: euphemism
Yes, your code is fine and you are an active (and positive) member of the community.

Pretty much this; yes from me.

Olly

2013-10-11 14:36:13

Sure thing… change all them and's do a case statement though :)

Daniel

2013-10-17 19:45:04

We can conclude this poll a week early, the results are pretty clear.

Welcome in.

Congratulations! :)