SRL Archive - Research & Development Lounge

Slayer Bot( No Name yet )


HardRockers

2012-01-02 14:57:40

Hey, I am going to start a thread for the Development of a slayer script. We are going to start with the lowest slayer master and hopefully work our way up. We are going to need it to have pretty reliable teleporting support to take away from a lot of walking.

https://github.com/cru1z1n/SRL-Slayer


Master going now:Turael/Spria* in Burthope.

ToDo List:

1.Fighting support for this list of Monster:
Banshee, Bat, Bear, Bird, Cave Bug, Cave Crawler, Cave Slime, Cow, Crawling Hand, Desert Lizard, Dog, Dwarf, Ghost, Gnome, Goblin, Icefiend, Kalphite, Minotaur, Monkey, Scorpion, Skeleton, Spider, Wolf and Zombie.

We want it to obviously fight them, and loot things that are worth looting, have food support.


2.Banking
We want it to be able to go to the bank and restock for the fighting when needed, also after it talks to slayer master to get supplies for certain tasks.

3.Teleporting Support
My idea is that for banking we can have it teleport using Ring of kinship. Then use another form of teleporting(RoD, Glory, etc…) to get as close as possible to the task, then use a method of walking to get to task.

4. Walking
This is probably going to be the hardest part, Walking to and from the masters to the tasks, and to the bank.

5. Slayer Master interaction
Will need to probably use just the get task option, and recognize the string that he will give you that represents the new task and how many.


Monsters List so far:


[BANANA]1. Banshee
Location: Slayer Tower
Tactic:Level 15 Slayer is required to kill this monster.
Wear earmuffs or a Slayer Helmet, or else the banshee's
screams will lower your stats and Prayer. Regular
dragonhide armour works well to defend you from their
attacks. The salve amulet and crumble undead now work on this monster.

2. Bat
Location: Taverley Dungeon
Tactic: Just kill the thing

3.Bear
Location: Near Ardy East Mine
Tactic: Just kill it

4. Bird
Location: Near Nature Altar
Tactic: can only be ranged and Maged, should probably just Block this task :(

5.Cave Bug
Location: Lumbridge caves
Tactic: Kill this fast as it heals quickly, this shouldn't be a problem as it
is a very low creature. Killing Cave bugs are a very good strategy to defence
pures. Since defence pures have 1 Attack and Strength, they can only hit 1-2s,
and that's how much Cave bugs can heal by.

6. Cave Crawler
Location: Lumbridge Caves
Tactic: These are poisonous, so take antipoison if you wish to stay alive.

7. Cave Slime
Location: Lumbridge Caves
Tactic: Bringing a candle lantern is very useful in caves fighting these,
as they never burn out or explode. Also, bring anti-poison. They poison
you from afar and close up, even if it's usually only once, it can be deadly for lower levels.

8. Cow
Location: Beefy Bill, South of fally, Crafting guild or North Of Ardy
Tactic: Kill it

9. Crawling Hand
Location: Slayer Tower
Tactics: Kill it

10. Desert Lizard
Location: Desert, south-eastern Shantay Pass
Tactic:Red-bar, use ice cooler on it.
When fighting, it is recommend to bring waterskins and to wear desert robes. You don't get hit often
if you are a high level. Bring little to no food, as the lizards drop kebabs which heal well if you
need food.


11. Dog
Location: South of Falador
Tactics: Kill it

12.Dwarf
Location: South of Ice mountain, west of Barbarian Village
Tactics: kill it

13. Ghost
Location: Taverley dungeon, or Varrock Sewers
Tactics: kill it

14. Gnome
Location: Tree Gnome Village, Outskirts of Ardougne
Tactics: kill it

15. Goblin
Location: Lumbridge
Tactics: kill it

16. IceFiend
Location: Ice Mountain, Ice Plateau
Tactics: Kill it

17. Kalphite Workers
Location: Kalphite lair (walking will be a pain)
Tactics: Just kill it

18. Minotaur
Location: Stronghold of Security first level
Tactics: Kill it

19. Monkey
Location: Karamja jungle, around the Volcano
Tactics: I think just kill it

20. Scorpion
Location: Dwarven mines or Varrock Sewers
Tactics: kill it

21. Skeleton
Location: Edgeville Dungeon
Tactics: Kill it

22.Spider
Location: Varrock sewers
Tactics: Kill it

23. Wolf
Location: White wolf mountain
Tactics: kill it

24. Zombie
Location: Varrock Sewers or Draynor Sewers
Tactics: Kill it[/BANANA]



If I think of more I will add them, this is no easy task and will take time.

Looking for feedback, suggestions and just good ole comments. :)

