SRL Archive - Archive

hrh - SRL Member Application Form


hrh

2009-01-27 14:58:44

<!– BEGIN TEMPLATE: formanswers –>
hrh - SRL Member Application Form
hrh

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
HTML, PHP, Dabble in C

Other Communitys
Miniclip, Tip.it, Zybez, SwiftIRC

How Long have You Played Runescape
4-5 years

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

The name's Nitesh, I'm 16, living in Leicester, England. British Asain, Full-time student. IDK what else do you want to know? If, you want more details, ask on IRC/PM or whatnot, hehe, just nothing uhhhm that will result in you stalking me :)

Well I was browsing sythe, and knew about the whole botting community as a whole for years, and decided I'll read up about how it works, as i never actually knew, and learned there was two main sectors, java bots (RSBot) and colour (Scar). Reading topics, i learned Scar/SRL, was the harder to grasp as a newb, but being computer savvy, i chose to try Scar, safer due to colour. Started to learn about how to use things, smart, reflection and so on. While ago I felt I wanted to try out the language, seemed very clean and layed out nicely, easy to learn, and the learning curve has be nice, lots of help off from IRC and lots of laughs along the way. Spent a good while trying to perfect a Draynor Woodcutter, and feel it shows some of the nice functions and procedures I have learned, by all means, far from perfect, but I feel I done best I could, hopefully my best is good enough, I guess.

Hrh

PS: If you do happen to vote no, please could you message with why and maybe how I could be able to improve on the reason(s) resulting in a no. Thanks.

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted

