SRL Archive - Archive

trials6112 - SRL Member Application


trials6112

2012-02-04 12:04:41

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Not Really, all that much to be truthful, but i am slowly working on it :)
This site has given me a very nice basis


Are you a member of any other communities?
Used to be from RSBUDDY :)


Tell us about yourself…
From: trials6112
I love computers, Learning, and my pets.

My girlfriend charlotte is my life, and thanks to her i try and persevere and to learn more :) without her i would not have this script to post :)



Please show us one (or multiple) of your scripts.
program cmsw;
{$DEFINE crashsmart}
{$define SMART}
{$i srl/srl.simba}
{$i srl/srl/skill/fighting.simba}
{$i sps/sps.simba}
{$i srl/srl/misc/debug.simba}



{------------------------------Script Info-------------------------------------|

|
|==============================================================================|
| Instructions |
|==============================================================================|
| |
| Setup: 1. Start in Soul War Arena between Two Teams |
| 2. Make Sure you have nothing in your inventory that cannot be taken|
| 3. Start Script and just enjoy :) |
|______________________________________________________________________________}

{--FILL THE FOLLOWING PART OUT--}

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

Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[0].Active := True; // Set to true if you want to use Player 0

end;

/////////////////////////////////////////////////////////////////////////////
/////////Credits for the fighting method to fearlesskiller////////
/////////Credits for the inspiration and the basis for a SW script,GGZZ////////
/////////// SETUP ENDS HERE /////////\\\\\\\\\//////////////\\\\\\\\\
/////////////////////////////////////////////////////////////////////////////

{--Variable--}
{--DO NOT TOUCH--}
var
x,y,TimesChecked,TCIF,GP:integer;
aFound: Extended;
Death:boolean;

procedure AttackEnemy; forward;

Function FindObjectFX(var TPA: TPointArray; Colors: TIntegerArray; Uptext: TStringArray; X1, Y1, X2, Y2, Width, Height, tol: integer; Click: Boolean): Boolean;
var
X, Y, I: integer;
ATPA: T2DPointArray;

begin
SetLength(TPA, Length(Colors));

For I:= 0 To High(Colors) do
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Colors[i], X1, Y1, X2, Y2, tol);

ATPA:= TPAToATPAEx(TPA, Width, Height);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if(Length(ATPA) = 0) then
Exit;

MiddleTPAEx(ATPA[0], X, Y);
MMouse(x, y, 1, 1);

Wait(randomrange(200, 500));
if Click then
If(IsUpTextMultiCustom(UpText)) then
begin
ClickMouse2(False);
wait(500);
if ChooseOptionMulti(UpText) then
begin
Result := True;
Exit;
end;
end else
Result := False
else if IsUpTextMultiCustom(UpText) then
Result:= True;
end;

function ZammyDoor(var fx, fy: Integer): Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
ararP: T2DPointArray;
tmpCTS, i, j, arL, arL2: Integer;
P: TPoint;
H, S, L: Extended;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);

if not(FindColorsTolerance(arP, 5264794, MSX1, MSY1, MSX2, MSY2, 19)) then
begin
Writeln('Failed to find the color, no object found.');
ColorToleranceSpeed(tmpCTS);
Exit;
end;

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

for i := 0 to arL do
begin
ColorToHSL(arC[i], H, S, L);

if (H >= 0.55) and (H <= 2.13) and (S >= 24.35) and (S <= 38.69) and (L >= 42.14) and (L <= 48.65) then
begin
ColorToXYZ(arC[i], X, Y, Z);

if (X >= 14.93) and (X <= 20.60) and (Y >= 11.59) and (Y <= 15.39) and (Z >= 7.23) and (Z <= 11.58) then
begin
for j := 0 to arL2 do
begin
if (arUC[i] = arC[j]) then
begin
SetLength(arAP, Length(arAP) + 1);
arAP[High(arAP)] := arP[j];
end;
end;
end;
end;
end;