[XoL]

2012-01-02 15:02:21

Just a side note: Narcles food eating in his fighting script is pretty phenomenal ask if you can use that. I made mine by learning how his worked.

HardRockers

2012-01-02 15:10:03

OK awesome, :) thank you,

PatDuffy

2012-01-02 15:21:05

Perhaps add a link to the Git repo?

HardRockers

2012-01-02 15:29:35

I am making a list of Locations we should use for each task right now

Olly

2012-01-02 15:31:27

Good luck with this, your biggest problem in my eyes currently will be walking.

mormonman

2012-01-02 15:48:39

Didn't TomTuff start one of these a while back? Why not see what he's got and collaborate.

HardRockers

2012-01-02 16:04:25

He did, it was reflection. I have messaged him.

Hero

2012-01-02 16:05:23

Just as easy to make a function for each monster to use the closest bank?

Also I would say that you might want to skip the desert tasks and any other tasks that require you to walk extensively or are possibly "hard" to get to. The lizards for example are just south of Pollinevach(not even close to the right spelling) and would require water support etc.

Then for the slayer master you can have the bot always ensure that a charged glory is equipped to teleport to edgeville(if using that master) and then have the option to use NPC contact(look at runecrafting scripts to get a feel on how to use NPCContact easily)

HardRockers

2012-01-02 16:10:13

Ya, there are some that will take a lot of walking, and we probably could make a path to each bank from the locations, but i think it would save a lot of walking by teleporting using the RoK to teleport out, then teleporting close using whatever method, then walking from there. Seems like a lot less walking. Idk, it will be trial and error.

Smingo

2012-01-02 16:15:41

