SRL Archive - Archive

Wizkid - SRL Member Application


Wizkid

2011-07-29 13:43:22

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
A guy at RSBuddy


What is your general programming knowledge?
Delphi


Are you a member of any other communities?
RsBuddy
Powerbot


Tell us about yourself…
From: Wizkid
Back again!

I took a week straight working on this, and a shitload of diet coke. I have to say color is way more complicated then Reflection, and it took a hell off a lot more time.

I did my very best on this script, really tried to cover every aspect..

Any questions are welcomed!

I would recommend not using this script, as all the bugs are not solved. However I'm sick of working on it after 5 hours straight today so it'll have to do for now :(



Please show us one (or multiple) of your scripts.
[simba]
program New;
{.include SRL/SRL/Misc/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Fighting.scar}
{.include SRL/SRL/Skill/Magic.scar}

Type
Monster = Record
Colors: TIntegerArray;
Tolerance: TIntegerArray;
UpTexts: TStringArray;
end;
PickUp = Record
Colors: TIntegerArray;
Tolerance: TIntegerArray;
Names: TStringArray;
end;
Progress = Record
PickUped: Integer;
Attacks: Integer;
Slept: Integer;
end;

var
Monsters: Array of Monster;
PickUps: Array of PickUp;
ProgressPlayer: Array of Progress;

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

SetArrayLength(Monsters, HowManyPlayers);
SetArrayLength(PickUps, HowManyPlayers);

Players[0].Name := 'rockzsoxz';
Players[0].Pass := 'brownies';
Players[0].Nick := 'kil';
Players[0].Active := True;
Players[0].Integers[0] := 60; {% when it will try to eat.}
//Players[0].Integers[4] // Arrows / Main runes left
Players[0].Strings[0] := 'strength'; {attack, strength, defence, magic, range}
Players[0].Strings[1] := '';
Players[0].Strings[2] := 's'; // run dir
Players[0].Booleans[0] := True; // Change fightmode?
Players[0].Booleans[1] := False; // Use Special attack?
Monsters[0].Colors := [4540232];
Monsters[0].Tolerance := [4];
Monsters[0].UpTexts := ['Giant rat'];
PickUps[0].Colors := [4540232];
PickUps[0].Tolerance := [4];
PickUps[0].Names := ['Raw rat meat'];

SetArrayLength(ProgressPlayer, HowManyPlayers);
end;

Const
Server = 50;
Members = True;
Signed = True;

DebugLevel = 0; {0 = None | 1 = Small | 2 = Medium | 3 = Big}
Vers = '0.1';

Var
BlackBox: TBoxArray;
C_PickUp: PickUp;
ArrowCol, ReportTime, BreakTime, CheckTime: Integer;
C_Supply: Boolean;
Inv_BlackList: TBooleanArray;

Procedure NDebug(S: String; Lvl_Warn: Integer);
begin
If DebugLevel >= Lvl_Warn then
Writeln(S);
end;

Procedure CorrectStrings;
var
I, II: Integer;
begin
NDebug('CorrectStrings @ Start', 2);
For I:=0 to HowManyPlayers-1 do
begin
If Not InStrArr(Players[CurrentPlayer].Strings[0],
['attack', 'strength', 'defence', 'range', 'magic'], False)then
begin
Writeln('WARNING* - Please setup your players correctly.');
TerminateScript;
end;

For II:=0 to High(Monsters[I].UpTexts)do
Monsters[I].UpTexts[II] := 'tack ' + Monsters[I].UpTexts[II];
For II:=0 to High(PickUps[I].Names)do
PickUps[I].Names[II] := 'ake ' + PickUps[I].Names[II];
end;
end;

function ArrowAmount: Integer;
begin
GameTab(tab_Equip);
Wait(150+Random(100));
Result := GetAmount(673, 249);
end;

Function GetArrowColor: Integer;
begin
GameTab(Tab_Equip);
Wait(300+Random(200));
Result := GetColor(682, 271);
end;

Function SpellAmount: Integer;
begin
GameTab(Tab_Inv);
Wait(100+Random(200));
Result := GetAmount(572, 218);
end;

Procedure AmountLeft;
begin
Case LowerCase(Players[CurrentPlayer].Strings[0])of
'range':
begin
Players[CurrentPlayer].Integers[4] := ArrowAmount;
ArrowCol := GetArrowColor;
end;
'magic': Players[CurrentPlayer].Integers[4] := SpellAmount;
end;
end;

Procedure EquipArrows;
var
TPA: TPointArray;
ATPA: T2DPointArray;
I, H, InvSpot: Integer;
InvPoint: TPoint;
begin
GameTab(Tab_Inv);
Wait(160+Random(100));
FindColorsTolerance(TPA, ArrowCol, MIX1, MIY1, MIX2, MIY2, 0);
ATPA := TPAToATPAEx(TPA, 10, 10);
H := High(ATPA);
For I:=0 To H do
begin
InvPoint := MiddleTPA(ATPA[I]);
InvSpot := CoordsToItem(InvPoint.X, InvPoint.Y);
If Inv_BlackList[InvSpot-1] then Continue;
MMouseItem(InvSpot);
If WaitUpText('eld ' + Players[CurrentPlayer].Strings[1], 150+Random(100))then
begin
GetMousePos(InvPoint.X, InvPoint.Y);
Mouse(InvPoint.X, InvPoint.Y, 0, 0, True);
Exit;
end else Inv_BlackList[InvSpot-1] := True;
end;
end;

Function CountSpecial: Integer;
var
Spec : array [1..2] of TPoint;
i, x, y : Integer;
begin
If Not GameTab(1)Then Exit;
Spec[1] := Point(602, 417);
Spec[2] := Point(619, 426);
For i:=1 to 4 do
begin
If FindColorTolerance(x, y, 4294720, Spec[1].X, Spec[1].Y, Spec[2].X, Spec[2].Y, 10)then
begin
Result := Result + 25;
Spec[1] := Point(Spec[1].X + 28, Spec[1].Y);
Spec[2] := Point(Spec[2].X + 28, Spec[2].Y);
end else Exit;
end;
end;

Function UseSpecial(PowerNeed: Integer):Boolean;
begin
If Not Players[CurrentPlayer].Booleans[1] then
Exit;
If CountSpecial >= PowerNeed then
begin
MouseBox(574, 417, 710, 426, 1);
Result := True;
end;
end;

Function n_InFight(AreaSize: Integer): Boolean;
var
X, Y: Integer;
begin
Result := (FindColor(x, y, 10496, MSCX-12*AreaSize, MSCY-40*AreaSize, MSCX+12*AreaSize, MSCY))or
(FindColor(x, y, 198716, MSCX-12*AreaSize, MSCY-40*AreaSize, MSCX+12*AreaSize, MSCY));
end;

Procedure FightMode;
begin
If Not Players[CurrentPlayer].Booleans[0] then
Exit;
Case LowerCase(Players[CurrentPlayer].Strings[0]) of
'attack': SetFightMode(1);
'strength': SetFightMode(2);
'defence': SetFightMode(4);
'range': SetFightMode(2);
'magic': If Not Cast(Players[CurrentPlayer].Strings[1], True)then
begin
Writeln('** Failed setting up player ' + Players[CurrentPlayer].Name + ' **');
Logout;
Exit;
end;
end;
end;

function Randoms: Boolean;
begin
Result := FindNormalRandoms;
end;

Procedure AntiBan;
begin
Case Random(400)of
0: HoverSkill(Players[CurrentPlayer].Strings[0], False);
1: HoverSkill('defence', False);
2: HoverSkill('hp', False);
4: GameTab(RandomRange(tab_Combat, tab_Notes));
5..6: SleepAndMoveMouse(600+Random(2400));
7: SetAngle(True);
8..10: MakeCompass(Random(360));
9, 10, 13: RandomMovement;
14..15: Wait(2000+Random(4000));
16..21: UseSpecial(100);
end
end;

Function FindFreeMonsterMM(var x, y: Integer; Kind: String; Colors, Tol: TIntegerArray; UpText: TStringArray; Width, Height: Integer): boolean;
var
ATPA: T2DPointArray;
TPA, TPA2, TPA3: TPointArray;
I, II, H, HH, ArrC, lx, ly: Integer;
B: Boolean;
begin
Result := False;
SetLength(ATPA, Length(Colors));

H := High(Colors);
For I:= 0 to H do
FindColorsTolerance(ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, Tol[i]);

TPA := MergeATPA(ATPA);
ATPA := TPAToATPAEx(TPA, Width, Height);

SetLength(TPA, GetArrayLength(ATPA));
H := High(TPA)
for i:= 0 to H do
TPA[i] := MiddleTPA(ATPA[i]);

TPA2 := GetMiniMapDots(Kind);
H := High(TPA2);
For I:=0 to H do
TPA2[i] := MMToMS(TPA2[i]);

H := High(TPA);
HH := High(TPA2);
SetArrayLength(TPA3, GetArrayLength(TPA));
For I:=0 to H do
For II:=0 to HH do
If IntInBox(TPA[i].X, TPA[i].Y, IntToBox(TPA2[II].X-55, TPA2[II].Y-55, TPA2[II].X+55, TPA2[II].Y+55))then
begin
TPA3[ArrC] := TPA[i];
Inc(ArrC);
Break;
end;
SetArrayLength(TPA3, ArrC);
TPA := CombineTPA(TPA3, TPA);

HH := High(BlackBox);
For I:=0 to H do
begin
B := False;
If FindColor(lx, ly, 10496, TPA[I].X-15, TPA[I].Y-50, TPA[I].X+15, TPA[I].Y)or
FindColor(lx, ly, 198716, TPA[I].X-15, TPA[I].Y-50, TPA[I].X+15, TPA[I].Y) then Continue;

If (HH > 0) then
For II:=0 to HH do
begin
B := IntInBox(TPA[I].X, TPA[I].Y, BlackBox[II]);
If B then Break;
end;
If B then Continue;

MMouse(TPA[i].X, TPA[i].Y, 4, 4);
If WaitUptextMulti(UpText, 250+Random(100))then
begin
GetMousePos(X, Y);
Result := True;
Break;
end;
end;
SetArrayLength(BlackBox, H+1);
For I:=0 to H do
BlackBox[I] := IntToBox(TPA[I].X-5, TPA[I].Y-5, TPA[I].X+5, TPA[I].Y+5);
end;

Function FindMonsters: Boolean;
var
X, Y: Integer;
begin
Result := False;
If Not LoggedIn then Exit;

Result := FindFreeMonsterMM(x, y, 'npc', Monsters[CurrentPlayer].Colors,
Monsters[CurrentPlayer].Tolerance,
Monsters[CurrentPlayer].UpTexts,
10, 10);

If Not Result then
Exit;

Case Random(5)of
0:
Begin
Result := IsUpTextMultiCustom(Monsters[CurrentPlayer].UpTexts);
Mouse(X, Y, 0, 0, True);
end;

1..4:
begin
Mouse(X, Y, 0, 0, False);
Result := WaitOption('ttack', 120+Random(100));
end;
end;

If Result then
begin
Inc(ProgressPlayer[CurrentPlayer].Attacks);
Wait(400+Random(300));
Flag;
end;
end;

Function PickUpItem: Boolean;
var
iTime, X, Y: Integer;
begin
Result := False;
If Not LoggedIn then Exit;

iTime := GetSystemTime + 6000+Random(1500);
Repeat
Result := FindObjThroughMM(x, y, 'item', PickUps[CurrentPlayer].Colors,
PickUps[CurrentPlayer].Tolerance,
['Take'],
10, 10);
If Result then
begin
If IsUpTextMultiCustom(PickUps[CurrentPlayer].Names) then
Mouse(X, Y, 0, 0, True)
else
begin
Mouse(X, Y, 0, 0, False);
If Not ChooseOptionMulti(PickUps[CurrentPlayer].Names)then
Exit;
end;
Wait(500+Random(400));
Flag;
Wait(800+Random(400));
Inc(ProgressPlayer[CurrentPlayer].PickUped);
end;
AntiBan;
Until(Not Result)or(GetSystemTime > iTime);
end;

Function LowHP: Boolean;
begin
Result := (Players[CurrentPlayer].Integers[0] > HPPercent);
end;

Function EatFood: Boolean;
var
I, X, Y: Integer;
begin
Result := False;
If Not LoggedIn Then Exit;

For I:=1 to 28 do
If Not Inv_BlackList[I-1] then
If ExistsItem(I)then
begin
MMouseItem(I);
Result := WaitUpText('Eat', 120+Random(100));
If Result then
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, True);
Wait(700+Random(500));
Exit;
end else

