SRL Archive - Archive

Trollvete - SRL Member Application Form


Trollvete

2008-05-11 16:57:36

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

What is the meaning to life?


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


Programming Knowledge
Pascal, html a bit

Other Communitys
-

How Long have You Played Runescape
3 years

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

Myself

I'm a sixteen-year-old stubborn, sometimes arrogant, not so self-confident, rather humourous bloke hailing from Finland. I like folk metal and archaism. I'm an atheist. We also have three lovely dogs in our family. They're golden retrievers.

I learned some of the basics of Pascal in the school, and at that time I found it quite dull and useless. Then, after quitting RS with my main, I became interested macroing, I think I just wanted to know how it was like.
And I found out about Scar, and noticed how it was based on pascal. I became interested a bit in the coding itself too. I tested some scripts and thought how funny it would be to make my very own one. Then I started to read tutorials here at Srl-forums, and even some Pascal guides I found elsewhere. They gave me a picture of how the things were run by Scar. I learned mostly by examples and just trying to do different things on my own.
That, my dears, is why I am now writing this as if it was some kind of schoolwork. Do you even read this?

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

The Sample:
GetTextFromLines is a function I use in my script. It returns black, blue or both texts from FirstLine to the 8th line of the chatbox. I do know that it is very similar looking to the one Cazax posted in the public test corner (here), but I swear that this is my own handwork and I had not seen Cazax's before I made this. And well, they're quite different after all.

Program Interesting;
{.include Srl/Srl.Scar}

type
BB = (Black, Blue, Both);

function GetTextFromLines(Col: BB; FirstLine, Letters: Integer): array of string;
var
I, II, III, x, y, TextCol: Integer;
Tpa: array of Tpoint;
begin
III := 8-FirstLine;
SetArrayLength(Tpa, III+1);
for I := FirstLine to 8 do
begin
Tpa[II] := TextCoords(I);
Inc(II);
end;
Case Col of
Black: TextCol := 0;
Blue: TextCol := 16711680
end;
SetArrayLength(Result, III+1);

if Col = Both then
begin
for I := 0 to III do
if FindColorSpiral(x, y, 16711680, Tpa[i].x, Tpa[i].y, Tpa[i].x+200, Tpa[i].y+5) then
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, 16711680, Letters, False, tr_AllChars))) else
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, 0, Letters, False, tr_AllChars)))
end else
begin
for I := 0 to III do
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, TextCol, Letters, False, tr_AllChars)));
end;
end;

function Interesting(Line: Integer): boolean;
var
SArr: array of string;
I: Integer;
begin
SArr := GetTextFromLines(Black, Line, 20);

for I := 0 to High(SArr) do
if Pos('nothing interesting', SArr[I]) > 0 then
begin
Result := True;
Writeln('Nothing interesting occured somewhere between lines '+IntToStr(Line)+' - 8');
end;
end;

procedure Yoik;
begin
Writeln('We'#39're yoiking because there'#39's nothing more interesting');
end;

begin
repeat
Wait(1000);
until Interesting(5);
Yoik;
end.


Sigh I hope everything's fine now… It's getting late here and I'm off to bed.


Hobbit Edit: Script in SCAR tags
Program CutNDropOrStock;
{.include Srl/Srl/misc/SMART.Scar}
{.include Srl/SRL.scar}

{Cuts normal trees, oaks or willows and drops the logs OR cuts willows at Draynor and banks them}
{Credits to Sumilion for his Entfinder function I used}

var
Switches, EntCount, MinLvl, LogsCutd, LogsBankd, Responds, BNests,
TreeCol1, TreeCol2, TreeCol3, RespondTime, NestTime, Tol, Break, Tries, Wcol, Cux, Cuy, FightTime, XpId :Integer;
TreeShrt1, TreeShrt2, TreeShrt3, Latest: string;
Expa, Exp, Breaks: Extended;
Ent, AxeL: Boolean;
TreeTDTM: TDTM;
Torespond, Responce: array of array of string;

const

YourSRLId = ''; // Your SRL-Stats ID-Number
YourSRLPassword = ''; // Your SRL-Stats Password

World = 108; // The World to Play In
Signed = false; // Using Signed Applet

tolerance = 3; // Tolerance for Finding Colors of the Trees
SecondstoWait = 20; // Max Seconds to Wait While Chopping a Tree
Wheretorun = 'N'; // Direction to Run if in Fight
AutoLogout = True; // Logs the Player Out Every 20-30 Minutes And Takes 3-5 Mins Break
Autoresponder = True; // Use Autoresponder?
Nests = False; // Look for Bird's Nests?
ClearTheDebug = False; // Clear the Debug Box After Each Load?

// Chance Colors if Necessary.
NormTreeColor1 = 2047544;
NormTreeColor2 = 4558979;
NormTreeColor3 = 3235928;

OakColor1 = 1781037;
OakColor2 = 2847590;
OakColor3 = 2179644;

WillowColor1 = 3560528;
WillowColor2 = 2795151;
WillowColor3 = 5155222; VersionNr = '2.5';

procedure Clrscr;
begin
Cleardebug; ClearReport;
end;

procedure DeclarePlayers;
var
I: Integer;
begin
try
LampSkill := 'woodcutting';
HowManyPlayers := 3; // How Many Players There Will Be
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 2; // Starting Player

(***********TOUCH NOT HERE************)
for I := 0 to HowManyPlayers -1 do
begin
SetLength(Players[I].Strings, 2);
SetLength(Players[I].Integers, 7);
SetLength(Players[I].Booleans, 1);
SetLength(Players[I].Extendeds, 1);
end;
(*************************************)

(***********START TOUCHING************)
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Pin := ''; // Pin number. Leave it be if none
Players[0].Active := True; // Use this character?
Players[0].Booleans[0] := true; // ! Use Banking? !
Players[0].Integers[0] := 15; // Loads to do before switching players
// If you are using banking, ignore these two options:
Players[0].Strings[0] := ''; // Tree to cut: 'Tree', 'Oak', or 'Willow'
Players[0].Strings[1] := ''; // Dropping style:
// 'Keep' Drops Only the Logs, Leaving All Random Items In The Inventory
// 'Axe' Drops Everything Except The First Slot
// 'All' Drops The Whole Inventory}
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Pin := '';
Players[1].Active := true;
Players[1].Booleans[0] := true;
Players[1].Integers[0] := 15;
Players[1].Strings[0] := '';
Players[1].Strings[1] := '';

Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Pin := '';
Players[2].Active := True;
Players[2].Booleans[0] := true;
Players[2].Integers[0] := 15;
Players[2].Strings[0] := '';
Players[2].Strings[1] := '';

// Add More Players Should You Feel Like It

(************STOP TOUCHING*************)
except begin
Writeln('Players set incorrectly. Pay attention to the amount of HowManyPlayers');
Terminatescript;
end;
end;
end;

type
BB = (Black, Blue, Both);

(* Gets black, blue or both chat-texts from FirstLine to the 8th line *)
function GetTextFromLines(Col: BB; FirstLine, Letters: Integer): array of string;
var
I, II, III, x, y, TextCol: Integer;
Tpa: array of Tpoint;
begin
III := 8-FirstLine;
SetArrayLength(Tpa, III+1);
for I := FirstLine to 8 do
begin
Tpa[II] := TextCoords(I);
Inc(II);
end;
Case Col of
Black: TextCol := 0;
Blue: TextCol := 16711680
end;
SetArrayLength(Result, III+1);

if Col = Both then
begin
for I := 0 to III do
if FindColorSpiral(x, y, 16711680, Tpa[i].x, Tpa[i].y, Tpa[i].x+200, Tpa[i].y+5) then
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, 16711680, Letters, False, tr_AllChars))) else
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, 0, Letters, False, tr_AllChars)))
end else
begin
for I := 0 to III do
Result[I] := LowerCase(Trim(GetTextAtEx(tpa[i].x - 2, tpa[i].y - 2, 0, SmallChars, False,
False, 0, 1, TextCol, Letters, False, tr_AllChars)));
end;
end;

