SRL Archive - Archive

ProphesyOfWolf - SRL Member Application


Goobs

2009-06-10 02:11:03

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


Are you affilated in anyway with Jagex LTD?
hell no

Were you Referred to SRL?



What is your general programming knowledge?
I have done CSS in the past. And, of course, Pascal from SCAR =D


Are you a member of any other communities?
Sythe, ScuneRape.


Tell us about yourself…
From: ProphesyOfWolf
I am ProphesyOfWolf. I enjoy reading, playing Mario, and confusing Jagex with mah autoing. Uhm. I'm 16, and I just got fired not too long ago; which is why I had time to do this. I've applied before, a long time ago. I just got back into scripting recently, so yesh! I'm still pretty good =3



Please show us one (or multiple) of your scripts.
program VEClaySoftener;

{.include SRL/SRL/MISC/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/MISC/Users.scar}

{$DEFINE DEBUG}
var
x, y, IX, IY, ChatTimer, HowManyResponses: Integer;
LoadsDone, LoadsDone2: Integer;
LessThan14, NP: Boolean;
SA: Extended;
Question, Response: Array of TStringArray;


function DeclareDTM(Which: Integer): Integer;
begin
case Which of
0: Result := DTMFromString('78DA63CC616060E86040014BDBBC18F881342' + //Empty Bucket
'394CF980C241A50D564471AA2AAC90212F5A86A927D2550D5E461AA8' +
'9F24453530C245A50D54CA97442550372732FAA9A39B5686E4E05123' +
'DA86A8A1351DD0C0078C30EAA');
1: Result := DTMFromString('78DA631467606090664001739ABC18F881342' + //Water-Filled Bucket
'394CF08E288A0AAC98E3444552306248451D554D7CE41552345841A7' +
'94CF7F4943AA1AA9100128AA86AD676A1B9590048C8A2AA498E8D425' +
'1030071CD0B26');
2: Result := DTMFromString('78DA639CCCC0C0D0C2800296764531F003694' + //Dry Clay
'6289F710A90A84155D3531984AA6606A61A270B455435F38144039A3' +
'9A55E9876B5A3AAD93A2B19554D2F9068C2EF1E0073C30EBA');
3: Result := DTMFromString('78DA631463606058C28002B2033918F881342' + //Wet clay
'394CF280824E6A0AA71324053A3022416A1AA31D4604055230B24D6A' +
'1AA897244334700534D71249A1A6E20B112CDCDBE686AF830DD13E5C' +
'A81E99EB9A86A2C7550DD0C00991D0B37');
end;
end;

Function SetWalkDTM(Number, HowMany, Tolerance, TheColor:Integer): Integer; //Taken from Blumblebee's DDTM Tutorial. Much more efficient than what I had.. >.<
var MainPoint: TDTMPointDef; dtmSubPoints: Array of TDTMPointDef; TempTDTM: TDTM; i: Integer;
begin
SetLength(dtmSubPoints, HowMany);
case Number of
0: //To Fountain
begin
with MainPoint do
begin
x := 715;
y := 150;
AreaSize := 1;
AreaShape := 0;
Color := TheColor;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 711;
dtmSubPoints[0].y := 148;
dtmSubPoints[1].x := 719;
dtmSubPoints[1].y := 142;
dtmSubPoints[2].x := 721;
dtmSubPoints[2].y := 153;
dtmSubPoints[3].x := 705;
dtmSubPoints[3].y := 154;
dtmSubPoints[4].x := 726;
dtmSubPoints[4].y := 156;
end;
1: //To Bank
begin
with MainPoint do
begin
x := 802;
y := 229;
AreaSize := 1;
AreaShape := 0;
Color := TheColor;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 801;
dtmSubPoints[0].y := 226;
dtmSubPoints[1].x := 792;
dtmSubPoints[1].y := 225;
dtmSubPoints[2].x := 790;
dtmSubPoints[2].y := 233;
dtmSubPoints[3].x := 804;
dtmSubPoints[3].y := 235;
dtmSubPoints[4].x := 812;
dtmSubPoints[4].y := 227;
end;
end;
for I := 0 to High(dtmSubPoints) do
begin
dtmSubPoints[i].AreaSize := 1;
dtmSubPoints[i].AreaShape := 0;
dtmSubPoints[i].Color := TheColor;
dtmSubPoints[i].Tolerance := Tolerance;
end;
TempTDTM.MainPoint := MainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;