If IsUpText('eld ' + Players[CurrentPlayer].Strings[1])and
(LowerCase(Players[CurrentPlayer].Strings[1]) = 'range')then
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, True);
Wait(300+Random(200));
end else
Inv_BlackList[I] := True;
end;

If LowHP then
begin
Writeln('** Player: ' + Players[CurrentPlayer].Name + ' - got no food % low HP **');
RunAway(Players[CurrentPlayer].Strings[1], True, 2, 3000+Random(2000));
LogOut;
Writeln('** Player: ' + Players[CurrentPlayer].Name + ' - Is now InActive. **');
end;
end;

Procedure FightWait;
var
iTime, AZ: Integer;
begin
Wait(400+Random(500));
AZ := 2;
iTime := GetSystemTime + 40000;
NDebug('Going inside Fightloop', 2);
Repeat
Wait(250+Random(150));
If GetSystemTime-(iTime-40000) > 4000 Then
Az := 1;
Antiban;
If LowHP then
EatFood;
Randoms;
Until(Not n_InFight(AZ))or(GetSystemTime > iTime);
NDebug('Outside fightloop', 2);
end;

Procedure Fighting;
var
iTime, T: Integer;
begin
If Not LoggedIn Then Exit;

iTime := GetSystemTime + 120000+Random(10000);
While not FindMonsters do
begin
Randoms;
AntiBan;
If GetSystemTime > iTime then
begin
Writeln('*Warning* No monster find in 120 secs, nextplayer.');
Logout;
Exit;
end;
Wait(1000+Random(1000));
If T > 4 then
begin
MakeCompass(Random(361));
T := 0;
end;
end;
Wait(1400+Random(1000));
FightWait;
Wait(100+Random(200));
PickUpItem;
end;