procedure ResArray;
var
Level2: Integer;
begin
Level2 := Players[CurrentPlayer].Integers[5];
SetArrayLength(Torespond, 4);
torespond[0] := ['wcing lvls', 'wc levels', 'wc lvls', 'woodcutting lvls', 'woodcutting levels', 'wc levs', 'wc lvl every', 'wc lvs', 'wc lvl???', 'wc lev???'];
torespond[1] := ['ello', 'sup', 'hi ther'];
torespond[2] := [Players[CurrentPlayer].Nick, Players[CurrentPlayer].Name];
torespond[3] := ['hehe', 'haha', 'lmao', 'rofl', 'q p', 'omg', 'omfg', 'lag'];

SetArrayLength(Responce, 4);
Responce[0] := [InttoStr(Level2)+' here', 'im '+InttoStr(Level2), 'soon '+InttoStr(Level2+1), 'lol '+InttoStr(Level2), InttoStr(Level2)+' lol', InttoStr(Level2), InttoStr(Level2)+' atm', InttoStr(Level2+1)+' quite soon', 'wc '+Inttostr(Level2), Inttostr(Level2)+' wc', IntToStr(Level2)+' soon '+IntToStr(Level2+1),
'atm '+IntToStr(Level2), 'im '+IntToStr(Level2)+' wc', 'almost '+IntToStr(Level2)];
Responce[1] := ['hi', 'hello', 'sup', 'hi der', 'hullo', 'ello', 'hai', 'hola', 'hey', 'ho'];
Responce[2] := ['hmmh', 'na', 'busy', 'nty', 'grunt', 'eh', 'nae', 'hrmph'];
Responce[3] := ['lol', 'lmao', 'rofl', 'heh', 'funny', 'hah', 'uhh', 'uh', 'huh'];
end;

procedure Autorespond;
var
K, L, I, R: Integer;
Newest: array of string;
begin
if TimeFromMark(Respondtime) <= 60000 then Exit;
Newest := GetTextFromLines(Blue, 6, 55);

for I := 0 to High(Newest) do
for K := 0 to High(torespond) do
for L := 0 to High(torespond[K]) do
if pos(ToRespond[k][l], Newest[I]) <> 0 then
begin
Wait(RandomRange(2500, 4000));
repeat
R := Random(GetArrayLength(Responce[K]));
until Responce[K][R] <> Latest;
TypeSend(Responce[K][R]);
Latest := Responce[K][R];
Inc(Reportvars[7]);
Writeln('In Chat: "'+Newest[I]+'"');
Writeln('Autoresponded: '+Capitalize(Responce[K][R]));
Inc(Responds);
MarkTime(Respondtime);
end;
end;

procedure DeclareTrees;
begin
tol := tolerance;
case Lowercase(Players[CurrentPlayer].Strings[0]) of
'tree' : begin
TreeShrt1 := 'Tree'; TreeCol1 := NormTreeColor1;
TreeShrt2 := 'ee'; TreeCol2 := NormTreeColor2;
TreeShrt3 := 'ree'; TreeCol3 := NormTreeColor3;
Expa := 25;
MinLvl := 0;
end;
'oak' : begin
TreeShrt1 := 'Oak'; TreeCol1 := OakColor1;
TreeShrt2 := 'Oa'; TreeCol2 := OakColor2;
TreeShrt3 := 'ak'; TreeCol3 := OakColor3;
Expa := 37.5;
MinLvl := 15;
end;
'willow' : begin
TreeShrt1 := 'low'; TreeCol1 := WillowColor1;
TreeShrt2 := 'ill'; TreeCol2 := WillowColor2;
TreeShrt3 := 'llo'; TreeCol3 := WillowColor3;
Expa := 67.5;
MinLvl := 30;
end;
else
begin
Writeln(Players[CurrentPlayer].Name+': Invalid Treetype');
Players[CurrentPlayer].Rand := 'Inv. Treetype';
Logout;
end;
end;
end;

procedure SetupSMART;
begin
SmartSetupEX(World, false, Signed);
while not (SmartReady) do
Wait(500);
SetTargetDC(SmartGetDC);
end;

procedure TakeBreak;
var
Breaktime: Integer;
begin
if not AutoLogOut then Exit;
if TimeFromMark(Break) >= (RandomRange(1200000, 1800000)) then
begin
Status('Zzzz..');
Breaktime := (RandomRange(180000, 300000));
Breaks := Breaks + Breaktime;
Writeln('Taking a small break');
LogOut;
MMouse(-100, -100, 0,0);
Wait(Breaktime);
Writeln('Continuing');
LoginPlayer;
MarkTime(Break);
end;
end;