procedure MainLoop; Forward;

procedure ProgressReport; Forward;

function Responder: Boolean; Forward;

function MFDTMInstance(Identifier: Integer; Left: Boolean): Boolean; //"Mouse First DTM instance. Just for inventory.
var
MX, MY, I: Integer;
IB: TBox;
begin
If(FindDTM(Identifier, MX, MY, MIX1, MIY1, MIX2, MIY2)) then
begin
for I := 1 to 28 do
begin
IB := InvBox(I);
If(FindDTM(Identifier, MX, MY, IB.x1, IB.y1, IB.x2, IB.y2)) then
begin
Mouse(MX, MY, 3, 3, Left);
Result := True;
Exit;
end;
end;
end;
end;

procedure AntiBan;
begin
case random(Players[CurrentPlayer].Integers[2]) of
3, 4: PickupMouse;
0, 7: RandomMovement;
1, 2: BoredHuman;
end;
end;

procedure AntiRandoms;
begin
FindNormalRandoms;
Responder;
end;

procedure SetResponderArr; //--taken from Blumblebee's script =3
begin
HowManyResponses := 5;

SetLength(Question, HowManyResponses);
SetLength(Response, HowManyResponses);

Question[0] := ['Hi', 'Hello', 'Hey', 'Sup', 'Howdy', 'Hiya'];
Response[0] := ['Hi', 'Hello', 'Hey', 'Sup', 'Howdy', 'Hiya','Hi there'];

Question[1] := ['Lol', 'Rofl', 'Lawl', 'Haha', 'funny', 'Lmao', 'Lmfao'];
Response[1] := ['Lol', 'Rofl', 'Lawl', 'Haha', 'funny', 'Lmao', 'Lmfao'];

Question[2] := ['noob', 'Nub', 'N00b', 'Nooblet'];
Response[2] := ['sigh...', 'lol', 'LOL', 'lawl'];

Question[3] := ['macro', 'autoer', 'cheater', 'bot', 'autoing'];
Response[3] := ['lol who?','who me?','haha how?'];

Question[4] := ['clay', 'soft'];
Response[4] := ['yup, doin clay', 'yepperz', 'makin money', 'yup. hbu?'];
end;

Function InChatAr(Text: array of string): Boolean; //Credits to EvilChicken & Nava2 --taken from Blumblebee's script =3
var I, H: integer; s: string;
begin
H := High(Text);
if (not (GetLastChatText(s))) then
LastChatter(s);
for I := 0 to H do
begin
if (Pos(Lowercase(Text[i]), (Lowercase(s))) > 0) then
begin
Result := true;
Exit;
end;
end;
end;

Function Responder: Boolean; //--taken from Blumblebee's script =3
var i, ii, OldMsg, NewMsg: Byte; TexttoType: String;
begin
if not Players[CurrentPlayer].Booleans[1] then Exit;
if (GetSystemTime-ChatTimer < 120000 +RandomRange(-25000, 25000)) then Exit;
for i := 0 to High(Question) do
begin
for ii := 0 to High(Question[i]) do
begin
if InChatAr([Question[i][ii]]) then
begin
NewMsg := i;
if (NewMsg = OldMsg) then Exit;
TextToType := Response[i][Random(High(Response)+1)];
if (TextToType <> '') and (TextToType <> Question[i][ii]) then
TypeSend(TextToType) else Exit;
NewMsg := OldMsg;
ChatTimer := GetSystemTime;
Result := True;
end;
end;
end;
if Result then Inc(Players[CurrentPlayer].Integers[15]);
end;