Procedure SetPickUps;
var
H: Integer;
Begin
C_PickUp := PickUps[CurrentPlayer];
If LowerCase(Players[CurrentPlayer].Strings[0]) = 'range' then
begin
H := High(C_PickUp.Colors);
SetArrayLength(C_PickUp.Colors, H+1);
SetArrayLength(C_PickUp.Tolerance, H+1);
C_PickUp.Colors[H] := GetArrowColor;
C_PickUp.Tolerance[H] := 1;
H := High(C_PickUp.Names);
SetArrayLength(C_PickUp.Names, H+1);
C_PickUp.Names[H] := 'ake ' + Players[0].Strings[1];
end;
end;

Procedure SetBreakTime;
begin
If PlayersActive > 1 then
BreakTime := 60000*RandomRange(25, 80)
else
BreakTime := 60000*RandomRange(45, 120);

Writeln('Will break in ' + MSToTime(BreakTime, 1));
BreakTime := GetSystemTime + BreakTime;
end;

Procedure NewPlayer;
Var
I: Integer;
begin
SetBreakTime;
C_Supply := (LowerCase(Players[CurrentPlayer].Strings[0]) = 'range')or
(LowerCase(Players[CurrentPlayer].Strings[0]) = 'magic');

For I:=0 to 27 do
Inv_BlackList[I] := False;

SetAngle(True);
Case Random(3)of
0: MakeCompass(Random(361));
end;
FightMode;
Retaliate(True);
SetPickUps;
AmountLeft;
end;

Procedure Report;
var
Total, I: Integer;
begin
Writeln('[-] -> [ GlobalEraser ] <- [-]');
Writeln('[ By Wizkid! ]');
Writeln('[--------------------------------------------]');
Writeln('[-] -> RunTime: ' + Padr(MSToTime(GetTimeRunning, 1) + ' ', 24) + '<- [-]');
For I:=0 to HowManyPlayers-1 do
IncEx(Total, ProgressPlayer[I].PickUped);
Writeln('[-] -> Total Pickups: ' + Padr(IntToStr(Total) + ' ', 18) + '<- [-]');
Total := 0;
For I:=0 to HowManyPlayers-1 do
IncEx(Total, ProgressPlayer[I].Attacks);
Writeln('[-] -> Total Attacks: ' + Padr(IntToStr(Total) + ' ', 18) + '<- [-]');

end;

Procedure TimeForBreak;
var
BreakFor, H, M, S, T: Integer;
begin
If GetSystemTime > BreakTime then
If PlayersActive = 1 then
begin
BreakFor := RandomRange(0 * 60000, 25 * 60000)+Random(4000);
ConvertTime(BreakFor, H, M, S);
Report;
Logout;
Writeln('Break for: '+inttostr(M)+ 'm:' +inttostr(S)+ 's');
MarkTime(T);
Repeat
ConvertTime(BreakFor - TimeFromMark(T), H, M, S)
Disguise(inttostr(M)+ 'm:' +inttostr(S)+ 's Break');
wait(1000);
until (BreakFor < TimeFromMark(T))
NextPlayer(True);
NewPlayer;
SetBreakTime;
end else
If PlayersActive > 1 then
begin
NextPlayer(True);
NewPlayer;
SetBreakTime;
end;
end;

Procedure Checks;
begin
If Not LoggedIn then
Exit;

Case Random(3)of
0:
begin
FindNormalRandoms;
If Lowercase(Players[CurrentPlayer].Strings[0]) = 'range' then
EquipArrows;
end;
end;

If GetSystemTime > CheckTime then
If C_Supply then
begin
AmountLeft;
If Players[CurrentPlayer].Integers[4] < 100 then
begin
Logout;
Writeln('Player: ' + Players[CurrentPlayer].Name + ' | Logged. Reason: Low supply of runes/arrows');
Exit;
end;
CheckTime := GetSystemTime + Round((Players[CurrentPlayer].Integers[4] div 1000 )*60000);
end;

If GetSystemTime > ReportTime then
begin
Report;
ReportTime := GetSystemTime + 60000*2;
end;

TimeForBreak;
end;

begin
{$IFDEF SRL_SMART}
Smart_Server := Server;
Smart_Members := Members;
Smart_Signed := Signed;
Smart_SuperDetail := False;
{$ENDIF}

ClearDebug;
ClearReport;

SetupSRL;

SetArrayLength(Inv_BlackList, 28);
ReportTime := GetSystemTime + 60000*2;
DeclarePlayers;

