SRL Archive - MSI Archives

Fishing.scar


Sir R. M8gic1an

2010-06-10 18:28:22

Okay, I'm very slowly starting on the fisher. Just every now and then when I have a bit of time.

So my first step: I looked through my old fisher, to see the general structure of it, and see what funcs might be useful.

All of these would need a re-write if used, but I'll leave them here as refference.

[php]
Function DiscoverFishEquip: String;
var
i, Ix, Iy:integer;
begin
if not LoggedIn then exit;
Gametab(4);
RMDEbug('AutoDetecting equipment');
Result := '';
Gametab(4);

for i:= bmp_FishGear_Harpoon Downto bmp_FishGear_SmallNet do
begin
if FindBitmapToleranceIn(srl_GetBitmap(i), Ix, Iy, MIX1, MIY1, MIX2, MIY2, 10) then
begin
case i of
bmp_FishGear_SmallNet: Result := 'net';
bmp_FishGear_Rod : Result := 'rod';
bmp_FishGear_FlyRod : Result := 'fly';
bmp_FishGear_Cage : Result := 'cage';
bmp_FishGear_Harpoon : Result := 'harpoon';
end;
Players[CurrentPlayer].Integers[1] := srl_GetBitmap(i);
end;

if Result <> '' then break;
end;
if Result = '' then RMDebug('DiscoverFishEquip: Could not auto detect equip')
else RMDebug('fishing equip found: ' + Result);
end;

Function CheckEquip: Boolean;
var Ix, Iy, t, i:integer;
begin
if not LoggedIN then exit;
if FindNormalRandoms then exit;

for t := 0 to 2 do
begin
if Gametab(4) then break;
wait(1000+Random(500));
end;

if i >= 3 then
begin
RMDebug('couldnt get game tab');
Result := true;
CheckEquip;
exit;
end;

Result := FindBitmapToleranceIn(Players[CurrentPlayer].Integers[1], Ix, Iy, MIX1, MIY1, MIX2, MIY2, 10);

if not Result then RMDebug('CheckEquip: No fishing equipment found! - ');
end;

function PickUpFishingEquip(name:string):boolean;
var
TVFishingArray: TVariantArray;
x, y:integer;
begin
if not LoggedIn then exit;
if CheckEquip then exit;
if FindNormalRandoms then exit;
Result := False;
RMDebug('Looking for equip on the floor');
case lowercase(name) of
'harpoon': TVFishingArray := ['arpoon', 6645357, 14];
'cage': TVFishingArray := ['obster pot', 6974323, 7];
'fly', 'fly fishing': TVFishingArray := ['ly fishing', 872554, 13];
'rod', 'rod fishing': TVFishingArray := ['shing rod', 602951, 15];
'net': TVFishingArray := ['ing net', 1844525, 11];
else exit;
end;


RMFlag(5);
if (FindObj(x, y, TVFishingArray[0], TVFishingArray[1], TVFishingArray[2])) then
begin
RMDebug('Found Equip');
Inc(RodsFound);
Result := True;
Mouse(x, y, 0, 0, True)
RMFlag(5);
Wait(250);
end else
if Players[CurrentPlayer].loc <> 'power' then
Result := GetNewEquip
else begin
RMDebug('Could not find equip');
Players[CurrentPlayer].Rand := 'no equip';
end;
end;

function AreWeNearWater: Boolean;
var
arP: TPointArray;
tmpCTS, Time: Integer;
begin
Time := GetSystemTime;
Result := false;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.15, 0.25);

if not(FindColorsTolerance(arP, 9403503, MSCX-60, MSCY-60, MSCX+60, MSCY+60, 5)) then
begin
RMDebug('We are not near water 1');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;

if (Length(arP) >= 1000) then
Result := true;


ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

if not Result then
begin
RMDebug('We are not near water 2');
Relocate('fish');
Exit;
end;
end;

function IsFishSpotClose: Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
ararP: T2DPointArray;
TBs: Array[0..3] of TBox;
tmpCTS, i, j, arL, arL2, FindThisFish, WhirlPoolCheck: Integer;
P: TPoint;
X, Y, Z: Extended;
begin
if not LoggedIn then exit;

