superuser
2013-08-20 13:30:41
What a crappy skill. Xp-rates seems to be extremely low. Super boring to train, like runespan. Even the rewards are not so good.. :duh:
2013-08-20 13:30:41
2013-08-20 13:40:31
2013-08-20 13:41:09
From: Ashaman88
But the key question - is it easy to bot?
2013-08-20 15:06:34
From: Ashaman88
But the key question - is it easy to bot?
2013-08-20 15:16:52
2013-08-20 17:11:49
From: Hazzah
It should be very easy to bot.
2013-08-20 17:35:08
From: Ashaman88
But the key question - is it easy to bot?
2013-08-20 18:36:16
2013-08-20 20:40:38
2013-08-20 20:45:57
{$DEFINE SMARTOLD}
{$include_once GLX/Setup.Simba}
const
MyID = 2997907707; //ID of my player.
Exchange = 3; //1 = To-Energy, 2 = To-XP, 3 = To-Higher-Xp.
UseStaticInv = False; //Use hard-coded Inventory coordinates.
MemoryID = 77010;
PaleEnergy = 52275;
ChronicleFragment = 79305;
MemoryConverter = 1891595728;
var
T: TSmart;
Me: TPlayer;
Inv: Tbox = [1035, 375, 1342, 596];
Procedure SetupPlayer; //Login Information.
Begin
Me.Name := 'Username';
Me.Pass := '********';
End;
Function InvBox: TBox;
Begin
If UseStaticInv Then
Result := Inv
Else
Result := GL_InvBounds;
End;
Function InvCount: Integer;
Begin
Result := GL_InvCount;
End;
Function InvFull: Boolean;
Begin
Result := InvCount >= 28;
End;
function WaitFindModel(ID: Cardinal; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetModels(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
function WaitFindTexture(ID: Integer; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetTextures(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
Function FindMemoryConverter: Boolean;
Begin
Result := Length(glGetTextures(2244000)) > 0;
End;
Function FindMemoriesToEnergy: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(251797, 4794974, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2237487, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToHigherXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2433571, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function CountItem(ID: Integer): Integer;
Begin
Result := Length(glGetTextures(ID, InvBox));
End;
Function HasItem(ID: Integer): Boolean;
Begin
Result := CountItem(ID) <> 0;
End;
Function HasNoMemories: Boolean;
Begin
Result := Not HasItem(MemoryID);
End;
Function HasNoEnergy: Boolean;
Begin
Result := Not HasItem(PaleEnergy);
End;
function ModelsToTPA(var Models: glModelArray): TPointArray;
var
I: Integer;
TPA: TPointArray;
Begin
SetLength(Result, Length(Models));
For I := 0 To High(Models) Do
Begin
Result[I] := Point(Models[I].X, Models[I].Y);
End;
End;
function FindNearestWisp: TPoint;
var
TPA: TPointArray;
X1, Y1, X2, Y2: Integer;
IDs: Array Of Cardinal;
Models: glModelArray;
Begin
Result := Point(-1, -1);
IDs := [1001876126, 3736315319{, 3382154561}];
Models := glGetModels(IDs);
If (Length(Models) > 0) Then
Begin
TPA := ModelsToTPA(Models);
GLXViewPort(X1, Y1, X2, Y2);
SortTPAFrom(TPA, Point((X2 - X1) div 2, (Y2 - Y1) div 2));
Result := TPA[0];
End;
End;
function WalkToConverter: Boolean;
var
T: Timer;
MMC: TPoint;
MMIcon: glTextureArray;
Begin
If (Not GL_LoggedIn) Then Exit;
MMIcon := glGetTextures(6375, 3288885, 7);
MMC := MiddleBox(GL_GetMinimapBounds);
if (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) Then
Mouse(MMIcon[0].X, MMIcon[0].Y, 5, 5, MOUSE_LEFT);
T.Start;
while (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) do
begin
MMIcon := glGetTextures(6375, 3288885, 7);
Wait(100);
If (T.TimeElapsed > 10000) Then
Exit;
If (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10) Then
Begin
Result := True;
Exit;
End;
end;
Result := Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10;
End;
function ExchangeWisps: Boolean;
var
P: TPoint;
Models: glModelArray;
Begin
Models := glGetModels(MemoryConverter);
If (Length(Models) > 0) Then
Begin
Mouse(Models[0].X, Models[0].Y, 5, 5);
If (GL_IsMouseUpText(['Convert', 'Convert memories', 'memories Energy'])) Then
Begin
ClickMouse(MOUSE_LEFT);
If WaitFunc(@FindMemoryConverter, 200, 5000) Then
Case Exchange Of
1: Begin
P := FindMemoriesToEnergy;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
2: Begin
P := FindMemoriesToXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
3: Begin
P := FindMemoriesToHigherXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
End Else
Begin
Writeln('Invalid Exchange Option');
TerminateScript;
End;
End;
End;
End;
Procedure MainLoop;
var
Prev, Next: TPoint;
T: Timer;
Begin
SetupPlayer;
Repeat
If (Not GL_LoggedIn) Then
GL_LoginPlayer(Me);
While(Not InvFull) Do
Begin
Wait(RandomRange(100, 200));
Next := FindNearestWisp;
while (Distance(Next.X, Next.Y, Prev.X, Prev.Y) < 10) Do
begin
Wait(100);
ClearDebug;
writeln('Harvesting Wisp');
Next := FindNearestWisp;
If (InvFull) Then
Break;
end;
Mouse(Next, 1, 1);
if (GL_WaitMouseUptext(['Harvest', 'Catch'], 700)) Then
Begin
Mouse(Next, 2, 2, MOUSE_RIGHT);
Wait(300);
GL_WaitOption(['Harvest', 'Catch'], MOUSE_LEFT, 500);
End;
Wait(2000);
Prev := Next;
End;
Wait(100);
ClearDebug;
WalkToConverter;
ExchangeWisps;
writeln('Exchanging Wisps');
Until(False);
End;
var
Smart: TSmart;
begin
ClearDebug;
SetupGLX(Smart, 1350, 670);
MainLoop;
TerminateScript;
end.
2013-08-20 22:09:12
2013-08-21 09:17:40
From: Brandon
Me too.. It's not great but it works okay.. Just needs a bit of fixing up. Mixing it with colour would definitely own.. :)
Just started and it got me lvl 21 so far :l
Anyway.. gotta go..
EDIT.. Updated. Added Walking to the Energy converter..
{$DEFINE SMARTOLD}
{$include_once GLX/Setup.Simba}
const
MyID = 2997907707; //ID of my player.
Exchange = 3; //1 = To-Energy, 2 = To-XP, 3 = To-Higher-Xp.
UseStaticInv = False; //Use hard-coded Inventory coordinates.
MemoryID = 77010;
PaleEnergy = 52275;
ChronicleFragment = 79305;
MemoryConverter = 1891595728;
var
T: TSmart;
Me: TPlayer;
Inv: Tbox = [1035, 375, 1342, 596];
Procedure SetupPlayer; //Login Information.
Begin
Me.Name := 'Username';
Me.Pass := '********';
End;
Function InvBox: TBox;
Begin
If UseStaticInv Then
Result := Inv
Else
Result := GL_InvBounds;
End;
Function InvCount: Integer;
Begin
Result := GL_InvCount;
End;
Function InvFull: Boolean;
Begin
Result := InvCount >= 28;
End;
function WaitFindModel(ID: Cardinal; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetModels(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
function WaitFindTexture(ID: Integer; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetTextures(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
Function FindMemoryConverter: Boolean;
Begin
Result := Length(glGetTextures(2244000)) > 0;
End;
Function FindMemoriesToEnergy: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(251797, 4794974, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2237487, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToHigherXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2433571, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function CountItem(ID: Integer): Integer;
Begin
Result := Length(glGetTextures(ID, InvBox));
End;
Function HasItem(ID: Integer): Boolean;
Begin
Result := CountItem(ID) <> 0;
End;
Function HasNoMemories: Boolean;
Begin
Result := Not HasItem(MemoryID);
End;
Function HasNoEnergy: Boolean;
Begin
Result := Not HasItem(PaleEnergy);
End;
function ModelsToTPA(var Models: glModelArray): TPointArray;
var
I: Integer;
TPA: TPointArray;
Begin
SetLength(Result, Length(Models));
For I := 0 To High(Models) Do
Begin
Result[I] := Point(Models[I].X, Models[I].Y);
End;
End;
function FindNearestWisp: TPoint;
var
TPA: TPointArray;
X1, Y1, X2, Y2: Integer;
IDs: Array Of Cardinal;
Models: glModelArray;
Begin
Result := Point(-1, -1);
IDs := [1001876126, 3736315319{, 3382154561}];
Models := glGetModels(IDs);
If (Length(Models) > 0) Then
Begin
TPA := ModelsToTPA(Models);
GLXViewPort(X1, Y1, X2, Y2);
SortTPAFrom(TPA, Point((X2 - X1) div 2, (Y2 - Y1) div 2));
Result := TPA[0];
End;
End;
function WalkToConverter: Boolean;
var
T: Timer;
MMC: TPoint;
MMIcon: glTextureArray;
Begin
If (Not GL_LoggedIn) Then Exit;
MMIcon := glGetTextures(6375, 3288885, 7);
MMC := MiddleBox(GL_GetMinimapBounds);
if (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) Then
Mouse(MMIcon[0].X, MMIcon[0].Y, 5, 5, MOUSE_LEFT);
T.Start;
while (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) do
begin
MMIcon := glGetTextures(6375, 3288885, 7);
Wait(100);
If (T.TimeElapsed > 10000) Then
Exit;
If (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10) Then
Begin
Result := True;
Exit;
End;
end;
Result := Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10;
End;
function ExchangeWisps: Boolean;
var
P: TPoint;
Models: glModelArray;
Begin
Models := glGetModels(MemoryConverter);
If (Length(Models) > 0) Then
Begin
Mouse(Models[0].X, Models[0].Y, 5, 5);
If (GL_IsMouseUpText(['Convert', 'Convert memories', 'memories Energy'])) Then
Begin
ClickMouse(MOUSE_LEFT);
If WaitFunc(@FindMemoryConverter, 200, 5000) Then
Case Exchange Of
1: Begin
P := FindMemoriesToEnergy;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
2: Begin
P := FindMemoriesToXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
3: Begin
P := FindMemoriesToHigherXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
End Else
Begin
Writeln('Invalid Exchange Option');
TerminateScript;
End;
End;
End;
End;
Procedure MainLoop;
var
Prev, Next: TPoint;
T: Timer;
Begin
SetupPlayer;
Repeat
If (Not GL_LoggedIn) Then
GL_LoginPlayer(Me);
While(Not InvFull) Do
Begin
Wait(RandomRange(100, 200));
Next := FindNearestWisp;
while (Distance(Next.X, Next.Y, Prev.X, Prev.Y) < 10) Do
begin
Wait(100);
ClearDebug;
writeln('Harvesting Wisp');
Next := FindNearestWisp;
If (InvFull) Then
Break;
end;
Mouse(Next, 1, 1);
if (GL_WaitMouseUptext(['Harvest', 'Catch'], 700)) Then
Begin
Mouse(Next, 2, 2, MOUSE_RIGHT);
Wait(300);
GL_WaitOption(['Harvest', 'Catch'], MOUSE_LEFT, 500);
End;
Wait(2000);
Prev := Next;
End;
Wait(100);
ClearDebug;
WalkToConverter;
ExchangeWisps;
writeln('Exchanging Wisps');
Until(False);
End;
var
Smart: TSmart;
begin
ClearDebug;
SetupGLX(Smart, 1350, 670);
MainLoop;
TerminateScript;
end.
2013-08-21 13:55:09
2013-08-21 14:52:41
From: Rincewind
PB has 3 scripts up and running for it AFAIK Very easy to bot. I wonder if botwatch is watching it though.
2013-08-21 16:08:48
From: digitalninja
Anyone try these yet?? I am over level 40 and want to gouge my eyes out with this skill.
2013-08-21 16:18:12
From: Brandon
Me too.. It's not great but it works okay.. Just needs a bit of fixing up. Mixing it with colour would definitely own.. :)
Just started and it got me lvl 21 so far :l
Anyway.. gotta go..
EDIT.. Updated. Added Walking to the Energy converter..
{$DEFINE SMARTOLD}
{$include_once GLX/Setup.Simba}
const
MyID = 2997907707; //ID of my player.
Exchange = 3; //1 = To-Energy, 2 = To-XP, 3 = To-Higher-Xp.
UseStaticInv = False; //Use hard-coded Inventory coordinates.
MemoryID = 77010;
PaleEnergy = 52275;
ChronicleFragment = 79305;
MemoryConverter = 1891595728;
var
T: TSmart;
Me: TPlayer;
Inv: Tbox = [1035, 375, 1342, 596];
Procedure SetupPlayer; //Login Information.
Begin
Me.Name := 'Username';
Me.Pass := '********';
End;
Function InvBox: TBox;
Begin
If UseStaticInv Then
Result := Inv
Else
Result := GL_InvBounds;
End;
Function InvCount: Integer;
Begin
Result := GL_InvCount;
End;
Function InvFull: Boolean;
Begin
Result := InvCount >= 28;
End;
function WaitFindModel(ID: Cardinal; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetModels(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
function WaitFindTexture(ID: Integer; WaitPerLoop, MaxTime: Integer): Boolean;
var
T: Integer;
begin
T := GetSystemTime + MaxTime;
while (GetSystemTime < T) do
begin
if (Length(glGetTextures(ID)) < 1) then
begin
Result := True;
Exit;
end;
Wait(WaitPerLoop);
end;
end;
Function FindMemoryConverter: Boolean;
Begin
Result := Length(glGetTextures(2244000)) > 0;
End;
Function FindMemoriesToEnergy: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(251797, 4794974, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2237487, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function FindMemoriesToHigherXP: TPoint;
var
T: glTextureArray;
Begin
T := glGetTextures(339290, 2433571, 10);
if (Length(T) > 0) then
Result := Point(T[0].X, T[0].Y)
else
Result := Point(-1, -1);
End;
Function CountItem(ID: Integer): Integer;
Begin
Result := Length(glGetTextures(ID, InvBox));
End;
Function HasItem(ID: Integer): Boolean;
Begin
Result := CountItem(ID) <> 0;
End;
Function HasNoMemories: Boolean;
Begin
Result := Not HasItem(MemoryID);
End;
Function HasNoEnergy: Boolean;
Begin
Result := Not HasItem(PaleEnergy);
End;
function ModelsToTPA(var Models: glModelArray): TPointArray;
var
I: Integer;
TPA: TPointArray;
Begin
SetLength(Result, Length(Models));
For I := 0 To High(Models) Do
Begin
Result[I] := Point(Models[I].X, Models[I].Y);
End;
End;
function FindNearestWisp: TPoint;
var
TPA: TPointArray;
X1, Y1, X2, Y2: Integer;
IDs: Array Of Cardinal;
Models: glModelArray;
Begin
Result := Point(-1, -1);
IDs := [1001876126, 3736315319{, 3382154561}];
Models := glGetModels(IDs);
If (Length(Models) > 0) Then
Begin
TPA := ModelsToTPA(Models);
GLXViewPort(X1, Y1, X2, Y2);
SortTPAFrom(TPA, Point((X2 - X1) div 2, (Y2 - Y1) div 2));
Result := TPA[0];
End;
End;
function WalkToConverter: Boolean;
var
T: Timer;
MMC: TPoint;
MMIcon: glTextureArray;
Begin
If (Not GL_LoggedIn) Then Exit;
MMIcon := glGetTextures(6375, 3288885, 7);
MMC := MiddleBox(GL_GetMinimapBounds);
if (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) Then
Mouse(MMIcon[0].X, MMIcon[0].Y, 5, 5, MOUSE_LEFT);
T.Start;
while (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) > 10) do
begin
MMIcon := glGetTextures(6375, 3288885, 7);
Wait(100);
If (T.TimeElapsed > 10000) Then
Exit;
If (Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10) Then
Begin
Result := True;
Exit;
End;
end;
Result := Distance(MMC.X, MMC.Y, MMIcon[0].X, MMIcon[0].Y) <= 10;
End;
function ExchangeWisps: Boolean;
var
P: TPoint;
Models: glModelArray;
Begin
Models := glGetModels(MemoryConverter);
If (Length(Models) > 0) Then
Begin
Mouse(Models[0].X, Models[0].Y, 5, 5);
If (GL_IsMouseUpText(['Convert', 'Convert memories', 'memories Energy'])) Then
Begin
ClickMouse(MOUSE_LEFT);
If WaitFunc(@FindMemoryConverter, 200, 5000) Then
Case Exchange Of
1: Begin
P := FindMemoriesToEnergy;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
2: Begin
P := FindMemoriesToXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
3: Begin
P := FindMemoriesToHigherXP;
if ((P.X <> -1) and (P.Y <> -1)) then
begin
Mouse(P, 5, 5, MOUSE_LEFT);
WaitFunc(@HasNoMemories, 200, 35000);
end;
End;
End Else
Begin
Writeln('Invalid Exchange Option');
TerminateScript;
End;
End;
End;
End;
Procedure MainLoop;
var
Prev, Next: TPoint;
T: Timer;
Begin
SetupPlayer;
Repeat
If (Not GL_LoggedIn) Then
GL_LoginPlayer(Me);
While(Not InvFull) Do
Begin
Wait(RandomRange(100, 200));
Next := FindNearestWisp;
while (Distance(Next.X, Next.Y, Prev.X, Prev.Y) < 10) Do
begin
Wait(100);
ClearDebug;
writeln('Harvesting Wisp');
Next := FindNearestWisp;
If (InvFull) Then
Break;
end;
Mouse(Next, 1, 1);
if (GL_WaitMouseUptext(['Harvest', 'Catch'], 700)) Then
Begin
Mouse(Next, 2, 2, MOUSE_RIGHT);
Wait(300);
GL_WaitOption(['Harvest', 'Catch'], MOUSE_LEFT, 500);
End;
Wait(2000);
Prev := Next;
End;
Wait(100);
ClearDebug;
WalkToConverter;
ExchangeWisps;
writeln('Exchanging Wisps');
Until(False);
End;
var
Smart: TSmart;
begin
ClearDebug;
SetupGLX(Smart, 1350, 670);
MainLoop;
TerminateScript;
end.
2013-08-21 17:36:23
2013-08-21 22:09:23
From: [XoL]
It isn't you need to download the unofficial updates etc. Just wait for SRL-6
2013-08-21 22:17:08
From: luxrath
ah ok
is there an eta on simba 6? cos atm i got about 10m in bones…
2013-08-22 02:51:54
2013-08-23 11:55:53