{    __    _  _  ____  ____   ___  ____  ___  ____
/__\ ( \/ )( ___)( _ \ / __)(_ _)/ __)(_ _)
/(__)\ ) ( )__) ) /( (__ _)(_ \__ \ )(
(__)(__)(_/\_)(____)(_)\_) \___)(____)(___/ (__)
Version 1.0 By His Royal Highness (HRH)
[------------------------------------------------------------------------------]
[ ## INSTRUCTIONS ## ]
[------------------------------------------------------------------------------]
[1] Place your characters at Draynor bank, preferably against the booths.
[2] Try to have a few spare axes in case one breaks and needs to be replaced.
[3] Deposit all items from your inventory.
[4] Either equip an axe, or have it in your inventory (1st slot).
[5] Start the script! (After filling in details including SRL-Stats)
}

program TheAxercist;
{.include srl/srl/misc/smart.scar}
{.include srl/srl.scar}
{.include srl/srl/skill/WoodCutting.scar}

var
SleepMark, DTMLog, SleepTimes, AxesReplaced, DTMBank :Integer;

const
SRLStatsID = ''; //SRL Stats ID
SRLStatsPass = ''; //SRL Stats Password
Members = false; //True for members world, False for free worlds.
SmartWorld = 16; //World Smart should load by default.

procedure declarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := ''; // RuneScape Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 letters from your username
Players[0].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[0].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[0].integers[1] := 10; // Length of time to sleep (minutes)
Players[0].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[0].Active := True;
{
Players[1].Name := ''; // RuneScape Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 letters from your username
Players[1].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[1].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[1].integers[1] := 10; // Length of time to sleep (minutes)
Players[1].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[1].Active := True;

Players[1].Name := ''; // RuneScape Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 letters from your username
Players[1].Pin := '' // Bank Pin! Must be a string, put '' for no pin
Players[1].integers[0] := 30; // Minutes to run before taking a nap (put 99999 for no sleeps)
Players[1].integers[1] := 10; // Length of time to sleep (minutes)
Players[1].integers[2] := 50; // Amount of inventory fulls of willows to cut
Players[1].Active := True;
}
end;

procedure AntiRandoms;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
if FindFight then
RunAway('N', True, 1, randomrange(4700,5300));
end;

procedure AntiBan;
var T1: Integer;
begin
if not LoggedIn then
Exit;
Inc(Players[CurrentPlayer].integers[6]);
case random(300) of
1: if (TimeFromMark(T1) > 1800000) then
begin
Status('Performing Antiban [1]');
case random(5) of
1: TypeSend('WC level? '+InttoStr(Players[CurrentPlayer].integers[9])+' here');
2: Typesend('My woodcutting level is '+InttoStr(Players[CurrentPlayer].integers[9]));
3: Typesend('wc levels?');
4: Typesend('Nearly leveling');
5: Typesend('wc lvl?');
end;
MarkTime(T1);
end;
2: if (TimeFromMark(T1) > 1800000) then
begin
Status('Performing Antiban [2]');
TypeSend('What axe is that?');
MarkTime(T1);
end;
3-8: begin
Status('Performing Antiban [3]');
HoverSkill('woodcutting', False);
GameTab(4)
end;
9-12: begin
Status('Performing Antiban [4]');
PickUpMouse;
end;
13-15: begin
Status('Performing Antiban [5]');
BoredHuman;
end;
16, 17: begin
Status('Performing Antiban [6]');
KeyDown(VK_Left);
Wait(random(1000));
KeyUp(VK_Left);
KeyDown(VK_Right);
Wait(random(1000));
KeyUp(VK_Right);
end;
18-20: begin
Status('Performing Antiban [7]');
HoverSkill('random', False);
GameTab(4)
end;
21, 22: begin
Status('Performing Antiban [8]');
GameTab(random(15));
Wait(random(4000));
GameTab(4)
end;
else Dec(Players[CurrentPlayer].integers[6]);
end;
end;

procedure DTMs;
begin
DTMLog := DTMFromString('78DA63B463626078CA800242BCE5185881342' +
'310FF07024607A09A3B0C6880118904D23E40350F09A8B105AAF9' +
'48408D3150CD0BFC6A001AAD0A8C');
DTMBank := DTMFromString('78DA63CC626060086100036608C5606F6DC5C' +
'00FA419A17CC61820E1C78002FEFC6182C821AB0923424D147E35' +
'0089A3098D');
end;

//I had a bit of help from Tootoot222 with this function
function DTMAxe: Integer;
var
x, y, AxeMask: Integer;
AxeDDTM: TDTM;
begin
AxeMask := BitmapFromString(32, 32, 'beNpjYBgh4D8SoIXhuOyii' +
'r1E6iXbCpqaT7yuwW8+/gglw3zMlIPfNFKtwG8gHtupYj6yIHUDBz' +
'O7UR6zNC0WqG4+5XE3QgJnyDl+NHAGifmjgUPnwKGwPB8FJAMAh/b' +
'jHQ==');
with AxeDDTM do
begin
if(FindBitmapMaskTolerance(AxeMask, X, Y, MIX1, MIY1, MIX2, MIY2, 10, 10)) then
begin
MainPoint.AreaShape:= 0;
MainPoint.AreaSize:= 0;
MainPoint.Tolerance:= 10;
MainPoint.X:= X + 21;
MainPoint.Y:= Y + 5;
MainPoint.Color:= GetColor(MainPoint.X, MainPoint.Y);

SetLength(SubPoints, 6);
SubPoints[0].AreaShape:= 0;
SubPoints[0].AreaSize:= 0;
SubPoints[0].Tolerance:= 10;
SubPoints[0].X:= MainPoint.X + 13;
SubPoints[0].Y:= MainPoint.Y + 7;
SubPoints[0].Color:= GetColor(SubPoints[0].X, SubPoints[0].Y);

SubPoints[1].AreaShape:= 0;
SubPoints[1].AreaSize:= 0;
SubPoints[1].Tolerance:= 10;
SubPoints[1].X:= MainPoint.X + 11;
SubPoints[1].Y:= MainPoint.Y + 14;
SubPoints[1].Color:= GetColor(SubPoints[1].X, SubPoints[1].Y);

SubPoints[2].AreaShape:= 0;
SubPoints[2].AreaSize:= 0;
SubPoints[2].Tolerance:= 10;
SubPoints[2].X:= MainPoint.X + 8;
SubPoints[2].Y:= MainPoint.Y + 22;
SubPoints[2].Color:= GetColor(SubPoints[2].X, SubPoints[2].Y);

SubPoints[3].AreaShape:= 0;
SubPoints[3].AreaSize:= 0;
SubPoints[3].Tolerance:= 10;
SubPoints[3].X:= MainPoint.X + 11;
SubPoints[3].Y:= MainPoint.Y + 13;
SubPoints[3].Color:= GetColor(SubPoints[3].X, SubPoints[3].Y);

SubPoints[4].AreaShape:= 0;
SubPoints[4].AreaSize:= 0;
SubPoints[4].Tolerance:= 10;
SubPoints[4].X:= MainPoint.X + 7;
SubPoints[4].Y:= MainPoint.Y + 26;
SubPoints[4].Color:= GetColor(SubPoints[4].X, SubPoints[4].Y);

SubPoints[5].AreaShape:= 0;
SubPoints[5].AreaSize:= 0;
SubPoints[5].Tolerance:= 10;
SubPoints[5].X:= MainPoint.X + 15;
SubPoints[5].Y:= MainPoint.Y + 3;
SubPoints[5].Color:= GetColor(SubPoints[5].X, SubPoints[5].Y);

Result:= AddDTM(AxeDDTM);
FreeBitmap(AxeMask);
end;
end;
end;

procedure TempReport;
var XPGain, XPHour:Integer;
begin
XPGain := Players[CurrentPlayer].integers[10] - Players[CurrentPlayer].integers[5]
XPHour := Round((XPGain* 3600) / (GetTimeRunning / 1000))
WriteLn('############ Axercist Current Player Progress Report ############');
WriteLn('##### Runtime: '+TimeRunning);
WriteLn('##### Antibans done: '+InttoStr(Players[CurrentPlayer].integers[6]));
WriteLn('##### Loads gathered: '+InttoStr(Players[CurrentPlayer].integers[3]));
WriteLn('##### Logs banked: '+InttoStr(Players[CurrentPlayer].integers[7]));
WriteLn('##### Experience gained: '+InttoStr(XPGain));
WriteLn('##### Avg Experience / hour: '+InttoStr(XPHour)+' /hour');
WriteLn('#################################################################');
end;

procedure Report;
var i, Totalanti, TotalXP, TotalLogs:Integer;
begin
For i := 0 to (HowManyPlayers - 1) do
begin
Totalanti := Totalanti + Players[i].integers[6];
TotalLogs := TotalLogs + Players[i].integers[7];
TotalXP := TotalXP + (Players[i].integers[10] - Players[i].integers[5]);
end;
WriteLn('############## Axercist Final Progress Report ###################');
WriteLn('##### Runtime: '+TimeRunning);
WriteLn('##### Antibans done: '+InttoStr(Totalanti));
if (SleepTimes > 0) then
WriteLn('##### Slept: '+InttoStr(SleepTimes)+' time(s)');
if (AxesReplaced > 0) then
WriteLn('##### Axes Replaced: '+InttoStr(AxesReplaced));
WriteLn('##### Total Experience gained: '+InttoStr(TotalXP));
WriteLn('##### Total XP per hour: '+InttoStr(Round((TotalXP * 3600) / (GetTimeRunning / 1000)))+'/hour')
WriteLn('##### Total Logs chopped: '+InttoStr(TotalLogs));
For i := 0 to (HowManyPlayers - 1) do
begin
WriteLn('##### ------------------- '+Players[i].Name+' ------------------- ');
WriteLn('##### Logs banked: '+InttoStr(Players[i].integers[7]));
WriteLn('##### Experience gained: '+InttoStr(Players[i].integers[10] - Players[i].integers[5]));
if (Players[CurrentPlayer].integers[4] < Players[i].integers[9]) then
WriteLn('##### Levels gained: '+InttoStr(Players[i].integers[9] - Players[i].integers[4])+' Current level: '+InttoStr(Players[i].integers[9]));
end;
WriteLn('#################################################################');
ReportVars[0] := TotalLogs;
ReportVars[1] := TotalXP;
ReportVars[2] := AxesReplaced;
SRLRandomsReport;
end;

procedure WalkToBank;
var
x, y, Failure: integer;
begin
if not (Loggedin) then
Exit;
AntiRandoms;
AntiBan;
Status('Walking to bank..');
MakeCompass(IntToStr(RandomRange(-5, 5)));
Failure:= 0
repeat
if (RadialWalk(FindRoadColor,350,10,72,1,1)) then
begin
Flag;
Wait(1000);
if DTMRotated(DTMBank, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
WriteLn('Found Bank DTM');
Wait(1000);
Mouse(x, y, 5, 5, true);
FFlag(0);
end;
Exit;
end
else Inc(Failure);
until (Failure >= 10)
if (Failure >= 10) then
begin
WriteLn('Failed to find road color');
Status('Failed walking to bank');
logout;
end;
end;

procedure WalkToTrees;
var
Failure: integer;
begin
if not(Loggedin) then
Exit;
Status('Walking to trees..');
AntiRandoms;
AntiBan;
MakeCompass(IntToStr(RandomRange(-5, 5)));
Failure:= 0
repeat
if (RadialWalk(FindWaterColor,randomrange(215,224),randomrange(226,235),randomrange(55,65),1,-1)) then
begin
Flag;
WriteLn('Walked to trees');
Status('At Trees');
Exit;
end
else Inc(Failure);
until (Failure >= 5)
if (Failure >= 5) then
begin
Status('Failed to walk to trees');
WriteLn('Failed to walk to trees');
logout;
end;
end;

procedure ReplaceAxe;
var
x, y: Integer;
FindTP, WithdrawTP: TPoint;
begin
if not(Loggedin) then
Exit;
AntiRandoms;
AntiBan;
walkToBank;
Status('Opening bank..');
OpenBank('db',false,false);
Wait(1000);
InPin(Players[CurrentPlayer].Pin);
if(BankScreen) then
begin
Status('Depositing..');
DepositAll;
Status('Searching for axe..');
SearchBank('axe');
if FindDTM(DTMAxe,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
FindTP:= Point(x,y);
WithdrawTP:= MSTPointToBankPoint(FindTP);
Withdraw(WithdrawTP.Y,WithdrawTP.X,1);
WriteLn('Axe Replaced');
Status('Withdrew Axe');
CloseBank;
WalkToTrees;
end
else
begin
Status('Failed to find axe');
WriteLn('Failed to Find Axe! Logging out');
Logout;
Exit;
end;
if not (FindAxe) then
begin
Status('Failed to withdraw axe');
WriteLn('Failed to Withdraw Axe! Logging out');
Logout;
Exit;
end;
if (FindAxe) then
Inc(AxesReplaced);
end;
end;

procedure TreeCut;
var
uptextvar: String;
x, y, i, tempx, tempy, Clogs, T, LLogs: Integer;
TreeColor: array [0..3] of integer;
begin
TreeColor[0] := 2504497;
TreeColor[1] := 7309951;
TreeColor[2] := 2702134;
TreeColor[3] := 2242606;
AntiRandoms;
repeat
if not(Loggedin) or (InvFull) then
Exit;
for i:=0 to 3 do
begin
if not FindEnt(x,y,true) then
begin
Status('Looking for tree..');
if FindObj(x, y, 'hop', TreeColor[i], 30) then
begin
MMouse(x,y,3,3);
uptextvar:= GetUpText;
tempx:= x;
tempy:= y;
if not FindEnt(x,y,true) then
begin
Status('Chopping tree..');
case random(2) of
0: begin
Mouse(x, y, 3, 3, False);
Wait(300+random(100))
ChooseOption('hop');
end;
1: begin
Mouse(x, y, 3, 3, True);
Wait(300+random(100))
end;
end;
end;
CLogs:= CountItems(DTMLog, 'dtm', []);
MarkTime(T);
Wait(randomrange(800,1200));
repeat
if not(Loggedin) then
Exit;
AntiRandoms;
AntiBan;
if(IsChatBoxTextAnyLine('do not have an axe', 0)) then
begin
Status('Found broken axe!');
WriteLn('Found Message about missing Axe.. Replacing!');
ReplaceAxe;
end;
if (InvFull) then
Exit;
LLogs:= CLogs;
CLogs:= CountItems(DTMLog, 'dtm', []);
if(CLogs > LLogs) then
MarkTime(T);
Wait(1000);
if(TimeFromMark(T) > (RandomRange(8000,11000))) then
begin
MMouse(tempx,tempy,0,0);
Wait(100);
if not(Copy(uptextvar,1,9) = Copy(GetUpText,1,9)) then
Break;
end;
until(TimeFromMark(T) > (RandomRange(18000,21000)));
end;
end;
end;
until (InvFull)
end;

function AxeinInv: Boolean;
begin
Result:= CountItems(DTMAxe, 'dtm', []) > 0;
end;

//Tootoot222 created most of BankLogs
procedure BankLogs;

var
WillowTPA: TPointArray;
CurrentTP: TPoint;
B: TBox;
L: Integer;

begin
Status('Depositing logs..');
WillowTPA:= ItemCoordinates('inv', 'dtm', DTMLog, []);
L:= High(WillowTPA);
CurrentTP:= WillowTPA[Random(L)];
B:= InvBox(CoordsToItem(CurrentTP.X, CurrentTP.Y));
MouseBox(B.X1, B.Y1, B.X2, B.Y2, 2);
Wait(RandomRange(300, 500));
ChooseOptionMulti([IntToStr(L), 'All']);
Wait(1000);
if(not(AxeInInv)) then
DepositAll
else
Deposit(2, 28, True);
WriteLn('All done banking!');
Wait(1000);
end;

procedure BankTheWood;
begin
AntiRandoms;
AntiBan;
Status('Opening bank..');
OpenBank('db',false,false);
Wait(1000);
InPin(Players[CurrentPlayer].Pin);
if(BankScreen) then
begin
IncEx(Players[CurrentPlayer].integers[7],CountItems(DTMLog,'dtm',[]));
BankLogs;
Wait(randomrange(1000,1500));
if(BankScreen) then
CloseBank;
end;
end;

procedure Login;
begin
Status('Logging in..');
LoginPlayer;
Wait(200);
Status('Setting up player..');
AntiRandoms;
MakeCompass(IntToStr(RandomRange(-5, 5)));
SetAngle(true);
GameTab(4);
if not (FindAxe) then
begin
Status('Failed to find axe!');
WriteLn('Axe not found, logging player out again')
Logout;
Exit;
end;
Players[CurrentPlayer].integers[4] := GetSkillInfo('Woodcutting',false);
Players[CurrentPlayer].integers[5] := GetXP('Woodcutting');
Players[CurrentPlayer].integers[9] := Players[CurrentPlayer].integers[4]
Players[CurrentPlayer].integers[10] := Players[CurrentPlayer].integers[5]
SetRun(True);
end;

procedure SetupScript;
begin
ClearDebug;
WriteLn(' __ _ _ ____ ____ ___ ____ ___ ____ ');
WriteLn(' /__\ ( \/ )( ___)( _ \ / __)(_ _)/ __)(_ _)');
WriteLn(' /(__)\ ) ( )__) ) /( (__ _)(_ \__ \ )( ');
WriteLn('(__)(__)(_/\_)(____)(_)\_) \___)(____)(___/ (__) ');
WriteLn('Version 1.0 By His Royal Highness (HRH)');
setupsrl;
ScriptID := '1159';
SRLID := SRLStatsID;
SRLPassword := SRLStatsPass;
SmartSetupEx(SmartWorld, Members, True, false);
SetTargetDC(SmartGetDC);
DTMs;
Wait(500);
end;

procedure ScriptTerminate;
begin
Report;
Status('Thanks for using The Axercist');
FreeDTM(DTMLog);
FreeDTM(DTMBank);
end;

begin
setupScript;
DeclarePlayers;
Login;
WalkToTrees;
repeat
if (Players[CurrentPlayer].integers[8] < 1) then
MarkTime(Players[CurrentPlayer].integers[8]);
TreeCut;
if InvFull then
begin
WalkToBank;
BankTheWood;
Inc(Players[CurrentPlayer].integers[3])
Players[CurrentPlayer].integers[9] := GetSkillInfo('Woodcutting',false);
Players[CurrentPlayer].integers[10] := GetXP('Woodcutting');
TempReport
WalkToTrees;
end;
if (TimeFromMark(Players[CurrentPlayer].integers[8]) > (Players[CurrentPlayer].integers[0] * 60 * 1000)) then
begin
Logout;
Wait(Players[CurrentPlayer].integers[1] * 60 * 1000 + random(300000));
MarkTime(Players[CurrentPlayer].integers[8])
Inc(SleepTimes);
Login;
end;
if not (Loggedin) or (Players[CurrentPlayer].integers[3] >= Players[CurrentPlayer].integers[2]) then
begin
if (Loggedin) then
logout;
NextPlayer(false);
Login;
WalkToTrees;
end;
if (AllPlayersInactive) then
Break;
until (false)
end.

——————————————————
<!– END TEMPLATE: formanswers –>

Cazax

2009-01-27 15:06:54

Yes from me :) good standards, DDTM, RadialWalk, failsafes.

Raskolnikov

2009-01-27 15:11:00

YES!

Good standards
Dtms/DDtms
Bitmaps
Good Attitude

95/100

(you could have used a TPA for finding the tree, but FindObj works just as good ;))

Torrent of Flame

2009-01-27 15:15:52

Yes. Im glad your script is finally finished ^.^

Although I think you could use some more failsafes on your walking, like a backup plan if your walking does infact fail.

hrh

2009-01-27 15:18:40

Everyone's telling me this ToF, and im taking ti on board, it's going to be addressed (and any suggestions given by people here), before i release it to the junior WC section :)