Result := False;

if not AreWeNearWater then exit;

TBs[0] := IntToBox(MSCX-20, MSCY - 60, MSCX + 20, MSCY - 20);
TBs[1] := IntToBox(MSCX+20, MSCY - 20, MSCX + 60, MSCY + 20);
TBs[2] := IntToBox(MSCX-20, MSCY + 20, MSCX + 20, MSCY + 60);
TBs[3] := IntToBox(MSCX-60, MSCY - 20, MSCX - 20, MSCY + 20);

if (Round(rs_GetCompassAngleDegrees) mod 90) > 10 then
begin
case Round(rs_GetCompassAngleDegrees / 90) of
0: MakeCompass('w');
1: MakeCompass('n');
2: MakeCompass('e');
3: MakeCompass('s');
4: MakeCompass('w');
end;
RMDebug('IsFishSpotClose: re-adjusting compass ; angle: '+FloatToStr(rs_GetCompassAngleDegrees));
end;

MarkTime(FindThisFish);
MarkTime(WhirlPoolCheck);
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.27);
repeat

if TimeFromMark(WhirlPoolCheck) > 500 then
begin
RMHandleWhirlPool;
exit;
end else
MarkTime(WhirlPoolCheck);

if TimeFromMark(FindThisFish) >= 3000 then break;
SetLength(ararP, 4);

for i:= 0 to 3 do
FindColorsTolerance(ararP, 11642528, TBs.x1, TBs.y1, TBs.x2, TBs.y2, 10);



try
arP := MergeATPA(ararP);
except
Continue;
end;


if Length(arP) <= 0 then
Continue;

arC := GetColors(arP);
arUC := arC;
ClearSameIntegers(arUC);
arL := High(arUC);
arL2 := High(arC);

for i := 0 to arL do
begin
ColorToXYZ(arC, X, Y, Z);

if (X >= 24.95) and (X <= 49.47) and (Y >= 26.29) and (Y <= 52.00) and (Z >= 35.63) and (Z <= 60.26) then
begin
for j := 0 to arL2 do
begin
if (arUC = arC[j]) then
begin
SetLength(arAP, Length(arAP) + 1);
arAP[High(arAP)] := arP[j];
end;
end;
end;
end;

SortTPAFrom(arAP, Point(MSCX, MSCY));
ararP := SplitTPA(arAP, 35);
arL := High(ararP);

for i := 0 to arL do
begin
if (Length(ararP) < 10) then Continue;

//DebugTPA(ararP, 'RM_Fisher_Images - IsFishClose'+IntToStr(IsFishCloseN)) ;

if not DirSet then
begin
P := MiddleTPA(ararP);
GetWaterLocation(P);
end;

Result := true;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
exit;
end;

until(TimeFromMark(FindThisFish) >= 3000);
RMDebug('no fish spot close');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;


Function NextSpot: integer;
var
i:integer;

begin
if not LoggedIn then exit;
Result := 1;
for i:=1 to 28 do
if not ExistsItem(i) then
begin
Result:= i;
exit;
end;
end;

function PickUpFishingEquip(name:string):boolean;
var
TVFishingArray: TVariantArray;
x, y:integer;
begin
if not LoggedIn then exit;
if CheckEquip then exit;
if FindNormalRandoms then exit;
Result := False;
RMDebug('Looking for equip on the floor');
case lowercase(name) of
'harpoon': TVFishingArray := ['arpoon', 6645357, 14];
'cage': TVFishingArray := ['obster pot', 6974323, 7];
'fly', 'fly fishing': TVFishingArray := ['ly fishing', 872554, 13];
'rod', 'rod fishing': TVFishingArray := ['shing rod', 602951, 15];
'net': TVFishingArray := ['ing net', 1844525, 11];
else exit;
end;


RMFlag(5);
if (FindObj(x, y, TVFishingArray[0], TVFishingArray[1], TVFishingArray[2])) then
begin
RMDebug('Found Equip');
Inc(RodsFound);
Result := True;
Mouse(x, y, 0, 0, True)
RMFlag(5);
Wait(250);
end else
if Players[CurrentPlayer].loc <> 'power' then
Result := GetNewEquip
else begin
RMDebug('Could not find equip');
Players[CurrentPlayer].Rand := 'no equip';
end;
end;

