SRL Archive - Archive

aran armath - SRL Member Application


aran armath

2010-05-30 20:31:06

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Html, a bit of php, and of course scar/simba.


Are you a member of any other communities?
Don't think so


Tell us about yourself…
From: aran armath
I am Aaron. 19 Years old. Attended college for a semester and am a member of the Fraternity Delta Upsilon. January 18th this year, I was in a bad car accident, and ever since then I have been at home healing (see sig). Due to this accident I have started playing Runescape again and scripting.



Please show us one (or multiple) of your scripts.
 // * First Script here*\\
{Aran Armath's Normal/Willow Log Cutter and Banker
Instructions
1-Declare Players
2-Set Smart World
3-Set SRL Stats
4-Change Tree Colors If Desired
}
program Cutter;
{.Include SRL/SRL/Misc/Smart.Scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/WoodCutting.scar}
{.include \SRL\SRL\reflection\Reflection.simba}

var
LevelsGainedTotal,Level,UpdateLevel,Willows,Normals,WillowLogs,NormalLogs,TotalLoadsDone,LoadsDone,Loads,x,y:integer;
Willow,Trees,Wielded:Boolean;

const
//Tree Color's
NormalColor = 4620403;
NormalTol = 12;
WillowColor = 2836301;
WillowTol = 5;
//Smart Stuff
SmartWorld = 15; // Which World/Server do you want to use?
SmartMembers = False; // Is it a Members World?
SmartSigned = true; // Signed/UnSigned Client?
SmartSuperDetail = False; // Use Super Detail?
//SRL Stat's
YourStatsUserID = ''; //User UID from scriptmanager.freehostia.com
YourStatsPass = ''; //Your pass from scriptmanager.

procedure DeclarePlayers;
begin
HowManyPlayers := 6;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := ''; // Your RuneScape Account Name
Pass := ''; // Your RuneScape Account Password
Nick := ''; // 3 - 4 Letters of Your Account Name
Pin := ''; // Pin
Active := True; // Use in the Script. True / False.
Loads := 5000; // Number of loads to do
Booleans[0] := true; // Cut trees?
Booleans[1] := True; // Cut willows?
Booleans[2] := False; //Axe wielded true or false
end;

with Players[1] do
begin
Name := ''; // Your RuneScape Account Name
Pass := ''; // Your RuneScape Account Password
Nick := ''; // 3 - 4 Letters of Your Account Name
Pin := ''; // Pin
Active := True; // Use in the Script. True / False.
Loads := 5000; // Number of loads to do
Booleans[0] := true; // Cut trees?
Booleans[1] := True; // Cut willows?
Booleans[2] := False; //Axe wielded true or false
end;
end;
const
Stats_Link = 'http://scriptmanager.freehostia.com/submit.php';

var
Stats_UserID, Stats_Password, Stats_ScriptID: string;
Stats_LastTime: Integer;

Stats_CustomVars: array [1..20] of Integer;

