From: [PRO]metheus
Gratz Danny! I bet it was good :)
leaving this for archive then, decide for yourself ;)
From: print
danny i dont need the money i will be quitting =) afte rmy lol game ill pm you okay
cant get on rs right now :(
program DraynorBonFires;
{$Define SMART}
{$I SRL/SRL.Simba}
{$I SRL/SRL/Misc/Debug.Simba}
{$I SRL/SRL/Misc/SmartGraphics.Simba}
//Setup
const
Debug = True; //enable if having problems
ScriptVersion = 'V1.0'; //proggy, no need to touch
//LOGIN NOT SUPPORTED ATM
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Pin := '';
Players[0].Nick :='';
Players[0].Active:=True;
end;
var
LogDTM,AshDTM: Integer;
{*******************************************************************************
All of these mouse movements and typing are credited to benland100 and flight.
thanks to Ashaman88 for his awesome scripts, i used his as a template
*******************************************************************************}
//By Bandland100, modified by Ashaman88 to shift mouse speeds after every step
//
procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
case Random(50) of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
end;
if (W < 1) then
W := 1;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
end;
Procedure HumanMouseBox(X1, Y1, X2, Y2: Integer);
Var
FX, FY: Integer;
Begin
GaussBox(FX,FY,X1,Y1,X2,Y2);
HumanMMouse(FX,FY,0,0)
End;
{*******************************************************************************
procedure FastClick(button: Integer);
By: Flight
Description: Quickly click the mouse.
*******************************************************************************}
procedure FastClick(button: variant);
var
x, y: integer;
ibutton: Integer;
begin
if VariantIsBoolean(button) then
begin
if (button) then
iButton := mouse_left
else
iButton := mouse_right;
end else
iButton := button;
if (iButton = mouse_move) then Exit;
GetMousePos(x, y);
HoldMouse(x, y, iButton);
Wait(RandomRange(60, 150));
GetMousePos(x, y);
ReleaseMouse(x, y, iButton);
end;
Procedure OffMM(RedTu, LeWait, rWait: Integer);
Var
W,H,RX,RY,T,RT: Integer;
Begin
GetClientDimensions(W,H);
H:=H+50;
RX := RandomRange(0, W);
RY := RandomRange(0, H);
Case (RedTu) Of
0..1: HumanMMouse(W/2, RandomRange(-110,-60), RX, 0);
2: HumanMMouse(RandomRange(-50,-10), H/2, 0, RY);
3: HumanMMouse(W/2, h+RandomRange(10,50), RX, 0);
4: HumanMMouse(W+RandomRange(10,50), H/2, 0, RY);
End;
RT:=(Random(rWait));
MarkTime(T);
Repeat
Wait(Random(100));
Until TimeFromMark(T)>(LeWait+RT);
End;
Procedure TypeFast(Text: String);
Var
I: Integer;
Begin
For I:=1 to Length(Text) Do
SendKeys(Text[I],RandomRange(90,140),RandomRange(90,140));
Wait(RandomRange(10,50));
End;
//
{*******************************************************************************
DannyRS's Part
*******************************************************************************}
Procedure LeftClickSpot(X1, Y1, X2, Y2: Integer);
var Y1NOBanner, Y2NOBanner: Integer;
Begin
Y1NOBanner:=Y1 - 50; Y2NOBanner:=Y2 - 50;
HumanMMouse(RandomRange(X1,X2),RandomRange(Y1NOBanner,Y2NOBanner),0,0);
Wait(9+Random(37));
FastClick(true);
Wait(124+Random(193));
End;
Procedure DragMouseSpot(X1, Y1, X2, Y2: Integer);
var Y1NOBanner, Y2NOBanner: Integer;
Begin
Y1NOBanner:=Y1 - 50; Y2NOBanner:=Y2 - 50;
HumanMMouse(RandomRange(X1,X2),RandomRange(Y1NOBanner,Y2NOBanner),0,0);
Wait(9+Random(37));
End;
Procedure ClickCurrent(ToDo: Boolean);
Begin
Wait(9+Random(37));
if ToDo = True then
begin FastClick(True); end
else if ToDo = False then
begin FastClick(False); end;
Wait(124+Random(193));
End;
Procedure RightClickSpot(X1, Y1, X2, Y2: Integer);
var Y1NOBanner, Y2NOBanner: Integer;
Begin
Y1NOBanner:=Y1 - 50; Y2NOBanner:=Y2 - 50;
HumanMMouse(RandomRange(X1,X2),RandomRange(Y1NOBanner,Y2NOBanner),0,0);
Wait(9+Random(37));
FastClick(false);
Wait(124+Random(193));
End;
Procedure MinimizeEoCBar(ToDo: Boolean);
Var x, y: Integer;
Begin
If ToDo = True Then
Begin
If (FindColorTolerance(x, y, 13224393, 517, 263, 517, 263, 5)) Then
LeftClickSpot(505,318,510,324);
End Else
If ToDo = False Then
Begin
If (Not FindColorTolerance(x, y, 13224393, 517, 263, 517, 263, 5)) Then
LeftClickSpot(505,382,510,385);
End;
End;
Procedure CloseBankUp;
Var
x,y: Integer;
Begin
if(FindColorSpiralTolerance(x, y, 4106994, 196, 33, 200, 38, 15))then
begin
//Close Bank
if(Debug)then begin Writeln('Closing Bank'); end;
HumanMMouse(RandomRange(482,494),RandomRange(28,41),0,0);
Wait(9+Random(37));
FastClick(true);
Wait(327+Random(283));
end;
End;
Procedure WaitBurning;
Var
x,y,LogCount,Timer: Integer;
Begin
LogCount := InvCount;
MarkTime(Timer);
Repeat Begin
if(Debug)then begin Writeln('Waiting Till Idle : ' + IntToStr(TimeFromMark(Timer)) + ' / 8000'); end;
Wait(57+Random(57));
If InvCount < LogCount Then
Begin
if(Debug)then begin Writeln('We Burned a Log'); end;
MarkTime(Timer);
LogCount := InvCount;
End;
End; Until (TimeFromMark(Timer) > 8000) Or (InvCount < 1)
End;
procedure MainLoop;
var x, y: Integer;
var Done: Boolean;
var Timer: Integer;
begin
Writeln('Welcome to DraynorBonFires ' + ScriptVersion + ' by DannyRS');
Done := False;
Repeat Begin
Done := False;
If (Not LoggedIn) Or LobbyScreen Then
Exit;
IF (PinScreen) Then Begin InPin(Players[0].Pin); Continue; End;
CloseBankUp;
If(Not FindColorSpiralTolerance(x, y, 5293044, 307, 145, 330, 165, 20))then
Begin
LeftClickSpot(310, 200, 320, 210);
Wait(4224+Random(193));
if FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
if(Debug)then begin Writeln('LogDTM SEEN lighting'); end;
HumanMMouse(RandomRange(x-6,x+6),RandomRange(y-4,y+4),0,0);
ClickCurrent(False);
ChooseOptionMulti(['Light','ight']);
Wait(3445+Random(357));
end
End Else
Begin
LeftClickSpot(314, 180, 320, 185);
Wait(4224+Random(193));
End;
if(Debug)then begin Writeln('Pressing 1'); end;
TypeFast('1');
Wait(1345+Random(357));
If(FindColorSpiralTolerance(x, y, 16449021, 360, 236, 364, 242, 10))then
Begin
LeftClickSpot(340, 211, 379, 252);
End;
Wait(445+Random(357));
if(Debug)then begin Writeln('waiting till done'); end;
WaitBurning;
DragMouseSpot(182, 240, 187, 245);
If (WaitUptextMulti(['Bank', 'ank'], RandomRange(70,250))) Then
Begin
ClickCurrent(True);
End Else
Begin
DragMouseSpot(182, 212, 187, 217);
If (WaitUptextMulti(['Bank', 'ank'], RandomRange(70,250))) Then
Begin
ClickCurrent(True);
End Else
Begin
DragMouseSpot(255, 190, 264, 195);
If (WaitUptextMulti(['Bank', 'ank'], RandomRange(70,250))) Then
Begin
ClickCurrent(True);
End Else
Begin
TerminateScript;
End;
End;
End;
Wait(3645+Random(357));
If FindDTM(AshDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
Begin
if(Debug)then begin Writeln('AshDTM SEEN banking'); end;
HumanMMouse(RandomRange(x-6,x+6),RandomRange(y-4,y+4),0,0);
ClickCurrent(True);
Wait(445+Random(157));
End;
RightClickSpot(438, 146, 458, 160);
if (ChooseOptionMulti(['Withdraw-All','ithdraw-All'])) then begin end;
Wait(185+Random(257));
CloseBankUp;
//Exit; //DeBugging
if(Debug)then begin Writeln('End of Main Loop Reached'); end;
end;
Until (Done);
end;
Procedure SetMyDTM;
begin
if(Debug)then begin
Writeln('loading DTMs'); end;
LogDTM := DTMFromString('mAAEAAHiclc0xDkBAAETR2a0UCifRuQ4S0ZAtFDRuIiHRKBGu5gC+aJRrktdMMplQkrNSgRYlGvRIkaNGhwoZFiNNGHBiM2/3mDFixYEdSRzxYr1dbAL5Mz99cwMSng7r');
AshDTM := DTMFromString('mbQAAAHicY2VgYEhnYmBIYoLQ2UCcBcSpUJwBxGlAHAfEc6ZOZZg1eTLD6iWLGSb39jDMmz6NgQOoHx0zYsFgAABfAA0x');
end;
Procedure FreeMyDTM;
begin
FreeDTM(LogDTM);
FreeDTM(AshDTM);
end;
Procedure Setup;
Begin
{$IFDEF SIMBAMAJOR980}
SMART_SERVER := 10;
SMART_MEMBERS := TRUE;
SMART_SIGNED := TRUE;
SMART_SUPERDETAIL := FALSE;
{$ELSE}
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
{$ENDIF}
SetupSRL;
ClearDebug;
DeclarePlayers;
If (Not LoggedIn) Or LobbyScreen Then
TerminateScript;
ClickNorth(SRL_ANGLE_HIGH);
MakeCompass('W');
MinimizeEoCBar(False);
SetMyDTM;
AddOnTerminate('FreeMyDTM');
SmartSetRefresh(90);
End;
begin
Setup;
ActivateClient;
ClearDebug;
MainLoop;
end.