function AreWeNearWater: Boolean;
var
arP: TPointArray;
tmpCTS, Time: Integer;
begin
Time := GetSystemTime;
Result := false;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.15, 0.25);

if not(FindColorsTolerance(arP, 9403503, MSCX-60, MSCY-60, MSCX+60, MSCY+60, 5)) then
begin
RMDebug('We are not near water 1');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;

if (Length(arP) >= 1000) then
Result := true;


ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

if not Result then
begin
RMDebug('We are not near water 2');
Relocate('fish');
Exit;
end;
end;

function IsFishSpotClose: Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
ararP: T2DPointArray;
TBs: Array[0..3] of TBox;
tmpCTS, i, j, arL, arL2, FindThisFish, WhirlPoolCheck: Integer;
P: TPoint;
X, Y, Z: Extended;
begin
if not LoggedIn then exit;

Result := False;

if not AreWeNearWater then exit;

TBs[0] := IntToBox(MSCX-20, MSCY - 60, MSCX + 20, MSCY - 20);
TBs[1] := IntToBox(MSCX+20, MSCY - 20, MSCX + 60, MSCY + 20);
TBs[2] := IntToBox(MSCX-20, MSCY + 20, MSCX + 20, MSCY + 60);
TBs[3] := IntToBox(MSCX-60, MSCY - 20, MSCX - 20, MSCY + 20);

if (Round(rs_GetCompassAngleDegrees) mod 90) > 10 then
begin
case Round(rs_GetCompassAngleDegrees / 90) of
0: MakeCompass('w');
1: MakeCompass('n');
2: MakeCompass('e');
3: MakeCompass('s');
4: MakeCompass('w');
end;
RMDebug('IsFishSpotClose: re-adjusting compass ; angle: '+FloatToStr(rs_GetCompassAngleDegrees));
end;

MarkTime(FindThisFish);
MarkTime(WhirlPoolCheck);
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12, 0.27);
repeat

if TimeFromMark(WhirlPoolCheck) > 500 then
begin
RMHandleWhirlPool;
exit;
end else
MarkTime(WhirlPoolCheck);

if TimeFromMark(FindThisFish) >= 3000 then break;
SetLength(ararP, 4);

for i:= 0 to 3 do
FindColorsTolerance(ararP, 11642528, TBs.x1, TBs.y1, TBs.x2, TBs.y2, 10);



try
arP := MergeATPA(ararP);
except
Continue;
end;


if Length(arP) <= 0 then
Continue;

arC := GetColors(arP);
arUC := arC;
ClearSameIntegers(arUC);
arL := High(arUC);
arL2 := High(arC);

for i := 0 to arL do
begin
ColorToXYZ(arC, X, Y, Z);

if (X >= 24.95) and (X <= 49.47) and (Y >= 26.29) and (Y <= 52.00) and (Z >= 35.63) and (Z <= 60.26) then
begin
for j := 0 to arL2 do
begin
if (arUC = arC[j]) then
begin
SetLength(arAP, Length(arAP) + 1);
arAP[High(arAP)] := arP[j];
end;
end;
end;
end;

SortTPAFrom(arAP, Point(MSCX, MSCY));
ararP := SplitTPA(arAP, 35);
arL := High(ararP);

for i := 0 to arL do
begin
if (Length(ararP) < 10) then Continue;

//DebugTPA(ararP, 'RM_Fisher_Images - IsFishClose'+IntToStr(IsFishCloseN)) ;

if not DirSet then
begin
P := MiddleTPA(ararP);
GetWaterLocation(P);
end;

Result := true;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
exit;
end;

until(TimeFromMark(FindThisFish) >= 3000);
RMDebug('no fish spot close');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;


Function NextSpot: integer;
var
i:integer;

begin
if not LoggedIn then exit;
Result := 1;
for i:=1 to 28 do
if not ExistsItem(i) then
begin
Result:= i;
exit;
end;
end;