NiCbaZ

2009-01-27 15:23:32

Good Attempt :) . I see that you know cases alltough they could of been used lots more. The standards are good , but not the best you should work on that a bit, you could of used some more statements such as the For To DO loop, that is a great loop and the While is also.


Example For While Loop With Code From Your Script:


while (Failure =< 20) do
begin
if (RadialWalk(FindRoadColor,350,10,72,1,1)) then
begin
Flag;
Wait(1000 + ranom(400)) // [B]Added Randomness Here[/B]
if DTMRotated(DTMBank, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
WriteLn('Found Bank DTM');
Wait(1000);
Mouse(x, y, 5, 5, true);
FFlag(0);
end;
Exit;
end else Inc(Failure);
end;


Just a little thing from that as well, to make your script less detectable you must make your Wait(I : LongInt); With randomness, thoughout your script you have wait(1000) IMO 1 second is to long between moving your mouse waiting and clicking.. wait(300+random(350)); would do lots better.

Anyhow moving onto the For To Do loop. I see you use the Loop Here.

repeat
if not(Loggedin) or (InvFull) then
Exit;
for i:=0 to 3 do
begin
if not FindEnt(x,y,true) then
begin
Status('Looking for tree..');
if FindObj(x, y, 'hop', TreeColor[i], 30) then
begin
MMouse(x,y,3,3);
uptextvar:= GetUpText;
tempx:= x;
tempy:= y;
if not FindEnt(x,y,true) then
begin
Status('Chopping tree..');
case random(2) of
0: begin
Mouse(x, y, 3, 3, False);
Wait(300+random(100))
ChooseOption('hop');
end;
1: begin
Mouse(x, y, 3, 3, True);
Wait(300+random(100))
end;
end;
end;
CLogs:= CountItems(DTMLog, 'dtm', []);
MarkTime(T);
Wait(randomrange(800,1200));
repeat
if not(Loggedin) then
Exit;
AntiRandoms;
AntiBan;
if(IsChatBoxTextAnyLine('do not have an axe', 0)) then
begin
Status('Found broken axe!');
WriteLn('Found Message about missing Axe.. Replacing!');
ReplaceAxe;
end;
if (InvFull) then
Exit;
LLogs:= CLogs;
CLogs:= CountItems(DTMLog, 'dtm', []);
if(CLogs > LLogs) then
MarkTime(T);
Wait(1000);
if(TimeFromMark(T) > (RandomRange(8000,11000))) then
begin
MMouse(tempx,tempy,0,0);
Wait(100);
if not(Copy(uptextvar,1,9) = Copy(GetUpText,1,9)) then
Break;
end;
until(TimeFromMark(T) > (RandomRange(18000,21000)));
end;
end;
end;
until (InvFull)

Imho this is used wrong, i would use the loop to Repeat though the colors untill it finds one color then breaks out of the loop.

And if it find the color, it will set a boolean true that you have declared, so it will know weather to continue or not in the script.

    
for i:=0 to 3 do
begin
if not FindObj(x, y, 'hop', TreeColor[i], 30) then
begin
Writeln(' Color Not Found Moving On To Next Color');
Continue;
end else
begin
Writeln(' Color Found');
Break;
Chop:= True;
end;
end;

You may not know 2 things i have used in there… that is Continue. Continue will simply jump up to the top of the loop again.

Chop:= True; You would simply declare that as a varible But not on your Global Var .. as in


Procedure 123;
var
Chop : Boolean;
begin
end;

hrh

2009-01-27 15:31:17

Well that's some thorough information, thank you very much NiCbaZ, should be helpful, for final adjustments before it goes into juniors.

Dervish

2009-01-27 15:36:41

Some failsafes in walking, like walks back to bank if somethings wrong and such would be great…


Grade : 85/100

Yes.

NiCbaZ

2009-01-27 15:41:27

From: Dr D. Dervish
Some failsafes in walking, like walks back to bank if somethings wrong and such would be great…


Grade : 85/100

Yes.


[OffTopic] Urghh no offeance or anything but could you please stop writing in colors [offtpoic].

Did i say i voted yes in my last post?

hrh

2009-01-27 15:44:26

Now now, calm down, its his own lil thing :) pretty cool i guess
and i forgot to mention THANK YOU for the yes'

