DemiseScythe
2013-06-30 16:02:23
2013-06-30 16:02:23
2013-06-30 16:03:23
2013-06-30 17:36:53
2013-06-30 19:14:44
2013-06-30 19:44:41
2013-06-30 19:58:16
2013-07-01 06:57:18
2013-07-02 11:38:29
2013-07-02 12:44:30
2013-07-02 17:50:28
2013-07-02 19:00:45
2013-07-02 19:14:41
2013-07-02 19:17:14
2013-07-02 19:44:20
Collected all these while coding the script. Easily +30k kills.
2013-07-02 20:14:31
From: DemiseScythe
That works at least until I get praying online, I tank with a bunyip pouch and some monkfish all tasks so I haven't gotten around to this. Definitely worth training summoning, this script should provide the charms.Collected all these while coding the script. Easily +30k kills.
2013-07-02 20:33:57
From: [XoL]
Very nice!
Few problems I have noticed (Ignore my tone if it comes off bad in anyway, just trying to be constructive)
1) Attacks other peoples monsters (Doesn't happen often but does happen enough to notice, blue drags)
2) Slow to attack, very often people get the monster way before it does
3) Doesn't really have a sense of where it is (Just stands in one spot when it cant find a monster)
4) Abilities are kinda weird, it spams the 100% adren one even when it doesnt have 100% adren (Momentum is great for slayer fyi)
5) Right clicks every monster (even when you are stronger than it)
6) It works fine by itself, but when other people come into the mix is when it starts to struggle
Some suggestions:
1) Better prayer support (clicks quick pray/soul split flash etc.)
2) Have a reset point, meaning when it cant find monsters it walks back to a point in the middle of their spawn
3) Spin the camera a little more (A lot of monsters are just shy of the cameras view)
Hope some of that is helpful! I am using this on an account with maxed combat stats (90 prayer, 65 summoning)
2013-07-02 20:42:41
From: DemiseScythe
Dragon Tasks are annoying because of the goldfarming bots. I got to make it prioritize on killing the baby blues and then any adults if available, resource dungeon should work better. IsFightAt could be revised but the problem with dragons is that they are just too tall and their HP bar is proportionally offtarget. The Right-clicking to attack is by design but I could make give it a boolean to turn on 1clickattacking. It was a problem back with the color version where it would find the wrong NPC or non-NPC objects instead of the desired NPC but that is no longer a problem with OGL. The Attack can be optimized, tbh a lot of the waits are just to keep the CPU usage low but if that is not a problem, I can juice up the script. Use the world chooser, give it empty worlds as param to increase your chances of finding available NPCs. The ones not goldfarmed are not bad at all. I already fixed the standing around issue but the return part can only work when walking is coded. I'll do prayer support, tbh didn't think people would use it. However, it will only handle 1 type of prayer, the quickprayer so just do with that for now. I'll expand later on. As for the abilities, you did not set up the script right. All those booleans under the Worlds are meant to prevent that. You can also prevent spaming on non-dual weilding tasks by turning DualWeild off. New version can also turn off abilities completely for tasks in which magic/ranged is used. At least until I complete range+magic abilities. Have only filled Melee abilities.
I got a genius idea to reamp the attack function, tbh it should work nicely. Will work on these issues before I release the new version. Once I hit 75 Crafting and I get Slayer Rings I can get the Task getting part working as well as banking. Then the coding for the walking can begin. I am also 1 quest away from fairy rings now so that will also be done by then.
2013-07-02 20:52:36
From: [XoL]
Looking forward to the changes!! and yes after further inspection of the script I realized I was dumb and could edit the abilities :p
Do you need any rsgp or anything?
2013-07-02 21:49:24
From: DemiseScythe
Donations are welcome and appreciated, but only for those who want to. My script is free to use for all SRL Member or above and will remain so for as long as OGL mode exists. I know it might seem a little basic for a combat script at the time and the requirements are a little high but it will keep evolving into the ultimate Slayer script. I have some clever things thought out for the walking procedure. Might do a video of a beta test of the Kalphite Hive navegation to show my followers.
2013-07-03 04:31:13
2013-07-03 10:31:30
2013-07-03 13:03:46
From: [XoL]
If I add items to your current loot list, will it slow the script down? I was planning on adding every item over 10k.
2013-07-03 23:34:27
2013-07-04 03:56:48
From: [XoL]
Regarding the new script update
*Combat works significantly better
Problems:
1) Still slow (It will have half bar adren, and by the time it finds another monster it will be back down to empty)
2) Sometimes when it trys to just click on a monster it misses and stands next to it :p
Edit:
Just did a grotworms task it was actually surprisingly faster not lighting or anything but much much more accurate than it was with kurasks.
Edit Edit:
Just did a trolls task, I had to restart the script multiple times (It tends to just stall after a while and just stare at a troll with the cursor over the troll but refuses to actually click, then it adds to the kill counter :p)
2013-07-04 04:04:07
From: DemiseScythe
The reason of having it right click originally was to be 100% sure that it had started an attack before moving into the combat loop. This is not reflection and I spent +4 hours playing around with it and found no real way of telling whether I'm in combat or not. It would had been easier with the old exp system but now that you only get hp experience once the monster is fully dead, I cannot really use that anymore.
2013-07-04 04:16:28
From: BMWxi
If you don't have to be in a specific tab for the rest of the combat, you can go to the combat tab and there will be a green bar with an opponent interface there if you are in combat.
2013-07-04 22:59:02
2013-07-05 10:01:00
2013-07-05 10:46:28
From: [XoL]
Is this in 1.1? or is that for the next update?
2013-07-05 12:34:37
From: DemiseScythe
The looting did not change since 1.0 but the above list will be added in 1.2 and will be permanent unless monster drops change. It is the most effective looting can be since adding further items will slow down the script. In addition, if all seeds share the same ID, they will become Red items as well.
2013-07-05 15:09:17
From: [XoL]
Just wondering but what will happen if the inventory is full of food and it sees an item on the ground it is supposed to pick up? (eat food, or just leave the item?)
2013-07-14 07:04:18
2013-07-14 09:54:26
From: [XoL]
Hows 1.2 coming along? So far I noticed 1.1 isn't bad it gets the job done if I am alone in the dungeon.
2013-07-14 19:42:47
2013-07-14 20:05:40
From: [XoL]
Lol I am weirdly super excited for this haha
2013-07-14 20:29:21
2013-07-14 20:49:30
From: Sin
Any idea web walking and task getting will be implemented? Right meow it's just a glorified auto fighter :P
2013-07-14 21:00:24
2013-07-14 21:09:35
From: Sin
Okay this is awkward, I meant to type 'when', not web >_>
iPhone autocorrect FTL.
2013-07-14 22:54:21
2013-07-15 09:52:42
From: DemiseScythe
My script is easily one of the most advanced Simba ps script written to date and it is still in development
2013-07-15 18:09:22
2013-07-15 18:43:47
From: [XoL]
Eh I think it has the ability to become the most advanced script available easily
2013-07-15 20:05:29
From: DemiseScythe
Don't worry about it, what I do is just not appreciated enough.
In other news, I blew through 1100+ Slayer Points trying to get Queen task and didn't. I will continue trying to get it. Although if you or anyone can find the chat window for challenges, I will be able to use that instead. I need the window that has the "I prefer a regular assignment instead"
I revised the task list and Fairy Rings are not necessary anymore. The requirements as of now are Slayer Helm, Slayer Rings, Instant Kill and NPC Contact, as for Agility, 70 Agility is a must, but those under can just set the hellhound task to Cancel.
2013-07-15 20:22:13
2013-07-15 20:34:30
From: [XoL]
Sounds good getting those requirements as we speak, I know that the second slayer master gives the special task about 1/20 tasks but its a different special assignment would that matter?
If I get it do you just want pictures?
Even without it could it be released? and if either of us/anyone who uses it happens to get it update for a 1.21 update?
Writeln(ToStr(Length(GLH_TexturesExistArea([52107], IntToBox(132, 436, 385, 496)))));
2013-07-15 20:39:43
2013-07-15 20:56:19
From: Sjoe
Kevin is also working on a Slayer script, so you'll have some competition :)
Magic seed drop =)2013-07-15 21:14:40
From: DemiseScythe
It will use screen objects to navigate
2013-07-15 21:17:30

2013-07-15 21:18:43
From: The Mayor
Like ObjectDTM? or mainscreen objects?
2013-07-15 21:24:55
From: [XoL]
Oh I made this when you released 1.0, I just never bothered to upload it is the inventory I use.
I click the ovl myself when I am babysitting.

2013-07-15 22:56:12
From: DemiseScythe
This is how combat works for Version 1.2: http://www.youtube.com/watch?v=Auct6BqPs78
It is a big upgrade from before although it still has issues when other players are around since I still haven't gotten around to get IsFightAt working.
2013-07-16 06:32:13
From: [XoL]
Looks drastically better!