procedure DropFish;
var
i, x, y:integer;
TSA: TStringArray;
begin
if not LoggedIn then exit;
RMDebug('Dropping load');

if DropCrap then
TSA := ['eathe', 'bait', 'obster pot', 'arpoon', 'ly fish', 'ing rod', 'mall fish']
else
TSA := ['nchovies', 'erring', 'aw lobster', 'pike',
'almon', 'hrimps', 'ardine', 'wordfish', 'trout', 'tuna']
;
for i:= 1 to 28 do
begin
if (i mod 3) = 0 then NoRandoms;
MMouseItem(i);
wait(200 + random(50));

if DropCrap then
for x:= 0 to 3+Random(3) do
begin
if IsUpTextMultiCustom(TSA) then break;
if IsUpTextMultiCustom(['nchovies', 'erring', 'pike',
'almon', 'hrimps', 'ardine', 'wordfish', 'trout', 'tuna'])
then break;
wait(100);
end;

if IsUpTextMultiCustom(TSA) then
begin
if DropCrap then Continue;

GetMousePos(x, y);
Mouse(x, y, 2, 2, false);
wait(100+Random(50));
ChooseOption('Drop');
wait(RandomRange(50, 100));

end else begin
if not DropCrap then Continue;
GetMousePos(x, y);
Mouse(x, y, 2, 2, false);
wait(100+Random(50));
ChooseOption('Drop');
wait(RandomRange(50, 100));
end;

end;
Inc(Loads);
Inc(ReportVars[0]);
Inc(Players[CurrentPlayer].Banked);
RMDebug('Dropped a load');
Proggy;
end;


Function StartFishing: boolean;
var
i, x, y:integer;
s: string;
begin
if not LoggedIn then exit;
if InvFull then exit;
NoRandoms;
i:= 0;
Result := False;

if not CheckEquip then
begin
wait(1000 + Random(500));
if not PickUpFishingEquip(Players[CurrentPlayer].Strings[0]) then
begin
LogOut;
RMDebug('Player has no fishing equipment');
end;
end;

while not RMFindFishSpot do
begin
wait(1000);
NoRandoms;
inc(i);
if i > 2 then break;
end;

if i < 3 then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, true);
RMDebug('Started Fishing');
Result := True;
end;

end;


Procedure WaitWhileFishing;
var
LastMove, LastAntiban, CheckSpot, SpotMark, FindFish, LastChecked, x, y: integer;
s: string;
begin
if not LoggedIn then exit;
MarkTime(FindFish);
MarkTime(LastMove);
RMFlag(5);
RMDebug('Getting to Fish Spot');
repeat

case lowercase(Players[CurrentPlayer].Strings[0]) of
'harpoon': s:= 'start harpooning';
'cage': s:= 'attempt to catch';
'fly': s:= 'attempt to catch';
'rod': s:= 'attempt to catch';
'net': s:= 'cast out your';
end;
if IsChatBoxTextAnyLine(s, clMessage) then break;

if TimeFromMark(FindFish) > 5000 then
begin

if FindTextTpa(0,2,MCX1,MCY1,MCX2,MCY2, 'have any feathers', NPCChars, Nothing) or
FindTextTpa(0,2,MCX1,MCY1,MCX2,MCY2, 'have any bait', NPCChars, Nothing) then
begin
RMDebug('Player is missing feathers / bait');
RMDebug('Logging Out');
LogOut;
exit;
end;

RMDebug('Getting to fish spot took too long');
if StartFishing then WaitWhileFishing else exit;
end;


until(false);

NoRandoms;
RMHandleWhirlpool;
RMDebug('Waiting while fishng');

CheckSpot := NextSpot;

MarkTime(SpotMark);
MarkTime(LastChecked);
MarkTime(FindFish);
MarkTime(LastAntiban);

repeat
if (TimeFromMark(Worked) >= (WorkTime + Random(3*60*1000))) then
begin
RMDebug('Wait while fising - Has served his time. Getting ready to switch');
exit;
end;

if not LoggedIn then
begin
RMDebug('Not Logged In!');
break;
end;