Good luck on this, but a slayer script using reflection would be pretty hard, so wouldn`t something like this in color be almost impossible? I know it could be done but it would take a very long time and be pretty difficult

HardRockers

2012-01-02 16:17:06

Thats the point. Is it is difficult. That is why it will be amazing when we get it done. It is possible but will take a long time, and 1000's of lines.

Hero

2012-01-02 16:18:49

I sure do enjoy wearing my RoW though :( Just have tab support.

HardRockers

2012-01-02 16:20:39

We could use tabs yes, I was just cutting down on what all we would have to get out of the bank.

Mark

2012-01-02 17:34:45

how about making a list of monster id's locations colors ect
and making an include with a new type as you can see

program new;
{$I SRL/SRL.scar}

type SMonster =
record
Name:string;
Colors:TIntegerArray;
MLoc:TstringArray;
end;
var
SlayerMonster:array [0..999] of SMonster;

begin
SlayerMonster[0].Name:='Saddam';
SlayerMonster[0].Colors:=[234324,34324,324234,345435];
SlayerMonster[0].MLoc:=['Alkarid'];

PatDuffy

2012-01-02 17:39:57

From: CRU1Z1N
how about making a list of monster id's locations colors ect
and making an include with a new type as you can see


That is a good idea to start doing. We just need raw data currently, then we can arrange it.

[Nathan]

2012-01-02 17:42:39

From: CRU1Z1N
how about making a list of monster id's locations colors ect
and making an include with a new type as you can see

program new;

type SMonster =
record
Name:string;
Colors:TIntegerArray;
MLoc:TstringArray;
end;
var
SlayerMonster:SMonster;

begin
SlayerMonster.Name:='Saddam';
SlayerMonster.Colors:=[234324,34324,324234,345435];
SlayerMonster.MLoc:=['Alkarid'];

SlayerMonster.Name:='Hitler';
SlayerMonster.Colors:=[234324,34324,324234,345435];
SlayerMonster.MLoc:=['tai bai wanai'];

end.


You'll go crazy trying to organize data and write it if you don't do something like this.

PatDuffy

2012-01-02 17:50:46

From: [Nathan]
You'll go crazy trying to organize data and write it if you don't do something like this.


It's how MSI does it, or atleast very, very similar. Arrange them in a data-series, then call them out individually to load depending on the monster needed. All of this information will be needed, organizing it from the beginning is the best bet.

Claymore

2012-01-02 17:55:42

I have already started one, except it uses Vark (the guy in Edgeville) as he gives reasonalbe tasks such as giants.

oligofren

2012-01-02 19:18:37

bird that is number 4 can be any bird: chickens, gulls, ducks, mounted terrorbird, warped terrorbird, etc

also why not do decent master, like Vanaka, as Claymore suggested, slayer xp is really shitty if using the burthrope master

PatDuffy

2012-01-02 19:24:03

From: oligofren
bird that is number 4 can be any bird: chickens, gulls, ducks, mounted terrorbird, warped terrorbird, etc

also why not do decent master, like Vanaka, as Claymore suggested, slayer xp is really shitty if using the burthrope master


Its somewhere to start. I personally am looking into higher leveled monsters just to see what I can do. A metal dragon killer is a very likely thing to make, and I might make one just to see how various detection methods work.

Mark

2012-01-02 19:35:29

From: PatDuffy
Its somewhere to start. I personally am looking into higher leveled monsters just to see what I can do. A metal dragon killer is a very likely thing to make, and I might make one just to see how various detection methods work.


exactly what im doing.
Ive got Gargoyles atm and DTM finding is working best to find them

never writen a fighting procedure before we'll see how it go's
here what i have so far
im using this just to learn the different detection methods we could use
i like the FindOjbThroughMM will look more into the code of it
procedure AttackMonster;
var DTM:integer;
begin
repeat
// if FindObjThroughMM(x,y,'npc',[b],[8],[a],1,1)then
//if FindObjThroughMM(x,y,'npc',[3225913,3225913 ],[15,15],['goyle','yle'],2,2)then
DTM := DTMFromString('mQwAAAHicY2ZgYDjIyMCwC4g3A3EvkN8KxBOAuLgwG4yzU5MZYIAfiBmRMBAAAFLVB7o=');
if FindDTM(DTM,x,y,MSX1,MSY1,MSX2,MSY2)then
begin
MMouse(x,y,2,3);
if IsUpText(SlayerMonster[0].Name)then
begin
mouse(x,y,2,2,true);
end;
end;
wait(100+randomRange(250,500));
freedtm(DTM);
until(srl_InFight)
end;

Brandon

2012-01-02 19:46:09

Uhh One problem I don't think has been mentioned yet.. How would you detect if someone else is fighting the monster your trying to attack? I have a couple ideas on this.. and I'd like to see what you guys say.

I was thinking you guys might actually use GetMMDotsOnMS to detect Players and NPC's.. then do IsFightAt(Point).. to see if someone is fighting that monster.. if they are, you iterate through all detected monsters to fight..

HardRockers

2012-01-02 21:45:22

From: ggzz
Uhh One problem I don't think has been mentioned yet.. How would you detect if someone else is fighting the monster your trying to attack? I have a couple ideas on this.. and I'd like to see what you guys say.

I was thinking you guys might actually use GetMMDotsOnMS to detect Players and NPC's.. then do IsFightAt(Point).. to see if someone is fighting that monster.. if they are, you iterate through all detected monsters to fight..


[PHP]Originally Posted by CRU1Z1N View Post
how about making a list of monster id's locations colors ect
and making an include with a new type as you can see

Simba Code:

program new;

type SMonster =
record
Name:string;
Colors:TIntegerArray;
MLoc:TstringArray;
end;
var
SlayerMonster:SMonster;

begin
SlayerMonster.Name:='Saddam';
SlayerMonster.Colors:=[234324,34324,324234,345435];
SlayerMonster.MLoc:=['Alkarid'];

SlayerMonster.Name:='Hitler';
SlayerMonster.Colors:=[234324,34324,324234,345435];
SlayerMonster.MLoc:=['tai bai wanai'];

end.

[/PHP]

People that write fighting scripts can figure that out, I am a banking and Path guy. Which is why I asked for help basically.

I can start on the include if someone has already done it.

nickrules

2012-01-02 21:52:44

From: ggzz
Uhh One problem I don't think has been mentioned yet.. How would you detect if someone else is fighting the monster your trying to attack? I have a couple ideas on this.. and I'd like to see what you guys say.

I was thinking you guys might actually use GetMMDotsOnMS to detect Players and NPC's.. then do IsFightAt(Point).. to see if someone is fighting that monster.. if they are, you iterate through all detected monsters to fight..


Too slow. You'd maybe need a distance above the npc to search for a combat bar…

Also, I have an excellent TPA-based object finder. I'd need Hue and Saturation modifiers though. And yes, i could easily make it use CTS 1 or whatever, but that's too easy ;)

okokokok

2012-01-03 02:59:49

Well goodluck mate! This is a hard script and will take a lot of time, but if you can stick to it, you will finish it :D
I'll try it out as soon as it is released and i'll post some proggys for you then! :)

Kristiaan

2012-01-03 07:41:08

goodluck on your project, if u need testers…. ;)

I Am Legend

2012-01-03 09:07:17

can i help with this project ?

Justin

2012-01-03 09:10:05

Very interesting, Hope this all works out

laakerules

2012-01-03 09:26:56

Justa thought, wouldnt the releka slayer dungeon be better for cave crawlers and all those in there? seems like lumbridge cave is hard to find the monsters and such with the lighting a crazed coloring in there?

HardRockers

2012-01-03 09:58:06

Ya, It may be, I was thinking of the walking to the locations. The closest we can get to Releka without a lot of quest requirements is A camelot telle, and that is a long walk. Like i said, we will have to start with the fighting support at the NPC's, and then create the paths too them.

laakerules

2012-01-03 10:38:29

Ya i was just thinking with the releka, because i use that one alot. And all you need is say a function for the path to releka then once entered inside of the releka cave creat multi paths depending on the task array say cave crawlers basalisk and all the others in there.

HardRockers

2012-01-03 11:31:26

Ya, thats what I am going to do with all of them. It just that that one path to Releka is extremely long. It is possible, and it will take trial and error.

Silent

2012-01-03 15:10:19

I'm very interested in this project. I've forked the git repo, and I'm working on building a Monster array template.

PatDuffy

2012-01-03 15:19:56

Finally got my computer and account here sorted out, sorry to anyone who PM'ed me as I was not able to receive them and they were lost in space.

I forked the Git repo and I'm doing several experimentations, as well as cataloging various drops that might want to be picked up for future reference and easier sorting.

Silent

2012-01-03 16:04:18

From: PatDuffy
Finally got my computer and account here sorted out, sorry to anyone who PM'ed me as I was not able to receive them and they were lost in space.

I forked the Git repo and I'm doing several experimentations, as well as cataloging various drops that might want to be picked up for future reference and easier sorting.


I sent a pull request to the main repo.
Here is what I have so far for the monster array. Could change based on what PatDuffy is doing.

program MonsterList;
{$I SRL/SRL.simba}

type SMonster =
record
Name:string;
MLoc:TstringArray;
MPathAreas:TIntegerArray;
MPath:TIntegerArray;
MTele:string;
Colors:TIntegerArray;
MItems:TStringArray;
MDrops:TStringArray;

end;
var
SlayerMonster:array [0..999] of SMonster;

begin
SlayerMonster[0].Name:='Banshee';
SlayerMonster[0].MLoc:=['STower'];
SlayerMonster[0].MPathAreas:=['12_7','12_6','13_6']; //SPS areas and walk points
SlayerMonster[0].MPath:=[Point(4850, 2966), Point(4875, 2936),//Not complete
Point(4914, 2937), Point(4970, 2925),
Point(4981, 2869), Point(5004, 2816),
Point(5048, 2800), Point(5094, 2782),
Point(5148, 2764), Point(5194, 2736),
Point(5241, 2718), Point(5297, 2712),
Point(5353, 2710), Point(5397, 2704),
Point(5449, 2694), Point(5455, 2635)];
SlayerMonster[0].MTele:='varrock';
SlayerMonster[0].Colors:=[234324,34324,324234,345435];//not real, need updated
SlayerMonster[0].MItems:=['earmuffs','SHelmet']; //required items are earmuffs or slayer helmet
SlayerMonster[0].MDrops:=['Gold', 'Dragon spear', 'Iron dagger', //Taken directly from tip.it database
'Iron mace', 'Rune javelin', 'Rune spear',//Some corrections are probably needed
'Iron kiteshield', 'Mystic gloves Black',
'Steel full helm', 'Air rune', 'Chaos rune',
'Cosmic rune', 'Fire rune', 'Champion'+#39+'s scroll Banshee',
'Clue scroll', 'Eye of newt', 'Fishing bait',
'Grimy herb', 'Iron ore', 'Loop half of a key',
'Nature talisman', 'Pure essence', 'Runite ore',
'Shield left half', 'Starved ancient effigy',
'Tooth half of a key', 'Uncut dragonstone',
'Uncut diamond', 'Uncut emerald', 'Uncut ruby',
'Uncut sapphire', 'Blue charm', 'Crimson charm',
'Gold charm', 'Green charm'];
end.

mika

2012-01-03 16:52:24

You can teleport to polivienich (desert) with a polivinich teletab which is extremely close to the slayer master there however you need to finish love story to make the teletabs and finish smoking kills to use that slayer master.

PatDuffy

2012-01-03 16:58:38

Silent, for the drops, why not only have drops to be picked up?

Jamestt

2012-01-03 17:02:19

I Support this, but Since Runescape has its reflection broken same as summoning and others. The Script may be longer? And I think release time is about 3 months or more? Thanks, and goodluck

Silent

2012-01-03 20:10:53

From: PatDuffy
Silent, for the drops, why not only have drops to be picked up?


That's fine, but I just built in each item so that we could have a record for it. If the item isn't recognized when someones says to pick it up in the setup, how will we pick it up? Although I suppose you could just pass part of the item name as uptext too…

Mark

2012-01-03 20:28:14

I've created a few more entry's in the MonsterList from Silent Spy all filled correctly but think it's a waste of time atm filling alot of paths as SPS is not that reliable tho will be when this is released.
Also im working on something to pick up the drops while im doing slayer legit.
I'll let you guys know how i get on

PatDuffy

2012-01-03 20:33:17

From: CRU1Z1N
I've created a few more entry's in the MonsterList from Silent Spy all filled correctly but think it's a waste of time atm filling alot of paths as SPS is not that reliable tho will be when this is released.
Also im working on something to pick up the drops while im doing slayer legit.
I'll let you guys know how i get on


I thought of a system that I am going to call the "Bus".
For paths the Bus would walk a path through an area and as it enters an area it can "get off" at each monster's specific area, or it can continue on to the next "Stop" or until it reaches the desired monster.

I still think the best bet is to ignore Walking completely until SPS 2.0, and concentrate on making a script that can fight a single monster, loot, eat, and shut down when task is done or runs out of food.

Silent

2012-01-03 20:55:45

From: PatDuffy
I thought of a system that I am going to call the "Bus".
For paths the Bus would walk a path through an area and as it enters an area it can "get off" at each monster's specific area, or it can continue on to the next "Stop" or until it reaches the desired monster.

I still think the best bet is to ignore Walking completely until SPS 2.0, and concentrate on making a script that can fight a single monster, loot, eat, and shut down when task is done or runs out of food.


Or use OjbDTM walking.

Euphemism recently made some changes and additions that make it super sexy to use, and it takes much, MUCH less time to create them now. Plus they would work in all dungeons (maybe), etc.

Mark

2012-01-03 21:04:23

Im not sure until SPS 2.0 comes out we will not know which is more efficient Great idea tho either one could be used as a failsafe

Silent

2012-01-04 03:44:05

From: CRU1Z1N
Im not sure until SPS 2.0 comes out we will not know which is more efficient Great idea tho either one could be used as a failsafe


Didn't SPS get bumped back even further? ObjDTM now has a path recorder function which works really, really well. As it walks the path as you make it, so you know it works.

Mark

2012-01-04 10:57:18

From: Silent SPY
Didn't SPS get bumped back even further? ObjDTM now has a path recorder function which works really, really well. As it walks the path as you make it, so you know it works.


Yeah I looked into this quickly last night an yea I think this will work quite well.
Will try and make and test some paths while im doing it legit.

iCURiP

2012-01-04 11:44:38

From: Kristiaan
goodluck on your project, if u need testers…. ;)


Its open source on github, its there for anyone to use, although not even functional yet

Best of luck on this, I might put something together to help out when I'm not too busy with my own projects.

[Nathan]

2012-01-04 16:13:33

You should just use lunar magicks spell NPC contact to handle dealing with getting a new task, it would be much easier…

Silent

2012-01-05 17:31:22

From: [Nathan]
You should just use lunar magicks spell NPC contact to handle dealing with getting a new task, it would be much easier…


Yeah, but that requires quests…. Something most people (myself included) haven't done.

Mark

2012-01-05 17:33:21

good idea but i myself have not got access to that

Kajutsky

2012-01-05 17:34:22

hopefully this can get me a slayer helm :)