CorrectStrings;
LoginPlayer;
NewPlayer;
Repeat
If Not LoggedIn then
begin
NextPlayer(False);
NewPlayer;
end;
Checks;
Fighting;
Until(AllPlayersInActive);
end.

Smarter Child

2011-07-29 14:00:37

Yes :)

Although I think you are very new, should have posted more and been a little more active.

But, the script is great!

masterBB

2011-07-29 15:06:56

You've left your name and pass in the script. Will look at the script tonight.

Coh3n

2011-07-29 16:51:13

Why's your debug named NDebug? Just curious..

Floor66

2011-07-29 16:55:50

Nice! You seem to learn really quick! The math in your special attack functions is sweet too; I've never been too smart with that :P

Brain

2011-07-29 19:28:42

wizzup's offspring? I can dig it.

masterBB

2011-07-29 19:47:08

You're script is great. It is a huge improvement compared to your last one. One of the things I vote on is attitude. But I can't remember any post of you :S, so I won't vote.

Dgby714

2011-07-29 20:02:50

His old one (Not even a week old) was about to be closed with a No, shouldn't this be an automatic no as he didn't wait the time limit we have?

senrath

2011-07-29 20:04:20

From: Dgby714
His old one (Not even a week old) was about to be closed with a No, shouldn't this be an automatic no as he didn't wait the time limit we have?


Wizzup? told him to reapply when he felt he was ready, so I dunno.

Flight

2011-07-29 20:17:44

From: senrath
Wizzup? told him to reapply when he felt he was ready, so I dunno.


That's true.

@OP:
The script looks very well constructed in my opinion. It's all color, uses multiple resources from the library, and lots of features I've never used, nor know how to use. On the other hand, you've not very much activity since you've registered here on the forums. Being new or not shouldn't limit you to just talking with the community, we're friendly people, don't be shy. ;) I think you'll find becoming a member isn't dependent upon the knowledge you have and can apply to SRL, but a the majority of it is how you fit in to the community. I've seen your posts before, you're positive and you're obviously more than willing to learn, I just want to see more of that. :)

I'll vote yes, but I'd like to see some activity. You have alot of potential, so show us all what you really can do. ;)

Jakkle

2011-07-29 20:24:17

What flight said :p Decent script, quick learner and willing. Yes from me :)

Bonfield

2011-07-30 02:04:04

script looks good, is any of this from any of nikes scripts you have? sorry if im wrong but i dnt know if its just me but there are some scripting similarities to nike and the script seems really familiar

holding my vote atm

WT-Fakawi

2011-07-30 03:20:46

Fakawi says no.

Wizzup?

2011-07-30 05:17:36

From: Brain
wizzup's offspring? I can dig it.


Not yet my friend, give it at least another 6 years… :p

Wizkid

2011-07-30 06:04:58

From: Coh3n
Why's your debug named NDebug? Just curious..

It stood for NiceDebug, but got tired of typing it out everytime so I shorten it ^^

~Wizkid

Echo_

2011-07-30 08:01:14

Looks pretty good, although you could have used a with-do statement in DeclarePlayers, and it's convention to start type names with a "T".

Regardless, yes from me. You just need to get your forum activity up.

Coh3n

2011-07-30 12:20:41

From: Wizkid
It stood for NiceDebug, but got tired of typing it out everytime so I shorten it ^^

~Wizkid
I find that odd since N1ke used the same procedure.

Ashur2Good

2011-07-30 12:25:19

Nope.

Drakan

2011-07-30 14:05:56

From: Ashur2Good
Nope.


Very constructive there.

The script looks passable to me. But coh3n has me very curious now about the n1ke thing so I'm going to hold off on my vote, just to be safe.

Echo_

2011-07-30 14:13:55

From: Coh3n
I find that odd since N1ke used the same procedure.


This is a little suspicious, he has spent a short amount of time here yet is already quite knowledgeable in both color and reflection scripting. Plus he didn't even wait a few months after joining to go for members, he just jumped right into the hot seat.

Smarter Child

2011-07-30 15:16:32

From: Echo_
This is a little suspicious, he has spent a short amount of time here yet is already quite knowledgeable in both color and reflection scripting. Plus he didn't even wait a few months after joining to go for members, he just jumped right into the hot seat.


This is true, I'm starting to get very suspicious too..:unsure:

BraK

2011-07-30 17:35:20

From: WT-Fakawi
Fakawi says no.


^ Enough said. He always votes yes :)

~BraK

KingKong

2011-07-30 17:49:29

Its a no from me. Although the script looks good, you haven't been active enough.

cycrosism

2011-07-30 19:32:05

From: Echo_
he didn't even wait a few months after joining to go for members, he just jumped right into the hot seat.


That's why I voted no … he wasn't active enough

mixster

2011-07-30 21:02:03

program New;
//mixster A descriptive program name would be nice - I'm assuming it's a fighter based on script
{.include SRL/SRL/Misc/SMART.scar}
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Fighting.scar}
{.include SRL/SRL/Skill/Magic.scar}

Type
Monster = Record
Colors: TIntegerArray;
Tolerance: TIntegerArray;
UpTexts: TStringArray;
end;
PickUp = Record
Colors: TIntegerArray;
Tolerance: TIntegerArray;
Names: TStringArray;
end;
//mixster Monster same as Pickup - could either use a generic one or Pickup = Monster. Not a big deal, but a little neater in my opinion. I forget if Players[] has a options for TVariantArrays which could be used to remove these and keep everything in Players[], but if not ignore and if so a thought for cleaning up
Progress = Record
PickUped: Integer;
Attacks: Integer;
Slept: Integer;
end;

var
Monsters: Array of Monster;
PickUps: Array of PickUp;
ProgressPlayer: Array of Progress;
//mixster Seems like ProgressPlayer should make use of Players[].Integers rather than having its own array of records; would only recommend using the Progress record to store overall statistics to save from re-checking every report time

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

SetArrayLength(Monsters, HowManyPlayers);
SetArrayLength(PickUps, HowManyPlayers);

Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Active := True;
Players[0].Integers[0] := 60; {% when it will try to eat.}
//Players[0].Integers[4] // Arrows / Main runes left
Players[0].Strings[0] := 'strength'; {attack, strength, defence, magic, range}
Players[0].Strings[1] := ''; //mixster blank with no description of what it's for?
Players[0].Strings[2] := 's'; // run dir
Players[0].Booleans[0] := True; // Change fightmode?
Players[0].Booleans[1] := False; // Use Special attack?
Monsters[0].Colors := [4540232];
Monsters[0].Tolerance := [4];
Monsters[0].UpTexts := ['Giant rat'];
PickUps[0].Colors := [4540232];
PickUps[0].Tolerance := [4];
PickUps[0].Names := ['Raw rat meat'];