procedure SwitchPlayer;
begin
Status('Switching Players');
Writeln('');
Tries := 0;
if Players[CurrentPlayer].Integers[1] > 0 then
Writeln(Players[CurrentPlayer].Name+ ': Dropped ' +InttoStr(Players[CurrentPlayer].Integers[1])+'/'+InttoStr((Players[CurrentPlayer].Integers[0]))+' Loads') else
Writeln(Players[CurrentPlayer].Name+ ': Banked ' +InttoStr(Players[CurrentPlayer].Integers[2])+'/'+InttoStr((Players[CurrentPlayer].Integers[0]))+' Loads');
Writeln('');
Inc(Switches);
if Switches >= HowManyPlayers then
begin
LogOut;
Exit;
end;
Logsbankd := 0;
LogsCutd := 0;
NextPlayer(False);
Inc(Reportvars[8]);
end;

function LoadMyDtm(Dtm: string): Integer;
begin
case Dtm of
'Log' : Result := DTMFromString('78DA637CC6C0C050C680029CAC2518FE03694' +
'620FE0F048C4F818C5C0634C0884402E90F40A298809AEB40A286' +
'809A3B40228F809AC740A291809A2F40A21ABF1A0013FC0F26');

'Axe' : Result := DTMFromString('78DA636464626098CB800618914820FD0BC85' +
'A4A400D071361359C40358B8850330FBF1A00E1F30455');

'Bank': Result := DTMFromString('78DA63F466616030636440061F2F8932E8008' +
'540A2FF8180D116A84607A28619AAE6CF1F26067E06881A1000AB' +
'3121428D250135A6986ABE7E6560904456A303546308E1B140C5C' +
'C62C5180290D400002F0211EF');

'DAxe': Result := DTMFromString('78DA639465606098CF800618914820AD0C249' +
'61050234A841A2920319508BB66E3570300843403B9');
end;
end;

procedure TreeDDTM;
var
SubPoints: array[0..3] of TDTMPointDef;
MainPoint: TDTMPointDef;
begin

MainPoint.x:=617;
MainPoint.y:=125;
MainPoint.areasize:=1
MainPoint.areashape:=0;
MainPoint.color:=0;
MainPoint.tolerance:=255;

SubPoints[0].x:=616; SubPoints[1].x:=637; SubPoints[2].x:=580; SubPoints[3].x:=590; //SubPoints[4].x:=596;
SubPoints[0].y:=97; SubPoints[1].y:=94; SubPoints[2].y:=116; SubPoints[3].y:=129; //SubPoints[4].y:=140;
SubPoints[0].areasize:=1; SubPoints[1].areasize:=1; SubPoints[2].areasize:=1; SubPoints[3].areasize:=1; // SubPoints[4].areasize:=1;
SubPoints[0].areashape:=0; SubPoints[1].areashape:=0; SubPoints[2].areashape:=0; SubPoints[3].areashape:=0; //SubPoints[4].areashape:=0;
SubPoints[0].color:=15658481; SubPoints[1].color:=15658481; SubPoints[2].color:=WCol; SubPoints[3].color:=WCol; // SubPoints[4].color:=WCol;
SubPoints[0].tolerance:=30; SubPoints[1].tolerance:=30; SubPoints[2].tolerance:=30; SubPoints[3].tolerance:=30; // SubPoints[4].tolerance:=30;

TreeTDTM.MainPoint := MainPoint;
TreeTDTM.SubPoints := SubPoints;
end;

procedure QuickFlag; // Flag with 5 sec timeout
var
time: Integer;
begin
while FlagPresent and (time < 20 ) do
begin
wait(250);
Inc(time);
end;
end;

procedure RandomMovera(cam, returnpos: Boolean);
var
x, y: Integer;
begin
If cam then
begin
if Rbool then
begin
if Rbool then KeyDown(VK_Left) else
KeyDown(VK_Right);
Wait(RandomRange(100, 150));
if Rbool then KeyDown(Vk_Down);
Wait(RandomRange(100, 200));
KeyUp(Vk_Down);
Wait(RandomRange(100, 200));
KeyDown(Vk_Up);
Wait(RandomRange(150, 250));
end else
begin
KeyDown(Vk_Down);
Wait(RandomRange(70, 140));
if Rbool then KeyDown(VK_Left) else
KeyDown(Vk_Right);
Wait(RandomRange(160, 300));
KeyUp(Vk_Down);
Wait(RandomRange(80, 130));
KeyDown(Vk_Up);
Wait(RandomRange(200, 350));
end;
KeyUp(Vk_Left);
KeyUp(Vk_Right);
KeyUp(Vk_Up);
end else
begin
x := RandomRange(-300, 700);
y := RandomRange(-200, 500);
MMouse(x, y, 100, 100);
FTWait(RandomRange(4, 7));
if ReturnPos then
MMouse(Cux, Cuy, 25, 25);
end;
end;

function BirdNest: Boolean; // Beta
var
BlkText: array of string;
I, x, y, Fails, Nest, Tol: Integer;
begin
if TimeFromMark(NestTime) < 60000 then Exit;
BlkText := GetTextFromLines(Black, 5, 35);

for I := 0 to High(BlkText) do
if pos('bird', BlkText[I]) <> 0 then
Result := True;