Writeln(ToStr(Length(GLH_TexturesExistArea([52107], IntToBox(132, 436, 458, 496)))));2013-07-16 10:54:50
Result := Length(GLH_TexturesExistArea([19635, 7395, 16065, 14790], IntToBox(215, 195, 315, 265))) > 0;2013-07-16 19:16:42
SRL Compiled in 16 msec
Loading SMART: http://world114.runescape.com/f5353458834331501508
Error: Exception: Access violation at line 43
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
var
GLImgPointer: Integer;
Procedure FreeGLImagePointer;
begin
FreeTarget(GLImgPointer);
end;
2013-07-16 20:08:34
From: [XoL]
Hmm I don't know what seems to be going wrong, 1.1 worked for me but when I try 1.2 I get this error:
SRL Compiled in 16 msec
Loading SMART: http://world114.runescape.com/f5353458834331501508
Error: Exception: Access violation at line 43
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
The Line I am getting the access violation at is a blank line in the class GLHook
var
GLImgPointer: Integer;
Procedure FreeGLImagePointer;
begin
FreeTarget(GLImgPointer);
end;
{$Define GLHook}
{$include_once SRL/SRL.Simba}
Procedure GLHook_HideNavBar; //Allows exact MouseMovement in the OpenGL world. Forcefully remove the Mouse offset.
Begin
SRL_DisableNavBar; //Comment out to enable normal mouse movement. For testing..
End;
Procedure GLHook_ShowNavBar; //Resets the Navigation bar. Forcefully enable it and add the Mouse offset.
Begin
SRL_EnableNavBar;
End;
{$include_once GLHook/GLHookIDs.Simba}
{$include_once GLHook/GLCommunication.Simba}
{$include_once GLHook/Text.Simba}
{$include_once GLHook/Timing.Simba}
{$include_once GLHook/Chat.Simba}
{$include_once GLHook/Amount.Simba}
{$include_once GLHook/GameTab.Simba}
{$include_once GLHook/Flag.Simba}
{$include_once GLHook/Login.Simba}
{$include_once GLHook/Bank.Simba}
var
GLImgPointer: Integer;
Procedure FreeGLImagePointer;
begin
FreeTarget(GLImgPointer);
end;
Function GLHook_Setup(ProcessID: String): Boolean;
Begin
GLC_MSBox := IntToBox(MSX1 + SRL_NAVBAR_INGAME_X, MSY1 + SRL_NAVBAR_INGAME_Y, MSX2 + SRL_NAVBAR_INGAME_X, MSY2 + SRL_NAVBAR_INGAME_Y);
GLC_MMBox := IntToBox(MMX1 + SRL_NAVBAR_INGAME_X, MMY1 + SRL_NAVBAR_INGAME_Y, MMX2 + SRL_NAVBAR_INGAME_X, MMY2 + SRL_NAVBAR_INGAME_Y);
GLC_MIBox := IntToBox(MIX1 + SRL_NAVBAR_INGAME_X, MIY1 + SRL_NAVBAR_INGAME_Y, MIX2 + SRL_NAVBAR_INGAME_X, MIY2 + SRL_NAVBAR_INGAME_Y);
GLC_MCBox := IntToBox(MCX1 + SRL_NAVBAR_INGAME_X, MCY1 + SRL_NAVBAR_INGAME_Y, MCX2 + SRL_NAVBAR_INGAME_X, MCY2 + SRL_NAVBAR_INGAME_Y);
Result := GLHSetup(ProcessID);
{$IFNDEF SMART}
GLImgPointer := SetTargetArray(GLHGetImagePointer, 765, 553);
{$ENDIF}
AddOnTerminate('FreeGLImagePointer');
End; That is how your GLHook.simba should look like, also you need to completely replace DemiseSlayerOGL.simba since the settings have changed including how SMART is loaded like Setup_GLHook(); instead of Setup_GLH(); In other words, 1.2 scripts and include are only compatible with each other. Try that and let me know if it works, keep in mind your action bar settings are useless as of 1.2 since I made a standard setup.2013-07-16 20:25:37
2013-07-16 20:38:29
Error: Out Of Range at line 139
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
If ((Line < 1) Or (Not InRange(LineNumber, 1, 9))) Then Exit;
If (Line < (9 - LineNumber)) Then Exit;
Line := (9 - LineNumber);
H := High(TextInfo[Line]); *********THIS LINE IS HIGHLIGHTED*********
For I := 0 To H Do
If (TextInfo[Line][I].Colour = Colour) Then
Result := Result + TextInfo[Line][I].Text;
End; 2013-07-16 20:41:30
From: [XoL]
I seem to be getting this error once in a while
Error: Out Of Range at line 139
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
Its in my Chat Class (here is what is highlighted)
If ((Line < 1) Or (Not InRange(LineNumber, 1, 9))) Then Exit;
If (Line < (9 - LineNumber)) Then Exit;
Line := (9 - LineNumber);
H := High(TextInfo[Line]); *********THIS LINE IS HIGHLIGHTED*********
For I := 0 To H Do
If (TextInfo[Line][I].Colour = Colour) Then
Result := Result + TextInfo[Line][I].Text;
End;
So far it happened twice after 20, 30 kills respectively.
2013-07-16 20:47:18
2013-07-17 18:38:13
I, T: Integer;
ModelPoints: TPointArray;
begin
Result := False;
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1+125, SSY1+NPC[ID].HMod, SSX2-125, ***THIS IS THE LINE THAT IS HIGHLIGHTED **** SSY2+NPC[ID].HMod));
if (Length(ModelPoints) = 0) then
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1, SSY1+NPC[ID].HMod, SSX2, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) > 0) then
begin
2013-07-17 20:51:13
From: [XoL]
So I have been getting this error, normally I just restart a few times and it won't break again but I have to do this every task
SRL Compiled in 0 msec
Paired with SMART[57068]
Error: Out Of Range at line 788
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
This is in the slayerCombatOGL class
I, T: Integer;
ModelPoints: TPointArray;
begin
Result := False;
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1+125, SSY1+NPC[ID].HMod, SSX2-125, ***THIS IS THE LINE THAT IS HIGHLIGHTED **** SSY2+NPC[ID].HMod));
if (Length(ModelPoints) = 0) then
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1, SSY1+NPC[ID].HMod, SSX2, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) > 0) then
begin
2013-07-17 21:01:39
2013-07-17 21:20:38
From: [XoL]
Thanks added the fix!
2013-07-17 22:30:54
2013-07-17 22:38:41
From: [XoL]
Damn I will also use your script till 99 so you will get a lot of use from me! That is pretty intense looking forward to the newer updates as they come, so far I am using your script exclusively besides for my 10th task where I try Kevin's script or just kill the monster myself to get some extra slayer points in (I still need to buy a bunch of crap from the store)
2013-07-17 23:58:08
begin
Result := False;
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1+125, SSY1+NPC[ID].HMod, SSX2-125, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) = 0) then
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1, SSY1+NPC[ID].HMod, SSX2, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) > 0) then 2013-07-18 00:34:33
2013-07-18 09:01:42
From: [XoL]
Since I replaced line 670 I seem to be getting this error all the time (Same class, slayercombatOGL)
begin
Result := False;
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1+125, SSY1+NPC[ID].HMod, SSX2-125, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) = 0) then
ModelPoints := GLH_ModelsExistArea(NPC[ID].NPCIDs, IntToBox(SSX1, SSY1+NPC[ID].HMod, SSX2, SSY2+NPC[ID].HMod));
if (Length(ModelPoints) > 0) then
Error: Out Of Range at line 788
The following DTMs were not freed: [SRL - Lamp bitmap, 1]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap]
function GLH_CheckTask: Boolean;
var
I: Integer;
ItemPoints: TPointArray;
begin
Result := False;
ItemPoints := GLH_TexturesExistArea([43350, 73695], IntToBox(SIX1, SIY1, SIX2, SIY2));
if (Length(ItemPoints) > 0) then
begin
GLHook_ShowNavBar;
Mouse(ItemPoints[0].X, ItemPoints[0].Y, 0, 0, False);
GLHook_HideNavBar;
if GLH_WaitOptionMulti(['Kills', 'left'], 900) then
begin
Wait(550 + Random(50));
if GLH_FindBlackChatMessage('current') then
begin
for I := 1 to 37 do
begin
if GLH_FindBlackChatMessage(NPC[I].Name) then
begin
TargetID := I;
KillGoal := StrToInt(ExtractFromStr(GLH_GetBlackChatMessage, Numbers));
Result := True;
Exit;
end;
end;
end;
end;
end;
end;
if GLH_CheckTask then
begin
GLH_FightNPC;
GLH_GetTask;
end; From: Le Jingle
Very nice work and dedication to such a project, Viceless. :)
2013-07-18 14:32:50
2013-07-18 18:29:33
From: [XoL]
Ah I wish I could try those fixes but with the push of a new smart update that happened last night I cant seem to get anything working again >.< Cough would you possibly be able to upload your plugins folder?
2013-07-18 18:50:03
From: DemiseScythe
Plugins Folder: http://puu.sh/3Gdc4.rar
Yes, stay away from new SMART until after RS3, I will then get my script to work with it and include all the necessary RS3 fixes. Turn autoupdate off to Simba, I do all my updates manually to prevent stuff like this from happening.
2013-07-18 18:58:37
2013-07-18 19:11:44
From: [XoL]
Ah I have no idea what I have messed up, what got updated yesterday? Was it smart only?
If thats the case could you also send me your includes folder because mine got updated yesterday (More specifically the SPS and SRL folders, or just SRL if they didn't update SPS yesterday not sure)
2013-07-18 19:15:01
2013-07-18 19:30:22
From: [XoL]
Thanks :)
If you guys are talking about NIS layout system they will give you presets, just have everyone use the "regular" rs default? I think most legit players would probably be using that one as well.
If you guys are talking about something else ignore my babbling :p
2013-07-18 20:41:18
2013-07-18 20:43:58
From: DemiseScythe
Version 1.3 is live now. I skipped some functions in order to get the bug fixes out there quick. I will keep working on the functions I am missing in the meanwhile and hopefully I can piece it all together soon.
2013-07-18 20:51:03
From: [XoL]
Thanks :)!
Will update to 1.3! this is exciting so far 1.2 was near flawless besides for user error (my fault)
woah. Did you have a custom version of smart? It seems like its 5x faster, and looks different
2013-07-18 20:59:58
2013-07-18 21:07:17
2013-07-19 00:38:28
2013-07-19 07:12:04
From: [XoL]
So I am using 1.3 now, few things I noticed.
It seems a lot slower than 1.2, the reason for this is because it isn't really using the abilities as much (it uses them but much much slower) Which in turn eats more often/takes longer per task.
It seems like it can find monsters even better though!
2013-07-19 10:09:50
From: DemiseScythe
I did not change the abilities nor the eating function, it will eat every time your hp drops to yellow or it needs to make room to pick up an item, has been that way since 1.0. The only thing that changed is that it now checks if in combat but only if there are other players in the minimap. Post a picture of your ability bar.
Prayer := False; {Do Not Use}
Summoning := True;
These are the only two things that can slow the combat ability, summoning will lose some seconds as will prayer.
Also keep in mind the abilities work best while dual weilding. I expect the user to dual weild on all tasks but Dragons and Basilisks. The abilities work slower on those because they lack dual weild but the rest should work fairly fast. Prayer slows the script down more than it helps. I am inclined to scrap the code as I did with poison healing. They are just not worth it. Summoning I need to fix because if you have less than 3 summoning points, you will notice the mouse moving around the summoning. Need to make that more efficient like if it doesnt have any summoning supplies left, it should set summoning off for the remainder of the task, It can always be set to user settings in between tasks but will save a lot of time.
The abilities have an intentional wait because there are combo attacks, if you cast an ability right after, you wasted your previous effort. I'll look into it so only Thereshold abilities have a long wait while basics are almost immidiate.
2013-07-19 18:46:16