SetArrayLength(ProgressPlayer, HowManyPlayers);
end;

Const
Server = 50;
Members = True;
Signed = True;

DebugLevel = 0; {0 = None | 1 = Small | 2 = Medium | 3 = Big}
//mixster more descriptive options would be nice
Vers = '0.1';

Var
BlackBox: TBoxArray;
C_PickUp: PickUp;
ArrowCol, ReportTime, BreakTime, CheckTime: Integer;
C_Supply: Boolean;
Inv_BlackList: TBooleanArray;

Procedure NDebug(S: String; Lvl_Warn: Integer);
begin
If DebugLevel >= Lvl_Warn then
Writeln(S);
end;

Procedure CorrectStrings;
var
I, II: Integer;
begin
NDebug('CorrectStrings @ Start', 2);
For I:=0 to HowManyPlayers-1 do
begin
If Not InStrArr(Players[CurrentPlayer].Strings[0],
['attack', 'strength', 'defence', 'range', 'magic'], False)then
//mixster CurrentPlayer should be I
begin
Writeln('WARNING* - Please setup your players correctly.');
TerminateScript;
end;

For II:=0 to High(Monsters[I].UpTexts)do
Monsters[I].UpTexts[II] := 'tack ' + Monsters[I].UpTexts[II];
For II:=0 to High(PickUps[I].Names)do
PickUps[I].Names[II] := 'ake ' + PickUps[I].Names[II];
end;
end;

function ArrowAmount: Integer;
begin
GameTab(tab_Equip);
Wait(150+Random(100));
Result := GetAmount(673, 249);
end;

Function GetArrowColor: Integer;
begin
GameTab(Tab_Equip);
Wait(300+Random(200));
Result := GetColor(682, 271);
end;

Function SpellAmount: Integer;
begin
GameTab(Tab_Inv);
Wait(100+Random(200));
Result := GetAmount(572, 218);
end;

//mixster similar functions, but the hardcoded values seem peculiar - not a dynamic way or variables along the lines of MMX1 and co that point to the right bit?

Procedure AmountLeft;
begin
//mixster rather than lowercase every time, slight efficiency to be gained by lowercasing it in the CorrectStrings procedure, but nothing of importance, just a tidy tip
Case LowerCase(Players[CurrentPlayer].Strings[0])of
'range':
begin
Players[CurrentPlayer].Integers[4] := ArrowAmount;
ArrowCol := GetArrowColor;
end;
'magic': Players[CurrentPlayer].Integers[4] := SpellAmount;
end;
end;

Procedure EquipArrows;
var
TPA: TPointArray;
ATPA: T2DPointArray;
I, H, InvSpot: Integer;
InvPoint: TPoint;
begin
GameTab(Tab_Inv);
Wait(160+Random(100));
FindColorsTolerance(TPA, ArrowCol, MIX1, MIY1, MIX2, MIY2, 0);
ATPA := TPAToATPAEx(TPA, 10, 10);
H := High(ATPA);
For I:=0 To H do
begin
InvPoint := MiddleTPA(ATPA[I]);
InvSpot := CoordsToItem(InvPoint.X, InvPoint.Y);
If Inv_BlackList[InvSpot-1] then Continue;
MMouseItem(InvSpot);
If WaitUpText('eld ' + Players[CurrentPlayer].Strings[1], 150+Random(100))then
//mixster here's that crafty Strings[1]... Hopefully I'll remember to double check here when I find out what Strings[1] is for
begin
GetMousePos(InvPoint.X, InvPoint.Y);
Mouse(InvPoint.X, InvPoint.Y, 0, 0, True);
Exit;
end else Inv_BlackList[InvSpot-1] := True;
//mixster Would read a bit easier if you had Inv_BlackList one longer and just based everything on InvSpot rather than InvSpot-1, but another superficial suggestion
end;
end;

Function CountSpecial: Integer;
var
Spec : array [1..2] of TPoint;
i, x, y : Integer;
begin
If Not GameTab(1)Then Exit;
Spec[1] := Point(602, 417);
Spec[2] := Point(619, 426);
//mixster Hardcoded points again, giving me the willies
For i:=1 to 4 do
begin
If FindColorTolerance(x, y, 4294720, Spec[1].X, Spec[1].Y, Spec[2].X, Spec[2].Y, 10)then
begin
Result := Result + 25; //mixster An anamoly in that Result isn't set to its default beforehand like later functions
Spec[1] := Point(Spec[1].X + 28, Spec[1].Y); //mixster Spec[1].x := Spec[1].x + 28?
Spec[2] := Point(Spec[2].X + 28, Spec[2].Y); //mixster as above - easier to spot what's going on
end else Exit;
end;
end;

Function UseSpecial(PowerNeed: Integer):Boolean;
begin
If Not Players[CurrentPlayer].Booleans[1] then
Exit;
If CountSpecial >= PowerNeed then
begin
MouseBox(574, 417, 710, 426, 1); //mixster Some more scary constant values
Result := True; //mixster As in last, no setting Result to False at beginning or in the else section
end;
end;

Function n_InFight(AreaSize: Integer): Boolean;
var
X, Y: Integer;
begin
Result := (FindColor(x, y, 10496, MSCX-12*AreaSize, MSCY-40*AreaSize, MSCX+12*AreaSize, MSCY))or
(FindColor(x, y, 198716, MSCX-12*AreaSize, MSCY-40*AreaSize, MSCX+12*AreaSize, MSCY));
end;

Procedure FightMode;
begin
If Not Players[CurrentPlayer].Booleans[0] then
Exit;
//mixster As mentioned before, superficial yet neater lowercasing in the setup bit would mean no need here
Case LowerCase(Players[CurrentPlayer].Strings[0]) of
'attack': SetFightMode(1);
'strength': SetFightMode(2);
'defence': SetFightMode(4);
'range': SetFightMode(2);
'magic': If Not Cast(Players[CurrentPlayer].Strings[1], True)then
begin
Writeln('** Failed setting up player ' + Players[CurrentPlayer].Name + ' **');
//mixster Seems like the error could be a lot more descriptive since the exact problem isn't stated, but at least Strings[1] has come into it again with a fairly solid explanation of what it is
Logout;
Exit; //mixster I'd say a bit of a redundant Exit, is it not?
end;
end;
end;