SortTPAFrom(arAP, Point(MSCX, MSCY));
ararP := SplitTPAEx(arAP, 20, 20);
arL := High(ararP);

for i := 0 to arL do
begin
if (Length(ararP[i]) < 10) then Continue;
P := MiddleTPA(ararP[i]);
MMouse(P.x, P.y, 5, 5);
Wait(100 + Random(100));
if (WaitUpTextMulti(['Pass','arrier'],300)) then
begin;
Result := True;
Break;
end;
end;

ColorToleranceSpeed(tmpCTS);

if (i = arL + 1) then
begin
Writeln('Portal could not be found.');
Exit;
end;

GetMousePos(fx, fy);
end;

Function ZammyPortal(var X, Y: Integer): Boolean;
var
CTS: Integer;
TPA: TPointArray;
begin
CTS:= GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 1.22);

Result:= FindObjectFX(TPA, [5331916,5659571,5527719,4935574,4803984,2769778,2769778,2769778,4145516,3558535], ['barrier', 'Pass', 'ed barrier', 'ed bar'], MSX1, 85, MSX2, MSY2, 10, 10, 15, True);

SetColorSpeed2Modifiers(0.2, 0.2);
ColorToleranceSpeed(CTS);
end;

Function FindBlueCapes: Boolean;
var
CTS: Integer;
TPA: TPointArray;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 1.40);

Result:= (FindObjectFX(TPA, [3219474], ['ttack'], MSX1, MSY1, MSX2, MSY2, 10, 10, 7, True));

ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

function InLobby: Boolean;
begin
result := (getColor(436, 53) = 16737843) and (getColor(439, 68) = 2302945);
end;

function GameStart: Boolean;
begin
result := (getColor(410, 32) = 16737843) and (getColor(443, 32) = 2302975);
end;

function OutsideGame: Boolean;
begin
result := (getColor(195, 24) = 2070783) and (getColor(233, 25) = 2070783);
end;

function WaitForGameEnd: Boolean;
begin
if OutsideGame then exit;
While GameStart do
AttackEnemy;
Result := WaitFunc(@OutsideGame, 10, 2000);
end;

Function InRedGrave: Boolean;
var
RG: TBox;
begin
RG:= PointToBox(Point(846, 4965), Point(860, 4981));
Result:= PointInBox(SPS_GetMyPos, RG);
end;

Function InBlueGrave: Boolean;
var
BG: TBox;
begin
BG:= PointToBox(Point(483, 5075), Point(494, 5088));
Result:= PointInBox(SPS_GetMyPos, BG);
end;

Function AtObelisk: Boolean;
var
OBJ: TBox;
begin
OBJ:= PointToBox(Point(611, 4987), Point(721, 5062));
Result:= PointInBox(SPS_GetMyPos, OBJ);
end;

Function InRedSpawn: Boolean;
var
Spawn: TBox;
begin
Spawn:= PointToBox(Point(921, 4974), Point(955, 5018));
Result:= PointInBox(SPS_GetMyPos, Spawn);
end;

Const
HPGreenTop = 10240;
HPGreenBot = 9728;
HPRed = 132923;

Function GetHPBars: TPointArray;
var
a,b,c:TPointArray;
H, I, x, y: integer;
ATPA: T2DPointArray;
begin
x := MSCX;
y := MSCY;
FindColorsSpiralTolerance(MSCX, MSCY, a, HPGreenTop, MSX1, MSY1, MSX2, MSY2, 0);
FindColorsSpiralTolerance(MSCX, MSCY, b, HPGreenBot, MSX1, MSY1, MSX2, MSY2, 0);
FindColorsSpiralTolerance(MSCX, MSCY, c, HPRed, MSX1, MSY1, MSX2, MSY2, 0);
ATPA := TPAToATPAEx(CombineTPA(a, CombineTPA(b, c)), 55, 7);
H := High(ATPA);
SetLength(Result, Length(ATPA));
for I := 0 to H do
Result[i] := MiddleTPA(ATPA[i]);
end;