100% yes so far, I wonder if I can keep it up.

Harry

2009-01-27 15:49:47

You're always on the iRC, and you seem knowledgeable about programming :3
I'd say yes.

Dervish

2009-01-27 15:51:17

From: NiCbaZ
[OffTopic] Urghh no offeance or anything but could you please stop writing in colors [offtpoic].

Did i say i voted yes in my last post?


Its to emphasize on whats good and bad ^^.

hrh

2009-01-27 15:58:52

Thanks Hy, and hopefully red and green BOTH good Dervish.. =P

Kyle Undefined

2009-01-27 15:59:32

Nice script. You defiantly show that you know SRL. Nicbaz pointed out the things that can be fixed so far. In your DeclarePlayers proc you have two sets of Players[1]. Might want to fix that. I know you have heard this alot but standards and failsafes. I love your anitban btw :) Keep up the work and good luck ;) If you ever have a question feel free to shoot me a PM or add my IM's.

Yes

~Camo

Sir R. M8gic1an

2009-01-27 16:01:36

liked the script, especially things such as replace axe and the dtm –> ddtm to detect which axe. Although i do see you had help from tootoot for that.

adding on to NicBaz's post abut walking, you might also want to consider this:


if not (RadialWalk(FindWaterColor,170, 190,72,1,1)) then
if not (RadialWalk(FindWaterColor,160, 200,72,1,1)) then
if not (RadialWalk(FindWaterColor,150 ,210,72,1,1)) then
if not FindSymbol('fish') then
begin
writeln('could not walk to willows, blind click');
Mouse(MMCX, MMCY+15, 5, 5, true);
end;