//mixster Not really sure if shortening function names is a good thing to do, but I think generally not
function Randoms: Boolean;
begin
Result := FindNormalRandoms;
end;

Procedure AntiBan;
begin
Case Random(400)of
0: HoverSkill(Players[CurrentPlayer].Strings[0], False);
1: HoverSkill('defence', False);
2: HoverSkill('hp', False);
4: GameTab(RandomRange(tab_Combat, tab_Notes));
5..6: SleepAndMoveMouse(600+Random(2400));
7: SetAngle(True);
8..10: MakeCompass(Random(360));
9, 10, 13: RandomMovement;
14..15: Wait(2000+Random(4000));
16..21: UseSpecial(100);
end
end;

Function FindFreeMonsterMM(var x, y: Integer; Kind: String; Colors, Tol: TIntegerArray; UpText: TStringArray; Width, Height: Integer): boolean;
var
ATPA: T2DPointArray;
TPA, TPA2, TPA3: TPointArray;
I, II, H, HH, ArrC, lx, ly: Integer;
B: Boolean;
begin
Result := False; //mixster that bit of Result setting that was lacking earlier
SetLength(ATPA, Length(Colors));

H := High(Colors);
For I:= 0 to H do
FindColorsTolerance(ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, Tol[i]);

TPA := MergeATPA(ATPA);
ATPA := TPAToATPAEx(TPA, Width, Height);

SetLength(TPA, GetArrayLength(ATPA));
H := High(TPA) //mixster missing ; and may as well reverse the order of the two lines and set the length to H + 1, not of great importance though
for i:= 0 to H do
TPA[i] := MiddleTPA(ATPA[i]);

TPA2 := GetMiniMapDots(Kind);
H := High(TPA2); //mixster You overwrite High(TPA)...
For I:=0 to H do
TPA2[i] := MMToMS(TPA2[i]);

H := High(TPA); //mixster Only to set it back to this value
HH := High(TPA2); //mixster And then get High(TPA2) again - using HH in above For loop would remove the hassle
SetArrayLength(TPA3, GetArrayLength(TPA)); //mixster Could use H + 1 here instead of getting the array length again
For I:=0 to H do
For II:=0 to HH do
If IntInBox(TPA[i].X, TPA[i].Y, IntToBox(TPA2[II].X-55, TPA2[II].Y-55, TPA2[II].X+55, TPA2[II].Y+55))then
begin
TPA3[ArrC] := TPA[i];
Inc(ArrC); //mixster ArrC is an unusual name choice for this, just saying
Break;
end;
SetArrayLength(TPA3, ArrC);
TPA := CombineTPA(TPA3, TPA); //mixster A bit odd as TPA3 should be TPA with some results filtered out...

HH := High(BlackBox); //mixster Ah, a notorious global variable...
For I:=0 to H do
begin
B := False;
If FindColor(lx, ly, 10496, TPA[I].X-15, TPA[I].Y-50, TPA[I].X+15, TPA[I].Y)or
FindColor(lx, ly, 198716, TPA[I].X-15, TPA[I].Y-50, TPA[I].X+15, TPA[I].Y) then Continue;

If (HH > 0) then //mixster Little tip, the For loop shouldn't execute at all if the starting value (0) is bigger than HH, meaning that the If then isn't really needed. However, that's assuming you meant this to be HH >= 0 - if it is supposed to just be > then ignore this comment
For II:=0 to HH do
begin
B := IntInBox(TPA[I].X, TPA[I].Y, BlackBox[II]);
If B then Break;
end;
If B then Continue; //mixster indenting suggests it should be part of the if..then but no begin and end, making this a redunant "if False" check when HH <= 0

MMouse(TPA[i].X, TPA[i].Y, 4, 4);
If WaitUptextMulti(UpText, 250+Random(100))then
begin
GetMousePos(X, Y);
Result := True; //mixster I'd rather do Result := WalkUptextMult; If (Result) then, but either way is fine
Break;
end;
end;
SetArrayLength(BlackBox, H+1);
For I:=0 to H do
BlackBox[I] := IntToBox(TPA[I].X-5, TPA[I].Y-5, TPA[I].X+5, TPA[I].Y+5);
//mixster Okay, so we have BlackBox as a "last iteration" area to avoid when checking for Monsters - sounds like it's risky as it stores simply from last iteration without regards to time. That is, even if the last check was half an hour ago, it may still skip some areas simply because they were stored last run
//mixster I would, perhaps, more worringly say that it doesn't rely on success to set the black boxes up, so if it were the sort of thing often run it may end up finding the same things but having to ignore them since the black boxes were set up on them
end;

Function FindMonsters: Boolean;
var
X, Y: Integer;
begin
Result := False; //mixster Our default value assignment, not suspicious considering the next line
If Not LoggedIn then Exit;

Result := FindFreeMonsterMM(x, y, 'npc', Monsters[CurrentPlayer].Colors,
Monsters[CurrentPlayer].Tolerance,
Monsters[CurrentPlayer].UpTexts,
10, 10);

If Not Result then
Exit;

Case Random(5)of
0:
Begin
Result := IsUpTextMultiCustom(Monsters[CurrentPlayer].UpTexts);
Mouse(X, Y, 0, 0, True);
end;

1..4:
begin
Mouse(X, Y, 0, 0, False);
Result := WaitOption('ttack', 120+Random(100));
end;
end;

If Result then
begin
Inc(ProgressPlayer[CurrentPlayer].Attacks);
Wait(400+Random(300));
Flag;
end;
end;

Function PickUpItem: Boolean;
var
iTime, X, Y: Integer;
begin
Result := False; //mixster As with the last, an unsuspicious default value assignment
If Not LoggedIn then Exit;