Procedure FightStatus(Var WeAreInFight, OthersInFight: Boolean);
var
TPA: TPointArray;
begin
TPA := GetHPBars;
WeAreInFight := False;
OthersInFight := False;
If Length(TPA) < 1 then
Exit;
WeAreInFight := PointInBox(TPA[0], IntToBox(MSCX - 40, MSCY - 170, MSCX + 40, MSCY));
if Length(TPA) > 1 then
OthersInFight := True
else
if not PointInBox(TPA[0], IntToBox(MSCX - 40, MSCY - 170, MSCX + 40, MSCY)) then
OthersInFight := true;
end;

Function SwInFight: Boolean;
var
T: Integer;
a,b:boolean;
begin
T := GetSystemTime+200;
Repeat
Wait(2);
FightStatus(a, b);
Result := a;
until Result or (GetSystemTime > T);
end;

function HybridBS: Boolean;
begin
result := (GetColor(136, 92) = 6668015);
end;

function TricksterBoots: Boolean;
begin
if not HybridBS then Exit;
Mouse(230, 220, 50, 50, True);
Result:= true;
end;

procedure CheckLoc;
begin
If InRedSpawn then
Death:= True
else
If InBlueGrave then
Death:= True
else
If InRedGrave then
Death:= True
else
Death:=false
end;

procedure InLobbyAR;
begin
case Random(8) of
0: RandomRClick;
1: HoverSkill('hitpoints', false);
2: PickUpMouse;
3:
begin
Case Random(5) of
0:TypeSend('Lets get going');
1:TypeSend('Comon! I hate this wait!');
2:TypeSend('Come on 3 zeals!');
3:TypeSend('Ugh');
4:TypeSend('lol');
end;
end;
4: RandomMovement;
5: BoredHuman;
6: ExamineInv;
7:
begin
TypeByte(Vk_return);
Wait(1500);
TypeByte(Vk_return);
Wait(1500);
TypeSend('health');
Mouse(13,379,100,5,true);
end;
end;
end;

function WaitForGameStart: Boolean;
begin
if InLobby then
repeat
if Random(150) = 1 then InLobbyAR;
Wait(200+Random(200));
until (not InLobby);
Result := WaitFunc(@GameStart, 10, 2000);
end;

procedure RGToOB;
var
X,Y,a,b:Integer;
begin
if InRedGrave then
begin
Death:=False;
ZammyPortal(X,Y);
wait(750+random(250));
FindColor(a,b,15790834,MMX1,MMY1,MMX2,MMY2);
Mouse(a,b,0,0,true);
AttackEnemy;
end else
exit;
end;

procedure BGToOB;
var
X,Y,a,b:Integer;
begin
if InBlueGrave then
begin
Death:=False;
ZammyPortal(X,Y);
wait(750+random(250));
FindColor(a,b,15790834,MMX1,MMY1,MMX2,MMY2);
Mouse(a,b,0,0,true);
AttackEnemy;
end else
exit;
end;

function LobbyCheck: Boolean;
var
RLobby: TBox;
begin
RLobby:= PointToBox(Point(719, 5296), Point(758, 5328));
Result:= PointInBox(SPS_GetMyPos, RLobby);
end;

procedure EnterSW;
var
Lobby, MPx,MPy,EntBarrier:integer;
CFLS:String;
begin
Lobby:= DTMFromString('mrAAAAHic42BgYLjHzMBwGYoPAPF8IL4CxdeA+AxQzSEgvgjE66D4IRCfBuIdQGxpYspwarUcw6Glsgxu1noMiZk2YL62ujqY5geqwYcZCWAYAAAYWxYu');
EntBarrier:=DTMFromString('mQwAAAHicY2ZgYGBkZmBggeIVQP5qIF4OxJMDfBgWhASAaWTAiISBAADeigW1');