that's a nice way to walk, as Draynor is rather simple from bank -> willows, you can just use a blind click as a last failsafe. But the walking i showed you is sort of a spider web, if it doesn't do one, then it goes on to try a few others until i gets there.

also, i noticed that in your script you have:
"if (RadialWalk(FindRoadColor,350,10,72,1,1)) then" at walk to bank

the first one is the StartRadial and the Second one is the EndRadial. in theory and mathematically what you wrote is absolutely correct. but it won't work that way in SRL.

the EndRadial has to be > StartRadial otherwise RadialWalk will flip them around, meaning tht you will check a completly different part of the minimap.


Very crudely done in MS Paint, and saved as jpg(=fail) but should be enought for you to understand what i mean. Red part is what Radial Walk checks.

I think i'll vote yes.

~RM

hrh

2009-01-27 16:05:32

thanks RM for walking example, will helpme expand and improve and yes toot did help, since DDTM was new to me, (well it all was, just DDTM i just couldn't grasp by tuts) andtoot guided me through parts

MasterKill

2009-01-27 16:05:57

Yes from me, also good job with the multi-player progress report, I don't see that enough in applies! Big yes.

Quickmarch

2009-01-27 16:09:31

Yes. Nice script good standards and it looks a bit like the script i applied with. :)

Sir R. M8gic1an