procedure Stats_CheckOutput(s: string);
var
i: Integer;
sa: TStringArray;
begin
sa := Explode(#10, s);
for i := 0 to High(sa) do
if (Trim(sa[i]) <> '') then
if StartsWith('ERROR(1)', sa[i]) then
begin
WriteLn('STATS: "' + sa[i] + '"');
Stats_UserID := '';
Stats_Password := '';
end
else if StartsWith('ERROR(2)', sa[i]) then
begin
WriteLn('STATS: "' + sa[i] + '"');
Stats_ScriptID := '';
end
else
WriteLn('STATS: "' + sa[i] + '"');

end;

function Stats_GetScriptInfo(out Version, News, Link: string; out OutDated: Boolean; out LastUpdate_HoursAgo: Integer): Boolean;
var
Client: Integer;
s: string;
sa: TStringArray;
begin
Result := False;
if (Stats_ScriptID = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'getinfo');
AddPostVariable (Client, 'sID', Stats_ScriptID);

s := PostHTTPPageEx(Client, Stats_Link);
sa := Explode(#10'GLUE'#10, s);
if (Length(sa) = 5) then
begin
Result := True;
Version := sa[0];
News := sa[1];
Link := sa[2];
OutDated := sa[3] = '1';
LastUpdate_HoursAgo := StrToIntDef(sa[4], -1);
end
else
Stats_CheckOutput(s);

FreeHTTPClient(Client );
end;

var
Stats_GlobalVars: array[1..24] of Integer;

procedure Stats_SendReport;
var
i, Client, Time: Integer;
s: string;
begin
if (Stats_UserID = '') and (Stats_Password = '') and (Stats_ScriptID = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'submit');

Time := (GetTimeRunning - Stats_LastTime) div 1000 div 60;
if (Time < 5) then
Time := 0
else
Stats_LastTime := GetTimeRunning;
AddPostVariable(Client, 'sTime', IntToStr(Time));

if (Stats_UserID <> '') and (Stats_Password <> '') then
begin
AddPostVariable(Client, 'uID', Stats_UserID);
AddPostVariable(Client, 'uPass', Stats_Password);
end
else
begin
AddPostVariable(Client, 'uID', '-1');
AddPostVariable(Client, 'uPass', '');
end;

if (Stats_ScriptID <> '') then
begin
AddPostVariable (Client, 'sID', Stats_ScriptID);

for i := Low(Stats_CustomVars) to High(Stats_CustomVars) do
begin
AddPostVariable(Client, 'rndCustom' + IntToStr(i), IntToStr(Stats_CustomVars[i]));
Stats_CustomVars[i] := 0;
end;
end
else
begin
AddPostVariable (Client, 'sID', '-1');
end;

for i := Low(Stats_GlobalVars) to High(Stats_GlobalVars) do
begin
case i of
1: s := IntToStr(SRL_Logs - Stats_GlobalVars[i]);
2: s := IntToStr(Banks - Stats_GlobalVars[i]);
3: s := IntToStr(RandSolved[rand_Death] - Stats_GlobalVars[i]);
else if ((i - 3) < Length(RandSolved) - 1 {for Death}) then
s := IntToStr(RandSolved[i - 3] - Stats_GlobalVars[i]);
end;
AddPostVariable(Client, 'rndGlobal' + IntToStr(i), s);
Stats_GlobalVars[i] := Stats_GlobalVars[i] + StrToInt(s);
end;

s := PostHTTPPageEx(Client, Stats_Link);
Stats_CheckOutput(s);
FreeHTTPClient(Client);

if (SRL_Procs[srl_OnSendStats] <> nil) then
SRL_Procs[srl_OnSendStats]();
end;

procedure Stats_SendAccountInfo;
var
i, Client: Integer;
Accounts: TStringArray;
begin
if (Stats_UserID = '') and (Stats_Password = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'setaccounts');
AddPostVariable(Client, 'uID', Stats_UserID);
AddPostVariable(Client, 'uPass', Stats_Password);
if (Stats_ScriptID <> '') then
AddPostVariable (Client, 'sID', Stats_ScriptID)
else
AddPostVariable (Client, 'sID', '-1');

SetLength(Accounts, HowManyPlayers);
for i := 0 to HowManyPlayers - 1 do
Accounts[i] := Implode('.|€stat€|.', [Players[i].Name, Players[i].Loc, IntToStr(Integer(Players[i].Active))]);

AddPostVariable(Client, 'accInfo', Implode(#10'ACC'#10, Accounts));
Stats_CheckOutput(PostHTTPPageEx(Client, Stats_Link));
FreeHTTPClient(Client);
end;

procedure Stats_ManageAccounts;
var
i, ii, Client: Integer;
s: string;
Accounts, Stats: TStringArray;
begin
if (Stats_UserID = '') and (Stats_Password = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'getaccounts');
AddPostVariable(Client, 'uPass', Stats_Password);
AddPostVariable(Client, 'uID', Stats_UserID);

s := PostHTTPPageEx(Client, Stats_Link);
Accounts := Explode(#10'ACC'#10, s);
for i := 0 to High(Accounts) do
begin
Stats := Explode('.|€stat€|.', Accounts[i]);
if (Length(Stats) = 3) then
begin
for ii := 0 to HowManyPlayers - 1 do
if (LowerCase(Players[ii].Name) = LowerCase(Stats[0])) then
begin
Players[ii].Loc := Stats[1];
Players[ii].Active := Stats[2] = '1';
Break;
end;
end
else
begin
Stats_CheckOutput(s);
Break;
end;
end;

FreeHTTPClient(Client);
stats_SendAccountInfo;
end;

procedure SetupSmart;
begin
Smart_Server := SmartWorld;
Smart_Members := SmartMembers;
Smart_Signed := SmartSigned;
Smart_SuperDetail := SmartSuperDetail;
end;

function LoadPath: TPointArray; //this is the walking path, both ways
begin
SetLength(Result, 3);
Result[0] := Point(3096, 3497);
Result[1] := Point(3106, 3496);
Result[2] := Point(3116, 3500);
end;

procedure AntiBan;
begin
case Random(50) of
0: RandomRClick;
1: PickUpMouse;
2: RandomMovement;
3: BoredHuman;
4: HoverSkill('Woodcutting', False);
5..20: Wait(Random(3000));
end;
end;

procedure CheckedLoggedIn;
begin
if not loggedin then
begin
LogInPlayer;
end;
if (LobbyScreen = True) then
begin
LoginPlayer;
end;
FindNormalRandoms;
end;

procedure Report;
begin
ClearDebug;
AddToReport('Aran Armaths Normal Log Banker');
AddToReport('Time Running ' + TimeRunning);
AddToReport('Total Loads Done ' + inttostr(TotalLoadsDone));
AddToReport('Normal Logs Banked ' + inttostr(NormalLogs));
AddToReport('Willow Logs Banked ' + inttostr(WillowLogs));
AddToReport('Total Levels Gained ' + inttostr(LevelsGainedTotal));
AddToReport('Total Exp ' + FloatToStr(NormalLogs*25+WillowLogs*67.5));
AddToReport('Current Player ' + Players[CurrentPlayer].Name);
AddToReport('Woodcutting Level ' + inttostr(GetSkillLevel('Woodcutting')));
AddToReport('Wc Levels Gained ' + inttostr(UpdateLevel-Level));
AddToReport('Loads Banked ' + inttostr(LoadsDone));
AddToReport('Inventory Count ' + inttostr(InvCount));
SRLRandomsReport;
Stats_SendReport;
Stats_ManageAccounts;
end;

Procedure ChopTrees;
var
w,i:Integer;
begin
CheckedLoggedIn;
if (Players[CurrentPlayer].Booleans[0] = True) then
begin
if FindObj(x,y,'Tree',NormalColor,NormalTol) then
begin
Mouse(x,y,5,5,False);
WaitOption('hop',1000)
FFlag(2);
W := 0;
i := InvCount;
repeat
begin
if (IsIdle = True) then
begin
w := 3;
end;
end;
until(w >= 3)
end else
begin
AntiBan;
end;
end;
end;

Procedure ChopWillows;
begin
CheckedLoggedIn;
if (Players[CurrentPlayer].Booleans[1] = True) then
begin
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
Mouse(x,y,5,5,False);
CheckedLoggedIn;
WaitOption('hop',1000);
Flag;
Wait(5000+random(2000))
repeat
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
if (InvFull = true) then
begin
Break;
end;
CheckedLoggedIn;
Wait(random(2000))
mouse(x,y,5,5,False);
WaitOption('hop',1000);
end else
begin
Break;
end;
until(False)
end else
begin
AntiBan;
end;
end;
end;

procedure Chopping;
var
ChopTreeTimer:Integer;
begin
MarkTime(ChopTreeTimer);
repeat
Wait(1000) //So report doesn't flash when no tree's
CheckedLoggedIn;
Report;
ChopTrees;
ChopWillows;
CheckedLoggedIn;
if (TimeFromMark(ChopTreeTimer) > 600000) then
begin
CheckedLoggedIn;
if FindSymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
FFlag(2);
RunAway('E',True,2,0);
MarkTime(ChopTreeTimer);
end else
begin
Players[CurrentPlayer].Active := False;
LogOut;
Exit;
end;
end;
until(InvFull = true)
end;

procedure NormalWalk;
var
I:integer;
TPA:TPointArray;
begin
CheckedLoggedIn;
SetRun(True);
begin
TPA := LoadPath;
for i := 1 to high(TPA) do
begin
WalkToTile(PointToTile(TPA[i].x, TPA[i].y), 1, 0);
end;
end;
end;


procedure NormalBank;
var
I:integer;
TPA:TPointArray;
begin
CheckedLoggedIn;
SetRun(True);
begin
TPA := LoadPath;
InvertTPA(TPA)
for i := 1 to high(TPA) do
begin
WalkToTile(PointToTile(TPA[i].x, TPA[i].y), 1, 0);
end;
end;
end;

procedure CheckIfInBank;
begin
CheckedLoggedIn;
if (not FindSymbol(x,y,'Bank')) then
begin
if Findsymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
Flag;
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
RunAway('W',True,2,0);
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
Writeln('Player Lost Trying To Bank :(')
LogOut;
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
if (not FindColor(x,y,791125,MSX1,MSY1,MSX2,MSY2)) then
begin
if (not FindSymbol(x,y,'Bank')) then
begin
if Findsymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
Flag;
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
RunAway('W',True,2,0);
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
Writeln('Player Lost Trying To Bank :(')
LogOut;
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
end;
end;

procedure BankLogs;
begin
CheckIfInBank;
MakeCompass('S');
OpenBankNpc;
if (PinScreen = true) then
begin
InPin(Players[CurrentPlayer].Pin);
end;
if (BankScreen = true) then
begin
WillowLogs := WillowLogs + CountItems('Color',1325377,[3]);
NormalLogs := NormalLogs + CountItems('Color',2639195,[3]);
Willows := CountItems('Color',1325377,[3]);
Normals := CountItems('Color',2639195,[3]);
Stats_CustomVars[1] := Normals;
Stats_CustomVars[2] := Willows;
Stats_CustomVars[3] := Normals*(25) + Willows*(135/2);
if (Players[CurrentPlayer].Booleans[2] = True) then
begin
Deposit(1,28,true)
end else
begin
Deposit(2,28,True)
end;
CloseBank;
Inc(Banks);
Inc(LoadsDone);
Inc(TotalLoadsDone);
end;
if (InvFull = True) then
begin
if FindSymbol(x,y,'Bank') then
Mouse(x,y,2,2,true);
Flag;
BankLogs;
end;
Report;
end;

procedure CompassNorth;
var
North:Integer;
begin
North := 355+Random(10);
MakeCompass(North);
SetAngle(True);
end;

begin
SetupSmart;
SetUpSRL;
DeclarePlayers;
TotalLoadsDone := 0;
Stats_ScriptID := '53'; //SCRIPT ID # HERE!
Stats_UserID := YourStatsUserID;
Stats_Password := YourStatsPass;
repeat
LoginPlayer;
if (SRL_Logs < 1) then
begin
SRL_Logs := 1;
end;
Level := GetSkillLevel('Woodcutting');
LoadsDone := 0;
repeat
CompassNorth;
CheckedLoggedIn;
NormalWalk;
Chopping;
NormalBank;
BankLogs;
UpdateLevel := GetSkillLevel('Woodcutting');
LevelsGainedTotal := LevelsGainedTotal + (UpdateLevel-Level);
if not LoggedIn then
begin
Break;
end;
until(Loads = LoadsDone)
NextPlayer(Players[CurrentPlayer].Active);
until(AllPlayersInactive);
end.
 // * Second Script here *\\
program Superheater;
{.include SRL/SRL/Misc/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/Magic.scar}


var
i,x,y,Bars:integer;

const
SmartWorld = 15; // Which World/Server do you want to use?
SmartMembers = False; // Is it a Members World?
SmartSigned = True; // Signed/UnSigned Client?
SmartSuperDetail = False; // Use Super Detail?
YourStatsUserID = ''; //User UID from scriptmanager.freehostia.com
YourStatsPass = ''; //Your pass from scriptmanager.

Procedure DeclarePlayers;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active := True;
end;

//By nielsie95

const
Stats_Link = 'http://scriptmanager.freehostia.com/submit.php';

var
Stats_UserID, Stats_Password, Stats_ScriptID: string;
Stats_LastTime: Integer;

Stats_CustomVars: array [1..20] of Integer;

procedure Stats_CheckOutput(s: string);
var
i: Integer;
sa: TStringArray;
begin
sa := Explode(#10, s);
for i := 0 to High(sa) do
if (Trim(sa[i]) <> '') then
if StartsWith('ERROR(1)', sa[i]) then
begin
WriteLn('STATS: "' + sa[i] + '"');
Stats_UserID := '';
Stats_Password := '';
end
else if StartsWith('ERROR(2)', sa[i]) then
begin
WriteLn('STATS: "' + sa[i] + '"');
Stats_ScriptID := '';
end
else
WriteLn('STATS: "' + sa[i] + '"');

end;

function Stats_GetScriptInfo(out Version, News, Link: string; out OutDated: Boolean; out LastUpdate_HoursAgo: Integer): Boolean;
var
Client: Integer;
s: string;
sa: TStringArray;
begin
Result := False;
if (Stats_ScriptID = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'getinfo');
AddPostVariable (Client, 'sID', Stats_ScriptID);

s := PostHTTPPageEx(Client, Stats_Link);
sa := Explode(#10'GLUE'#10, s);
if (Length(sa) = 5) then
begin
Result := True;
Version := sa[0];
News := sa[1];
Link := sa[2];
OutDated := sa[3] = '1';
LastUpdate_HoursAgo := StrToIntDef(sa[4], -1);
end
else
Stats_CheckOutput(s);

FreeHTTPClient(Client );
end;

var
Stats_GlobalVars: array[1..24] of Integer;

procedure Stats_SendReport;
var
i, Client, Time: Integer;
s: string;
begin
if (Stats_UserID = '') and (Stats_Password = '') and (Stats_ScriptID = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'submit');

Time := (GetTimeRunning - Stats_LastTime) div 1000 div 60;
if (Time < 5) then
Time := 0
else
Stats_LastTime := GetTimeRunning;
AddPostVariable(Client, 'sTime', IntToStr(Time));

if (Stats_UserID <> '') and (Stats_Password <> '') then
begin
AddPostVariable(Client, 'uID', Stats_UserID);
AddPostVariable(Client, 'uPass', Stats_Password);
end
else
begin
AddPostVariable(Client, 'uID', '-1');
AddPostVariable(Client, 'uPass', '');
end;

if (Stats_ScriptID <> '') then
begin
AddPostVariable (Client, 'sID', Stats_ScriptID);

for i := Low(Stats_CustomVars) to High(Stats_CustomVars) do
begin
AddPostVariable(Client, 'rndCustom' + IntToStr(i), IntToStr(Stats_CustomVars[i]));
Stats_CustomVars[i] := 0;
end;
end
else
begin
AddPostVariable (Client, 'sID', '-1');
end;

for i := Low(Stats_GlobalVars) to High(Stats_GlobalVars) do
begin
case i of
1: s := IntToStr(SRL_Logs - Stats_GlobalVars[i]);
2: s := IntToStr(Banks - Stats_GlobalVars[i]);
3: s := IntToStr(RandSolved[rand_Death] - Stats_GlobalVars[i]);
else if ((i - 3) < Length(RandSolved) - 1 {for Death}) then
s := IntToStr(RandSolved[i - 3] - Stats_GlobalVars[i]);
end;
AddPostVariable(Client, 'rndGlobal' + IntToStr(i), s);
Stats_GlobalVars[i] := Stats_GlobalVars[i] + StrToInt(s);
end;

s := PostHTTPPageEx(Client, Stats_Link);
Stats_CheckOutput(s);
FreeHTTPClient(Client);

if (SRL_Procs[srl_OnSendStats] <> nil) then
SRL_Procs[srl_OnSendStats]();
end;

procedure Stats_SendAccountInfo;
var
i, Client: Integer;
Accounts: TStringArray;
begin
if (Stats_UserID = '') and (Stats_Password = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'setaccounts');
AddPostVariable(Client, 'uID', Stats_UserID);
AddPostVariable(Client, 'uPass', Stats_Password);
if (Stats_ScriptID <> '') then
AddPostVariable (Client, 'sID', Stats_ScriptID)
else
AddPostVariable (Client, 'sID', '-1');

SetLength(Accounts, HowManyPlayers);
for i := 0 to HowManyPlayers - 1 do
Accounts[i] := Implode('.|€stat€|.', [Players[i].Name, Players[i].Loc, IntToStr(Integer(Players[i].Active))]);

AddPostVariable(Client, 'accInfo', Implode(#10'ACC'#10, Accounts));
Stats_CheckOutput(PostHTTPPageEx(Client, Stats_Link));
FreeHTTPClient(Client);
end;

procedure Stats_ManageAccounts;
var
i, ii, Client: Integer;
s: string;
Accounts, Stats: TStringArray;
begin
if (Stats_UserID = '') and (Stats_Password = '') then
Exit;

Client := InitializeHTTPClient(False, False);
ClearPostData(Client);
AddPostVariable(Client, 'do', 'getaccounts');
AddPostVariable(Client, 'uPass', Stats_Password);
AddPostVariable(Client, 'uID', Stats_UserID);

s := PostHTTPPageEx(Client, Stats_Link);
Accounts := Explode(#10'ACC'#10, s);
for i := 0 to High(Accounts) do
begin
Stats := Explode('.|€stat€|.', Accounts[i]);
if (Length(Stats) = 3) then
begin
for ii := 0 to HowManyPlayers - 1 do
if (LowerCase(Players[ii].Name) = LowerCase(Stats[0])) then
begin
Players[ii].Loc := Stats[1];
Players[ii].Active := Stats[2] = '1';
Break;
end;
end
else
begin
Stats_CheckOutput(s);
Break;
end;
end;

FreeHTTPClient(Client);
stats_SendAccountInfo;
end;

procedure setmousespeed;
begin
mousespeed := 7+random(3);
end;

procedure spell;
begin
i := 0
repeat
wait(600+random(250))
Mouse(614,318,11,7,true); //origonal
wait(750+random(600))
Mouse(694,431,22,23,true); //origonal
i := 1 + i;
Bars := Bars + 1;
until(i = 9)
Stats_CustomVars[1] := Stats_CustomVars[1] + 9;
Stats_CustomVars[5] := Stats_CustomVars[5] + 9*(35/2);
Stats_CustomVars[6] := Stats_CustomVars[6] + 9*(53);
end;

procedure magictab;
begin
GetCurrentTab;
While (GetCurrentTab <> Tab_Magic) do
begin
GameTab(Tab_Magic);
end;
spell;
end;

procedure deposit1;
begin
Deposit(2,28,true)
wait(300+random(500))
end;

procedure withdrawores;
begin
withdraw(0,0,18);
wait(300+random(500))
withdraw(1,0,18);
wait(300+random(500))
end;

procedure bankopen;
begin
while (BankScreen = False) do
begin
OpenBankNpc;
while (PinScreen = true) do
begin
InPin('');
end;
end;
deposit1;
withdrawores;
while (BankScreen = true) do
begin
CloseBank;
end;
Inc(Banks);
end;

procedure Report;
var S, M, H: integer;
begin
ClearDebug;
Writeln('Aaran Armath''s Superheater');
ConvertTime(GetTimeRunning, H, M, S);
Writeln('Time ran: ' + IntToStr(H) + ':' + IntToStr(M) + ':' + IntToStr(S));
Writeln('Steel bars made: ' + IntToStr(Bars));
Writeln('Smithing XP gained: ' + IntToStr(Bars*(35/2)));
Writeln('Magic XP gained: ' + IntToStr(Bars*53));
SRLRandomsReport;
Stats_SendReport;
Stats_ManageAccounts;
end;

procedure Setupsrl1;
begin
SetUpSRL;
DeclarePlayers;
Stats_ScriptID := '49'; //SCRIPT ID # HERE!
Stats_UserID := YourStatsUserID;
Stats_Password := YourStatsPass;
end;

begin
Bars := 0
Smart_Server := SmartWorld;
Smart_Members := SmartMembers;
Smart_Signed := SmartSigned;
Smart_SuperDetail := SmartSuperDetail;
Setupsrl1;
wait(15000)
LoginPlayer;
if (SRL_Logs < 1) then
SRL_Logs := 1;
setmousespeed;
repeat
bankopen;
magictab;
report;
until(false)
end.

Daniel

2010-05-31 03:11:01

Yes, to both of them.

Next time, you can just do something like:
[scar] // * First Script here*\\
[scar] // * Second Script here *\\

to separate your scripts, less confusion on our end :)

aran armath

2010-05-31 03:21:22

[QUOTE=Dan's The Man;713753]Yes, to both of them.

Next time, you can just do something like:
[scar[url=""][/url]] // * First Script here*\\[/scar]
[scar[url=""][/url]] // * Second Script here *\\[/scar]

to separate your scripts, less confusion on our end :)[/QUOTE]

Well the application only had one box for the scripts and it wouldn't let me add attachments because "I didn't have permission". Ill fix that real quick. Thank you btw.

marpis

2010-05-31 03:58:31

No, sorry.

[QUOTE=Dan's The Man;713753]Yes, to both of them.

Next time, you can just do something like:
[scar[url=""][/url]] // * First Script here*\\[/scar]
[scar[url=""][/url]] // * Second Script here *\\[/scar]

to separate your scripts, less confusion on our end :)[/QUOTE]
I understand that some might see the first script (wc) worthy of Members, but honestly why on earth do you think that the magic script is sufficient for Members? I suggest you read again the skill suggestions for members.


[COLOR="Orange"]SRL Member[/COLOR] should know a bit of the following things:
[list]
[*]Understanding TPointArrays and T2DPointArrays, and knowing how to take advantage of them
[*]Map walking with color, like using trigonometry, dynamic DTMs, autocoloring functions, [I]proper[/I] use of radialwalks
[*]Arrays in general
[*]Memorymanagement, using local variables
[*]Scripting standards
[/list]

I am sorry but your scripts don't show much knowledge of these.

Wrong nesting and parenthesis:

if not loggedin then
begin
LogInPlayer;
end;
Correct nesting and parenthesis:

if not LoggedIn then
LoginPlayer;
// or
if not LoggedIn then LoginPlayer;
// or
if (not LoggedIn) then ...


if (x = true) then
// should be
if (x) then

Reading functions with parameters in your scripts is hard because you don't use spaces.

FindObj(x,y,'Tree',NormalColor,NormalTol)
should be

FindObj(x, y, 'Tree', NormalColor, NormalTol)
And you should show us that you can make your own FindObj using TPAs. There's nothing wrong in using FindObj, but you should show us that you are capable of doing it yourself.
Besides, you're using FindObj a bit wrong. The function stores the cordinates at which the tree was found to x, y, and when found, the mouse is already hovering the object. If you call

if FindObj(x,y,'Tree',NormalColor,NormalTol) then
begin
Mouse(x,y,5,5,False);
you make the mouse do wierd small movement before the click, because of the randomness. You should use it like this:

if FindObj(x, y, 'Tree', NormalColor, NormalTol) then
begin
Mouse(x, y, 0, 0, False);

In ChopTrees you aren't using variable "i" after calling InvCount.
Also, this loop is kinda ugly and not very practical

repeat
begin
if (IsIdle = True) then
begin
w := 3;
end;
end;
until(w >= 3)
You could do it like this:

while (not IsIdle) do
begin
SomeAntibanMaybe;
FindNormalRandoms;
end;


Also you should learn to use parameters in your functions.
Instead of having a different functions for trees and willows, you should have a parameter that defines which you want to chop.

function ChopChop(WhatTree: string): boolean;
var
MyTreeColor: integer;
begin
case lowercase(WhatTree) of
'tree': MyTreeColor := 123123;
'willow': MyTreeColor := 456456;
end;
...
...
end;


TO-DO-LIST:
  • TPA/ATPA
  • Better colorwalking (TPA, Radialwalks, DDTM)
  • Standards and nestings

Gu3st...

2010-05-31 05:23:20

I took away the stats so people can compare them.
Don't get me wrong, including srl stats to your script is a plus, but you didn't write any of the procedures and stuff, so I removed them so people can see what you have written

First script without stats:
// * Second Script here *\\
program Superheater;
{.include SRL/SRL/Misc/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/Magic.scar}


var
i,x,y,Bars:integer;

const
SmartWorld = 15; // Which World/Server do you want to use?
SmartMembers = False; // Is it a Members World?
SmartSigned = True; // Signed/UnSigned Client?
SmartSuperDetail = False; // Use Super Detail?

Procedure DeclarePlayers;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active := True;
end;

procedure setmousespeed;
begin
mousespeed := 7+random(3);
end;

procedure spell;
begin
i := 0
repeat
wait(600+random(250))
Mouse(614,318,11,7,true); //origonal
wait(750+random(600))
Mouse(694,431,22,23,true); //origonal
i := 1 + i;
Bars := Bars + 1;
until(i = 9)
end;

procedure magictab;
begin
GetCurrentTab;
While (GetCurrentTab <> Tab_Magic) do
begin
GameTab(Tab_Magic);
end;
spell;
end;

procedure deposit1;
begin
Deposit(2,28,true)
wait(300+random(500))
end;

procedure withdrawores;
begin
withdraw(0,0,18);
wait(300+random(500))
withdraw(1,0,18);
wait(300+random(500))
end;

procedure bankopen;
begin
while (BankScreen = False) do
begin
OpenBankNpc;
while (PinScreen = true) do
begin
InPin('');
end;
end;
deposit1;
withdrawores;
while (BankScreen = true) do
begin
CloseBank;
end;
Inc(Banks);
end;

procedure Report;
var S, M, H: integer;
begin
ClearDebug;
Writeln('Aaran Armath''s Superheater');
ConvertTime(GetTimeRunning, H, M, S);
Writeln('Time ran: ' + IntToStr(H) + ':' + IntToStr(M) + ':' + IntToStr(S));
Writeln('Steel bars made: ' + IntToStr(Bars));
Writeln('Smithing XP gained: ' + IntToStr(Bars*(35/2)));
Writeln('Magic XP gained: ' + IntToStr(Bars*53));
SRLRandomsReport;
end;

procedure Setupsrl1;
begin
SetUpSRL;
DeclarePlayers;
end;

begin
Bars := 0
Smart_Server := SmartWorld;
Smart_Members := SmartMembers;
Smart_Signed := SmartSigned;
Smart_SuperDetail := SmartSuperDetail;
Setupsrl1;
wait(15000)
LoginPlayer;
setmousespeed;
repeat
bankopen;
magictab;
report;
until(false)
end.

Second script without stats:
// * First Script here*\\
{Aran Armath's Normal/Willow Log Cutter and Banker
Instructions
1-Declare Players
2-Set Smart World
3-Set SRL Stats
4-Change Tree Colors If Desired
}
program Cutter;
{.Include SRL/SRL/Misc/Smart.Scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/WoodCutting.scar}
{.include \SRL\SRL\reflection\Reflection.simba}

var
LevelsGainedTotal,Level,UpdateLevel,Willows,Normals,WillowLogs,NormalLogs,TotalLoadsDone,LoadsDone,Loads,x,y:integer;
Willow,Trees,Wielded:Boolean;

const
//Tree Color's
NormalColor = 4620403;
NormalTol = 12;
WillowColor = 2836301;
WillowTol = 5;
//Smart Stuff
SmartWorld = 15; // Which World/Server do you want to use?
SmartMembers = False; // Is it a Members World?
SmartSigned = true; // Signed/UnSigned Client?
SmartSuperDetail = False; // Use Super Detail?

procedure DeclarePlayers;
begin
HowManyPlayers := 6;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

with Players[0] do
begin
Name := ''; // Your RuneScape Account Name
Pass := ''; // Your RuneScape Account Password
Nick := ''; // 3 - 4 Letters of Your Account Name
Pin := ''; // Pin
Active := True; // Use in the Script. True / False.
Loads := 5000; // Number of loads to do
Booleans[0] := true; // Cut trees?
Booleans[1] := True; // Cut willows?
Booleans[2] := False; //Axe wielded true or false
end;

with Players[1] do
begin
Name := ''; // Your RuneScape Account Name
Pass := ''; // Your RuneScape Account Password
Nick := ''; // 3 - 4 Letters of Your Account Name
Pin := ''; // Pin
Active := True; // Use in the Script. True / False.
Loads := 5000; // Number of loads to do
Booleans[0] := true; // Cut trees?
Booleans[1] := True; // Cut willows?
Booleans[2] := False; //Axe wielded true or false
end;
end;

procedure SetupSmart;
begin
Smart_Server := SmartWorld;
Smart_Members := SmartMembers;
Smart_Signed := SmartSigned;
Smart_SuperDetail := SmartSuperDetail;
end;

function LoadPath: TPointArray; //this is the walking path, both ways
begin
SetLength(Result, 3);
Result[0] := Point(3096, 3497);
Result[1] := Point(3106, 3496);
Result[2] := Point(3116, 3500);
end;

procedure AntiBan;
begin
case Random(50) of
0: RandomRClick;
1: PickUpMouse;
2: RandomMovement;
3: BoredHuman;
4: HoverSkill('Woodcutting', False);
5..20: Wait(Random(3000));
end;
end;

procedure CheckedLoggedIn;
begin
if not loggedin then
begin
LogInPlayer;
end;
if (LobbyScreen = True) then
begin
LoginPlayer;
end;
FindNormalRandoms;
end;

procedure Report;
begin
ClearDebug;
AddToReport('Aran Armaths Normal Log Banker');
AddToReport('Time Running ' + TimeRunning);
AddToReport('Total Loads Done ' + inttostr(TotalLoadsDone));
AddToReport('Normal Logs Banked ' + inttostr(NormalLogs));
AddToReport('Willow Logs Banked ' + inttostr(WillowLogs));
AddToReport('Total Levels Gained ' + inttostr(LevelsGainedTotal));
AddToReport('Total Exp ' + FloatToStr(NormalLogs*25+WillowLogs*67.5));
AddToReport('Current Player ' + Players[CurrentPlayer].Name);
AddToReport('Woodcutting Level ' + inttostr(GetSkillLevel('Woodcutting')));
AddToReport('Wc Levels Gained ' + inttostr(UpdateLevel-Level));
AddToReport('Loads Banked ' + inttostr(LoadsDone));
AddToReport('Inventory Count ' + inttostr(InvCount));
SRLRandomsReport;
end;

Procedure ChopTrees;
var
w,i:Integer;
begin
CheckedLoggedIn;
if (Players[CurrentPlayer].Booleans[0] = True) then
begin
if FindObj(x,y,'Tree',NormalColor,NormalTol) then
begin
Mouse(x,y,5,5,False);
WaitOption('hop',1000)
FFlag(2);
W := 0;
i := InvCount;
repeat
begin
if (IsIdle = True) then
begin
w := 3;
end;
end;
until(w >= 3)
end else
begin
AntiBan;
end;
end;
end;

Procedure ChopWillows;
begin
CheckedLoggedIn;
if (Players[CurrentPlayer].Booleans[1] = True) then
begin
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
Mouse(x,y,5,5,False);
CheckedLoggedIn;
WaitOption('hop',1000);
Flag;
Wait(5000+random(2000))
repeat
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
if (InvFull = true) then
begin
Break;
end;
CheckedLoggedIn;
Wait(random(2000))
mouse(x,y,5,5,False);
WaitOption('hop',1000);
end else
begin
Break;
end;
until(False)
end else
begin
AntiBan;
end;
end;
end;

procedure Chopping;
var
ChopTreeTimer:Integer;
begin
MarkTime(ChopTreeTimer);
repeat
Wait(1000) //So report doesn't flash when no tree's
CheckedLoggedIn;
Report;
ChopTrees;
ChopWillows;
CheckedLoggedIn;
if (TimeFromMark(ChopTreeTimer) > 600000) then
begin
CheckedLoggedIn;
if FindSymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
FFlag(2);
RunAway('E',True,2,0);
MarkTime(ChopTreeTimer);
end else
begin
Players[CurrentPlayer].Active := False;
LogOut;
Exit;
end;
end;
until(InvFull = true)
end;

procedure NormalWalk;
var
I:integer;
TPA:TPointArray;
begin
CheckedLoggedIn;
SetRun(True);
begin
TPA := LoadPath;
for i := 1 to high(TPA) do
begin
WalkToTile(PointToTile(TPA[i].x, TPA[i].y), 1, 0);
end;
end;
end;


procedure NormalBank;
var
I:integer;
TPA:TPointArray;
begin
CheckedLoggedIn;
SetRun(True);
begin
TPA := LoadPath;
InvertTPA(TPA)
for i := 1 to high(TPA) do
begin
WalkToTile(PointToTile(TPA[i].x, TPA[i].y), 1, 0);
end;
end;
end;

procedure CheckIfInBank;
begin
CheckedLoggedIn;
if (not FindSymbol(x,y,'Bank')) then
begin
if Findsymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
Flag;
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
RunAway('W',True,2,0);
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
Writeln('Player Lost Trying To Bank :(')
LogOut;
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
if (not FindColor(x,y,791125,MSX1,MSY1,MSX2,MSY2)) then
begin
if (not FindSymbol(x,y,'Bank')) then
begin
if Findsymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
Flag;
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
RunAway('W',True,2,0);
if FindSymbol(x,y,'Bank') then
begin
Mouse(x,y,3,3,true);
Flag;
end else
begin
Writeln('Player Lost Trying To Bank :(')
LogOut;
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
end;
end;

procedure BankLogs;
begin
CheckIfInBank;
MakeCompass('S');
OpenBankNpc;
if (PinScreen = true) then
begin
InPin(Players[CurrentPlayer].Pin);
end;
if (BankScreen = true) then
begin
WillowLogs := WillowLogs + CountItems('Color',1325377,[3]);
NormalLogs := NormalLogs + CountItems('Color',2639195,[3]);
Willows := CountItems('Color',1325377,[3]);
Normals := CountItems('Color',2639195,[3]);
if (Players[CurrentPlayer].Booleans[2] = True) then
begin
Deposit(1,28,true)
end else
begin
Deposit(2,28,True)
end;
CloseBank;
Inc(Banks);
Inc(LoadsDone);
Inc(TotalLoadsDone);
end;
if (InvFull = True) then
begin
if FindSymbol(x,y,'Bank') then
Mouse(x,y,2,2,true);
Flag;
BankLogs;
end;
Report;
end;

procedure CompassNorth;
var
North:Integer;
begin
North := 355+Random(10);
MakeCompass(North);
SetAngle(True);
end;

begin
SetupSmart;
SetUpSRL;
DeclarePlayers;
TotalLoadsDone := 0;
repeat
LoginPlayer;
Level := GetSkillLevel('Woodcutting');
LoadsDone := 0;
repeat
CompassNorth;
CheckedLoggedIn;
NormalWalk;
Chopping;
NormalBank;
BankLogs;
UpdateLevel := GetSkillLevel('Woodcutting');
LevelsGainedTotal := LevelsGainedTotal + (UpdateLevel-Level);
if not LoggedIn then
begin
Break;
end;
until(Loads = LoadsDone)
NextPlayer(Players[CurrentPlayer].Active);
until(AllPlayersInactive);
end.


First script is 123 lines, and most of it is really basic scripting..
This script isn't SRL Member worthy.

The second script is better than the first, but there is some code you could have changed to make it even better…
There isn't much I can say that Marpis hasn't already included in his post.. :p
I'm sorry. It's a no from me, but there is not much you have to improve to get a yes from me :)
Keep it up!

EDIT: How come only 3 SRL Members+ have posted, but 7 voted?

Wizzup?

2010-05-31 05:39:12

Yes.

Sir R. M8gic1an

2010-05-31 07:25:26

Good structure and logic. Seems a bit simple.

~RM

Bad Boy JH

2010-05-31 09:00:15

Simple, Things could be improved.

Spells have their own function so you can cast them with that. That way if people don't have all sections open, it will still work. Coordinate Clicking isn't very nice and SRL Membery…

Bars := Bars + 1;
Should probably Be
Inc(Bars);
Try storing it individually for Each Player such as
Players[CurrentPlayer].Integers[Bars]
Where Bars is an integer constant

Withdrawing ores, could be done with something like Withdraw Item, Which *may* be harder for you to set up, but it is more user friendly, and looks better when you are going for membership. Withdrawing from the first two slots, is bad, because, what if you withdraw the last few items from the first slot, the ones in the second slot, can't be withdrawn as they are now in the first slot, if you must do it via slots, call the withdraw for the second slot BEFORE the withdraw for the first slot

while (BankScreen = False) do
can be
while not BankScreen do
AND
while (PinScreen = true) do
Can just be
while PinScreen do

Why the wait between DeclarePlayers and LoginPlayer? doesn't seem to make sence to me.

ONTO THE SECOND SCRIPT, much better…but

function LoadPath: TPointArray;
Try having it load them as the Tiles, not Points, That way later, you don't need to do the
WalkToTile(PointToTile(TPA.x, TPA.y), 1, 0);
which simply looks messy…

CheckIfInBank looks messy and long. when using reflection….
TPoint := TileToPoint(GetMyPos);
PointInBox(TPoint, IntToBox(*Four corners of the bank booth));
which is much simpler.

Do me a favour, Don't look up my first Membership application…it was ripped to shreds…
No, But not far off in my mind.
Can other members give me feedback on my feedback, this being the first time I have really analysed another script…

aran armath

2010-05-31 11:51:35

From: marpis

Wrong nesting and parenthesis:

if not loggedin then
begin
LogInPlayer;
end;

^This just makes more sense in my mind. I know seems basic and noobish but keeps things straight for me.

From: marpis

Correct nesting and parenthesis:

if not LoggedIn then LoginPlayer;

I'll change them to that as it also keeps things straight.

From: marpis


if (x = true) then
// should be
if (x) then

^I see your point here.

From: marpis

Besides, you're using FindObj a bit wrong. The function stores the cordinates at which the tree was found to x, y, and when found, the mouse is already hovering the object. If you call

if FindObj(x,y,'Tree',NormalColor,NormalTol) then
begin
Mouse(x,y,5,5,False);
you make the mouse do wierd small movement before the click, because of the randomness. You should use it like this:

if FindObj(x, y, 'Tree', NormalColor, NormalTol) then
begin
Mouse(x, y, 0, 0, False);

^I've noticed those small movements.

From: marpis

In ChopTrees you aren't using variable "i" after calling InvCount.
Also, this loop is kinda ugly and not very practical

repeat
begin
if (IsIdle = True) then
begin
w := 3;
end;
end;
until(w >= 3)
You could do it like this:

while (not IsIdle) do
begin
SomeAntibanMaybe;
FindNormalRandoms;
end;

^'i' and the whole 'w' thing was used before I added reflection to this script. I debated adding antiban while chopping normals but I decided against it, however I will consider it again just with a lower chance of doing things. I am surprised that you didn't say anything bad about my chopping willow procedure.

From: marpis

Also you should learn to use parameters in your functions.
Instead of having a different functions for trees and willows, you should have a parameter that defines which you want to chop.

function ChopChop(WhatTree: string): boolean;
var
MyTreeColor: integer;
begin
case lowercase(WhatTree) of
'tree': MyTreeColor := 123123;
'willow': MyTreeColor := 456456;
end;
...
...
end;

^I did that with booleans in declare players, not exactly what you were talking about though but it gets the job done.

From: Bad Boy JH
Spells have their own function so you can cast them with that. That way if people don't have all sections open, it will still work. Coordinate Clicking isn't very nice and SRL Membery…

^Totally agree, just never could get "cast" to work…. The couple scripts I looked at they didn't use "cast" either.

From: Bad Boy JH

Try storing it individually for Each Player such as
Players[CurrentPlayer].Integers[Bars]
Where Bars is an integer constant

Withdrawing ores, could be done with something like Withdraw Item, Which *may* be harder for you to set up, but it is more user friendly, and looks better when you are going for membership. Withdrawing from the first two slots, is bad, because, what if you withdraw the last few items from the first slot, the ones in the second slot, can't be withdrawn as they are now in the first slot, if you must do it via slots, call the withdraw for the second slot BEFORE the withdraw for the first slot

^Basically add how many bars to make and switch which one withdraws first while adding "Withdraw Item".

From: Bad Boy JH
Why the wait between DeclarePlayers and LoginPlayer? doesn't seem to make sence to me.

^Script or smart or something was acting funny while I was making it and would try to login before Runescape was ready.

ONTO THE SECOND SCRIPT, much better…but

From: Bad Boy JH
CheckIfInBank looks messy and long. when using reflection….
TPoint := TileToPoint(GetMyPos);
PointInBox(TPoint, IntToBox(*Four corners of the bank booth));
which is much simpler.

^More of a failsafe when reflection is down. Think I took it out but the original for Scar user symbol walking to walk to and from the trees.

From: Bad Boy JH
Do me a favour, Don't look up my first Membership application…it was ripped to shreds…
No, But not far off in my mind.
Can other members give me feedback on my feedback, this being the first time I have really analysed another script…

^Hahaha mine was too, 11 no's and 0 yes's if I remember right.

Torrent of Flame

2010-05-31 13:41:44

Ok, It's been a while since I've done this sooo..

Your first script is very basic and given the current level of scripting seen around the forums, I do not see it as SRL Member worthy. I looked at my application (which was a willow cutter/banker) from which I applied over two years ago with.

My chopping procedure from that script

procedure ChopTree;
var CuttingTime: integer;
Tries: integer;
begin
MarkTime(CuttingTime);
MakeCompass('S');
CheckAxe;
IsAxeBroke;
EntFinder;
FindEnt(x, y, True);
repeat
if FindObjCustom(x, y, ['Wil', 'low'], [1989969, 3760987, 2844763], 7) then
begin
Mouse(x,y,0,0,false);
if(IsUpText('Chop'))then
Wait(5000 + (random(150)));
ChooseOption('hop')
AntiBan;
if (FindDTM(BrokenAxe, x, y, 547, 206, 734, 464)) then
begin
IsAxeBroke;
end;

if (not (FindObjCustom(x, y, ['Wil', 'low'], [1989969, 3760987, 2844763], 7))) then
Wait(100+random(100));
Tries := Tries + 1;
if(Tries = 50)then
Writeln ('Willow Logs not found. Switching Players..');
Logout;
NextPlayer(True);
end;
until(InvFull) or (TimeFromMark(CuttingTime) > 800000+random(60000));
end;

Now your chopping prodecure;

Procedure ChopWillows;
begin
CheckedLoggedIn;
if (Players[CurrentPlayer].Booleans[1] = True) then
begin
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
Mouse(x,y,5,5,False);
CheckedLoggedIn;
WaitOption('hop',1000);
Flag;
Wait(5000+random(2000))
repeat
if FindObj(x,y,'Willow',WillowColor,WillowTol) then
begin
if (InvFull = true) then
begin
Break;
end;
CheckedLoggedIn;
Wait(random(2000))
mouse(x,y,5,5,False);
WaitOption('hop',1000);
end else
begin
Break;
end;
until(False)
end else
begin
AntiBan;
end;
end;
end;

procedure Chopping;
var
ChopTreeTimer:Integer;
begin
MarkTime(ChopTreeTimer);
repeat
Wait(1000) //So report doesn't flash when no tree's
CheckedLoggedIn;
Report;
ChopTrees;
ChopWillows;
CheckedLoggedIn;
if (TimeFromMark(ChopTreeTimer) > 600000) then
begin
CheckedLoggedIn;
if FindSymbol(x,y,'Furnace') then
begin
Mouse(x,y,3,3,true);
FFlag(2);
RunAway('E',True,2,0);
MarkTime(ChopTreeTimer);
end else
begin
Players[CurrentPlayer].Active := False;
LogOut;
Exit;
end;
end;
until(InvFull = true)
end;

You have used 65 lines of code for your chopping prodecure and I used 33 lines. Mine does exactly the same as your code, essentially, and includes fail safes. Your chopping prodecure, as far as I can tell, would also constantly click on the tree as there is no wait for it once it has clicked [someone will have to tell me if I am right there]

I've made a lot of woodcutters in my time here, and don't know if I'm right in saying this, but as a script, they are very easy to create efficiently with tight and efficient code. Your code to me is very scrambled and cluttered and doesn't work as efficiently as it should and could.

There are many tutorials about cutting with TPA's to improve chopping, you can create prodecures using several functions which see FOR you if your character is cutting, none of which I can see you have used.

You have talent, but considering the current state of RS in how advanced scripts need to be and about what level SRL Scripting should be at, I don't think you have what it takes to be an SRL Member just yet.

Keep trying, look up some more tutorials and see you in a month!

bbri06

2010-05-31 21:26:06

My main reasons for voting no are
- No TPA/ATPA usage
- Functions have not been fully taken advantage of
- Some sort of color walking would be nice


Your CheckIfInBank procedure would be more useful as a function

For instance


Function CheckIfInBank: boolean;
begin
FindSymbol(x, y, 'bank');
Result := ((Distance(x, y, mmcx, mmcy) < 7);
end;

Using the above is more logical because now you have information that definitively says if you are near the bank or not. Then you can do something based on this information


Function CheckIfInBank: boolean;
begin
FindSymbol(x, y, 'bank');
Result := ((Distance(x, y, mmcx, mmcy) < 7);
end;

Procedure Bank;
begin
if(not(CheckIfInBank))then
GoToBank
else begin
...
...
...
end;
end;

aran armath

2010-06-01 03:46:28

From: bbri06


Function CheckIfInBank: boolean;
begin
FindSymbol(x, y, 'bank');
Result := ((Distance(x, y, mmcx, mmcy) < 7);
end;

^Someday's I just wonder why I can't remember silly things like this when I need them.

marpis

2010-06-01 05:03:35

Changing my vote to a Yes
Now that I saw you've been here for that long. :)

Everyone notice his Join Date: Mar 2007 and Posts: 451.

Naum

2010-06-01 05:13:42

Yes, you seem like a thoughtful contributing guy.

aran armath

2010-06-01 11:24:05


Procedure ChopTrees;
begin
CheckedLoggedIn;
if FindObj(x,y,'Tree',NormalColor,NormalTol) then
begin
Mouse(x,y,0,0,False);
WaitOption('hop',1000)
Flag;
While (not IsIdle) do
begin
CheckedLoggedIn;
AntiBan;
end;
end else
AntiBan;
end;
^New chopping procedure.


procedure ChopYews;
begin
CheckedLoggedIn;
if FindObj(x,y,'Yew',YewColor,YewTol) then
begin
Mouse(x,y,0,0,False);
CheckedLoggedIn;
WaitOption('hop',1000);
Flag; //Do I really need this? I don't think so because after it clicks it wont be idle
While (not IsIdle) do
begin
CheckedLoggedIn;
AntiBan;
end;
end else //If no Yew tree then Chop and drop Oaks while waiting
begin
CheckedLoggedIn;
if FindObj(x,y,'Oak',OakColor,OakTol) then
begin
Mouse(x,y,0,0,False);
CheckedLoggedIn;
WaitOption('hop',1000);
Flag;
While (not IsIdle) do
begin
if FindObj(x,y,'Yew',YewColor,YewTol) then
begin
Mouse(x,y,0,0,true); //Now that I see this after sleeping think its better without.
Break;
end;
CheckedLoggedIn;
AntiBan;
end;
end else
begin
AntiBan;
end;
end;
YewOaks := YewOaks + CountItems('Color',5601430,[13]);
DropItemsByIdentifier('color', 5601430, [13]);
AntiBan;
end;
^I redid the script during all of this and now it chops all f2p trees depending on the wc lvl. I've watched this procedure run and works rather well.


procedure SmartCutting;
begin
if (Players[CurrentPlayer].Booleans[3] = True) then
begin
Level := GetSkillLevel('Woodcutting');
Writeln(IntToStr(Level));
if Level < 15 then NormalTrees; //Chops Normal Trees
if Level > 14 then //Chops Oaks
begin
if Level < 30 then OakTrees;
end;
if Level > 29 then //Chops Willows
begin
if Level < 60 then WillowTrees;
end;
if Level > 59 then YewTrees; //Chops Yews
end;
end;
^Couldn't think of a simpler way to do this.

Ps-Account in maze if you want pm me.
Edit:Naum grabbed it.

Naum

2010-06-01 11:31:15


procedure SmartCutting;
begin
if (Players[CurrentPlayer].Booleans[3] = True) then
begin
Level := GetSkillLevel('Woodcutting');
Writeln(IntToStr(Level));
if Level < 15 then NormalTrees; //Chops Normal Trees
if Level > 14 then //Chops Oaks
begin
if Level < 30 then OakTrees;
end;
if Level > 29 then //Chops Willows
begin
if Level < 60 then WillowTrees;
end;
if Level > 59 then YewTrees; //Chops Yews
end;
end;
^Couldn't think of a simpler way to do this.


Something like this, I guess:

Case Level Of
0..15 : NormalTrees;
16..30 : OakTrees;
etc..

EDIT: Thx for the account :)

aran armath

2010-06-01 11:33:54

From: Naum
Something like this, I guess:

Case Level Of
0..15 : NormalTrees;
16..30 : OakTrees;
etc..


Dee Dee Dee….. Maybe I need sleep before writing scripts…..

Tim0suprem0

2010-06-01 13:33:35

I'm torn. From your involvement here I'd say it's an auto yes, but from the previously mentioned reasons about the scripts above make me lean towards no.

I'll hold my vote for a bit and think about it. Also, the script I applied with was not the greatest either, but I got in for being a nice guy :) (or at least that's the impression I got) So I am very inclined to vote yes, however I feel like if you don't make it in, it would be great motivation for you over the summer to come back with a really killer script, instead of being accepted now and just coasting :p

Like I said, I'm torn. Will edit when I vote.

EDIT: Voted yes.

Gu3st...

2010-06-01 14:28:36

From: Tim0suprem0
I'll hold my vote for a bit and think about it. Also, the script I applied with was not the greatest either, but I got in for being a nice guy :) (or at least that's the impression I got) So I am very inclined to vote yes, however I feel like if you don't make it in, it would be great motivation for you over the summer to come back with a really killer script, instead of being accepted now and just coasting :p
If he get's in then he'll probably learn faster ;)

Tim0suprem0

2010-06-01 14:50:42

From: Zyt3x
If he get's in then he'll probably learn faster ;)


I was just speaking from personal experience :) I know my hunger to learn was motivated mainly by my desire to become a Member (I'm not a very good self-motivator), but I guess it depends on the person and what motivates them.

EDIT: Voted yes.

Awkwardsaw

2010-06-01 15:31:03

i'm voting yes. :) purely based on attitude

Brain

2010-06-01 20:22:32

most things I've seen you do around the forums points to a yes from me. Just keep up the good/helpful attitude.

Bonfield

2010-06-02 04:41:10

Yes, you show that you will continue to learn and contribute to this community

Daniel

2010-06-03 05:24:05

Yes.

EDIT: Oh crap :o

Camaro'

2010-06-04 20:57:54

Reflection on such a simple script? I don't want to vote yes or no :)

If it were just on the script, I would vote no, but you seem like a very nice and helpful person. So it ends up by me not voting :)

cycrosism

2010-06-06 04:40:31

Your first script ONLY uses consts to rely on finding a tree's colour and you only use FindObj … You should include some tpa's/ddtms that do not rely on the user to enter the colour, you should set it up with various colours of the tree and use tolerance and there is not that many fail safes for going to the bank on script #1. Reflection is also used on script 1 …

More then half of your second script is just based on interacting with a website. I'll think about it before I vote.


procedure withdrawores;
begin
withdraw(0,0,18);
wait(300+random(500))
withdraw(1,0,18);
wait(300+random(500))
end;

That doesn't look to good, what if you run out of ores? You should use bitmaps for banking. They work the best.

Rich

2010-06-06 06:49:44

First script:
No (D)DTMs
No bitmaps
You use FindObj to find trees
User has to set tree colour
You use Flag - use FFlag
Deposit(1,28,true) - DepositAll
Messy banking procedure
Very few failsafes

Second script:
Two thirds of the script is stats
Uses Mouse to cast, instead of Cast in Magic.scar
No failsafes in banking.

procedure magictab;
begin
GetCurrentTab;
While (GetCurrentTab <> Tab_Magic) do
begin
GameTab(Tab_Magic);
end;
spell;
end;
Can be
procedure Magictab;
begin
GameTab(Tab_Magic);
Spell;
end;

procedure deposit1;
begin
Deposit(2,28,true)
wait(300+random(500))
end;

procedure withdrawores;
begin
withdraw(0,0,18);
wait(300+random(500))
withdraw(1,0,18);
wait(300+random(500))
end;
Eek!

Overall:
Does not show great knowledge of SRL (Cast, DepositAll)
Very few failsafes in both script
No complicated colour/item finding (DTMs, Bitmaps, TPAs)
Messy standards

You've probably guessed it's a no from me. Sorry.

Dynamite

2010-06-06 07:27:04

You don't happen to be a guy called KAPGUN on YouTube do you?

Cause if you are it's an auto yes from me :p

Main

2010-06-06 14:45:48

The one handed gamer? FTW
You got my yes.

Dynamite

2010-06-06 18:50:23

From: Main_Ftw
The one handed gamer? FTW
You got my yes.


Yeah! He fawking owns!
So basically aran if you are kapgun you have a million yesssssses from me :p

Camaro'

2010-06-09 21:28:50

From: The Man
Yeah! He fawking owns!
So basically aran if you are kapgun you have a million yesssssses from me :p


That's ridiculous. Voting yes for someone on youtube.

Edit: His videos are pretty awesome :)

Even though, you shouldn't vote yes based on that.