RunEnergy(25);
MakeCompass('n');
CFLS:='vsf3da24rf';
SetAngle(SRL_ANGLE_HIGH);
If LobbyCheck then exit;
If FindDTM(Lobby,MPx,MPy,MMX1,MMY1,MMX2,MMY2) then
begin
Mouse(MPx,MPy,0,0,true);
FreeDTM(Lobby);
wait(250+random(50));
While (IsMoving) do
Wait(300);
Writeln('Trying the door lobby now');
MakeCompass(randomrange(20,70));
Wait(1000+random(100));
If FindDTM(EntBarrier,MPx,MPy,MSX1,MSY1,MSX2,MSY2) then
begin
Writeln('Entrance Found');
Mouse(MPx,MPy,0,0,false);
WaitOption('arrier',300);
wait(500+random(125));
FreeDTM(EntBarrier);
TricksterBoots;
If ClicktoContinue=true then
begin
If FindNPCChatText('You left', Nothing) then
begin
Wait(60000);
//Writeln('We left Early');
EnterSW;
end else
begin
ClicktoContinue;
wait(750+random(50));
TypeByte(Vk_1);
end;
end;
end else
begin
FreeDTM(EntBarrier);
ZammyDoor(x,y);
if waituptext('ass',750) then
Mouse(x,y,0,0,true)
else
begin
Mouse(x,y,0,0,false);
ChooseOption('ass');
end;
wait(750+random(125));
TricksterBoots;
If ClicktoContinue=true then
begin
If FindNPCChatText('You left', Nothing) then
begin
Wait(60000);
//Writeln('We left Early');
EnterSW;
end else
begin
ClicktoContinue;
wait(750+random(50));
TypeByte(Vk_1);
end;
end;
end;
end else
begin
Writeln('Lobby not found');
SPS_WalkToPos(Point(681,5299));
EnterSW;
end;
end;

function SWRoadColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
H, S, L: Extended;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);

FindColorsSpiralTolerance(MMCX, MMCY, arP, 2698541, MMX1, MMY1, MMX2, MMY2, 50);
if (Length(arP) = 0) then
begin
//Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
Exit;
end;

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

for i := 0 to arL do
begin
ColorToHSL(arC[i], H, S, L);

if (H >= 16.65) and (H <= 20.02) and (S >= 4.33) and (S <= 6.19) and (L >= 15.67) and (L <= 18.06) then
begin
ColorToXYZ(arC[i], X, Y, Z);

if (X >= 2.11) and (X <= 2.75) and (Y >= 2.27) and (Y <= 2.94) and (Z >= 2.14) and (Z <= 2.82) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
end;

ColorToleranceSpeed(tmpCTS);

// if (i = arL + 1) then
// Writeln('AutoColor failed in finding the color.');
end;

procedure Walk2Mid;
var
Px,Py,InGameBarrier,First,t:integer;

begin
First:= DTMFromString('mbQAAAHicY2VgYAgDYmcgzgDiOCD2BuJEIA4A4kog9gHiBiDWN9RhOLFBFgXzA8XRMSMWDAYAwKsK1g==');
InGameBarrier:=DTMFromString('mbQAAAHicY2VgYPjIyMDwGoqfADEvEwPDF6D4JyD+BsRfQWqAuNLdhSHB1pqh3NWJISPUjSHAyYyBHyiOjhmxYDAAAPSQDXs=');
t:=t+1;

SetAngle(SRL_ANGLE_HIGH);
MakeCompass(randomrange(20,70));
if FindDTMRotated(First, Px, Py, MMX1, MMY1, MMX2, MMY2, -Pi/2, Pi/2, Pi/30, aFound) then
begin
Mouse(Px,Py,0,0,true);
FreeDTM(First);
Wait(2500);
If FindDTM(InGameBarrier,Px,Py,MSX1,MSY1,MSX2,MSY2) then
begin
Mouse(Px,Py,0,0,true);
Writeln('Leaving Barrier!');
Wait(2000);
FreeDTM(InGameBarrier);
end else
begin
FreeDTM(InGameBarrier);
ZammyDoor(Px,Py);
Mouse(Px,Py,0,0,true);
wait(2000);
end;
wait(2000+random(1000));
If Not InRedSpawn then
Writeln('And On We Go')
else
Walk2Mid;
Wait(750+random(250));