2009-01-27 16:22:02

ok, found another thing:


program hey;

var x:integer;

begin
ClearDebug;
x := Random(10)+1;
writeln(IntToStr(x));

case x of
0-5: writeln('0 - 5');
6-10: writeln('6-10');
else writeln('neither');
end;
end.


4
neither
Successfully executed


it doesn't work when you use case like that;


3-8: begin
Status('Performing Antiban [3]');
HoverSkill('woodcutting', False);
GameTab(4)
end;
9-12: begin
Status('Performing Antiban [4]');
PickUpMouse;
end;
13-15: begin
Status('Performing Antiban [5]');
BoredHuman;
end;
^ that is what i am reffering t.

you need to do:
3..8
9..12
13..15

".." instead of " - " otherwise it'll just subtract it.

i voted yes, as you have a good structure, sound enthusiatic, good attitude and a fairly fine script :)

~RM

Gu3st...

2009-01-27 17:00:56

Yes! :D

Ultra

2009-01-27 17:06:02

Yes from me, but 1 thing,

var
x, y, Failure: integer;

Instead of using the Failure:Integer, use a boolean, and make the procedure into a function. Ofcourse your way works, but its better to just use a boolean.
like…
function WalkToWillows : Boolean;
begin
if … walk to the willows … then Result:=True
else Result:=False;
end;