If TimeFromMark(LastChecked) > 500 then
begin
RMHandleWhirlpool;
if NoRandoms then
if not StartFishing then break else WaitWhileFishing;
MarkTime(LastChecked);
end;




if InvFull then
begin
Bank;
if not StartFishing then break else WaitWhileFishing;
end;


if ExistsItem(CheckSpot) then
begin
CheckSpot := NextSpot;
wait(50);
x := Length(TAverageFishTime.TIA);
SetLength(TAverageFishTime.TIA, x + 1);
TAverageFishTime.TIA[x] := TimeFromMark(SpotMark);
MarkTime(SpotMark);
end;


wait(450);

if TAverageFishTime.FishyTime + 10000 < 30000 then
y := 30000
else
y:= TAverageFishTime.FishyTime;

if (TimeFromMark(SpotMark) > y) then
begin
MarkTime(SpotMark);
wait(300);
RMDebug('WaitWhileFishing: Not Fishing…');
if StartFishing then WaitWhileFishing else break;
end;

if TimeFromMark(LastAntiban) > 1000+Random(1000) then
begin
MarkTime(LastAntiban);

Antiban(RandomRange(10, 20));
end;

if TimeFromMark(LastMove) > (20000 + Random(5000)) then
begin
AntiBan(100);
MarkTime(LastMove);
end;


if not CheckEquip then
begin
wait(1000 + Random(500));
if NoRandoms then
begin
if LoggedIn then
if StartFishing then
WaitWhileFishing
else
break
else
break
end else
if not PickUpFishingEquip(Players[CurrentPlayer].Strings[0]) then
begin
LogOut;
RMDebug(Players[CurrentPlayer].loc);
RMDebug('Player has no fishing equipment! - waitwhilefishing');
break;
end else
if StartFishing then WaitWhileFishing else break;
end;


if TimeFromMark(FindFish) > 1000 then
if not IsFishSpotClose then
begin
if StartFishing then
WaitWhileFishing
else break;
end else MarkTime(FindFish);

until(false)

end;


procedure DoSomeFishing; //only here while testing i think
var
TP: TPoint;
i, t, x, y: integer;
StartedFishing, FoundSymbol: boolean;
s: string;
begin
if not LoggedIn then exit;
if (TimeFromMark(Worked) >= WorkTime) then
begin
Relocate('bank');
exit;
end;

if not CheckEquip then
begin
wait(1000 + Random(500));
if not PickUpFishingEquip(Players[CurrentPlayer].Strings[0]) then
begin
LogOut;
Players[CurrentPlayer].Active := false;
RMDebug('Player has no fishing equipment');
exit;
end;
end;

if InvFull then Bank;

if Players[CurrentPlayer].loc <> 'power' then
Relocate('fish');

RMFlag(5);
wait(500+Random(1000));

for i:= 0 to 3 do
begin
FoundSymbol := SymbolLocate(i = 0);

if StartFishing then
begin
WaitWhileFishing;
exit;
end;

if not FoundSymbol then
begin

Relocate('bank');
Relocate('fish');
if not FindFishSymbol(false, TP) then
begin
Players[CurrentPlayer].Active := False;
Players[CurrentPlayer].Rand := 'lost';
Logout;
exit;
end;
end;

end;
end;

[/php]

ps: This script is very old, and some of the code just seems senseless to me.

~RM

3Garrett3

2010-06-10 19:36:38

There is no need to pick up fishing equipment, that random is gone AFAIK.

Just something I noticed in your code.

Coh3n

2010-06-11 06:14:57

Nice, what location are you going to start with?

DeSnob

2010-06-11 06:59:18

There's also no need for whirlpool detection :p
    if TimeFromMark(WhirlPoolCheck) > 500 then
begin
RMHandleWhirlPool;
exit;
end else
MarkTime(WhirlPoolCheck);

Frement

2010-06-11 07:10:03

From: Rasta Magician
ps: This script is very old, and some of the code just seems senseless to me.


From: DeSnob
There's also no need for whirlpool detection :p
    if TimeFromMark(WhirlPoolCheck) > 500 then
begin
RMHandleWhirlPool;
exit;
end else
MarkTime(WhirlPoolCheck);


Some is not needed, that is true.