2013-07-19 19:16:27
From: DemiseScythe
Alright, glad to hear.
First Abyssal Demons task and first two whips =)
2013-07-20 23:10:48
2013-07-21 00:30:44
From: [XoL]
So I noticed in places where the NPCs are a little spread apart it tends to stand there and just circle the camera waiting for something to come into view, some solutions I was thinking of were (A: having a re-locate function, meaning it just goes back to the center of said npc spawn..would probably have to be hard coded or B: Making the camera check other angles it only seems to go right to left but if you included down and up movements the scope is far larger)
Anyway just some suggestions for finding npcs :)

2013-07-21 00:54:06
From: DemiseScythe
That won't come until walking but the client is actually looking for NPC dots while it spins as well as NPCs. Just coded Daggs and they are much tougher than I remember. I wouldn't last more than 40 kills with an inventory of monks so that would mean 4-5 trips per task and I am almost maxed with good gear. I figured however that praying ranged does reduce the damage I take significantly, thus I will not scrape prayer since there is really an use for it. I will get prayer working with turning on prayers before the task and turning them off after the task is over. For that relocate, I need Brandon to stop playing unbottable games and code the plugin to get cords. Of course, I am not going to rush him so there is nothing else I can do but wait.
Also, Looting must be turned off for Dagg task so I will need to invent a function to handle special rules for a few tasks.
2013-07-21 10:18:33
2013-07-21 11:18:25
From: [XoL]
Today I noticed the script only fights kalphite soldiers, perhaps add workers to the possibility of being killed (Much faster task)
2013-07-21 15:30:29
From: DemiseScythe
Their experience is too small, you are free to add them yourself though since it's open source.
2013-07-21 16:02:10
From: [XoL]
As in slayer xp? Lol up until this point I though every monster you killed gave you the same xp… awk

2013-07-21 20:31:52
2013-07-22 14:07:48
2013-07-22 15:25:52
From: Mjordan
@[XoL], So is this still working after the RS3 update? I had no idea we had a slayer script here now. It's my last 99 and I've been trying to legit it, but it's such a pain. This has made my day haha!
2013-07-22 15:30:56
2013-07-22 16:02:44
From: DemiseScythe
You got to walk and withdraw supplies manually but other than that, you just hit play and it does everything and gets a new task once you are done. It plays some .wav to let you know the task is finished, then you withdraw more supplies, walk to next task and hit play again. It is not autonomous but it sure beats legitting slayer. I am trying to obtain new plugins from Brandon to fix it and get it working for RS3.
2013-07-22 16:09:46
From: footballjds
so it's basically an all-in-one fighter?
2013-07-22 17:23:12
From: DemiseScythe
No, all in one fighters do not grab tasks and they work for any NPC, this script only works for your slayer task.
2013-07-22 18:53:49
From: footballjds
so the only benefit of this versus an autofighter is it doesn't work for all slayer monsters but it will get you a new task?
2013-07-22 23:47:10
2013-07-23 09:53:10
From: [XoL]
Why are you trying to start an argument here? Its been stated time and time again she will eventually add walking etc. All in one fighters don't specifically react to certain monsters whereas this one does, currently in the version that is out it can get tasks/kill the exact amount of that monster/loot valuables that those certain slayer tasks would drop, literally all you have to do is move your character to the spot the next monster is at.
From: DemiseScythe
Lets just keep things peaceful everyone. I looked at RS3 and there isn't much to change to make my script functional. As soon as Brandon releases the new ogl plugin, I will update my script shortly after. I will go with the new standard 1024x768 resolution although my laptop screen will probably force me to use 1366x718 since it is widescreen. I will however allow users to use whatever setup they prefer and feed my script the x1,y1,x2,y2 cords of each interphase and it should work with that. My script only needs a Minimap, Inventory, Chat And the bounds of the stats+abilities box. The mainscreen will be considered the biggest rectangle on the screen that doesn't have an interphase on it. Ill elaborate on this with a picture tomorrow, there are some simple rules in regards to interphase dimensions but it is straight forward.
2013-07-23 09:59:37
From: DemiseScythe
I will go with the new standard 1024x768 resolution

2013-07-23 10:00:18