if Result then
begin
Tol := 14;
MarkTime(NestTime);
Result := False;
Writeln('A Bird'#39's Nest falls onto the ground.');
repeat
Inc(Fails);
if FindObjEx(x, y, ['ird', 'est'], [3753032, 1890808, 599322], Tol, MSCX, MSCY, 1.0, 140, 70, 400, 260) then
begin
Mouse(x, y, 0, 0, False);
Wait(Random(600));
if not ChooseOption('ird') then Continue;
QuickFlag;
Result := True;
Break;
end;
if Fails = 3 then Tol := 17;
KeyDown(VK_Right);
Wait(RandomRange(500, 800));
KeyUp(VK_Right);
until Fails > 6;
end else
Exit;

if Result then
begin
Nest := BitmapFromString(8, 5, 'beNpjYIwIcgWiEH/nIF8Hf' +
'y97IPJ2t/F0tcQjDhSEi0MEXR3M0cQhgiYGmkBxuEqgiJOtibmJNg' +
'MA3nQgkA==');
if FindBitmapToleranceIn(Nest, x, y, MIX1, MIY1, MIX2, MIY2, 5) then
begin
Writeln('Bird'#39's Nest picked');
Inc(BNests);
Mouse(x, y, 5, 5, False);
Wait(Random(600));
ChooseOption('xamine');
Inc(ReportVars[14]);
end else
begin
Writeln('Bird'#39's Nest missed');
Inc(ReportVars[16]);
end;
end else
begin
Writeln('Bird'#39's Nest missed');
Inc(ReportVars[16]);
end;
FreeBitmap(Nest);
end;

procedure CheckRandoms;
begin
FTWait(3);
FindNormalRandoms;
if Nests then BirdNest;
DwarfItem;
if TimeFromMark(FightTime) >= 300000 then
if FindFight then
begin
MarkTime(FightTime);
MakeCompass('n');
case Random(11) of
0: TypeSend('Geez');
1: TypeSend('Pfft');
2: TypeSend('Darnt');
3: TypeSend('Argh');
4: TypeSend('Omg');
5: TypeSend('Gosh');
6: TypeSend('Ffs');
7: TypeSend('Sheesh');
8: TypeSend('Grr');
end;
Status((Players[CurrentPlayer].Name)+ ' - Running away from threat');
Runto(Wheretorun, True);
FTWait(RandomRange(5,7));
end;
end;

function SomethingWrongAt(Loc: string): Boolean;
var
Prkl: array of string;
j: Integer;
blk: string;
begin
blk := GetBlackChatMessage;
if Loc = 'trees' then Prkl := ['eed','his','ich','use'] else
Prkl := ['the', 'bank'];
for j := 0 to High(Prkl) do
if (pos(prkl[j], blk) <> 0) then
begin
Result := True;
Break;
end;
end;

function GetExpHr: Extended;
var
Hrs: Extended;
begin
try
Hrs := (TimeFromMark(XpId) div 3600000);
Result := ((LogsCutd + LogsBankd) * Expa) div Hrs;
if Result > Players[CurrentPlayer].Extendeds[0] then
Players[CurrentPlayer].Extendeds[0] := Result;
except
Writeln('Couldn'#39't get exp/hr rate');
end;
end;

procedure Drop(Style: string; Logs: Boolean);
var
Log, I: Integer;
begin
if not LoggedIn then Exit;
if Logs then
begin
Log := LoadMyDtm('Log');
GameTab(4);
LogsCutd := CountItems(Log, 'dtm', [0]);
IncEx(Players[CurrentPlayer].Integers[4], LogsCutd);
repeat
Wait(RandomRange(100, 400));
if FindDTM(Log, cux, cuy, MIX1, MIY1, MIX2, MIY2) then
begin
MMouse(cux, cuy, 12, 12);
Wait(RandomRange(75,200));
if IsUpText('ogs') then
begin
GetMousePos(cux, cuy);
Mouse(cux, cuy, 2, 2, false);
if Chooseoption('rop') then
if Random(28) = 0 then RandomMovera(rbool, false);
end;
end;
until not (FindDTM(Log, cux, cuy, MIX1, MIY1, MIX2, MIY2));
FreeDTM(Log);
end;

case Style of
'': Exit;
'NoAxe': for i := 2 to 28 do
if ExistsItem(i) then
DropItem(i);
'All': DropAll;
end;
end;

procedure SetRun2(percent: integer);
var
Color: string;
begin
if GetMMLevels('run', Color) >= percent then
SetRun(True);
end;

procedure WalktoTrees;
var
TreeDTM: Integer;
Angle: Extended;
begin
if not LoggedIn or InvFull or (Players[CurrentPlayer].Integers[2] >= Players[CurrentPlayer].Integers[0]) then Exit;
TreeDDTM;
TreeDTM := AddDTM(TreeTDTM);
Status('Searching the treesite...');
SetRun2(35);
GameTab(4);
repeat
if not LoggedIn then Exit;
Inc(Tries);
if Tries >= 5 then
begin
Tries := 0;
Writeln((Players[CurrentPlayer].Name)+': [FATAL FAILURE] Couldn'#39't find the treesite');
Players[CurrentPlayer].Rand := '*NO TREESITE*';
Logout;
Exit;
end;
CheckRandoms;
if FindSymbol(Cux, Cuy, 'fish') or
FindDTMRotated(TreeDTM, Cux, Cuy, MMX1, MMY1, MMX2, MMY2, -Pi*2, 0, 0.1, Angle) then
begin
if not Rs_OnMinimap(Cux, Cuy) then
Continue;
Mouse(Cux, Cuy, 5, 5, True);
Wait(RandomRange(2500, 4000));
GameTab(4);
Tries := 0;
RandomMovera(rbool, false);
SetAngle(True);
MMouse(1, -500, 600, 600);
Flag;
FTWait(2);
Exit;
end else
begin
MakeCompass('n');
RadialWalk(Wcol, 180, 270, 65, -1, 1);
Flag;
Continue;
end;
until Tries > 6;
end;

procedure ProgReport;
var
I, Lvl, Loads, LoadsBank, LogsCut, LogsBank: Integer;
DoneWhat: string;
begin
for I := 0 to HowManyPlayers -1 do
begin
Loads := Loads + Players[I].Integers[1];
LoadsBank := LoadsBank + Players[I].Integers[2];
LogsCut := LogsCut + Players[I].Integers[4];
LogsBank := LogsBank + Players[I].Integers[3];
end;

if ClearTheDebug then ClearDebug;
Writeln('');
Writeln('/\~~~~~~~~~~~~~~~ The Progress Report ~~~~~~~~~~~~~~~~~/\');
Writeln('||=======================================================||');
Writeln(Padr('|| Script has run for ' +(Timerunning),56)+' ||');
if Breaks > 0 then
Writeln(Padr('|| Taken breaks for ' +FloattoStr(Round(Breaks/1000/60))+' minutes', 56)+' ||');
if Switches > 0 then
Writeln(Padr('|| Player Switches: ' +InttoStr(Switches),56)+' ||');
Writeln(Padr('|| Current Player: ' +Capitalize(Players[CurrentPlayer].Name),56)+' ||');
if LogsCut > 0 then begin
Writeln(Padr('|| Logs Cut: ' + InttoStr(LogsCut),56)+' ||');
Writeln(Padr('|| Loads Dropped: ' +InttoStr(Loads),56)+' ||'); end;
if LogsBank > 0 then begin
Writeln(Padr('|| Logs Banked: ' + InttoStr(Logsbank),56)+' ||');
Writeln(Padr('|| Loads Banked: ' + InttoStr(LoadsBank),56)+' ||'); end;
Writeln(Padr('|| Current Xp Rate ~ ' +InttoStr(Round(GetExpHr))+ 'Xp/Hr',56)+' ||');
if Responds > 0 then
Writeln(Padr('|| Autoresponded '+InttoStr(Responds)+' time(s)',56)+' ||');
if BNests > 0 then
Writeln(Padr('|| Bird'#39's Nests '+IntToStr(BNests), 56)+' ||');
if EntCount = 1 then
Writeln(Padr('|| '+InttoStr(EntCount)+ ' Ent has been avoided',56)+' ||');
if EntCount > 1 then
Writeln(Padr('|| '+InttoStr(EntCount)+ ' Ents have been avoided',56)+' ||');
Writeln('\/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\/');
Writeln('/\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/\');
for I := 0 to HowManyPlayers -1 do
begin
if not Players[I].Active and (Players[I].Integers[1] + Players[I].Integers[2] = 0) then
begin
if Players[I].Rand = '' then
Writeln(Padr('|| '+IntToStr(I+1)+'. '+Players[I].Nick+': *Not Active*', 94)+' ||') else
Writeln(Padr('|| '+IntToStr(I+1)+'. '+Players[I].Nick+': '+Players[I].Rand, 94)+' ||');
Continue;
end;
if Players[I].Integers[1] > 0 then DoneWhat := 'Dropped' else
if Players[I].Integers[2] > 0 then DoneWhat := 'Banked' else
Continue;

Lvl := Players[I].Integers[5] - Players[I].Integers[6];
Writeln(Padr('|| '+IntToStr(I+1)+'. '+Players[I].Nick+': '+DoneWhat+': '+IntToStr(Players[I].Integers[3]+Players[I].Integers[4])+
' Loads: '+IntToStr(Players[I].Integers[1]+Players[I].Integers[2])+'/'+IntToStr(Players[I].Integers[0])+
' Leveled: '+IntToStr(Lvl)+' Highest Rate of Xp: '+FloatToStr(Round(Players[I].Extendeds[0]))+'Xp/Hr. '+Players[I].Rand, 94)+' ||');
end;
Writeln('\/=============================================================================================\/');
end;

function TheExp: string;
begin
Exp := Exp + (Expa*(LogsBankd + LogsCutd));
Result := (FloatToStr(Round(Exp))+'Xp gained by Cut & Drop or Stock Powerchonker '+VersionNr);
end;

procedure AfterBank;
begin
CloseWindow;
Inc(Players[CurrentPlayer].Integers[2]);
Reportvars[10] := LogsBankd;
Inc(Reportvars[11]);
SendSRLReport;
SrlRandomsReport;
Players[CurrentPlayer].Integers[5] := GetSkillInfo('woodcutting', False);
if AutoResponder then ResArray; //updates Current level
ProgReport;
Disguise(TheExp);
RandomMovera(rbool, false);
LogsBankd := 0;
if AutoLogOut then TakeBreak;
MarkTime(XpId);
end;

procedure BankStuff;
var
Angle: Extended;
I, Log, Bank: Integer;
label LabelsRFun, f;
begin
if not LoggedIn then Exit;
SetRun2(35);
Status('Searching for Bank');
Bank := LoadMyDtm('Bank');
if FindDTMRotated(Bank, Cux, Cuy, MMX1, MMY1, MMX2, MMY2, -Pi*2, 0, 0.5, Angle) then
begin
if not Rs_OnMinimap(Cux, Cuy) then
goto f;
writeln('Bank dtm');
FreeDTM(Bank);
Mouse(Cux, Cuy, 8, 8, True);
Wait(RandomRange(2000, 4000));
GameTab(4);
RandomMovera(rbool, False);
MakeCompass('N');
FFLag(6);
LabelsRFun:
CheckRandoms;
OpenBankFast('db');
if PinScreen then InPin(Players[CurrentPlayer].Pin);
if BankScreen then
begin
if Tries > 0 then Tries := 0;
Status('Banking');
Log := LoadMyDtm('Log');
LogsBankd := CountItems(Log, 'dtm', [0]);
IncEx(Players[CurrentPlayer].Integers[3], LogsBankd);
Repeat
if FindDTM(Log, Cux, Cuy, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(Cux, Cuy, 15, 15, False);
Chooseoption('All');
Wait(RandomRange(400, 600));
end;
until not FindDTM(Log, Cux, Cuy, MIX1, MIY1, MIX2, MIY2) or SomethingWrongAt('bank');
FreeDTM(Log);
Wait(Random(1000));
for I := 1 to 28 do
if ExistsItem(I) then
begin
if (I = 1) And AxeL then Continue;
MMouseItem(I);
Wait(RandomRange(400, 700));
if IsUpText('xe') then continue;
if (Amount('inv', I) > 1) then
begin
MouseItem(I, False);
ChooseOption('All');
end else
MouseItem(I, True);
Wait(500);
if SomethingWrongAt('bank') then
begin
Writeln('Ran out of bankspace. Dropping random items');
CloseWindow;
if AxeL then Drop('NoAxe', False) else Drop('All', False);
Break;
end;
end;
if (Random(5) > 3) then
begin
Mouse(RandomRange(68, 430), RandomRange(55,210), 15, 15, False);
Wait(RandomRange(75, 400));
ChooseOption('xamine');
end;
Tries := 0;
AfterBank;
Exit;
end else
begin
Inc(Tries);
if Tries >= 4 then
begin
Tries := 0;
Writeln(Players[CurrentPlayer].Name+': [FATAL FAILURE] Couldn'#39't find bank booth. Logging out');
Players[CurrentPlayer].Rand := '*NO BANK BOOTH*';
Logout;
Exit;
end else
BankStuff;
end;
end else
begin
f:
if FindSymbol(Cux, Cuy, 'bank') then
begin
Writeln('Bank Symbol');
Mouse(Cux, Cuy, 2, 2, True);
Wait(RandomRange(2500, 4000));
MakeCompass('n');
FFlag(7);
goto LabelsRFun;
end else
begin
MakeCompass('n');
Writeln('Radialwalk');
Tries := 0;
repeat
Wait(Random(1999));
Inc(Tries);
RadialWalk(WCol, 300, 360, 55, 1, -1);
Flag;
if FindSymbol(Cux, Cuy, 'quest') then
begin
RadialWalk((FindRoadColor), 50, 130, 60, -1, 1);
MakeCompass('e');
Flag;
end;
until FindDTMRotated(Bank, Cux, Cuy, MMX1, MMY1, MMX2, MMY2, -Pi*2, 0, 0.1, Angle) or (FindSymbol(Cux, Cuy, 'bank')) or (Tries >= 4)
if Tries >= 4 then
begin
Tries := 0;
Writeln(Players[CurrentPlayer].Name+': [FATAL FAILURE] Couldn'#39't find bank. Logging out');
Players[CurrentPlayer].Rand := '*NO BANK*';
Logout;
FreeDTM(Bank);
Exit;
end else
BankStuff;
end;
end;
end;

procedure SSmartAnti; // semi-smart antiban
var
g, x, y: Integer;
TP: Tpoint;
begin
if not LoggedIn then Exit;
G := GetCurrentTab;
case G of
1,8,9: Exit;
2: begin
TP := SkilltoCoords(False, 'woodcutting');
MMouse(Tp.x, Tp.y, 10, 10);
if Autoresponder then Autorespond;
FTWait(RandomRange(5, 8));
end;
3: begin
MMouse(RandomRange(717, 734), RandomRange(246, 264), 0, 0);
GetMousePos(x, y);
HoldMouse(x, y, True);
MMouse(717, 270, 5, 150);
FTWait(RandomRange(6, 13));
if Rbool then MMouse(717, 350, 5, 15);
FTWait(RandomRange(5, 10));
MMouse(717, 240, 5, 15);
GetMousePos(x, y);
ReleaseMouse(x, y, True);
end;
4: begin
g := RandomRange(1, 5);
if ExistsItem(g) then
begin
MouseItem(g, False);
ChooseOption('xamine');
end;
end;
5: begin
if FindColorSpiral(x, y, 65536, 575, 726, 224, 412) then
begin
Mouse(x, y, 5, 5, False);
Wait(RandomRange(100, 250));
ChooseOption('xamine');
end;
end;
6,7,12: begin
MMouse(RandomRange(MIX1 +20, MIX2 -15), RandomRange(MIY1 +25, MIY2 -30), 0, 0);
FTWait(RandomRange(3, 7));
if Autoresponder then Autorespond;
MMouse(RandomRange(MIX1 +20, MIX2 -15), RandomRange(MIY1 +25, MIY2 -30), 0, 0);
FTWait(RandomRange(5, 9));
end;
10: begin
if FindColorSpiraltolerance(x, y, 6619135, 610, 264, 714, 421, 7) then
Mouse(RandomRange(570, 629), RandomRange(435, 455), 0, 0, True);
Wait(RandomRange(500, 1300));
Mouse(RandomRange(570, 629), RandomRange(435, 455), 0, 0, True);
FTWait(RandomRange(4, 6));
if not FindColorSpiraltolerance(x, y, 8388608, 254, 427, 261, 432, 10) then
begin
Wait(1300);
SendKeysVB('~', false);
Exit;
end;
case Random(4) of
0: TypeSend('runescape'); // clan chat channels
1: TypeSend('zezima');
2: TypeSend('kingduffy 1');
3: TypeSend('Lightning');
end;
SetChat('friends', 3);
end;
11: begin
case Random(3) of
0: Mouse(RandomRange(568, 604), RandomRange(359, 394), 0, 0, False);
1: Mouse(RandomRange(679, 716), RandomRange(413, 447), 0, 0, False);
2: Mouse(RandomRange(566, 603), RandomRange(411, 448), 0, 0, False);
end;
FTWait(RandomRange(5, 10));
if Autoresponder then Autorespond;
ChooseOption('ancel');
end;
13: begin
MMouse(RandomRange(715, 728), RandomRange(285, 292), 0, 0);
GetMousePos(x, y);
HoldMouse(x, y, True);
MMouse(715, 290, 5, 150);
GetMousePos(x,y);
ReleaseMouse(x, y, True);
FTWait(RandomRange(5, 7));
if FindColorSpiraltolerance(x, y, 65280, 558, 272, 642, 450, 9) then
Mouse(x, y, 0, 5, True);
end;
end;
end;

procedure AntiBan;
var
x, y: integer;
begin
if not LoggedIn then Exit;
case Random(50) of
0..3: begin
Inc(Reportvars[6]);
GameTab(RandomRange(1,15));
SSmartAnti;
FTWait(RandomRange(4, 8));
GameTab(4);
MMouse(cux, cuy, 25, 25);
Wait(Random(300));
end;
4..8: begin
Inc(Reportvars[6]);
RandomMovera(rbool, false);
Wait(Random(300));
RandomMovera(rbool, true);
end;
9..11: begin
Inc(Reportvars[6]);
Mouse(RandomRange(MSX1, MSX2), RandomRange(MSY1, MSY2), 0, 0, False);
Wait(RandomRange(100, 300));
ChooseOption('xamine');
MMouse(Cux, Cuy, 30, 30);
end;
12: begin
Inc(Reportvars[6]);
MMouse(RandomRange(500, 508), RandomRange(348, 356), 0, 0);
GetMousePos(x, y);
HoldMouse(x,y, True);
Wait(RandomRange(300, 600)); GetMousePos(x, y);
ReleaseMouse(x,y, True);
Wait(RandomRange(200, 700));
HoldMouse(x,y, True);
Wait(RandomRange(300, 600)); GetMousePos(x, y);
ReleaseMouse(x, y, True);
FixChat;
end;
end;
end;

procedure CheckLevel;
begin
if not LoggedIn then Exit;
Players[CurrentPlayer].Integers[6] := GetSkillInfo('woodcutting', false);
Players[CurrentPlayer].Integers[5] := Players[CurrentPlayer].Integers[6];
Writeln('Current Woodcutting Level Is ' +InttoStr(Players[CurrentPlayer].Integers[6]));
if Players[CurrentPlayer].Integers[6] < MinLvl then
begin
Writeln((Players[CurrentPlayer].Name)+': Level is too low to cut '+(Players[CurrentPlayer].Strings[0]));
Players[CurrentPlayer].Rand := 'Low Lvl';
LogOut;
end;
end;

procedure CheckAxe;
var
Axe, DAxe: Integer;
begin
if not LoggedIn then Exit;
Status((Players[CurrentPlayer].Name)+ ' - Checking for Axe');
GameTab(4);
Axe := LoadMyDtm('Axe');
DAxe := LoadMyDtm('DAxe');
if FindDTM(Axe, cux, cuy, MIX1, MIY1, MIX2, MIY2) or
FindDTM(DAxe, cux, cuy, MIX1, MIY1, MIX2, MIY2) then
begin
AxeL := True;
FreeDTM(Axe);
FreeDTM(DAxe);
Exit;
end;
GameTab(5);
Wait(2000);
if FindDTM(Axe, cux, cuy, MIX1, MIY1, MIX2, MIY2) or
FindDTM(DAxe, cux, cuy, MIX1, MIY1, MIX2, MIY2) then
begin
AxeL := False;
FreeDTM(Axe);
FreeDTM(DAxe);
GameTab(4);
Exit;
end;
Writeln((Players[CurrentPlayer].Name)+': No Axe was found');
FreeDTM(Axe);
FreeDTM(DAxe);
Players[CurrentPlayer].Rand := '*NO AXE*';
Logout;
Exit;
end;

procedure Chopping; forward;
function CheckEnt(Avoid: Boolean): Boolean; // original SRL-Version by Sumilion
var
Ihme: TPointArray;
tcts: integer;
begin
tcts := GetColortoleranceSpeed;
ColortoleranceSpeed(2);
SetColorspeed2Modifiers(0.7, 1);
FindColorsTolerance(Ihme, 117449, 70, 0, 140, 15, 10);
Result := Length(Ihme) > 10;
ColortoleranceSpeed(tcts);
if Result And Avoid then
begin
Ent := True;
Inc(EntCount);
Inc(Reportvars[5]);
Writeln('Found an Ent! Hopefully we can find another tree...');
Chopping;
end;
end;

function MouseInBox: boolean;
var
x,y: Integer;
b: TBox;
begin
b := IntToBox(140, 50, 380, 300);
GetMousePos(x, y);
result := IntInBox(x, y, b);
end;

procedure DoWait;
var
Waiting: integer;
begin
if not LoggedIn then Exit;
Status((Players[CurrentPlayer].Name)+ ' - Waiting While Chopping');
QuickFlag;
if Nests then BirdNest;
FTWait(2);
if SomethingWrongAt('trees') then CheckAxe;
MarkTime(Waiting);
repeat
FTWait(4);
if not MouseInBox or not IsUpText(TreeShrt3) or InvFull then Exit;
CheckEnt(True);
CheckRandoms;
if not IsUpText(TreeShrt3) or InvFull then Exit;
if Autoresponder then Autorespond;
AntiBan;
until TimeFromMark(Waiting) >= (SecondsToWait*1000)
end;

procedure DoDrop;
begin
if not LoggedIn then Exit;
Status((Players[CurrentPlayer].Name)+ ' - Dropping logs...');
case Lowercase(Players[CurrentPlayer].Strings[1]) of
'keep' : Drop('', True);
'axe' : Drop('NoAxe', True);
'all' : Drop('All', True);
else
begin
Writeln('Invalid Dropping Style. Using Drop-Dtms -method');
Drop('', True);
end;
end;
Inc(Players[CurrentPlayer].Integers[1]);
case Lowercase(Players[CurrentPlayer].Strings[0]) of
'tree' : Reportvars[2] := LogsCutd;
'oak' : Reportvars[3] := LogsCutd;
'willow' : Reportvars[4] := LogsCutd;
end;
Reportvars[0]:= LogsCutd;
Inc(Reportvars[1]);
SendSRLReport;
SrlRandomsReport;
Players[CurrentPlayer].Integers[5] := GetSkillInfo('woodcutting', False);
if AutoResponder then ResArray;
Wait(Random(2000));
ProgReport;
Disguise(TheExp);
RandomMovera(rbool, false);
ArrangeInv;
LogsCutd := 0;
if AutoLogOut then TakeBreak;
MarkTime(XpId);
end;

procedure CameraRot;
begin
if not LoggedIn then Exit;
CheckRandoms;
tol := tolerance + 1;
Status((Players[CurrentPlayer].Name)+ ' - Couldn'#39't find a tree. Rotating Camera');
case Tries of
1: SetAngle(False);
2: MakeCompass('n');
3: MakeCompass('w');
4: MakeCompass('s');
5: MakeCompass('e');
6: CloseWindow;
end;
if Tries > 6 then
begin
Writeln((Players[CurrentPlayer].Name)+': [FATAL FAILURE] Couldn'#39't find a tree. Logging out');
Players[CurrentPlayer].Rand := '*NO TREES*';
Tries := 0;
Logout;
end else
Chopping;
end;

function FindTree(txt: TStringArray; col: TIntegerArray; toler: Integer): Boolean;
var
Qmma: T2DPointArray;
TallyHo: array of array of TPoint;
FinTPA: TpointArray;
k, l, cts: Integer;
begin
if not LoggedIn then Exit;
cts := GetColortoleranceSpeed;
ColorToleranceSpeed(2);
SetArrayLength(TallyHo, high(Col)+1);

for k := 0 to High(col) do
begin
FindColorsSpiraltolerance(Cux, Cuy, TallyHo[k], col[k], MSX1, MSY1, MSX2, MSY2, toler);
if Length(TallyHo[k]) > Length(FinTPA) then FinTPA := TallyHo[k];
end;
if Length(FinTPA) = 0 then
begin
Result := False;
ColorToleranceSpeed(cts);
Exit;
end;
ColortoleranceSpeed(cts);
Qmma := TPAtoATPAEx(FinTPA, 70, 70);
SortATPAFromFirstPoint(Qmma, Point(MSCX, MSCY));

for k := 0 to High(Qmma) do
begin
MiddleTPAEx(Qmma[K], Cux, Cuy);
MMouse(Cux, Cuy, 13, 13);
for l := high(txt) downto 0 do
begin
Wait(Random(265));
if Pos(txt[L], Rs_GetUpText) <= 0 then Continue else
if CheckEnt(False) then Break else
begin
Result := True;
Exit;
end;
end;
end;
end;

procedure Chopping;
begin
if not LoggedIn or Invfull then Exit;
Status((Players[CurrentPlayer].Name)+ ' - Looking for Trees');
if FindTree([TreeShrt1, TreeShrt2, TreeShrt3], [TreeCol1, TreeCol2, TreeCol3], tol) then
begin
if Random(11) < 9 then
Mouse(Cux, Cuy, 0, 0, True)
else
begin
Mouse(Cux, Cuy, 0, 0, False);
Wait(RandomRange(100, 200));
if not ChooseOption('hop') then Chopping;
end;
if Ent then Ent := False;
if Tries > 0 then
begin
SetAngle(True);
Tries := 0;
end;
if tol <> tolerance then tol := tolerance;
Exit;
end else
begin
if Ent then
begin
Writeln('We didn'#39't. Running to avoid the Ent');
Ent := False;
Runto(Wheretorun, false);
Chopping;
end;
Inc(Tries);
CameraRot;
end;
end;
procedure GoLARP; begin if (SRLId = '') or (SRLPassword = '') then begin PlaySound('C:\WINDOWS\Media\ding.wav'); writeln('[Runtime Error] : SRL Id and Password expected in script in line 34 and 35'); Terminatescript; end; end;

procedure Signature; //Ascii art from [url]http://www.network-science.de/ascii/[/url]
begin
Writeln('Greetings and Welcome to use Cut & Drop or Stock Powerchonker ' +(VersionNr)+' by');
Writeln(' ______ ___ ___ __ ');
Wait(100);
Writeln('/\__ _\ /\_ \ /\_ \ /\ \__ ');
Wait(100);
Writeln('\/_/\ \/ _ __ ___\//\ \ \//\ \ __ __ __\ \ ,_\ __ ');
Wait(100);
Writeln(' \ \ \/\ __\/ __`\\ \ \ \ \ \ /\ \/\ \ /´__`\ \ \/ /´__`\ ');
Wait(100);
Writeln(' \ \ \ \ \//\ \_\ \\_\ \_ \_\ \_\ \ \_/ |/\ __/\ \ \_/\ __/ ');
Wait(100);
Writeln(' \ \_\ \_\\ \____//\____\/\____\\ \___/ \ \____\\ \__\ \____\');
Wait(100);
Writeln(' \/_/\/_/ \/___/ \/____/\/____/ \/__/ \/____/ \/__/\/____/');
Wait(2000);
Writeln('Now waiting for SMART to start up');
end;

procedure Cut_n_Stock; // Cut & Stock procedures
var
Water : Integer;
begin
Writeln('Cut & Stock!');
Players[CurrentPlayer].Strings[0] := 'willow';
DeclareTrees;
SetAngle(True);
CheckLevel;
if Autoresponder then ResArray;
CheckAxe;
Wcol := 0;
Water := BitmapFromString(12, 7, 'beNrr3lDYPVIRAHLnjHE=');
WCol := AutoColorThis(Water, 25, MMX1, MMY1, MMX2, MMY2);
FreeBitmap(Water);
if Wcol = 0 then
begin
Wcol := 12228735;
Writeln('Water Color shall be '+InttoStr(WCol));
end;
MarkTime(XpId);
WalktoTrees;
repeat
Chopping;
DoWait;
if InvFull then
begin
BankStuff;
WalktoTrees;
end;
until (Players[CurrentPlayer].Integers[2] >= Players[CurrentPlayer].Integers[0]) or not LoggedIn
end;

begin
if GetScarVersion <> 315 then
begin
Writeln('Please use the Scar version 3.15');
TerminateScript;
end;
Disguise('Cut & Drop or Stock ' +(VersionNr)+ ' by Trollvete');
Clrscr;
SRLId := YourSRLId;
SRLPassword:= YourSRLPassword;
GoLARP;
SRLRandomsReport;
Signature;
SetupSMART;
SetUpSRL;
ScriptID:= '706'
DeclarePlayers;
ClearDebug;
if LoggedIn then LogOut;
LoginPlayer;
if not signed then wait(3000);
Inc(Reportvars[8]);
if AutoLogOut then MarkTime(Break);
repeat
if Players[CurrentPlayer].Booleans[0] then
begin
Cut_N_Stock;
SwitchPlayer;
Continue;
end;
Writeln('Cut & Drop!');
DeclareTrees;
SetAngle(True);
CheckLevel;
if Autoresponder then ResArray;
CheckAxe;
MarkTime(XpId);
repeat
Chopping;
DoWait;
if InvFull or not Loggedin then
doDrop;
until (Players[CurrentPlayer].Integers[1] >= (Players[CurrentPlayer].Integers[0])) or not LoggedIn
SwitchPlayer;
until (Switches >= HowManyPlayers);
Writeln('');
Writeln('Unless something went wrong, every player should now have completed it´s work. Ending the Script');
Writeln('Thank you for using Cut & Drop or Stock Powerchonker!');
end.

Cazax

2008-05-11 17:02:11

Good Job. Yes.

Sir R. M8gic1an

2008-05-11 17:19:51

Script.scar (40.1 KB, 0 views)
and 2 yes votes?

Edit: Yes.

when you use try you need a begin after it, otherwise it'll only try the line below it. (talking about DeclarePlayers here)

~RM

skilld u

2008-05-11 17:23:57

ive already seen the script that he applied with, and it was good.

Iron Man

2008-05-11 18:30:59

I'm very leaning to yes because the script looks awesome, but the 24 posts thing seems kinda small. I'll see how other people handle this before I vote.

EDIT: I probably won't vote no even if anyone else says anything about it anyways (most likely) so I'll just vote yes.

Hobbit

2008-05-11 18:33:11

Added script into post w/ scar tags

Looks good and well structured to me.

Yes.

Gu3st...

2008-05-12 03:51:21

agreed with hobbit ;)

Yep.

Edit: btw; did you viewed my tut in commenting? i havvent seen anyone except me using (* *) comment tags :p

Ashur2Good

2008-05-15 09:35:10

Voted yes.

Reason being that i've read/used the script befure *blush* and it's good! :D


-Ashur

nielsie95

2008-05-16 11:55:47

Welcome, sir!