iTime := GetSystemTime + 6000+Random(1500);
Repeat
Result := FindObjThroughMM(x, y, 'item', PickUps[CurrentPlayer].Colors,
PickUps[CurrentPlayer].Tolerance,
['Take'],
10, 10);
If Result then
begin
If IsUpTextMultiCustom(PickUps[CurrentPlayer].Names) then
Mouse(X, Y, 0, 0, True)
else
begin
Mouse(X, Y, 0, 0, False);
If Not ChooseOptionMulti(PickUps[CurrentPlayer].Names)then
Exit; //mixster Result still set to true - seems like this should be a place to set it to False?
//mixster Also unclear why you exit rather than continuing on, hoping it was a false positive with the time limit to prevent it being continuously tricked
end;
Wait(500+Random(400));
Flag;
Wait(800+Random(400));
Inc(ProgressPlayer[CurrentPlayer].PickUped);
end;
AntiBan;
Until(Not Result)or(GetSystemTime > iTime); //mixster seems like Result should really be replaced with a local boolean variable since its set each loop and it only breaks when false or when time's up
end;

Function LowHP: Boolean;
begin
Result := (Players[CurrentPlayer].Integers[0] > HPPercent);
end;

Function EatFood: Boolean;
var
I, X, Y: Integer;
begin
Result := False;
If Not LoggedIn Then Exit;

For I:=1 to 28 do
If Not Inv_BlackList[I-1] then //mixster A reminder that extending the length by 1 and not doing I-1 each time is easier on the eyes and you've missed a spot of indenting
If ExistsItem(I)then
begin
MMouseItem(I);
Result := WaitUpText('Eat', 120+Random(100));
If Result then
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, True);
Wait(700+Random(500));
Exit;
end else

If IsUpText('eld ' + Players[CurrentPlayer].Strings[1])and
(LowerCase(Players[CurrentPlayer].Strings[1]) = 'range')then //mixster Aha, found Strings[1] only I think it should be Strings[0]?
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, True);
Wait(300+Random(200));
end else
Inv_BlackList[I] := True; //mixster Seems like it should be I-1 going on past experience
end;

If LowHP then
begin
Writeln('** Player: ' + Players[CurrentPlayer].Name + ' - got no food % low HP **'); //mixster & not %?
RunAway(Players[CurrentPlayer].Strings[1], True, 2, 3000+Random(2000)); //mixster Strings[1] again, but this time it should be Strings[2], I think?
LogOut;
Writeln('** Player: ' + Players[CurrentPlayer].Name + ' - Is now InActive. **');
end;
end;

Procedure FightWait;
var
iTime, AZ: Integer;
begin
Wait(400+Random(500));
AZ := 2;
iTime := GetSystemTime + 40000;
NDebug('Going inside Fightloop', 2);
Repeat
Wait(250+Random(150));
If GetSystemTime-(iTime-40000) > 4000 Then //mixster I'd say use 2 local time variables rather than subtracting 40,000 each time from iTime, but that's just me
//mixster Alternatively I'd move the 40,000 to the other side of the conditional and have a comment highlighting that, that is:
//mixster If GetSystemTime-iTime > -36000 Then // Subtracted 40,000 from both sides to clean up
Az := 1;
Antiban;
If LowHP then
EatFood;
Randoms;
Until(Not n_InFight(AZ))or(GetSystemTime > iTime);
NDebug('Outside fightloop', 2);
end;

Procedure Fighting;
var
iTime, T: Integer;
begin
If Not LoggedIn Then Exit;

iTime := GetSystemTime + 120000+Random(10000);
While not FindMonsters do
begin
Randoms;
AntiBan;
If GetSystemTime > iTime then
begin
Writeln('*Warning* No monster find in 120 secs, nextplayer.');
Logout;
Exit;
end;
Wait(1000+Random(1000));
If T > 4 then //mixster T isn't set or incremented anywhere
begin
MakeCompass(Random(361)); //mixster 361 is a little odd as 0 == 360 when it comes to degrees, but not realling important
T := 0;
end;
end;
Wait(1400+Random(1000));
FightWait;
Wait(100+Random(200));
PickUpItem;
end;

Procedure SetPickUps;
var
H: Integer;
Begin
C_PickUp := PickUps[CurrentPlayer];
If LowerCase(Players[CurrentPlayer].Strings[0]) = 'range' then
begin
H := High(C_PickUp.Colors);
SetArrayLength(C_PickUp.Colors, H+1);
SetArrayLength(C_PickUp.Tolerance, H+1);
C_PickUp.Colors[H] := GetArrowColor;
C_PickUp.Tolerance[H] := 1;
H := High(C_PickUp.Names);
SetArrayLength(C_PickUp.Names, H+1);
C_PickUp.Names[H] := 'ake ' + Players[0].Strings[1]; //mixster Strings[1] again, hurrah! Only, shouldn't that be Players[CurrentPlayer] and, as far as I know, Strings[1] is still blank, making this unusual and I also think it's supposed to be a spell, making this even more so
end;
end;

Procedure SetBreakTime;
begin
If PlayersActive > 1 then
BreakTime := 60000*RandomRange(25, 80)
else
BreakTime := 60000*RandomRange(45, 120);

Writeln('Will break in ' + MSToTime(BreakTime, 1));
BreakTime := GetSystemTime + BreakTime;
end;

Procedure NewPlayer;
Var
I: Integer;
begin
SetBreakTime;
C_Supply := (LowerCase(Players[CurrentPlayer].Strings[0]) = 'range')or
(LowerCase(Players[CurrentPlayer].Strings[0]) = 'magic');

For I:=0 to 27 do
Inv_BlackList[I] := False;

SetAngle(True);
Case Random(3)of
0: MakeCompass(Random(361)); // mixster Here's another random(361)
end;
FightMode;
Retaliate(True);
SetPickUps;
AmountLeft;
end;

Procedure Report;
var
Total, I: Integer;
begin
Writeln('[-] -> [ GlobalEraser ] <- [-]');
Writeln('[ By Wizkid! ]');
Writeln('[--------------------------------------------]');
Writeln('[-] -> RunTime: ' + Padr(MSToTime(GetTimeRunning, 1) + ' ', 24) + '<- [-]');
For I:=0 to HowManyPlayers-1 do
IncEx(Total, ProgressPlayer[I].PickUped);
Writeln('[-] -> Total Pickups: ' + Padr(IntToStr(Total) + ' ', 18) + '<- [-]');
Total := 0;
For I:=0 to HowManyPlayers-1 do
IncEx(Total, ProgressPlayer[I].Attacks);
Writeln('[-] -> Total Attacks: ' + Padr(IntToStr(Total) + ' ', 18) + '<- [-]');

end;