Sir R. M8gic1an

2010-06-11 08:14:10

From: Coh3n
Nice, what location are you going to start with?


First of all, power. Then, Draynor seems like the obvious option. We'll need something to level our chars from lvl 1 onwards.

~RM

Coh3n

2010-06-11 15:31:19

From: Rasta Magician
First of all, power. Then, Draynor seems like the obvious option. We'll need something to level our chars from lvl 1 onwards.

~RM

Makes sense. :p

marpis

2010-06-12 05:13:49

I smell massive memoryleaks.

FindBitmapToleranceIn(srl_GetBitmap(i), Ix, Iy, MIX1, MIY1, MIX2, MIY2, 10)

Coh3n

2010-06-12 11:44:31

Guys, there's probably a lot of errors. He did say it was written a long time ago. It's just posted for a general idea of what needs to be done.

nielsie95

2010-06-12 12:50:21

From: marpis
I smell massive memoryleaks.

FindBitmapToleranceIn(srl_GetBitmap(i), Ix, Iy, MIX1, MIY1, MIX2, MIY2, 10)


Read srl_getBitmap. It's not a memory leak, it's how it's supposed to be..

NCDS

2010-06-12 13:48:05

Very happy to see you coding for MSI again RM. Although I must ask, don't you think we should generally finish one thing before beginning another?

Unless this is just something your sort of working on, on the side. I just want this project to be as successful as possible.

Not questioning your leadership skills or anything as I look up to you in many ways. I'm just curious is all I guess…and slightly intoxicated >.<

3Garrett3

2010-06-12 13:58:48

From: NCDS
Very happy to see you coding for MSI again RM. Although I must ask, don't you think we should generally finish one thing before beginning another?

Unless this is just something your sort of working on, on the side. I just want this project to be as successful as possible.

Not questioning your leadership skills or anything as I look up to you in many ways. I'm just curious is all I guess…and slightly intoxicated >.<


By 3pm? Kinda early :p.

Basically, the woodcutter is mostly functional, so it is time to start work on something else.

NCDS

2010-06-12 14:00:59

From: 3Garrett3
By 3pm? Kinda early :p.

Basically, the woodcutter is mostly functional, so it is time to start work on something else.


Yeah I knoiw but I'm kind of bored ;)

What happened to the VEM? I was planning on working on that on tuesday when I get internet back at my house!

Coh3n

2010-06-12 14:24:51

From: NCDS
Yeah I knoiw but I'm kind of bored ;)

What happened to the VEM? I was planning on working on that on tuesday when I get internet back at my house!

We've kind of veered off on our original plan. We have it so anyone can develop whatever part of MSI they want. Since not everyone will want to work on a VEM, we let them develop what they want.

I don't know if you've read, but we've also changed to reflection as our primary walking method, and the colour paths can be developed by someone if they wish. I've set it up so that if the hooks are outdated or reflection is broken, the script will use colour walking (if it exists, of course). This makes everything much easier for everyone. :)

NCDS

2010-06-13 11:17:45

From: Coh3n
We've kind of veered off on our original plan. We have it so anyone can develop whatever part of MSI they want. Since not everyone will want to work on a VEM, we let them develop what they want.

I don't know if you've read, but we've also changed to reflection as our primary walking method, and the colour paths can be developed by someone if they wish. I've set it up so that if the hooks are outdated or reflection is broken, the script will use colour walking (if it exists, of course). This makes everything much easier for everyone. :)

Well there goes the fun part… Just playing, I'll adjust :p

Well, tuesday I'll hopefully have everything back and have a chance to read over the past few weeks worth of posts and get caught up on everything.

Coh3n

2010-06-13 11:19:50

From: NCDS
Well there goes the fun part… Just playing, I'll adjust :p

Well, tuesday I'll hopefully have everything back and have a chance to read over the past few weeks worth of posts and get caught up on everything.

Anyone can still develop the colour walking, and you can still choose between reflection or colour, just by default it uses reflection. :)

There aren't many people our there like you and Blumblebee that find writing TPA walking fun. Like myself, it's alright, but usually I'll just get frustrated and it ends up taking longer to finish than is should. :p