function PoWTPA(var x, y: Integer; TheColor, Tol, MX, MY, X1, Y1, X2, Y2: Integer; HueMod, SatMod: Extended; RCFUptext: Boolean; TheUptext: String): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HueMod, SatMod);
FindColorsSpiralTolerance(MX, MY, TPA, TheColor, X1, Y1, X2, Y2, Tol);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 15, 15);
SetColorSpeed2Modifiers(0.2, 0.2);

for I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
If(not(RCFUptext)) then
begin
If(IsUpText(TheUptext)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
If(RCFUptext) then
begin
Mouse(x, y, 3, 3, False);
If(ChooseOption(TheUptext)) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;
end;

function IsAtFountain: Boolean;
var
I, DDTM, Tolerance: Integer;
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..1] of TDTMPointDef;
TempTDTM: TDTM;
begin
with dtmMainPoint do
begin
x := 17;
y := 32;
AreaSize := 1;
AreaShape := 0;
Color := 1060930;
Tolerance := Tolerance;
end;
dtmSubPoints[0].x := 33;
dtmSubPoints[0].y := 23;
dtmSubPoints[1].x := 21;
dtmSubPoints[1].y := 20;
for I := 0 to 1 do
begin
dtmSubPoints[I].AreaSize := 1;
dtmSubPoints[I].AreaShape := 0;
dtmSubPoints[I].Color := 1060930;
dtmSubPoints[I].Tolerance := Tolerance;
end;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
DDTM := AddDTM(TempTDTM);
for Tolerance := 0 to 25 do
begin
If(DTMRotated(DDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
Result := True;
Exit;
end else
begin
Result := False;
end;
end;
FreeDTM(DDTM);
end;

procedure WalkToFountain;
var WDDTM, A: Integer;
begin
MakeCompass('N');
AntiRandoms;
AntiBan;
A := 5;
WDDTM := SetWalkDTM(0, 5, A, FindVarrockRoadColor);
repeat
WDDTM := SetWalkDTM(0, 5, A, FindVarrockRoadColor);
A := A + 5;
until((DTMRotated(WDDTM, x, y, MMX1, MMY1, MMCX, MMCY)) or (A >= 25))
If(A >= 15) then
begin
If(RadialRoadWalk(FindVarrockRoadColor, 309, 328, 60, 3, 3)) then
begin
FFlag(3);
Wait(randomrange(200, 300));
repeat
Wait(50);
SymbolAccuracy := SymbolAccuracy - 0.05;
until(FindSymbol(x, y, 'water')) or (SymbolAccuracy <=0.25);
If(FindSymbol(x, y, 'water')) then
begin
SymbolAccuracy := SA;
Mouse(x, y, 2, 2, True);
Flag;
AntiRandoms;
{$IFDEF DEBUG}WriteLN('Made it to the fountain using RRW.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(SymbolAccuracy <= 0.25) then
begin
ProgressReport;
WriteLN('Could not find water symbol! Switching players');
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;
If(DTMRotated(WDDTM, x, y, MMX1, MMY1, (MMCX - 3), MMCY)) then
begin
Mouse(x, y, 2, 2, True);
FFlag(2);
repeat
Wait(50);
AntiRandoms;
SymbolAccuracy := SymbolAccuracy - 0.05;
until(FindSymbol(x, y, 'water')) or (SymbolAccuracy <= 0.25);
If(FindSymbol(x, y, 'water')) then
begin
SymbolAccuracy := SA;
Mouse(x, y, 2, 2, True);
Flag;
AntiRandoms;
Exit;
FreeDTM(WDDTM);
end;
If(SymbolAccuracy <= 0.25) then
begin
ProgressReport;
WriteLN('Could not find water symbol! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
{$IFDEF DEBUG}WriteLN('Made it to the fountain using DDTM.');{$ENDIF}
end;
FreeDTM(WDDTM);
end;

Function FindBankers(Var Bank: TPoint; Var Angle: Extended): Boolean; //From SRL Essence Miner. Creds to Wizzup?

Var
I: Integer;
B, gB: TPointArray;
aTPA: T2DPointArray;

Begin
Result := False;
FindColorsSpiralTolerance(MMCX, MMY2, B, 60909, MMX1, MMY1, MMX2, MMY2, 0);
aTPA := SplitTPA(B, 10);
SortATPASize(aTPA, True);
If Length(aTPA) = 0 Then
Exit;
B := aTPA[0];
For I := 0 To High(B) - 1 Do
Begin
If (Abs(B[I].Y - B[I + 1].Y) < 15) And (Abs(B[I].X - B[I + 1].X) < 60) Then
Begin
SetLength(gB, Length(gB) + 1);
gB[High(gB)] := B[I];
If High(gB) > 3 Then // 4 bankers.
Begin
Bank := MiddleTPA(gB);
Bank.Y := Bank.Y - 5;
Angle := Degrees(ArcTan2(gB[0].y - gB[High(gB)].y, gB[0].x - gB[High(gB)].x)) + 90;
If Angle < 0 Then
Angle := 90 - (Angle * -1) + 270;
Result := True;
Exit;
End;
End
Else
SetLength(gB, 0);
End;
End;

procedure WalkToBank;
var
WDDTM, A: Integer;
AA: Extended;
P: TPoint;
begin
MakeCompass('N');
AntiRandoms;
AntiBan;
A := 5;
WDDTM := SetWalkDTM(1, 5, A, FindVarrockRoadColor);
repeat
WDDTM := SetWalkDTM(1, 5, A, FindVarrockRoadColor);
A := A + 5;
until((DTMRotated(WDDTM, x, y, 636, MMY1, MMX2, MMY2)) or (A >= 15))
A := 0;
If(A >= 15) then
begin
If(RadialRoadWalk(FindVarrockRoadColor, 100, 120, 73, 3, 3)) then
begin
FFlag(2);
Wait(randomrange(200, 300));
If(FindBankers(P, AA)) then
begin
Mouse(P.x, (P.y - 5), 2, 2, True);
Flag;
{$IFDEF DEBUG}WriteLN('Made it to the bank using RRW.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(not(FindBankers(P, AA))) then
begin
ProgressReport;
WriteLN('Could not make it to bank! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;
If(DTMRotated(WDDTM, x, y, 636, MMY1, MMX2, MMY2)) then
begin
Mouse(x, y, 3, 3, True);
FFlag(2);
Wait(randomrange(600, 900));
If(FindBankers(P, AA)) then
begin
Mouse(P.x, (P.y - 5), 2, 2, True);
Flag;
{$IFDEF DEBUG}WriteLN('Made it to the bank using DDTM.');{$ENDIF}
FreeDTM(WDDTM);
Exit;
end;
If(not(FindBankers(P, AA))) then
begin
ProgressReport;
WriteLN('Could not find bankers! Switching players');
FreeDTM(WDDTM);
LogOut;
NextPlayer(True);
NP := True;
Exit;
end;
end;
end;

procedure Banking(Depositing, Withdrawing, FB: Boolean);
begin
AntiRandoms;
If(not(BankScreen)) then
begin
AntiBan;
AntiRandoms;
If(PoWTPA(x, y, 2183002, 7, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.22, 2.6, True, 'uick')) then
begin
repeat
Wait(randomrange(50, 100));
AntiRandoms;
until(PinScreen or BankScreen)
If(PinScreen) then
begin
repeat
InPin(Players[CurrentPlayer].Pin);
Wait(random(500));
until(BankScreen)
end;
end;
end;
If(BankScreen) then
begin
If(Depositing) then
begin
Wait(randomrange(250, 450));
MFDTMInstance(DeclareDTM(3), False);
Wait(randomrange(50, 95));
ChooseOption('ll');
Wait(randomrange(100, 300));
repeat
Wait(50);
until(not(FindDTM(DeclareDTM(3), x, y, MIX1, MIY1, MIX2, MIY2)))
end;
If(Withdrawing) then
begin
Wait(randomrange(250, 450));
If(FB) then
begin
If(FindDTM(DeclareDTM(0), x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 2, 2, False);
ChooseOption('X');
repeat
Wait(random(50));
until(FindText(x, y, 'mount', UpChars, MCX1, MCY1, MCX2, MCY2))
Wait(randomrange(100, 300));
TypeSend('14');
repeat
Wait(random(50));
until(FindDTM(DeclareDTM(0), x, y, MIX1, MIY1, MIX2, MIY2))
Wait(randomrange(120, 350));
end;
end;
If(FindDTM(DeclareDTM(2), x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 2, 2, False);
ChooseOption('ll');
Wait(randomrange(75, 150));
repeat
Wait(random(50))
until(FindDTM(DeclareDTM(2), x, y, MIX1, MIY1, MIX2, MIY2))
Wait(50);
if(CountItems(DeclareDTM(2), 'dtm', [0]) < 14) then LessThan14 := True;
end else
begin
WriteLN('No more clay. Switching/Terminating.');
CloseBank;
ProgressReport;
LogOut;
If(not(AllPlayersInactive)) then
begin
NP := True;
NextPlayer(False);
end;
If(AllPlayersInactive) then TerminateScript;
end;
end;
end;
end;

procedure HandleMissingBuckets;
begin
If(not(FindDTM(DeclareDTM(1), x, y, MIX1, MIY1, MIX2, MIY2))) then
begin
If(CountItems(DeclareDTM(0), 'dtm', [0]) < 14) then
begin
Banking(False, False, False);
MFDTMInstance(DeclareDTM(0), False);
Wait(randomrange(50, 100));
ChooseOption('ll');
Banking(False, True, True);
end;
end;
end;

procedure MixAtBank;
begin
MFDTMInstance(DeclareDTM(1), True);
Wait(randomrange(500, 600));
MFDTMInstance(DeclareDTM(2), True);
repeat
Wait(randomrange(50, 100));
until(FindNPCChatText('oft', Nothing))
Mouse(MCCX, MCCY, 4, 4, False);
ChooseOption('ll');
repeat
AntiBan;
Wait(randomrange(350, 500));
AntiRandoms;
until(not(FindDTM(DeclareDTM(1), x, y, MIX1, MIY1, MIX2, MIY2)))
Banking(True, True, False);
CloseBank;
Wait(randomrange(500, 1000));
end;

procedure SetupSmart;
begin
SmartSetupEx(23, False, True, False);
Wait(3000);
SetTargetDC(SmartGetDC);
repeat
Wait(100);
until(SmartGetColor(253, 233)<>1118604);
ClearDebug;
end;

function HasClay: Boolean;
begin
Result := FindDTM(DeclareDTM(2), x, y, MIX1, MIY1, MIX2, MIY2);
end;

procedure HandleFountain;
var
EB, WB, DC, BC: Integer;
begin
EB := DeclareDTM(0);
WB := DeclareDTM(1);
DC := DeclareDTM(2);
BC := DeclareDTM(4);
AntiRandoms;
If(HasClay) then
begin
If(PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, False, 'alk')) then
begin
If(FindDTM(EB, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(EB, True);
Wait(randomrange(300, 600));
MMouse(x, y, 3, 3);
Wait(randomrange(150, 300));
AntiRandoms;
If(IsUpText('ount')) then
begin
Mouse(x, y, 0, 0, False);
ChooseOption('ount');
end else
begin
MFDTMInstance(EB, True);
Wait(randomrange(300, 600));
MFDTMInstance(EB, True);
AntiRandoms;
PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, True, 'ount');
end;
end;
repeat
AntiBan;
Wait(randomrange(450, 500));
AntiRandoms;
until(CountItems(WB, 'dtm', [0]) = 14)
If(FindDTM(DC, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(WB, True);
Wait(randomrange(100, 150));
MFDTMInstance(DC, True);
repeat
Wait(randomrange(50, 100));
until(FindNPCChatText('oft', Nothing))
Mouse(MCCX, MCCY, 4, 4, False);
ChooseOption('ll');
repeat
AntiBan;
AntiRandoms;
Wait(randomrange(350, 500));
AntiRandoms;
until(not(FindDTM(DC, IX, IY, MIX1, MIY1, MIX2, MIY2)))
If(FindDTM(EB, IX, IY, MIX1, MIY1, MIX2, MIY2)) then
begin
MFDTMInstance(EB, True);
Wait(randomrange(100, 250));
PoWTPA(x, y, 12814441, 11, MSCX, MSCY, MSX1, MSY1, MSX2, MSY2, 0.12, 2.11, True, 'ount');
repeat
AntiBan;
Wait(randomrange(450, 500));
AntiRandoms;
until(not(FindDTM(EB, x, y, MIX1, MIY1, MIX2, MIY2)))
end;
end;
end;
end;
FreeDTM(EB);
FreeDTM(WB);
FreeDTM(DC);
FreeDTM(BC);
end;

function LoadItemCountArray: TIntegerArray;
var
I: Integer;
IA: TIntegerArray;
begin
SetLength(IA, 4);
SetLength(Result, 4);
for I := 0 to 3 do
begin
IA[i] := DeclareDTM(I);
Result[i] := CountItems(IA[i], 'dtm', [0]);
end;
end;

procedure DebugItemCounts;
var
I: Integer;
ItemArray: TIntegerArray;
begin
SetLength(ItemArray, 4);
ItemArray := LoadItemCountArray;
for I := 0 to 3 do
begin
WriteLN(IntToStr(I)+' : '+IntToStr(ItemArray[i]));
end;
end;

procedure InitialSetup;
begin
SetupSRL;
SRLPlayerForm(True, [], ['How many loads till player rest/switch?', 'Max loads?', 'Anti-Ban Chance? (Higher number means less chance)'], [], []);
SetupSmart;
end;

procedure ProgressReport;
begin
ClearDebug;
WriteLN('~~~~~~~~~~~~~~ProphesyOfWolf Presents~~~~~~~~~~~~~~~');
WriteLN('~~~~~~~~~~~~~Varrock East Clay Softener~~~~~~~~~~~~~');
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLN('~~');
WriteLN('~~ Loads Done: '+IntToStr(LoadsDone));
WriteLN('~~ Clays Softened: '+IntToStr((LoadsDone * 14)));
WriteLN('~~ Time Running: '+TimeRunning);
WriteLN('~~ Responds Done: '+IntToStr(Players[CurrentPlayer].Integers[15]));
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLN('~~ Please Post Feedback and Proggies on my Thread!');
WriteLN('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;

procedure MainLoop;
var
I: Integer;
begin
InitialSetup;
Wait(500);
LessThan14 := False;
SA := SymbolAccuracy;
repeat
repeat
repeat
NP := False;
If(not(LoggedIn)) then LoginPlayer;
Wait(RandomRange(500, 1000));
HandleMissingBuckets;
If(CountItems(DeclareDTM(1), 'dtm', [0]) > 0) then
begin
If(CountItems(DeclareDTM(2), 'dtm', [0]) < CountItems(DeclareDTM(1), 'dtm', [0])) then
begin
Banking(False, True, False);
CloseBank;
Wait(500);
end;
If(CountItems(DeclareDTM(2), 'dtm', [0]) >= CountItems(DeclareDTM(1), 'dtm', [0])) or (LessThan14) then
begin
MixAtBank;
Inc(LoadsDone2);
Inc(I);
CloseBank;
end;
end;
RunEnergy(50);
WalkToFountain;
If(NP) then Continue;
Wait(randomrange(1500, 2500));
HandleFountain;
Wait(randomrange(1500, 2500));
WalkToBank;
If(NP) then Continue;
Wait(randomrange(1500, 2500));
Banking(True, True, False);
CloseBank;
Inc(LoadsDone2);
Inc(I);
IncEx(LoadsDone, I);
ProgressReport;
I := 0;
If(NP) then Continue;
until(Players[CurrentPlayer].Integers[0] <= LoadsDone2)
LogOut;
LoadsDone2 := 0;
If(PlayersActive > 1) then NextPlayer(True) else
begin
Wait(randomrange(10000, 45000));
LoginPlayer;
end;
until(Players[CurrentPlayer].Integers[1] <= LoadsDone)
LogOut;
ProgressReport;
TerminateScript;
until(false)
end;

begin
MainLoop;
end.

*updated a few things as I was running it.

Blumblebee

2009-06-10 04:12:42

the autoresponder, and surronding procedures (SetResponderArr and Responder) are mine, so please credit, that would be awesome. The script looks good, although ill hold my vote until i read through it in more detail.

Da 0wner

2009-06-10 04:17:10

Alright, I am on my iPod and scrolling down those boxes fail on it. But in your Declaredtm function you can use a case :D.

Goobs

2009-06-10 22:55:47

@blumble: Mmk. I credited. I just had the credits from your script (I think dummy caster), crediting Nava2 and all. Sorry for not crediting! =X

@Da Owner: Yeah, I know I coulda used it. I was going to, earlier on, but I forgot to do it. I'll change it =P


EDIT: Cased it =3

ShowerThoughts

2009-06-10 23:10:30

Yes.

marpis

2009-06-10 23:59:04

Yes from me, but here are some things that need to be improved:
- Your powtpa function never uses HueMod and SatMod
- If something fails, then the script logs out, logs in next player and tries to continue where the former player left. To fix this, remove NextPlayer from all procedures, and just make them logout. Then put "if not loggedin then exit;" in every procedures 1st line. Now make a function SwitchPlayers that switches player if needed (if not loggedin, if (timefrommark(RoundStart) > 30*60*1000) etc.) And in walking to bank, if symbol is not found it will keep the player active (NextPlayer(true)) which should not be the case
- Free your DTMs

Nice scripting!

Goobs

2009-06-11 00:07:52

@marpis: Thanks for the compliments and advice! I think I fixed it, but I did it oddly. I used labels =3. So if it runs into a problem, it will set a boolean to true. Then the script, if it finds out that this boolean is true, will loop back to the beginning. =D

I didn't even notice I hadn't made my function use those! lol. No wonder it was slipping up!

*UPDATE*.

NCDS

2009-06-11 00:12:39

I've seen you around a little bit and you have gained quite a reputation @ ScuneRape.com
I like your attitude and your code isn't bad either.

You should try and avoid declaring x and y as global variable's.

Pretty lacking as far as FailSafe's go…

I suggest that you read up on if..then..else / end else . This will help significantly with Fail Safe's.

I see some logic, decent debug output's… It's good to let the user know what the script is doing :)

while..do loop's are helpful to know as well. (another good one for fail safe's)

Another thing is that a great majority of the script was taken from Blumblebee. It really isn't smart to apply for member's with a script that wasn't fully(or close to it) made by you.

Usually you would be a "Shoo In" IMO but because so many func's / proc's were taken from blumblebee, it give's me doubt's as to how much of this script is actually created by you.

However, because I have witnessed your helpful / positive attitude and you obviously had to atleast have basic knowledge of SCAR and SRL to put that script together…
I vote yes.

Good Luck with the rest of your vote's!

Goobs

2009-06-11 00:19:32

@NCDS: Thanks for the vote and feedback. I really only copied the autoresponder section, which was originally created by Nava2, right? It was just a little extra. I also used the outline for the DDTM setting procedure, because it would be a pain to code it out when I could just get the outline and redo it the way I need to. Other than that, it's pretty much all me, except for the SetupSmart, which is almost universally the same. I made this as custom as I could go without it being ridiculous. =D

NCDS

2009-06-11 00:26:15

That's what I like to hear.

Also, if you ever need assistance writing a DDTM you can also to go Includes/SRL/ScriptingTools and use the DDTM editor kindly placed there for your disposal by the SRL staff :)

Goobs

2009-06-11 00:31:51

Yup! That's what I used =D. I just layed it out the way it is because it's alot more efficient.

P1nky

2009-06-11 04:12:14

Yes
covers most of it :)
Good job

Goobs

2009-06-11 10:16:25

Thanks Joker =D. Nice to hear from you again.

Naike

2009-06-11 13:33:29

Yes.

XcanadamanX

2009-06-12 02:51:07

One question why do you forward your main loop? I looked and there is no reason to forward it…

Goobs

2009-06-12 04:39:35

I was messing around, figuring out labels. Forgot to remove my forward =P.

XcanadamanX

2009-06-12 04:49:03

instead of using labels in your main loop you could use continue instead.
so
If(NP) then continue;

i just dont like labels thats all :P

Rubix

2009-06-12 04:52:12

Yes, as all others have prevouisly said, and I you're quite active on ScuneRape.

Goobs

2009-06-12 05:56:11

From: XcanadamanX
instead of using labels in your main loop you could use continue instead.
so
If(NP) then continue;

i just dont like labels thats all :P



The point of the labels was to make it loop back to the beginning if it had to switch players, so it didn't just pick up where the last player left off. Failsafey =D.

I'm going to update it with some major changes in a sec.

XcanadamanX

2009-06-12 06:08:38

the continue would do the same thing as the label ;)

Goobs

2009-06-12 07:11:34

Oh. Really? O.O That's one thing I didn't know. =P I will keep that in mind. Thankee, good sire. =D

Da 0wner

2009-06-12 16:43:12

To teach you continue if you do not already know:

program New;

var
i : integer;

begin
for i := 0 to 5 do
begin
if i = 3 then
Continue
else
Writeln('I is ' + IntToStr(i));
end;
Writeln('See how 3 was skipped?');
end.
So Continue; basically returns to the top of a loop.

XcanadamanX

2009-06-12 17:00:33

From: ProphesyOfWolf
Oh. Really? O.O That's one thing I didn't know. =P I will keep that in mind. Thankee, good sire. =D


Thats why im here. just want to make you better :p

edit: Da Owner it should be
program New;

var
i : integer;

begin
for i := 0 to 5 do
begin
if i = 3 then
Continue;
Writeln('I is ' + IntToStr(i));
end;
Writeln('See how 3 was skipped?');
end.

no else is needed.

Da 0wner

2009-06-12 20:17:25

Yeah lmao sorry, it was like 4:43am xD.

Nava2

2009-06-13 00:42:29

Yes, careful of Memory Leaks etc.

Also, Symbol Accuracy is actually an extended. So when you check if its < 25.. no duh its less than 25! :)

ZaSz

2009-06-13 00:47:19

Yes, for reasons stated above.

Goobs

2009-06-13 01:27:48

@Nava2: Oh. Doh! Didn't know that. I'll change it =D

EDIT: Changed.

Laur€ns

2009-06-13 21:04:01

From: ProphesyOfWolf
How Long have You Played Runescape?
8 Year(s)


That's way too long. No.

Just kidding.. Yes, your script is cool :)

Home

2009-06-14 14:06:55

Yes from me, but don't make unlimited loops Example:

Repeat
Wait(100)
Until(FindDtm...... )

Hobbit

2009-06-14 22:10:08

Yes 20
No 0

In!

Welcome