Procedure TimeForBreak;
var
BreakFor, H, M, S, T: Integer;
begin
If GetSystemTime > BreakTime then
If PlayersActive = 1 then
begin
BreakFor := RandomRange(0 * 60000, 25 * 60000)+Random(4000); //mixster 0 * 60,000 = 0, I'd say you can drop the * 60,000 unless you choose a non-zero number
ConvertTime(BreakFor, H, M, S);
Report;
Logout;
Writeln('Break for: '+inttostr(M)+ 'm:' +inttostr(S)+ 's');
MarkTime(T);
Repeat
ConvertTime(BreakFor - TimeFromMark(T), H, M, S)
Disguise(inttostr(M)+ 'm:' +inttostr(S)+ 's Break');
wait(1000);
until (BreakFor < TimeFromMark(T))
NextPlayer(True);
NewPlayer;
SetBreakTime;
end else
If PlayersActive > 1 then
begin
NextPlayer(True);
NewPlayer;
SetBreakTime;
end;
end;

Procedure Checks;
begin
If Not LoggedIn then
Exit;

Case Random(3)of
0:
begin
FindNormalRandoms; //mixster Not Randoms?
If Lowercase(Players[CurrentPlayer].Strings[0]) = 'range' then
EquipArrows;
end;
end;

If GetSystemTime > CheckTime then
If C_Supply then
begin
AmountLeft;
If Players[CurrentPlayer].Integers[4] < 100 then
begin
Logout;
Writeln('Player: ' + Players[CurrentPlayer].Name + ' | Logged. Reason: Low supply of runes/arrows');
Exit;
end;
CheckTime := GetSystemTime + Round((Players[CurrentPlayer].Integers[4] div 1000 )*60000);
end;

If GetSystemTime > ReportTime then
begin
Report;
ReportTime := GetSystemTime + 60000*2;
end;

TimeForBreak;
end;

begin
{$IFDEF SRL_SMART}
Smart_Server := Server;
Smart_Members := Members;
Smart_Signed := Signed;
Smart_SuperDetail := False;
{$ENDIF}

ClearDebug;
ClearReport;

SetupSRL;

SetArrayLength(Inv_BlackList, 28);
ReportTime := GetSystemTime + 60000*2;
DeclarePlayers;

CorrectStrings;
LoginPlayer;
NewPlayer;
Repeat
If Not LoggedIn then
begin
NextPlayer(False);
NewPlayer;
end;
Checks;
Fighting;
Until(AllPlayersInActive);
// mixster Maybe output the Report here? Checks comes before Fighting, so the last printed report would be inaccurate
end.

Main points are:
a lack of clarification of what Strings[1] is for (I know for spell selection, maybe also for arrow type);
a few slip-ups using Strings[1] where Strings[0]/Strings[2] should be;
a use of Players[0] instead of Players[CurrentPlayer];
a Players[CurrentPlayer] where it should be Players;
a global variable, BlackBox, that may throw a spanner in the works depending on how often its procedure is called, though it probably will be fine.

senrath

2011-07-30 22:55:27

I'm gonna go with no. I'd like to see you be active for at least a month.

Wizkid

2011-07-31 11:29:05

From: Coh3n
I find that odd since N1ke used the same procedure.


I didn't take the procedure from him, made it myself!
However, I did look at his scripts for learning.

First off I had à global variable named Debug, therefor "NiceDebug" otherwise errors! Then I shorten it to NDebug for easier typing!!

Bobzilla69

2011-07-31 11:34:36

voted No, people already covered most reasons but mainly your very new, boost your activity and help out around the forum

senrath

2011-07-31 11:34:40

Ah. Well, I assume the debug variable is to tell the script whether or not to run the debug bits? I'd change your NDebug to debug, and the debug variable to something like UseDebug.

But that's more of a personal preference.

Coh3n

2011-07-31 11:35:29

From: Wizkid
I didn't take the procedure from him, made it myself!
However, I did look at his scripts for learning.

First off I had à global variable named Debug, therefor "NiceDebug" otherwise errors! Then I shorten it to NDebug for easier typing!!

I still find it "odd" since most people name their custom debug procedures after their name. NDebug for Naike, N2Debug for Nava2, CDebug for Coh3n, etc., but I shouldn't assume. I just found it odd, that's all.

Awkwardsaw

2011-07-31 11:39:54

I'll say yes. Script is nice, and I'm hoping you stay active afterwords :)

masterBB

2011-07-31 11:50:28

From: senrath
Ah. Well, I assume the debug variable is to tell the script whether or not to run the debug bits? I'd change your NDebug to debug, and the debug variable to something like UseDebug.

But that's more of a personal preference.


But as you mentioned that is a personal preference. I like it to call the const debug and the function DebugLine or DebugMessage. I think UseX is a bit messy and confusing.

I voted no cause of your short time on the forum. There are a few threads, which I can't find back for some reason, that state it's not wise to apply for members with a low amount of posts. I would like to see you as a junior member though.

Home

2011-07-31 13:49:42

From: Coh3n
I still find it "odd" since most people name their custom debug procedures after their name. NDebug for Naike, N2Debug for Nava2, CDebug for Coh3n, etc., but I shouldn't assume. I just found it odd, that's all.


I will just use SDebug. No reason at all for name, but mostly yes people do this.

Coh3n: Red <3


~Home

Ashur2Good

2011-08-03 00:28:33

From: drags111
Very constructive there.

The script looks passable to me. But coh3n has me very curious now about the n1ke thing so I'm going to hold off on my vote, just to be safe.


I like how fawaki said the same thing yet you only quoted me… Shows the inner fag in ya

-Ash

Drakan

2011-08-03 00:35:22

From: Ashur2Good
I like how fawaki said the same thing yet you only quoted me… Shows the inner fag in ya

-Ash


Yes but the difference is, fakawi isn't a douchebag.

BraK

2011-08-03 01:43:10

Let's keep it civil people and also keep it on topic. We are better than that.

~BraK

Markus

2011-08-03 11:36:29

Any reason for using the same proxy I use right now?

Wizkid

2011-08-04 17:01:21

No reason at all, I use a proxy for other stuff, and using firefox I can't have one tab proxfied!

However I suspect that someone is logging on this account more than me? :S

~ Wizkid

Markus

2011-08-05 05:35:36

Well, could you then just make one post with your real IP? Saves the hassle of searching through the access logs for the headers as the proxy is more transparant than my window.

Wizkid

2011-08-05 06:10:23

Here you go