for x:= 0 to 2 do
begin
RadialRoadWalk(SWRoadColor,150,210,60,-1, 2);
x:=x+1;
end;
end;
end;

procedure AttackEnemy;
var
x,a,b,t:integer;
MiniEn:TPointArray;
MsPoint:TPoint;
begin
T := GetSystemTime+5000;

FindBlueCapes;
If (FindBlueCapes=False) then
begin
repeat
begin
if (TimesChecked=9) then
begin
CheckLoc;
TimesChecked:=0;
end else
TimesChecked:=TimesChecked+1;
RunEnergy(25);
MiniEn := GetMiniMapDots('white');
If(Length(MiniEn) > 0)then
begin
For x:= 0 to 1 do
begin
If OutsideGame then Exit;
//Writeln('Found Location to Move too');
MsPoint := MMToMS(Point(MiniEn[x].x,MiniEn[x].y));
Mouse(MsPoint.x,Mspoint.y,0,0,true);
If (GetSystemTime > T) AND (Not IsMoving) then
begin
Mouse(MiniEn[x].x,MiniEn[x].y,10,10,true);
end;
Wait(500+random(500));
X:=1;
end;
end else
begin
If OutsideGame then Exit;
//writeln('Failed to find any Enemies Around Us!');
If FindColorTolerance(a,b,RGBtoColor(83,131,255),MMX1,MMY1,MMX2,MMY2,0) then
begin
//Writeln('Going After Blue Team');
Mouse(a,b,0,0,true);
end else
if FindColorTolerance(a,b,15790834 ,MMX1,MMY1,MMX2,MMY2,0) then
begin
Mouse(a,b,0,0,true);
//Writeln('Going After Obelisk');
end;
Wait(1000+random(500));
end;
end;
Until (SWInFight) or (Death=True) or (FindBlueCapes);
end;
If (SWInFight) then
begin
if (TCIF=5) then
begin
CheckLoc;
TCIF:=0;
end else
begin
TCIF:=TCIF+1;
//Writeln('Fighting Someone');
end;
end;
If Death=true then
begin
//Writeln('Uh Oh, we are dead.');
If InBlueGrave then
begin
Writeln('Dead in Blue Graveyard');
BGToOB;
end;
if InRedGrave then
begin
Writeln('Dead in Red Graveyard');
RGToOB;
end;
If InRedSpawn then
begin
Writeln('In Spawn');
Walk2Mid;
Death:=False;
AttackEnemy;
end;
end;
end;

procedure Progress;
var
Texts: array of string;
I: Integer;

begin
Texts := [
'|---------------------------------------------|',
'|Soul Wars ReVamPed:',
'|---------------------------------------------|',
'|Time Running : ' + TimeRunning,
'|Games Played :' + IntToStr(GP),
'|---------------------------------------------|'];

ClearDebug;
for I := 0 to High(Texts) do

begin

WriteLn(Texts[I]);

end;
end;
procedure CrashSMART;
begin
Writeln('You are using CRASHSMART, so we are going to reload your client after the RS update!');
SmartgetFieldObject(1488,'crash'); // will crash SMART (and Simba).
// IF THIS DOES NOT CRASH YOUR SIMBA, YOU ARE NOT USING THE PROPER PLUGIN
// AN ACCESS VIOLATION HERE IS NOT THE CRASH; MAKE SURE YOU MOVED THE EDITED PLUGIN
Wait(5000);
WriteLn('CRASHSMART Failed: Make sure you are using the proper plugin!');
WriteLn('Read more about this feature at villavu.com/forum/showthread.php?t=67864');
TerminateScript;
end;

procedure ScriptSetup;
begin
Smart_Server := 1;
Smart_Members := True;
Smart_SuperDetail := False;
SmartSetupEx(Smart_Server, Smart_Members, Smart_Signed, Smart_SuperDetail);