2013-07-23 10:33:52
From: masterBBYou should EDIT 3D WORLD on that account to get your player in the center of the mainscreen box.
The resoltion which was decided on is under discusion. It seem to become smaller to support laptops. Current idea of the setup would look similar to:
I suggest waiting one day till all the srl devs have agreed ;)
2013-07-23 11:01:55
From: masterBB
The resoltion which was decided on is under discusion. It seem to become smaller to support laptops. Current idea of the setup would look similar to:
I suggest waiting one day till all the srl devs have agreed ;)
2013-07-23 11:06:24
From: footballjds
that's disgusting, why would you chop the top? :p
demise, is it possible to get info from OGL about the menus and there coords?
2013-07-23 13:55:10
From: DemiseScythe
I won't be able to tell until I get the new plugin but I should be able to detect the "Bag" icon over the inventory and then generate the bounds from that the same way bounds are generated for ChooseOption.
2013-07-23 14:57:43
From: DemiseScythe
You should EDIT 3D WORLD on that account to get your player in the center of the mainscreen box.
True but as I said, People can use whatever interphase they wish and just enter the corner cords of each of those boxes in addition to the cords of their player and my script will be able to handle everything else. I got 15 inch laptop computer and I can run 1366 x 718 comfortably. People can use the official one if they wish, they just got to input all the interphase cords into the settings. I am offering compatibility while allowing Devs to use what they think is best for everyone.
I'm personally going to use this setup from now on:
I only use my own scripts, OGL code and the color functions I do use, either don't need to cords or allow me to enter my own x1, y1, x2, y2 cords which should mean there is not problems for me. =)
I find it very space efficent.
2013-07-26 00:03:24
2013-08-08 10:19:10
2013-08-08 18:49:56
From: masterBB
Re-opened as requested by @DemiseScythe;
2013-08-10 03:28:59
From: DemiseScythe
Thank you.
I will upload Version 2.0 tomorrow after I am done cleaning up the thread, the script and ironing out some bugs.
Current Bugs left to Fix:
Player Detection seems to be broken although it worked on tests.
Check Task must support the Slayer Gem as well, not just the Ring of Slaying.
Prayer must be made task specific as well as Looting instead of Global booleans.
Sneak peak from the first working RS3 version, V1.9: http://www.youtube.com/watch?v=-5URJ0TrL3k
Combat Abilities were broken on that version but have since been fixed speeding up combat considerably.
{$include_once GLX/GLXCore.Simba}
{$include_once GLX/Cache.Simba}
type FloatPoint = record
X, Y: Single;
end;
Function FloatPoint.Create(X, Y: Single): FloatPoint;
Begin
Self.X := X;
Self.Y := Y;
Result := Self;
End;
Function ShortestArcDeg(Angle, Target: Single): Single;
Begin
If (abs(Target - Angle) < 180) Then
Begin
Result := Target - Angle;
Exit;
End;
If (Target > Angle) Then
Begin
Result := Target - Angle - 360;
Exit;
End;
Result := Target - Angle + 360;
End;
Function ShortestArcRad(Angle, Target: Single): Single;
Begin
If (abs(Target - Angle) < PI) Then
Begin
Result := Target - Angle;
Exit;
End;
If (Target > Angle) Then
Begin
Result := Target - Angle - PI * 2;
Exit;
End;
Result := Target - Angle + PI * 2;
End;
Function GL_GetMinimapBounds: TBox;
var
I: Integer;
Background, Corners: glTextureArray;
Begin
If (UseSysCache) Then
Begin
I := SysCache.Contains(CACHE_MINIMAP);
if (I <> -1) Then
Begin
Result := SysCache[I].Area;
Exit;
End;
End;
Background := glGetTextures(3786240);
Corners := glGetTextures(386460);
If (Length(Background) < 1) or (Length(Corners) < 1) Then Exit;
For I := 0 To High(Background) Do
If (PointInBox(Point(Corners[0].X, Corners[0].Y), Background[I].Bounds)) then
Begin
Result := Background[I].Bounds;
If (UseSysCache) Then
SysCache.CacheMinimap(Result);
Exit;
End;
End;
Procedure GL_GetMapCoords(var TL, BL, BR, TR: FloatPoint);
var
T: FloatPoint;
X, Y: Array[0..3] of single;
begin
GLXMapCoords(X, Y);
TL := T.Create(X[0], Y[0]);
BL := T.Create(X[1], Y[1]);
BR := T.Create(X[2], Y[2]);
TR := T.Create(X[3], Y[3]);
end;
Function GL_GetLocalPos: TPoint;
var
Player: TPoint;
TL, BL, BR, TR: FloatPoint;
PPX, PPY, PPZ: Double;
TVX, TVY, BVX, BVY: Double;
Begin
If (Not GL_LoggedIn) Then Exit;
GL_GetMapCoords(TL, BL, BR, TR);
Player := MiddleBox(GL_GetMinimapBounds);
TVX := TR.X - TL.X;
TVY := TR.Y - TL.Y;
BVX := BL.X - TL.X;
BVY := BL.Y - TL.Y;
PPX := Player.X - TL.X;
PPY := Player.Y - TL.Y;
PPZ := (TVX * BVY) - (TVY * BVX);
Result.X := Round(((PPX * BVY) - (PPY * BVX)) * 512.0 / PPZ);
Result.Y := Round(((PPY * TVX) - (PPX * TVY)) * 512.0 / PPZ);
End;
Function GL_MakeCompass(Angle: Single; Tolerance: Integer = 5): Boolean;
var
T: Timer;
Left: Boolean;
AngleDistance: Single;
CurrentAngle: Integer;
Begin
CurrentAngle := GLXCompassDeg;
If ((CurrentAngle < 0) or (Not GL_LoggedIn)) Then
Exit;
Angle := FixD(Angle);
T.Start();
While ((Abs(ShortestArcDeg(CurrentAngle, Angle)) > Tolerance) and (T.TimeElapsed() < 10000)) do
Begin
AngleDistance := CurrentAngle - Angle;
Left := ((AngleDistance > 0) and (abs(AngleDistance) <= 180)) or ((AngleDistance < 0) and (abs(AngleDistance) > 180));
if (Left) Then
KeyDown(VK_LEFT)
Else
KeyDown(VK_RIGHT);
CurrentAngle := GLXCompassDeg;
Result := Abs(ShortestArcDeg(CurrentAngle, Angle)) <= Tolerance;
If (Result) Then
Begin
If (Left) Then
KeyUp(VK_LEFT)
Else
KeyUp(VK_RIGHT);
Break;
End;
Wait(RandomRange(16, 20));
End;
If (Left) Then
KeyUp(VK_LEFT)
Else
KeyUp(VK_RIGHT);
Result := Abs(ShortestArcDeg(CurrentAngle, Angle)) <= Tolerance;
End;
Function GL_MakeCompassHeight(Height: Integer; Tolerance: Integer = 4): Boolean;
var
T: Timer;
Up: Boolean;
CurrentHeight: Integer;
Begin
CurrentHeight := GLXCompassHeightDeg;
If ((CurrentHeight < 0) or (Not GL_LoggedIn)) Then
Exit;
T.Start();
If (Height <= 5) Then Height := RandomRange(5, 7);
While((abs(CurrentHeight - Height) > Tolerance) and (T.TimeElapsed() < 10000)) do
Begin
Up := Height > CurrentHeight;
If (Up) Then
KeyDown(VK_UP)
Else
KeyDown(VK_DOWN);
CurrentHeight := GLXCompassHeightDeg;
Result := abs(CurrentHeight - Height) <= Tolerance;
If (Result) Then
Begin
If (Up) Then
KeyUp(VK_UP)
Else
KeyUp(VK_DOWN);
Break;
End;
Wait(RandomRange(5, 10));
End;
If (Up) Then
KeyUp(VK_UP)
Else
KeyUp(VK_DOWN);
Result := Abs(CurrentHeight - Height) <= Tolerance;
End;
type TPlayer = record
Name: String;
NickName: String;
Pass: String;
Pin: String;
World: TIntegerArray;
end;
Function GL_LoginToLobby(Player: TPlayer): Boolean;
var
I, J: Integer;
T: Timer;
Area: TBox;
Text: glTextArray;
Textures: glTextureArray;
Label
Start;
Begin
Result := (GL_LoggedIn or GL_LobbyScreen);
If (Result) Then Exit;
Start:
T.Start();
Repeat
If (GL_RSReady) Then Break;
If (T.TimeElapsed() > 180000) Then
Begin
WriteLn('It has been 3 minutes and Runescape is not yet ready... Terminating.');
TerminateScript;
End;
Wait(RandomRange(1000, 2000));
Until(False);
T.Reset();
WriteLn('Welcome to Runescape.');
Textures := glGetTextures([76466, 76453]);
If (Length(Textures) < 1) Then Exit;
For I := 0 To 1 Do
Begin
If (I = 0) Then
Area := glTextureBounds(Textures[0], Textures[1])
Else
Area := glTextureBounds(Textures[2], Textures[3]);
Text := glCharsToTexts(glGetChars(Area), 2, 5);
If (Length(Text) > 0) Then
Begin
Mouse(Text[0].Bounds.X2, (Text[0].Bounds.Y1 + Text[0].Bounds.Y2) div 2, 2, 3, MOUSE_LEFT);
While(Length(Text) > 0) Do
Begin
Text := glCharsToTexts(glGetChars(Area), 2, 5);
TypeByte(VK_BACK);
Wait(25 + Random(20));
End;
End;
Wait(Random(300));
If (I = 0) Then
Begin
WriteLn(Capitalize(Player.Name));
TypeSend(Player.Name);
End Else
TypeSend(Player.Pass);
Wait(800 + Random(50));
End;
T.Start();
Repeat
If (T.TimeElapsed() > 60000) Then
Goto Start;
If (GL_LobbyScreen) Then
Break;
Until(False);
Result := True;
End;
{$loadlib GLX}
{$include_once GLX/Internals.Simba}
//OffsetOf - PtrUInt(@(CStruct(nil + 1)^.Y)) - 1;
type
GL_DEBUG_MODE = (GL_MODE_NONE, GL_MODE_TEXTURES, GL_MODE_MODELS, GL_MODE_FONTS, GL_MODE_HUD);
type glTexture = record
ID: Integer;
ColourID: Integer;
X, Y: Integer;
Bounds: TBox;
end;
type glModel = record
ID: Cardinal;
TID: Integer;
X, Y: Integer;
end;
type glChar = record
Colour: Cardinal;
X, Y: Integer;
Letter: Char;
Shadow: Boolean;
Translate: Array[0..2] of Single;
Bounds: TBox;
end;
type glText = record
Text: String;
Bounds: TBox;
end;
type glTextEx = record
Text: Array Of String;
Areas: Array Of TBox;
Colours: Array Of Integer;
end;
type
glCharArray = array of glChar;
glTextArray = array of glText;
glTextExArray = array of glTextEx;
glModelArray = array of glModel;
glTextureArray = array of glTexture;
Procedure Pointer.Inc(Size: Int64);
Begin
Self := Self + Size;
End;
Function glTextureBounds(var A, B: glTexture): TBox;
Begin
Result := IntToBox(A.Bounds.X1, A.Bounds.Y1, B.Bounds.X2, B.Bounds.Y2);
If (Result.X1 > Result.X2) Then
Begin
Result.X1 := B.Bounds.X1;
Result.X2 := A.Bounds.X2;
End;
If (Result.Y1 > Result.Y2) Then
Begin
Result.Y1 := B.Bounds.Y1;
Result.Y2 := B.Bounds.Y2;
End;
End;
Procedure glDebug(Mode: GL_DEBUG_MODE; HudID: Cardinal = 0; X1, Y1, X2, Y2: Integer = 0);
Begin
GLXDebug(Ord(Mode), HudID, X1, Y1, X2, Y2);
End;
Procedure glDebug(Mode: GL_DEBUG_MODE; HudID: Cardinal; Area: TBox); overload;
Begin
GLXDebug(Ord(Mode), HudID, Area.X1, Area.Y1, Area.X2, Area.Y2);
End;
Function glGetTextures: glTextureArray;
var
Size, I: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
Result[I] := glTexture(Ptr^);
Ptr.Inc(sizeof(glTexture));
End;
End;
Function glGetTextures(ID: Integer): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (Integer(Ptr^) = ID) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(IDs: TIntegerArray): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (IDs.Contains(Integer(Ptr^))) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(Area: TBox): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area)) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(ID: Integer; Area: TBox): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if ((Integer(Ptr^) = ID) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(IDs: TIntegerArray; Area: TBox): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (IDs.Contains(Integer(Ptr^)) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(ID, ColourID, Tolerance: Cardinal): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if ((Integer(Ptr^) = ID) and (SimilarColors(Integer((Ptr + sizeof(Integer))^), ColourID, Tolerance))) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(IDs, ColourIDs, Tolerances: TIntegerArray): glTextureArray; overload;
var
Size, I, J, K: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
For J := 0 To High(IDs) Do
If ((IDs[J] = Integer(Ptr^)) and (SimilarColors(Integer((Ptr + sizeof(Integer))^), ColourIDs[J], Tolerances[J]))) then
begin
Result[K] := glTexture(Ptr^);
Inc(K);
Break;
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, K);
End;
Function glGetTextures(ID, ColourID, Tolerance: Cardinal; Area: TBox): glTextureArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if ((Integer(Ptr^) = ID) and (SimilarColors(Integer((Ptr + sizeof(Integer))^), ColourID, Tolerance)) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[J] := glTexture(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, J);
End;
Function glGetTextures(IDs, ColourIDs, Tolerances: TIntegerArray; Area: TBox): glTextureArray; overload;
var
Size, I, J, K: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXTextures(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
For J := 0 To High(IDs) Do
If ((IDs[J] = Integer(Ptr^)) and (SimilarColors(Integer((Ptr + sizeof(Integer))^), ColourIDs[J], Tolerances[J])) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[K] := glTexture(Ptr^);
Inc(K);
Break;
end;
Ptr.Inc(sizeof(glTexture));
End;
SetLength(Result, K);
End;
Function glGetModels: glModelArray;
var
Size, I: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
Result[I] := glModel(Ptr^);
Ptr.Inc(sizeof(glModel));
End;
End;
Function glGetModels(ID: Cardinal): glModelArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (Cardinal(Ptr^) = ID) then
begin
Result[J] := glModel(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glModel));
End;
SetLength(Result, J);
End;
Function glGetModels(IDs: TCardinalArray): glModelArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (IDs.Contains(Cardinal(Ptr^))) then
begin
Result[J] := glModel(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glModel));
End;
SetLength(Result, J);
End;
Function glGetModels(Area: TBox): glModelArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area)) then
begin
Result[J] := glModel(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glModel));
End;
SetLength(Result, J);
End;
Function glGetModels(ID: Cardinal; Area: TBox): glModelArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if ((Cardinal(Ptr^) = ID) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[J] := glModel(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glModel));
End;
SetLength(Result, J);
End;
Function glGetModels(IDs: TCardinalArray; Area: TBox): glModelArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXModels(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (IDs.Contains(Cardinal(Ptr^)) and (PointInBox(Point(Integer((Ptr + sizeof(Integer) * 2)^), Integer((Ptr + sizeof(Integer) * 3)^)), Area))) then
begin
Result[J] := glModel(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glModel));
End;
SetLength(Result, J);
End;
Function glGetChars: glCharArray;
var
Size, I: Cardinal;
Ptr: Pointer;
Begin
Result := [];
Ptr := GLXFonts(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
Result[I] := glChar(Ptr^);
Ptr.Inc(sizeof(glChar));
End;
End;
Function glGetChars(Area: TBox): glCharArray; overload;
var
Size, I, J: Cardinal;
Ptr: Pointer;
Begin
J := 0;
Result := [];
Ptr := GLXFonts(Size);
SetLength(Result, Size);
For I := 0 To Size - 1 Do
Begin
if (PointInBox(Point(Integer((Ptr + sizeof(Integer))^), Integer((Ptr + (sizeof(Integer) * 2))^)), Area)) then
begin
Result[J] := glChar(Ptr^);
Inc(J);
end;
Ptr.Inc(sizeof(glChar));
End;
SetLength(Result, J);
End;
Function glRemoveTextShadows(var Chars: glCharArray): glCharArray;
var
I, J: Integer;
begin
J := 0;
SetLength(Result, length(chars));
For I := 0 To High(chars) do
begin
if ((I <= High(Chars) - 1) and (Chars[I].X - Chars[I + 1].X = 1)) then
Inc(I);
Result[J] := Chars[I];
Inc(J);
end;
SetLength(Result, J);
end;
Function glGetCharSpacing(var glChars: glCharArray): Integer;
var
I, W, S: Integer = 0;
Begin
Result := 0;
glChars := glRemoveTextShadows(glChars);
For I := 0 To High(glChars) do
begin
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
S := round(abs(glChars[I + 1].Translate[0] - (glChars[I].Translate[0] + W)));
if ((I < High(glChars)) and (S >= Result)) then
Result := S;
end;
End;
Function glCharsToText(var glChars: glCharArray; MinHSpacing, MinVSpacing: Integer = 5): TStringArray;
var
I, W: Integer;
Str: String;
begin
glChars := glRemoveTextShadows(glChars);
For I := 0 To High(glChars) do
begin
Str := Str + glChars[I].Letter;
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
if (I < High(glChars)) then
if (abs(round(glChars[I + 1].Translate[0] - (glChars[I].Translate[0] + W))) >= MinHSpacing) then
Str := Str + ' ';
if ((I < High(glChars)) and abs(glChars[I + 1].Y - glChars[I].Y) >= MinVSpacing) then
Str := Str + '\r\n';
end;
ExplodeWrap('\r\n', Trim(Str), Result);
end;
Function glCharsToTexts(var glChars: glCharArray; MinHSpacing, MinVSpacing: Integer = 5): glTextArray;
var
I, J, W, H, K: Integer;
Even: Boolean;
NewLine: Boolean = True;
begin
glChars := glRemoveTextShadows(glChars);
Even := (Length(glChars) mod 2) = 0;
For I := 0 To High(glChars) do
begin
If (NewLine) then
begin
SetLength(Result, J + 1);
Result[J].Bounds.X1 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1);
Result[J].Bounds.Y1 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1);
NewLine := False;
end;
Result[J].Text := Result[J].Text + glChars[I].Letter;
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
H := abs(glChars[I].Bounds.Y2 - glChars[I].Bounds.Y1);
if (I < High(glChars)) then
if (abs(round(glChars[I + 1].Translate[0] - (glChars[I].Translate[0] + W))) >= MinHSpacing) then
Result[J].Text := Result[J].Text + ' ';
if ((I <= High(glChars)) and abs(glChars[I + 1].Y - glChars[I].Y) >= MinVSpacing) then
begin
Result[J].Bounds.X2 := round(glChars[I].Translate[0] + glChars[I].Bounds.X2);
Result[J].Bounds.Y2 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y2);
NewLine := True;
Inc(J);
end;
end;
end;
Function glCharsToTextEx(var glChars: glCharArray; MinHSpacing, MinVSpacing: Integer = 5): glTextExArray;
var
I, J, K, W, H: Integer = 0;
NewIndex, NewLine: Boolean = True;
begin
glChars := glRemoveTextShadows(glChars);
For I := 0 To High(glChars) do
begin
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
H := abs(glChars[I].Bounds.Y2 - glChars[I].Bounds.Y1);
if (NewLine) then
begin
SetLength(Result, J + 1);
SetLength(Result[J].Text, 1);
SetLength(Result[J].Areas, 1);
Result[J].Areas[0].X1 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1);
Result[J].Areas[0].Y1 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1);
NewLine := False;
end;
Result[J].Text[0] := Result[J].Text[0] + glChars[I].Letter;
if ((I < High(glChars)) and round(abs(glChars[I + 1].Translate[0] - (glChars[I].Translate[0] + W))) >= MinHSpacing) then
Result[J].Text[0] := Result[J].Text[0] + ' ';
if ((I <= High(glChars)) and abs(glChars[I + 1].Y - glChars[I].Y) >= MinVSpacing) then
begin
Result[J].Areas[0].X2 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1 + W);
Result[J].Areas[0].Y2 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1 + H);
NewLine := True;
Inc(J);
K := 0;
end;
end;
end;
Function glCharsToTextAdv(var glChars: glCharArray; MinHSpacing, MinVSpacing: Integer = 5): glTextExArray;
var
I, J, K, L, W, H: Integer = 0;
NewIndex, NewLine: Boolean = True;
begin
glChars := glRemoveTextShadows(glChars);
For I := 0 To High(glChars) do
begin
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
H := abs(glChars[I].Bounds.Y2 - glChars[I].Bounds.Y1);
if (NewLine) then
begin
SetLength(Result, J + 1);
SetLength(Result[J].Text, L + 1);
SetLength(Result[J].Areas, K + 1);
SetLength(Result[J].Colours, K + 1);
Result[J].Colours[K] := glChars[I].Colour;
Result[J].Areas[K].X1 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1);
Result[J].Areas[K].Y1 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1);
NewLine := False;
end;
Result[J].Text[L] := Result[J].Text[L] + glChars[I].Letter;
if ((I < High(glChars)) then
if (round(abs(glChars[I + 1].Translate[0] - (glChars[I].Translate[0] + W))) >= MinHSpacing) then
Result[J].Text[L] := Result[J].Text[L] + ' ';
if ((I <= High(glChars)) and abs(glChars[I + 1].Y - glChars[I].Y) >= MinVSpacing) then
begin
Result[J].Areas[K].X2 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1 + W);
Result[J].Areas[K].Y2 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1 + H);
NewLine := True;
Inc(J);
K := 0;
end else
if ((I < High(glChars)) and (glChars[I + 1].Colour <> glChars[I].Colour)) then
begin
Result[J].Areas[K].X2 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1 + W);
Result[J].Areas[K].Y2 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1 + H);
Inc(K);
Inc(I);
Result[J].Text[L] := Result[J].Text[L] + glChars[I].Letter;
W := abs(glChars[I].Bounds.X2 - glChars[I].Bounds.X1);
H := abs(glChars[I].Bounds.Y2 - glChars[I].Bounds.Y1);
SetLength(Result[J].Areas, K + 1);
SetLength(Result[J].Colours, K + 1);
Result[J].Colours[K] := glChars[I].Colour;
Result[J].Areas[K].X1 := round(glChars[I].Translate[0] + glChars[I].Bounds.X1);
Result[J].Areas[K].Y1 := round(glChars[I].Translate[1] + glChars[I].Bounds.Y1);
end;
end;
end;
If ((I < High(Chars)) And (Some <> Something)) then //acts as an or statement.. I = High(chars) fails, lape checks the and statement and executes the next line.. Fail..
writeln('meh');
If ((I < High(Chars)) Then I = HIgh(char) fails and thus the next statement does not run. This is correct.
If (Some <> Something) Then
writeln('meh');
2013-08-10 06:35:09
From: Brandon
Fix to the text functions.. There is a bug in lape where it checks the second part of the and statement even when the first part fails. Thus I had to use an extra if statement..
2013-08-10 12:26:19
From: masterBB
"bug"
{B+} to turn short circuit boolean evalutation on.
2013-08-10 12:33:37

2013-08-10 12:43:09
From: DemiseScythe
@Brandon
GL_MakeCompassHeight(5); makes the angle low but it takes too long after it has moved the camera to finish the function.
I do not understand why the angle is 168 degrees when low and 110 at the highest.
I tried inputing all types of numbers into that function but I couldn't make it go to high angle nor any other angle except low. Basically no matter what I input, it makes the camera the lowest it can and then it waits for 10 seconds. May be my GLXCompassHeightDeg; function is broken?
2013-08-10 12:47:34
From: Brandon
Dunno what you've done but the lowest angle in the game is 8. The highest for me is 65.

2013-08-10 12:52:21
From: DemiseScythe
It only works for 0 and 180, for any other angle it just waits and then spins in one direction indifintely.
2013-08-10 12:55:46
From: Brandon
No. The compass angle is also dependent on camera height. This is the angle of the camera itself. Where the camera looks at. It is euler angles. Pitch, Yaw, Roll. If your camera is at its highest or lowest point the angles are different.
Try it. Put the camera at height then ask for compass angle. Put the camera at mid, get compass angle. Put it at lowest and get the angle. I'll fix that later I guess. I didn't expect anyone to be playing at an angle inbetween since SRL played at highest all the time.
2013-08-10 12:57:58
From: DemiseScythe
Make Angle works now, idk why it was just messing up but I am using 70 for high and 9 for low angle, I only need low angle for objects which are hard to see in high. Give me some time to check the compass again.
2013-08-10 13:12:53
From: Brandon
Yeah I just tested it.. It is working sometimes :S But remember there is a second parameter as a tolerance if you wish to change its behaviour.
GL_MakeCompass(90, 10); I guess.. However, 3 works fine for me :S I gotta fix it at lowest height. I think the math might be messed up.
I also added another function to the plugin:
glXSetColourCapture(False); //Gives max FPS by disabling copying colours to smart. If disabled, you would need to re-enable to use Simba's colour functions. I haven't used Simba's colour stuff yet so I always keep mine disabled for max FPS. I'll wait on the new smart to release anything more.
2013-08-10 14:17:48
From: DemiseScythe
Thank you, I got GL_MakeCompass working perfectly. Turning keyboard camera sensibility to min increases the accuracy but it only works when the camera is at its highest, I'll make sure to make the camera angle the highest before calling it since RS3 automatically lowers the camera over time.
type FloatPoint = record
X, Y: Single;
end;
Function FloatPoint.Create(__X, __Y: Single): FloatPoint; //The __X is needed. Might be a lape bug. Perhaps that's why position was also broken.
Begin
Self.X := __X;
Self.Y := __Y;
Result := Self;
End;
Procedure GL_OldCompass(var DA, RA: Integer);
var
TL, BL, BR, TR: FloatPoint;
Begin
If (Not GL_LoggedIn) Then Exit;
GL_GetMapCoords(TL, BL, BR, TR); //Compass angle is the same as the map angle.
RA := Round(FixRad(ArcTan2(TR.Y - TL.Y, TR.X - TL.X)));
DA := Round(FixD(Degrees(RA)));
End;
Function GL_MakeCompass(Angle: Single; Tolerance: Integer = 5): Boolean;
var
T: Timer;
Left: Boolean;
AngleDistance: Single;
CurrentAngle, RA: Integer;
Begin
GL_OldCompass(CurrentAngle, RA); //Find the angle the map is rotated.
If ((CurrentAngle < 0) or (Not GL_LoggedIn)) Then
Exit;
Angle := FixD(Angle);
T.Start();
While ((Abs(ShortestArcDeg(CurrentAngle, Angle)) > Tolerance) and (T.TimeElapsed() < 10000)) do
Begin
AngleDistance := CurrentAngle - Angle;
Left := ((AngleDistance > 0) and (abs(AngleDistance) <= 180)) or ((AngleDistance < 0) and (abs(AngleDistance) > 180));
if (Left) Then
KeyDown(VK_LEFT)
Else
KeyDown(VK_RIGHT);
GL_OldCompass(CurrentAngle, RA);
Result := Abs(ShortestArcDeg(CurrentAngle, Angle)) <= Tolerance;
If (Result) Then
Begin
If (Left) Then
KeyUp(VK_LEFT)
Else
KeyUp(VK_RIGHT);
Break;
End;
Wait(RandomRange(16, 20));
End;
If (Left) Then
KeyUp(VK_LEFT)
Else
KeyUp(VK_RIGHT);
Result := Abs(ShortestArcDeg(CurrentAngle, Angle)) <= Tolerance;
End;
2013-08-10 15:00:10
From: Brandon
type FloatPoint = record
X, Y: Single;
end;
Function FloatPoint.Create(__X, __Y: Single): FloatPoint; //The __X is needed. Might be a lape bug. Perhaps that's why position was also broken.
Begin
Self.X := __X;
Self.Y := __Y;
Result := Self;
End;
2013-08-11 15:07:54
2013-08-13 17:25:29
2013-08-16 15:34:48
2013-08-16 16:38:53
From: [XoL]
Hmm, I am sure this is a stupid error but
[Error] C:\Simba\DemiseSlayerGLX.simba(2:1): Unable to register function Function GLXMap(var Width, Height: Integer; var X, Y: array[0..3] of Single): Pointer; at line 1
Compiling failed.
–
I replaced my folder with yours, not sure what the cause of that is.
2013-08-16 20:48:53
From: CRU1Z1N
have you selected the lape interpreter im just about to test this out myself
2013-08-16 21:58:15
2013-08-17 00:10:06
2013-08-17 09:25:23
2013-08-17 14:52:56
From: [XoL]
Hmm so I used build 465 built by master (The builds above it, would keep crashing)
I changed the interpreter to Lape but this is the error I am getting now
Failed to initialise the interpreter: Unknown Interpreter 3!
2013-08-17 16:27:45
2013-08-17 17:44:49
From: [XoL]
Hmm no idea, I installed the 472 one and installed your folder correctly but I still get this error (I changed to lape as well)
[Error] C:\Simba\DemiseSlayerGLX.simba(2:1): Unable to register function Function GLXMap(var Width, Height: Integer; var X, Y: array[0..3] of Single): Pointer; at line 2
Compiling failed.
2013-08-18 14:10:16
2013-08-18 14:49:28
From: [XoL]
Will try when I get back home, sorry for delayed response wasn't near a computer.
2013-08-18 22:46:16
2013-08-19 09:01:19
From: [XoL]
I still am getting an error, I may have residual crap but I thought I deleted everything >.<
2013-08-19 14:54:32
2013-08-19 19:58:01
From: [XoL]
Send you a PM, thanks!
Awaiting response
–
So I tried to re-install again, this time I got everything working besides making the interperator stay as Lape (keeps changing back to pascalscript, unless I change it in advanced settings and don't look at it in simple settings)
When I did that it compiles but I get a smart error now lol sorry..
** Smart Cannot Spawn Clients **
Successfully executed.
2013-08-19 23:43:35
2013-08-20 00:26:47
From: [XoL]
Lol I have no idea what is going on…
** Smart Cannot Spawn Clients **
Successfully executed.
I will try to find all traces and remove it tomorrow and do a fresh re-install.
2013-08-20 10:47:48
2013-08-20 11:03:52
2013-08-20 11:48:55

2013-08-20 12:01:08
From: [XoL]
So it starts up and everything but it really isn't doing much after that, any suggestions?
2013-08-20 12:06:25
2013-08-20 21:31:44
From: [XoL]
Lol I have no idea what is going on…
** Smart Cannot Spawn Clients **
Successfully executed.
I will try to find all traces and remove it tomorrow and do a fresh re-install.
2013-08-20 22:13:31
From: Silentcore
Try opening Simba first as Admin and then open the script. This is all i can tell you since it once did the same for me and it did the same.
2013-08-21 19:36:56
2013-08-21 19:48:45
From: [XoL]
Sorry demise, you said something yesterday about recognizing inventory spaces how do I go about doing that again? (Accidentally closed out of our conversation)
2013-08-21 20:31:29
2013-08-21 21:29:22
From: [XoL]
Thanks! lol (dumb suggestion ahead) for the next release you should leave the red boxes, they make the script look "fancier" but not sure about the effects of paint on cpu usage.
2013-08-21 21:51:57
2013-08-22 11:22:05
From: [XoL]
How exactly does one turn it on >.<, it was on when you were helping me fix the script but when I overwrote everything it turned off
2013-08-22 11:49:31
From: DemiseScythe
Right button on SMART
There are only three, the original Disable SMART button, middle should always be ON and right one shows and hides the paint.
2013-08-22 14:17:49
From: [XoL]
Thanks demise!
The script is working great (Fixed the inventory thing turns out it was 29). I get around 100-200k slayer xp/day just because I seem to forget to move my character to the next task :p
2013-08-22 19:05:35
2013-08-22 20:23:46
2013-08-22 23:49:30
2013-08-23 14:33:18
2013-08-23 15:44:33
2013-08-23 15:58:57
2013-08-23 17:24:05
From: [XoL]
What would I have to change to make the script not use the slayer ring to get a new task (Instead just tele home, and stay there)
2013-08-23 18:37:27
2013-08-23 23:34:07
From: [XoL]
Thank you :)
2013-08-24 00:05:29
From: DemiseScythe
Glad you got the script working and running fine. You are the only reason I released it after the RS3 re-amp. It should work long enough to get you 99 Slayer. I am done with this project because one can only take so much and I don't feel like dealing with kids.
2013-08-26 10:59:18
From: DemiseScythe
Glad you got the script working and running fine. You are the only reason I released it after the RS3 re-amp. It should work long enough to get you 99 Slayer. I am done with this project because one can only take so much and I don't feel like dealing with kids.
2013-08-27 22:38:24
From: footballjds
eyyy, don't give up!!! I'll send you a box of cookies
Paired with SMART[5008]
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 32
Kills: 33
Kills: 34
Kills: 35
Kills: 36
Kills: 37
Kills: 38
Kills: 39
Kills: 40
Kills: 41
Kills: 42
Kills: 43
Kills: 44
Kills: 45
Kills: 46
Kills: 47
Kills: 48
Kills: 49
Kills: 50
Kills: 51
Kills: 52
Kills: 53
Kills: 54
Kills: 55
Kills: 56
Kills: 57
Kills: 58
Kills: 59
Kills: 60
Kills: 61
Kills: 62
Kills: 63
Kills: 64
Kills: 65
Kills: 66
Kills: 67
Kills: 68
Kills: 69
Kills: 70
Kills: 71
Kills: 72
Kills: 73
Kills: 74
Kills: 75
Kills: 76
Kills: 77
Kills: 78
Kills: 79
Kills: 80
Kills: 81
Kills: 82
Kills: 83
Kills: 84
Kills: 85
Kills: 86
Kills: 87
Kills: 88
Kills: 89
Kills: 90
Kills: 91
Kills: 92
Kills: 93
Kills: 94
Kills: 95
Kills: 96
Kills: 97
Kills: 98
Kills: 99
Kills: 100
Kills: 101
Kills: 102
Kills: 103
Kills: 104
Kills: 105
Kills: 106
Kills: 107
Kills: 108
Kills: 109
Kills: 110
Kills: 111
Kills: 112
Kills: 113
Kills: 114
Kills: 115
Kills: 116
Kills: 117
Kills: 118
Kills: 119
Kills: 120
Kills: 121
Kills: 122
Kills: 123
Kills: 124
Kills: 125
Kills: 126
Kills: 127
Kills: 128
Kills: 129
Kills: 130
Kills: 131
Kills: 132
Kills: 133
Kills: 134
Kills: 135
Kills: 136
Kills: 137
Kills: 138
Kills: 139
Kills: 140
Kills: 141
Kills: 142
Kills: 143
Kills: 144
Kills: 145
Kills: 146
Kills: 147
Kills: 148
Kills: 149
Kills: 150
Kills: 151
Kills: 152
Kills: 153
Kills: 154
Kills: 155
Kills: 156
Kills: 157
Kills: 158
Kills: 159
Kills: 160
Kills: 161
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 32
Kills: 33
Kills: 34
Kills: 35
Kills: 36
Kills: 37
Kills: 38
Kills: 39
Kills: 40
Kills: 41
Kills: 42
Kills: 43
Kills: 44
Kills: 45
Kills: 46
Kills: 47
Kills: 48
Kills: 49
Kills: 50
Kills: 51
Kills: 52
Kills: 53
Kills: 54
Kills: 55
Kills: 56
Kills: 57
Kills: 58
Kills: 59
Kills: 60
Kills: 61
Kills: 62
Kills: 63
Kills: 64
Kills: 65
Kills: 66
Kills: 67
Kills: 68
Kills: 69
Kills: 70
Kills: 71
Kills: 72
Kills: 73
Kills: 74
Kills: 75
Kills: 76
Kills: 77
Kills: 78
Kills: 79
Kills: 80
Kills: 81
Kills: 82
Kills: 83
Kills: 84
Kills: 85
Kills: 86
Kills: 87
Kills: 88
Kills: 89
Kills: 90
Kills: 91
Kills: 92
Kills: 93
Kills: 94
Kills: 95
Kills: 96
Kills: 97
Kills: 98
Kills: 99
Kills: 100
Kills: 101
Kills: 102
Kills: 103
Kills: 104
Kills: 105
Kills: 106
Kills: 107
Kills: 108
Kills: 109
Kills: 110
Kills: 111
Kills: 112
Kills: 113
Kills: 114
Kills: 115
Kills: 116
Kills: 117
Kills: 118
Kills: 119
Kills: 120
Kills: 121
Kills: 122
Kills: 123
Kills: 124
Kills: 125
Kills: 126
Kills: 127
Kills: 128
Kills: 129
Kills: 130
Kills: 131
Kills: 132
Kills: 133
Kills: 134
Kills: 135
Kills: 136
Kills: 137
Kills: 138
Kills: 139
Kills: 140
Kills: 141
Kills: 142
Kills: 143
Kills: 144
Kills: 145
Kills: 146
Kills: 147
Kills: 148
Kills: 149
Kills: 150
Kills: 151
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 32
Kills: 33
Kills: 34
Kills: 35
Kills: 36
Kills: 37
Kills: 38
Kills: 39
Kills: 40
Kills: 41
Kills: 42
Kills: 43
Kills: 44
Kills: 45
Kills: 46
Kills: 47
Kills: 48
Kills: 49
Kills: 50
Kills: 51
Kills: 52
Kills: 53
Kills: 54
Kills: 55
Kills: 56
Kills: 57
Kills: 58
Kills: 59
Kills: 60
Kills: 61
Kills: 62
Kills: 63
Kills: 64
Kills: 65
Kills: 66
Kills: 67
Kills: 68
Kills: 69
Kills: 70
Kills: 71
Kills: 72
Kills: 73
Kills: 74
Kills: 75
Kills: 76
Kills: 77
Kills: 78
Kills: 79
Kills: 80
Kills: 81
Kills: 82
Kills: 83
Kills: 84
Kills: 85
Kills: 86
Kills: 87
Kills: 88
Kills: 89
Kills: 90
Kills: 91
Kills: 92
Kills: 93
Kills: 94
Kills: 95
Kills: 96
Kills: 97
Kills: 98
Kills: 99
Kills: 100
Kills: 101
Kills: 102
Kills: 103
Kills: 104
Kills: 105
Kills: 106
Kills: 107
Kills: 108
Kills: 109
Kills: 110
Kills: 111
Kills: 112
Kills: 113
Kills: 114
Kills: 115
Kills: 116
Kills: 117
Kills: 118
Kills: 119
Kills: 120
Kills: 121
Kills: 122
Kills: 123
Kills: 124
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 32
Kills: 33
Kills: 34
Kills: 35
Kills: 36
Kills: 37
Kills: 38
Kills: 39
Kills: 40
Kills: 41
Kills: 42
Kills: 43
Kills: 44
Kills: 45
Kills: 46
Kills: 47
Kills: 48
Kills: 49
Kills: 50
Kills: 51
Kills: 52
Kills: 53
Kills: 54
Kills: 55
Kills: 56
Kills: 57
Kills: 58
Kills: 59
Kills: 60
Kills: 61
Kills: 62
Kills: 63
Kills: 64
Kills: 65
Kills: 66
Kills: 67
Kills: 68
Kills: 69
Kills: 70
Kills: 71
Kills: 72
Kills: 73
Kills: 74
Kills: 75
Kills: 76
Kills: 77
Kills: 78
Kills: 79
Kills: 80
Kills: 81
Kills: 82
Kills: 83
Kills: 84
Kills: 85
Kills: 86
Kills: 87
Kills: 88
Kills: 89
Kills: 90
Kills: 91
Kills: 92
Kills: 93
Kills: 94
Kills: 95
Kills: 96
Kills: 97
Kills: 98
Kills: 99
Kills: 100
Kills: 101
Kills: 102
Kills: 103
Kills: 104
Kills: 105
Kills: 106
Kills: 107
Kills: 108
Kills: 109
Kills: 110
Kills: 111
Kills: 112
Kills: 113
Kills: 114
Kills: 115
Kills: 116
Kills: 117
Kills: 118
Kills: 119
Kills: 120
Kills: 121
Kills: 122
Kills: 123
Kills: 124
Kills: 125
Kills: 126
Kills: 127
Kills: 128
Kills: 129
Kills: 130
Kills: 131
Kills: 132
Kills: 133
Kills: 134
Kills: 135
Kills: 136
Kills: 137
Kills: 138
Kills: 139
Kills: 140
Kills: 141
Kills: 142
Kills: 143
Kills: 144
Kills: 1
Kills: 2
Kills: 3
Kills: 4
Kills: 5
Kills: 6
Kills: 7
Kills: 8
Kills: 9
Kills: 10
Kills: 11
Kills: 12
Kills: 13
Kills: 14
Kills: 15
Kills: 16
Kills: 17
Kills: 18
Kills: 19
Kills: 20
Kills: 21
Kills: 22
Kills: 23
Kills: 24
Kills: 25
Kills: 26
Kills: 27
Kills: 28
Kills: 29
Kills: 30
Kills: 31
Kills: 32
Kills: 33
Kills: 34
Kills: 35
Kills: 36
Kills: 37
Kills: 38
Kills: 39
Kills: 40
Kills: 41
Kills: 42
Kills: 43
Kills: 44
Kills: 45
Kills: 46
Kills: 47
Kills: 48
Kills: 49
Kills: 50
Kills: 51
Kills: 52
Kills: 53
Kills: 54
Kills: 55
Kills: 56
Kills: 57
Kills: 58
Kills: 59
Kills: 60
Kills: 61
Kills: 62
Kills: 63
Kills: 64
Kills: 65
Kills: 66
Kills: 67
Kills: 68
Kills: 69
Kills: 70
Successfully executed.2013-08-29 02:35:06
2013-08-29 07:59:34
From: [XoL]
Lol is it possible for you to release this copy of it? our acc setups are near identical
2013-08-29 10:01:05
From: DemiseScythe
It is not just interphase setup, you also need same quest and bank setups, something difficult to replicate.
2013-08-29 13:02:28
From: Sjoe
Did u delete the download file on OP? Wanted to try it out now I got OpenGL working
2013-08-29 13:07:37
From: DemiseScythe
I'll fix link tonight.
2013-08-29 18:58:14
From: Sjoe
thanks!
2013-08-29 19:04:38
From: DemiseScythe
Upped, my private version broke because they changed the banking graphics. Only need to create my own bankscreen function though and it will be all fixed up. My walks will also be messed up, got to test them all.
2013-08-29 20:09:49
From: Sjoe
I'll try it out tomorrow :)
EDIT: Are the include files the uptodate version of Brandon's?
2013-09-01 17:03:33
From: DemiseScythe
Brandon's files but for SMART 8.2 and with fixes applied. The other includes are just Lite versions of my slayer script, I believe they are all at version 2.1. You can try with your include but I only guarantee it to work with the included includes and plugins. I can work just fine on SMART 8.2 so I see no point in updating to 8.3. Brandon's include has been broken several times by updates. GL_MMBounds, GL_LoggedIn, and now GL_BankScreen are broken by updates and Brandon is usually busy to fix them and/or publish the fix.
2013-09-08 11:54:38
2013-09-08 14:02:54
From: DemiseScythe
Does anyone still use this? I am pretty sure the current version might be broken. I shall post V2.3 tomorrow after I finish botting to 99. It will have new features but no walking.
2013-09-10 12:42:38

2013-09-10 13:17:14
From: DemiseScythe
Finally, I've reached my first goal. After a few more 99s, I'll go for 200M Slay xp.
2013-09-10 13:31:08
From: Ashaman88
Very nice congrats! Pretty much all bot?
2013-09-10 13:37:03
2013-09-10 14:23:13
From: Sjoe
grats :)

2013-09-11 09:21:20
2013-09-12 17:19:11
2013-09-12 19:38:55
From: [XoL]
Whats new for 2.3? Looking forward to seeing it :D
2013-09-12 21:27:47
2013-09-16 00:16:33
2013-09-17 10:49:59
From: [XoL]
Sorry for bothering demise but is 2.3 ready to be put up?
2013-09-17 12:36:56