then just use it like.. if WalkToWillows then… lalala…
You know :P.

benjaa

2009-01-27 17:08:04

voting yes, though i've never heard of this guy & he only has 48 posts
and only joined 3 months ago

Shuttleu

2009-01-27 17:22:19

yes
looks good
keep it up

~shut

Scaper

2009-01-27 21:23:22

100% Yes From me i doubt you will keep the 100% there is always 1 person who votes no gl man

The_Shermanator

2009-01-28 00:51:12

Simple YES, Congratulations.

-The_Shermanator :garfield:

Naike

2009-01-28 01:28:11

No way to simple! *Now i can destory the score ;D*

You really think i would do that? Yes.

hrh

2009-01-28 01:40:09

thanks guys for the input, and lol n1ke you silly spoil sport :) but if you feel it's a no, press no… rather a honest score than a 100% one

although would lvoe to have a 100% one :P

ZephyrsFury

2009-01-28 02:50:48

From: N1ke!
No way to simple! *Now i can destory the score ;D*

You really think i would do that? Yes.


N1ke! thats sooo old…. ;)

Anyway yes cos you tested my script… also cos you're script looks great and I like your attitude.

As RM mentioned however cases of multiple values be separated be a comma or a ".." for a range of values.

EvilChicken!

2009-01-28 03:31:05

I really do not like your object finding, ..

I really, really, really do not like your way of finding objects, atleast not in comparison to the rest of the script. It's a yes from me too, but remember that if you don't learn better ways of finding objects, you'll be stuck with making scripts only working for not-so-long periods of time.

Sir R. M8gic1an

2009-01-28 09:32:12

In!

i think tara forgot to close this… :p

~RM

P1nky

2009-01-28 10:14:26

YES oh well lets see how many yes's you can get :) lol