while not RSReady do Wait(100);
SetupSRL;
SRL_Procs[srl_OnRSUpdate] := @CrashSMART;
WriteLn('Runescape loaded. Logging in to lobby.');
LoginPlayerToLob;
WriteLn('-----------------------------------------------------------------------');
WriteLn('Disable SMART - Login to you favorite SoulWars World.');
WriteLn('Enable SMART when you are done.');
while(not LoggedIn) do sleep(1000);
WriteLn('Login detected. Continuing script!');

end;


procedure MainLoop;
begin
repeat
EnterSW;
wait(1000);
if not WaitForGameStart then Exit;
Wait(1000+random(500));
Walk2Mid;
WaitForGameEnd;
GP:=GP+1;
Progress;
until(false)
end;

begin
ClearDebug;
DeclarePlayers;
ScriptSetup;
ActivateClient;
SPS_Setup(RUNESCAPE_SURFACE, ['0_12','1_12','2_12','1_13']);
TimesChecked:=0;
TCIF:=0;
GP:=0;
mousespeed:=35;
while (true) do
begin
MainLoop;
end;
end.

Sin

2012-02-04 12:06:29

without her i would not have this script to post

wait what?

Edit*
Okay I took a look at it, and it seems to be a Castle Wars script?
Ill edit this post more .


EDIT*
OH shit roflmao, it's a Soul Wars script!
I saw "Zammy Portal" and thought it was castle wars xD

Harry

2012-02-04 12:20:25

begin
Case Random(5) of
0:TypeSend('Lets get going');
1:TypeSend('Comon! I hate this wait!');
2:TypeSend('Come on 3 zeals!');
3:TypeSend('Ugh');
4:TypeSend('lol');
end;
end;
7:
begin
TypeByte(Vk_return);
Wait(1500);
TypeByte(Vk_return);
Wait(1500);
TypeSend('health');
Mouse(13,379,100,5,true);
end;
Both of these are really bad. First one is same repeated phrases, jagex will detect and ban. Second is no randoms etc.

You lack a lot of randomization in the script, clicking directly on dtms and colors found quite a bit :/

Too lazy to grope through the rest. Is the script complete? Post a 4+ hr legit proggy for fun (not that it will influence my vote or anything - safeness > longlivity)

[XoL]

2012-02-04 13:44:32

I looked at your posting habits, not much of a content filled poster/useful but I do value the fact you tried to make a soul wars script (Something the general public has been asking for daily). I would like to see a progress report of the script, but regardless I think I won't vote on this one.

To voters:
This is his second application I believe, first one didn't have a script.

RISK

2012-02-04 14:11:37

Function FindObjectFX(var TPA: TPointArray; Colors: TIntegerArray; Uptext: TStringArray; X1, Y1, X2, Y2, Width, Height, tol: integer; Click: Boolean): Boolean;
var
X, Y, I: integer;
ATPA: T2DPointArray;

begin
SetLength(TPA, Length(Colors));

For I:= 0 To High(Colors) do
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Colors[i], X1, Y1, X2, Y2, tol);

ATPA:= TPAToATPAEx(TPA, Width, Height);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
if(Length(ATPA) = 0) then
Exit;

MiddleTPAEx(ATPA[0], X, Y);
MMouse(x, y, 1, 1);

Wait(randomrange(200, 500));
if Click then
If(IsUpTextMultiCustom(UpText)) then
begin
ClickMouse2(False);
wait(500);
if ChooseOptionMulti(UpText) then
begin
Result := True;
Exit;
end;
end else
Result := False
else if IsUpTextMultiCustom(UpText) then
Result:= True;
end;

Source 1: http://villavu.com/forum/showpost.php?p=899653&postcount=1
Source 2: http://pastebin.com/JLAQMVEj
Source 3: http://pastebin.com/HiMB8UA9
No crediting?

Hobbit

2012-02-04 15:06:34

Plagiarized script originally made by Hamster31

Members see this thread http://villavu.com/forum/showthread.php?t=74144

Closed.
Suspended