SRL Archive - Research & Development Lounge

EpicSlayer - Recruiting Scripters!


TomTuff

2011-07-11 06:27:17

EpicSlayer is a new include/script/thing that I've been working on. The eventual goal is to be able to take on any task from any slayer master with any account, run for a lengthy amount of time, and best of all it will be available to the public here at SRL. The thing is, it's a very large project. I need help! So, that's what this thread is about. If you want to help out, either drop a line if you think you need commit access or submit pull requests!

Here's the git repo:
https://github.com/TomTuff/EpicSlayer

Commit access probably won't be handed out freely - only awkwardsaw and I have commit access for now. Those who contribute a lot will probably be given commit access, given they're good contributions.

Help will be very much appreciated! Big scripts like this will be what attract users to SRL.


ToDo List:
  • Color info on Masters
    1. Goes in Masters.Simba (Needs Color, Tolerance, ATPADist, MinLength, HueMod, and SatMod - use ACA). Duradel is done.
    2. For the masters that get replaced (Mazchna, Duradel, guy in Burthorpe), two different Masters with everything the same except colors may be needed
  • Drops on monsters.
    1. Add the IDs to Constants.Simba like "const DROPID_SOME_ITEM = 888;"
    2. Add to monsters.Simba in the "Drops" array using the constants
    3. Sort constants by number
  • Fighting base
    1. Needs multi-tile NPC support - I have some ideas for this.
    2. Smarter Child and awkwardsaw say they'll do work on this
  • Banking
    1. Needs to change equipment (specifically for special gear, such as antifire shields for dragon tasks
    2. BraK said he may work on this?
  • Slayer master Rewards screen interaction
    1. Needs things like cancel task, buy things (optional?)
    2. I can do this
  • Paths and teleportation
    1. This will be the most complex part of the script! The script needs to know how to get around given what the player has (quests, current spell book, current location
    2. Object handling will also be needed - doors, ladders, pipes, holes, etc.
    3. World walker!?

I know we can do this!

Flight

2011-07-11 06:47:54

Looks like a beast man, you'll definitely have your work cut out for ya. ;) I don't think I'll be able to help much with this, I have a few more scripts lined out I need to work on but even then I don't have much knowledge in the NPC area of Reflection.

Cheers!

BraK

2011-07-11 06:57:07

I can help out here and there after my current 2 projects. It'll probably be best to have the First bank slot Pre-setup with certain Items (ie Slayer Items, various teleports and Food.)

~BraK

E: I love all the Group scripts that are kicking off. Synergy is one of SRLs greatest advantages over Java Bots.

E2: 900 post 100 to go :)

Awkwardsaw

2011-07-11 10:46:37

I'll work more on the fighting when i get back home :)

TomTuff

2011-07-11 16:07:02

minor success! We can get tasks from a master now, and it can also tell you if you're already on a task.

Smarter Child

2011-07-11 19:32:57

I can help with anything you need me to, not to mention fighting, as I already made an AIO fighter. :)

grats

2011-07-11 19:52:20

From: TomTuff
minor success! We can get tasks from a master now, and it can also tell you if you're already on a task.


very cool stuff, when you need beta, even alpha testing I can help out.. I'm not much of a coding guy

TomTuff

2011-07-12 01:01:06

From: Smarter Child
I can help with anything you need me to, not to mention fighting, as I already made an AIO fighter. :)


Go ahead and do whatever you'd like with the fighting! Awkwardsaw mentioned he was going to work on it, you and him could collaborate. Fighting scripts happen to be a weak spot so it works out.

E: added ToDo list! Main goals added.

Coh3n

2011-07-12 01:41:55

Couple suggestions: Why use color for finding the masters? You're using Reflection for everything else, may as well use it for everything. It's not like the entire thing can be run with just color. For paths and teleportation, you really really really should talk to Drags about a world walker (I think he was working on one). The time it'll take to gather all the paths, figure out teleports, etc. will probably take longer then writing a world walker.

Just quickly looked at your records, and I suggest having a field in the TMonster type that stores the slayer equipment required to kill.

But honestly, a world walker would give you guys legendary status at SRL, plus would make making this script 10000x easier.

Everything else is looking good so far. :) Keep it up.

TomTuff

2011-07-12 01:54:00

From: Coh3n
Couple suggestions: Why use color for finding the masters? You're using Reflection for everything else, may as well use it for everything. It's not like the entire thing can be run with just color. For paths and teleportation, you really really really should talk to Drags about a world walker (I think he was working on one). The time it'll take to gather all the paths, figure out teleports, etc. will probably take longer then writing a world walker.

Just quickly looked at your records, and I suggest having a field in the TMonster type that stores the slayer equipment required to kill.

But honestly, a world walker would give you guys legendary status at SRL, plus would make making this script 10000x easier.

Everything else is looking good so far. :) Keep it up.


Well, it's a really, really, REALLY odd error I ran into. The slayer master I use, Kuradel (Spelling?), is replaced by another NPC during While Guthix Sleeps. When you Writeln(Kuradel.Name), it comes up as "null" and can not be found by his ID either (which is 8483, iirc). I don't know if it's the same for other masters, but honestly it's not so much of a chore to get color info on all of them.

As for the special equipment, there already is. TMonster.Item refers to one of the SlayerGear[X]s. So if TMonster.Item = GEAR_ICE_COOLER, then we need to get some of SlayerGear[GEAR_ICE_COOLER] when banking.

I've been thinking about the paths issue, and yes this will definitley be an issue. We need two things: a world walker and someone really smart to implement logic into figuring out what teleports and such to use.

Thanks for the input!

grats

2011-07-12 02:00:28

From: Coh3n
Couple suggestions: Why use color for finding the masters? You're using Reflection for everything else, may as well use it for everything. It's not like the entire thing can be run with just color. For paths and teleportation, you really really really should talk to Drags about a world walker (I think he was working on one). The time it'll take to gather all the paths, figure out teleports, etc. will probably take longer then writing a world walker.

Just quickly looked at your records, and I suggest having a field in the TMonster type that stores the slayer equipment required to kill.

But honestly, a world walker would give you guys legendary status at SRL, plus would make making this script 10000x easier.

Everything else is looking good so far. :) Keep it up.


well they could use the web walker for it.. I mean obstacles are easy.. they can even walk to a certain point.. handle obstacle.. walk to another point etc

I threw together that entire world map webwalk in a few minutes that's used in:
http://villavu.com/forum/showthread.php?t=64029

I can do one for this too if it was to be used on the surface (not in dungeons etc)

Coh3n

2011-07-12 02:04:44

From: TomTuff
Well, it's a really, really, REALLY odd error I ran into. The slayer master I use, Kuradel (Spelling?), is replaced by another NPC during While Guthix Sleeps. When you Writeln(Kuradel.Name), it comes up as "null" and can not be found by his ID either (which is 8483, iirc). I don't know if it's the same for other masters, but honestly it's not so much of a chore to get color info on all of them.
Lol wth? So the NPC changes? So wouldn't that just mean there would be a new ID? Or that's what you're saying is returning null? Should be able to do like MASTER_KURADLE_OLD, MASTER_KURADLE_NEW.

From: TomTuff

As for the special equipment, there already is. TMonster.Item refers to one of the SlayerGear[X]s. So if TMonster.Item = GEAR_ICE_COOLER, then we need to get some of SlayerGear[GEAR_ICE_COOLER] when banking.
Oh yeah I see, I was just looking for the type. :p

From: TomTuff

I've been thinking about the paths issue, and yes this will definitley be an issue. We need two things: a world walker and someone really smart to implement logic into figuring out what teleports and such to use.

Well you could use a type for that also.

type
TLocation = record
fastest, noFail: TTeleport;
tile: TPoint;
end;
Wouldn't be exactly that I'm sure, but I'm sure you get the point. Could also add a pointer to TMonster:

TMonster = record
travel: function: boolean; // calls something like findShortestRoute that would include to a bank, withdrawing a teleport, etc.
This shit could get complicated. :p But a world walker that had methods like getClosestBank would be useful.

From: TomTuff

Thanks for the input!

You haven't seen the last of me. ;)

TomTuff

2011-07-12 02:15:35

From: grats
well they could use the web walker for it.. I mean obstacles are easy.. they can even walk to a certain point.. handle obstacle.. walk to another point etc

I threw together that entire world map webwalk in a few minutes that's used in:
http://villavu.com/forum/showthread.php?t=64029

I can do one for this too if it was to be used on the surface (not in dungeons etc)


Why wouldn't it work in dungeons? Tbh this script will be doing a lot of dungeon crawling!

From: Coh3n
Lol wth? So the NPC changes? So wouldn't that just mean there would be a new ID? Or that's what you're saying is returning null? Should be able to do like MASTER_KURADLE_OLD, MASTER_KURADLE_NEW.


Yeah reflection just wouldn't find it no matter what I tried. That's why color is here for us though, eh? ;)

From: Coh3n
Oh yeah I see, I was just looking for the type. :p

TSlayerGear :)


From: Coh3n
Well you could use a type for that also.

type
TLocation = record
fastest, noFail: TTeleport;
tile: TPoint;
end;
Wouldn't be exactly that I'm sure, but I'm sure you get the point. Could also add a pointer to TMonster:

TMonster = record
travel: function: boolean; // calls something like findShortestRoute that would include to a bank, withdrawing a teleport, etc.
This shit could get complicated. :p But a world walker that had methods like getClosestBank would be useful.

Complicated it will be! I was thinking of something like that. FindClosestBank will be essential, I think. End result, I think we need a node system world walker that can use certain objects as portals between node sets (ladders to dungeons, for example).


From: Coh3n
You haven't seen the last of me. ;)


Glad to hear it!

grats

2011-07-12 02:20:18

oh well we don't have a map thing for dungeons so I can't do the webwalking in there lol

but if you wanted me to do web walking across the whole map of runescape you can get the map and put the number of the type of monster that is there? and I can map it out fully?

or link me somewhere that shows where all the monsters are


oh I got this thing
I can just google where the monsters are

MONSTER_BANSHEE = 0;
MONSTER_BAT = 1;
MONSTER_BIRD = 2;
MONSTER_BEAR = 3;
MONSTER_CAVE_BUG = 4;
MONSTER_CAVE_SLIME = 5;
MONSTER_COW = 6;
MONSTER_CRAWLING_HAND = 7;
MONSTER_DESERT_LIZARD = 8;
MONSTER_DOG = 9;
MONSTER_DWARF = 10;
MONSTER_GHOST = 11;
MONSTER_GOBLIN = 12;
MONSTER_ICEFIEND = 13;
MONSTER_MINOTAUR = 14;
MONSTER_MONKEY = 15;
MONSTER_SCORPION = 16;
MONSTER_SKELETON = 17;
MONSTER_SPIDER = 18;
MONSTER_WOLF = 19;
MONSTER_ZOMBIE = 20;
MONSTER_CATABLEPON = 21;
MONSTER_COCKATRICE = 22;
MONSTER_CYCLOPS = 23;
MONSTER_FLESH_CRAWLER = 24;
MONSTER_GHOUL = 25;
MONSTER_HILL_GIANT = 26;
MONSTER_HOBGOBLIN = 27;
MONSTER_ICE_WARRIOR = 28;
MONSTER_KALPHITE = 29;
MONSTER_MOGRE = 30;
MONSTER_PYREFIEND = 31;
MONSTER_ROCK_SLUG = 32;
MONSTER_VAMPIRE = 33;
MONSTER_WALL_BEAST = 34;
MONSTER_ABERRANT_SPECTRE = 35;
MONSTER_ANKOU = 36;
MONSTER_BASILISK = 37;
MONSTER_BLOODVELD = 38;
MONSTER_BRINE_RAT = 39;
MONSTER_CROCODILE = 40;
MONSTER_DUST_DEVIL = 41;
MONSTER_EARTH_WARRIOR = 42;
MONSTER_GREEN_DRAGON = 43;
MONSTER_HARPIE_BUG_SWARM = 44;
MONSTER_ICE_GIANT = 45;
MONSTER_INFERNAL_MAGE = 46;
MONSTER_JELLY = 47;
MONSTER_JUNGLE_HORROR = 48;
MONSTER_KILLERWATT = 49;
MONSTER_LESSER_DEMON = 50;
MONSTER_MOLANISK = 51;
MONSTER_MOSS_GIANT = 52;
MONSTER_OGRE = 53;
MONSTER_OTHERWORLDLY_BEING = 54;
MONSTER_SEA_SNAKE = 55;
MONSTER_SHADE = 56;
MONSTER_SHADE_WARRIOR = 57;
MONSTER_TUROTH = 58;
MONSTER_WEREWOLF = 59;
MONSTER_BLUE_DRAGON = 60;
MONSTER_BRONZE_DRAGON = 61;
MONSTER_CAVE_CRAWLER = 62;
MONSTER_DAGANNOTH = 63;
MONSTER_ELF = 64;
MONSTER_FEVER_SPIDER = 65;
MONSTER_FIRE_GIANT = 66;
MONSTER_GARGOYLE = 67;
MONSTER_JUNGLE_STRYKEWYRM = 68;
MONSTER_KURASK = 69;
MONSTER_MUTATED_ZYGOMITE = 70;
MONSTER_SHADOW_WARRIOR = 71;
MONSTER_TROLL = 72;
MONSTER_WARPED_TORTOISE = 73;
MONSTER_ABYSSAL_DEMON = 74;
MONSTER_AQUANITE = 75;
MONSTER_BLACK_DEMON = 75;
MONSTER_DESERT_STRYKEWYRM = 76;
MONSTER_GREATER_DEMON = 77;
MONSTER_HELLHOUND = 78;
MONSTER_IRON_DRAGON = 79;
MONSTER_NECHRYAELS = 80;
MONSTER_RED_DRAGON = 81;
MONSTER_SCABARITE_MINION = 82;
MONSTER_SPIRITUAL_MAGE = 83;
MONSTER_SPIRITUAL_WARRIOR = 84;
MONSTER_TERROR_DOG = 85;
MONSTER_BLACK_DRAGON = 86;
MONSTER_DARK_BEAST = 87;
MONSTER_GORAK = 88;
MONSTER_ICE_STRYKEWYRM = 89;
MONSTER_MITHRIL_DRAGON = 90;
MONSTER_SCABARITE = 91;
MONSTER_SKELETAL_WYVERN = 92;
MONSTER_STEEL_DRAGON = 93;
MONSTER_SUQAH = 94;
MONSTER_WATERFIEND = 95;
MONSTER_TZHAAR = 96;
MONSTER_WARPED_TERRORBIRD = 97;
MONSTER_CAVE_HORROR = 98;
MONSTER_LIVING_ROCKS = 99;

I'll set up where to walk to get all of them, do you want me to do a web walk for it or will you be using something else?

TomTuff

2011-07-12 02:27:20

From: grats
oh well we don't have a map thing for dungeons so I can't do the webwalking in there lol

but if you wanted me to do web walking across the whole map of runescape you can get the map and put the number of the type of monster that is there? and I can map it out fully?

or link me somewhere that shows where all the monsters are


oh I got this thing
I can just google where the monsters are

MONSTER_BANSHEE = 0;
MONSTER_BAT = 1;
MONSTER_BIRD = 2;
MONSTER_BEAR = 3;
MONSTER_CAVE_BUG = 4;
MONSTER_CAVE_SLIME = 5;
MONSTER_COW = 6;
MONSTER_CRAWLING_HAND = 7;
MONSTER_DESERT_LIZARD = 8;
MONSTER_DOG = 9;
MONSTER_DWARF = 10;
MONSTER_GHOST = 11;
MONSTER_GOBLIN = 12;
MONSTER_ICEFIEND = 13;
MONSTER_MINOTAUR = 14;
MONSTER_MONKEY = 15;
MONSTER_SCORPION = 16;
MONSTER_SKELETON = 17;
MONSTER_SPIDER = 18;
MONSTER_WOLF = 19;
MONSTER_ZOMBIE = 20;
MONSTER_CATABLEPON = 21;
MONSTER_COCKATRICE = 22;
MONSTER_CYCLOPS = 23;
MONSTER_FLESH_CRAWLER = 24;
MONSTER_GHOUL = 25;
MONSTER_HILL_GIANT = 26;
MONSTER_HOBGOBLIN = 27;
MONSTER_ICE_WARRIOR = 28;
MONSTER_KALPHITE = 29;
MONSTER_MOGRE = 30;
MONSTER_PYREFIEND = 31;
MONSTER_ROCK_SLUG = 32;
MONSTER_VAMPIRE = 33;
MONSTER_WALL_BEAST = 34;
MONSTER_ABERRANT_SPECTRE = 35;
MONSTER_ANKOU = 36;
MONSTER_BASILISK = 37;
MONSTER_BLOODVELD = 38;
MONSTER_BRINE_RAT = 39;
MONSTER_CROCODILE = 40;
MONSTER_DUST_DEVIL = 41;
MONSTER_EARTH_WARRIOR = 42;
MONSTER_GREEN_DRAGON = 43;
MONSTER_HARPIE_BUG_SWARM = 44;
MONSTER_ICE_GIANT = 45;
MONSTER_INFERNAL_MAGE = 46;
MONSTER_JELLY = 47;
MONSTER_JUNGLE_HORROR = 48;
MONSTER_KILLERWATT = 49;
MONSTER_LESSER_DEMON = 50;
MONSTER_MOLANISK = 51;
MONSTER_MOSS_GIANT = 52;
MONSTER_OGRE = 53;
MONSTER_OTHERWORLDLY_BEING = 54;
MONSTER_SEA_SNAKE = 55;
MONSTER_SHADE = 56;
MONSTER_SHADE_WARRIOR = 57;
MONSTER_TUROTH = 58;
MONSTER_WEREWOLF = 59;
MONSTER_BLUE_DRAGON = 60;
MONSTER_BRONZE_DRAGON = 61;
MONSTER_CAVE_CRAWLER = 62;
MONSTER_DAGANNOTH = 63;
MONSTER_ELF = 64;
MONSTER_FEVER_SPIDER = 65;
MONSTER_FIRE_GIANT = 66;
MONSTER_GARGOYLE = 67;
MONSTER_JUNGLE_STRYKEWYRM = 68;
MONSTER_KURASK = 69;
MONSTER_MUTATED_ZYGOMITE = 70;
MONSTER_SHADOW_WARRIOR = 71;
MONSTER_TROLL = 72;
MONSTER_WARPED_TORTOISE = 73;
MONSTER_ABYSSAL_DEMON = 74;
MONSTER_AQUANITE = 75;
MONSTER_BLACK_DEMON = 75;
MONSTER_DESERT_STRYKEWYRM = 76;
MONSTER_GREATER_DEMON = 77;
MONSTER_HELLHOUND = 78;
MONSTER_IRON_DRAGON = 79;
MONSTER_NECHRYAELS = 80;
MONSTER_RED_DRAGON = 81;
MONSTER_SCABARITE_MINION = 82;
MONSTER_SPIRITUAL_MAGE = 83;
MONSTER_SPIRITUAL_WARRIOR = 84;
MONSTER_TERROR_DOG = 85;
MONSTER_BLACK_DRAGON = 86;
MONSTER_DARK_BEAST = 87;
MONSTER_GORAK = 88;
MONSTER_ICE_STRYKEWYRM = 89;
MONSTER_MITHRIL_DRAGON = 90;
MONSTER_SCABARITE = 91;
MONSTER_SKELETAL_WYVERN = 92;
MONSTER_STEEL_DRAGON = 93;
MONSTER_SUQAH = 94;
MONSTER_WATERFIEND = 95;
MONSTER_TZHAAR = 96;
MONSTER_WARPED_TERRORBIRD = 97;
MONSTER_CAVE_HORROR = 98;
MONSTER_LIVING_ROCKS = 99;

I'll set up where to walk to get all of them, do you want me to do a web walk for it or will you be using something else?


I want your help with the web walker, but I think we should hold off on working on something like that until we have really thought out how to do it and have a good group to work on it (i'm sure you'll need help). I don't want to have a webwalker that works for everywhere on the surface, then have it be really difficult to implement dungeons. In addition, there are multiple spots where to kill different monsters, and although it may sound egocentric of me I want to be in control of where we kill what monster.

tl;dr hold off, but I still want your assistance.

grats

2011-07-12 02:33:59

From: TomTuff
I want your help with the web walker, but I think we should hold off on working on something like that until we have really thought out how to do it and have a good group to work on it (i'm sure you'll need help). I don't want to have a webwalker that works for everywhere on the surface, then have it be really difficult to implement dungeons. In addition, there are multiple spots where to kill different monsters, and although it may sound egocentric of me I want to be in control of where we kill what monster.

tl;dr hold off, but I still want your assistance.


ok

I was thinking well you can do the walking to multiple spots easily


I don't think we can use the same constant for webwalk

so like MONSTER_BANSHEE could be = WEB_MONSTER_BANSHEE

which is easy to switch all of them for me in a few seconds

but I have a question, if webwalk makes the constants by itself:


that means those would have to be changed, because they can't be the same as the other constants right?



edit:
I can change all of that easily, just wondering if it does effect it, as long as I'm supplied with the dungeon maps I can do the whole web walking by myself.. but the biggest help would be if someone wrote the monsters ID # on all the places it is

TomTuff

2011-07-12 03:11:42

From: grats
ok

I was thinking well you can do the walking to multiple spots easily


I don't think we can use the same constant for webwalk

so like MONSTER_BANSHEE could be = WEB_MONSTER_BANSHEE

which is easy to switch all of them for me in a few seconds

but I have a question, if webwalk makes the constants by itself:


that means those would have to be changed, because they can't be the same as the other constants right?



edit:
I can change all of that easily, just wondering if it does effect it, as long as I'm supplied with the dungeon maps I can do the whole web walking by myself.. but the biggest help would be if someone wrote the monsters ID # on all the places it is


Yes.

Dungeon maps can be found on Rs.wikia.com, yes? Why do you need monster IDs? Or do you mean the constant number?

grats

2011-07-12 03:17:20

From: TomTuff
Yes.

Dungeon maps can be found on Rs.wikia.com, yes? Why do you need monster IDs? Or do you mean the constant number?


yea the ID's you set them as

I just use the list to know all of the monsters that I need to add

but yea when the time comes I'd like someone to help me with the mapping by like finding where all the locations are and putting the monster ID next to it

and if it's a dungeon, put the number next to the dungeon entrance and then inside the actual dungeon too :P

would be a good system, the web walking could get done quickly so whenever you're ready it can be done..

Home

2011-07-12 03:34:49

Are you looking for NULL_NPC ?

Ohh and I can help you with Reflection stuff.

Ref 1 or Ref 2?
And can you post me how you tried to search NPC trhough Ref.

~Home

TomTuff

2011-07-12 03:41:21

From: grats
yea the ID's you set them as

Lol i'm getting confused between NPC ID and script constant :p Do you have msn?

From: Home
Are you looking for NULL_NPC ?

~Home


huh?

grats

2011-07-12 03:43:36

From: TomTuff
Lol i'm getting confused between NPC ID and script constant :p Do you have msn?



huh?


[email]greggrats@live.com[/email]

but yea I mean the constants.. aka the numbers you made each of the monsters =

I also run teamspeak3 server off my server & have aim, steam etc so w/e

Home

2011-07-12 03:53:44

By Null_NPC I meant, that did you search for NULL_NPC or just regular NPC.
There are Functions for normal NPC and NULL_NPC.

~Home

TomTuff

2011-07-12 03:57:36

From: Home
By Null_NPC I meant, that did you search for NULL_NPC or just regular NPC.
There are Functions for normal NPC and NULL_NPC.

~Home


Yes I did both.

pyroryan

2011-07-12 15:00:00

From: TomTuff
Well, it's a really, really, REALLY odd error I ran into. The slayer master I use, Kuradel (Spelling?), is replaced by another NPC during While Guthix Sleeps. When you Writeln(Kuradel.Name), it comes up as "null" and can not be found by his ID either (which is 8483, iirc). I don't know if it's the same for other masters, but honestly it's not so much of a chore to get color info on all of them.


Duradel->Lapalok (ID=8483)
And Kuradal's ID is 9085. So thats why it didn't work.

ID's source: Perfecticus.

Awkwardsaw

2011-07-12 15:50:10

I'm back home now, and will be working on the fighting atm.

Also, are we going to focase on one master at a time, or just do it all at once?

BraK

2011-07-12 17:02:27

Might make it to where the user can choose at first and support all. Because your going to have to look into quest and levels to figure out which they are able to use. Looking into Quest is always a pain.

~BraK

TomTuff

2011-07-12 17:31:02

From: BraK
Might make it to where the user can choose at first and support all. Because your going to have to look into quest and levels to figure out which they are able to use. Looking into Quest is always a pain.

~BraK


Well the only quest requirement for a master is chaeldar… well i guess you need to be able to get into shilo village for kuradel too.

BraK

2011-07-12 17:41:15

Also the Smoke Dungeon Master person. I think 5 of them need quest to use. Canfis, zanaris, Desert, Shilo and kurandal.

~BraK

E: Going to bed ZzZzZz

Awkwardsaw

2011-07-12 18:01:19

I might want to use color for monster finding, It might be better for those monsters who never stay in one spot, such as spectres. I'm having trouble with them using tiles

Brandon

2011-07-12 18:05:50

Look I know its kinda late, and it looks really really messy but U help me alot around here so I just thought i'd return the favour.

This is for the smoke dungeon.. It contains Dustdevils, firegiants, pyrefiends.. I didn't really walk around in it much.. just gathered the essentials as my task was firegiants. Also below that u will find what I have already posted on a different thread: Monster ID's if needed.. they are all the monsters that kuradel assigns.


MonsterLocation: TBox;
MonsterPath: TPointArray;
CaveWalkPath: TPointArray;
CaveTeleAndCarpet:TPointArray;
CaveTeleWalkPath: TPointArray;
MonsterPathDangerous, CaveWalkPathDangerous, CaveTCDangerous: Boolean;
MonsterQuestRequirements: Array of string;
MonsterTeleportRequirements: Array of string;
ClosestBank:= string;
SmokeyWell, Obelisk, DuelingArenaObelisk: TRSObject;
PolnivneachCarpetNPC: TNPC;
DuelingArenaArea: TBox;

//Dungeon Beneath Polniveach;
FireGiant, PyreFiend: MonsterLocation.X1:= 3241; MonsterLocation.Y1:= 9373; MonsterLocation.x2:= 3254; MonsterLocation.Y2:= 9355;

//These Tiles have to Be Inverted because I went from the Monsters(FireGiants, PyreFiends) to CaveEntrance..
MonsterPath:= [Point(3310, 2961), Point(3212, 9376), Point(3226, 9375), Point(3233, 9367), Point(3240, 9364), Point(3246, 9364)]

//These Tiles have to be Inverted because I went from the cave to AlkharidBank chest.
CaveWalkPath:= [Point(3310, 2961), Point(3310, 2955), Point(3311, 2946), Point(3323, 2944), Point(3330, 2953), Point(3338, 2956),
Point(3348, 2959), Point(3359, 2969), Point(3364, 2979), Point(3364, 2984), Point(3361, 2992), Point(3358, 2999),
Point(3351, 3001), Point(3346, 3010), Point(3337, 3019), Point(3333, 3029), Point(3326, 3039), Point(3321, 3049),
Point(3315, 3061), Point(3309, 3071), Point(3305, 3082), Point(3305, 3094), Point(3310, 3099), Point(3309, 3107),
Point(3306, 3312), Point(3304, 3115), Point(3304, 3120)]

//These Tile have to be Inverted because I went from the cave to the House portal at Polnivneach.
CaveTeleWalkPath:= [Point(3310, 2961), Point(3310, 2955), Point(3311, 2946), Point(3323, 2944), Point(3330, 2953), Point(3338, 2956),
Point(3348, 2959), Point(3359, 2969), Point(3364, 2979), Point(3364, 2984), Point(3361, 2992), Point(3358, 2999),
Point(3351, 3001), Point(3346, 3004)];

MonsterPathDangerous:= false;
CaveWalkPathDangerous:= true; // Loses approx 300 hp walking/running all the way through the desert unless u have waterskins.
CaveTCDangerous:= false; //magic carpet
ClosestBank:= 'Alkharid Bank Chest';

SmokeyWell:= R_GetObjectAt(Point(3310, 2961), OBJ_INTERACTABLE);
if(R_FindObject(36002, OBJ_INTERACTABLE, 10, SmokeyWell) or R_FindObject(2745, OBJ_INTERACTABLE,10, SmokeyWell)) then
begin

end;

Obelisk:= R_GetObjectAt(Point(3333, 3000), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

PolnivneachCarpetNPC:= R_GetNPCAt(Point(3350, 3001), false);
if(PolnivneachCarpetNPC.ID = 2294) then
begin
MMouse(R_TileToMS(PolnivneachCarpetNPC.Tile, 0).x, R_TileToMS(PolnivneachCarpetNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Rug Merchant')) then
begin
SmartClickMouse(R_TileToMS(PolnivneachCarpetNPC.Tile, 0).x, R_TileToMS(PolnivneachCarpetNPC.Tile, 0).y, false);
R_ChooseOption('Travel Rug Merchant'); //User needs minimum 200 gold to travel!
end;
end;

const
PolnivneachTeleTab = 18811; //Love story quest.. Use Chisel on HouseTab.
RingOfSlaying(8) = 13281; //75 Crafting to make them or else u buy em.
HouseTab = 8013;
FerociousRing(2) = 15401; //Only From Kuradel Dungeon -- This one has 2 charges;
DragonDefender = 20072; //100+ Combat for Guild;
DragonBoots = 11732;
BarrowsGloves = 7462; //Recipe For Disaster;
GloryAmuletDepleted = 1704; //Glory Charged (0);
RoW(4) = 20659; //Ring Of Wealth (4) -- 4 charges.
SlayerHelmet = 15492; //Needs Smoking Kills Quest.
LongBone = 10976; //Requires Quest to get drop.

GuthanPlateBody(75) = 4917; //Guthans Top at 75%
VeracPlateSkirt(75) = 4995; //Verac Skirt at 75%
ChaoticRapier (59%) = 18349; //Rapier with charge 59%;
RedSoulwarsCape = 15434; //Requires Nomad Requeim to be completed;
KorassiSword = 19784; //Needs void stares back I think.. the one where u kill the queen.

GoldCharm = 12158;
GreenCharm = 12159;
BlueCharm = 12163;
CrimsonCharm = 12160;

HouseAltarID = 13197;
FancyStoneDoors = 36625;
FancyStoneDoors2 = 36590;
kharyllHousePortal = 13628; //Mahogany
ArdougneHousePortal = 13626; //Mahogany
YanilleHousePortal = 13627; //Mahogany
VarrockHousePortal = 13622; //Mahogany
FaladorHousePortal = 13624; //Mahogany
CamelotHousePortal = 13625; //Mahogany
MountedGlory = 13523;

EnchantedWaterTiara = 11969; //Curse of Scarabas quest of something like that..
RingOfDueling(3) = 2562;
RingOfDueling(4) = 2560;
RingOfDueling(8) = 2552;
ExplorersRing(3) = 13562; // Lumbridge Hard Task.. Explorer's Ring 3;

//This is the TBox of where u will be if u tele to dueling arena using a ring.
DuelingArenaArea.X1:= 3305; DuelingArenaArea.Y2:= 3240; DuelingArenaArea.X2:= 3323; DuelingArenaArea.Y2:= 3226;

DuelingArenaGate:= Point(3311, 3235) or Point(3311, 3234);

DuelingArenaObelisk:= R_GetObjectAt(Point(3306, 3244), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

DuelArenaToAKBankChest: TPointArray;
//These Tile DO NOT need inverting because I went from dueling arena to alkharid bank chest.
DuelArenaToAKBankChest:= [Point(3311, 3235), Point(3309, 3226), Point(3312, 3215), Point(3312, 3207),
Point(3312, 3198), Point(3308, 3183), Point(3309, 3175), Point(3309, 3165),
Point(3306, 3153), Point(3303, 3143), Point(3305, 3132), Point(3306, 3124),
Point(3306, 3122)];

ShantayNPC: TNPC;
ShantayNPC:= R_GetNPC(836, false);
if(R_FindNPC(836, false, ShantayNPC) then
begin
MMouse(R_TileToMS(ShantayNPC.Tile, 0).x, R_TileToMS(ShantayNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Shantay')) then
begin
SmartClickMouse(R_TileToMS(ShantayNPC.Tile, 0).x, R_TileToMS(ShantayNPC.Tile, 0).y, false);
R_ChooseOption('Trade'); //Option to trade and buy waterskins or u can use 'Buy-pass' to buy shantay pass..
end;
end;

ShantayGuard: TNPC;
ShantayGuard:= R_GetNPC(838, false);
if(R_FindNPC(838, false, ShantayGuard) then
begin
MMouse(R_TileToMS(ShantayGuard.Tile, 0).x, R_TileToMS(ShantayGuard.Tile, 0).y, 0, 0);
if(R_IsUpText('Guard')) then
begin
SmartClickMouse(R_TileToMS(ShantayGuard.Tile, 0).x, R_TileToMS(ShantayGuard.Tile, 0).y, false);
R_ChooseOption('Bribe'); //Option to offer him 200 coins from your bank or if u have any in your invent, u can give him that.
end;
end;

ShantayPassObj:= R_GetObject(Point(3405, 3116), OBJ_INTERACTABLE);
if(R_FindObject(12774, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(35543, OBJ_INTERACTABLE, 10, Obelisk) then
begin
R_ChooseOption('Go-through'); //Option to Go-through ShantayPass.. Or u can choose Look-At which is useless.
end;

Procedure ShantayPassAutoGoThrough;
begin
R_WalkToTile(Point(3304, 3114), 0);
//Find Interface and give him 200 gold from bank or invent or give him a shantaypass which is 5gp.
end;

ShantayPassObelisk:= R_GetObjectAt(Point(3301, 3112), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

ShantayPassCarpetNPC: TNPC; //THIS GUY MOVES Unlike the Polnivneach NPC!!
if(R_FindNPC(2291, false, ShantayPassCarpetNPC)) then
begin
MMouse(R_TileToMS(ShantayPassCarpetNPC.Tile, 0).x, R_TileToMS(ShantayPassCarpetNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Rug Merchant')) then
begin
SmartClickMouse(R_TileToMS(ShantayPassCarpetNPC.Tile, 0).x, R_TileToMS(ShantayPassCarpetNPC.Tile, 0).y, false);
R_ChooseOption('Travel Rug Merchant'); //User needs minimum 200 gold to travel!
end;
end;

PathToShantayPassNPC: TPointArray;
PathToShantayPassNPC:= [Point(3304, 3113), Point(3309, 3109)];


const
//Monster ID's For Kuradel:
AberrantSpecter1 = 1604;
AberrantSpecter2 = 1605;
AberrantSpecter3 = 1606;
AberrantSpecter4 = 1607;
AbyssalDemon = 1615;
Aquanite = ####;

BlackDemon1 = 84;
BlackDemon2 = 677;
BlackDragon = 54;
BabyBlackDragon = 3376;
Bloodveld1 = 1618;
Bloodveld2 = 1619;
BlueDragon = 55;
BabyBlueDragon = 52;
Dagannoth1 = 1338;
Dagannoth2 = 1339;
Dagannoth3 = 1340;
Dagannoth4 = 1341;
Dagannoth5 = 1342;
Dagannoth6 = 1343;
Dagannoth7 = 1344;
Dagannoth8 = 1345;
Dagannoth9 = 1346;
Dagannoth10 = 1347;
Dagannoth11 = 2254;
Dagannoth12 = 2456;
Dagannoth13 = 2887;
Dagannoth14 = 2888;
Dagannoth15 = 3591;
DagannothSpaw = 2454;
DarkBeast = 2783;
DesertStrykewyrm = ####;
Dustdevil = 1624;

FireGiant1 = 110;
FireGiant2 = 1582;
FireGiant3 = 1583;
FireGiant4 = 1584;
FireGiant5 = 1585;
FireGiant6 = 1586;

Gargoyle1 = 1610;
Gargoyle2 = 1611;
GreaterDemon = 83;
HellHound1 = 49;
HellHound2 = 3586;

IceStrykeWyrm = ####;
IronDragon = 1591;

JungleStrykewyrm = ####;

KalphiteWorker1 = 1153;
KalphiteWorker2 = 1156;
KalphiteSoldie1 = 1154;
KalphiteSoldier2 = 3589;
KalphiteGuardian1 = 1155;
KalphiteGuardian2 = 1157;
KalphiteLarva = 1161;

LivingRockCreature = ####;

MithrilDragon = ####;

Nechryael = 1613;

SkeletalStrykewyrm = ####;
SpiritualMage = ####;
SteelDragon1 = 1592;
SteelDragon2 = 3590;
Suqah = ####;

TerrorDog = ####;
TzHaar-Mej1 = 2591;
TzHaar-Mej2 = 2592;
TzHaar-Mej3 = 2593;
TzHaar-Mej4 = 2594;
TzHaar-Mej5 = 2595;
TzHaar-Mej6 = 2596;
TzHaar-Mej7 = 2597;
TzHaar-Hur1 = 2598;
TzHaar-Hur2 = 2599;
TzHaar-Hur3 = 2600;
TzHaar-Hur4 = 2601;
TzHaar-Hur5 = 2602;
TzHaar-Hur6 = 2603;
TzHaar-Xil1 = 2604;
TzHaar-Xil2 = 2605;
TzHaar-Xil3 = 2606;
TzHaar-Xil4 = 2607;
TzHaar-Xil5 = 2608;
TzHaar-Xil6 = 2609;
TzHaar-Ket1 = 2610;
TzHaar-Ket2 = 2611;
TzHaar-Ket3 = 2612;
TzHaar-Ket4 = 2613;
TzHaar-Ket5 = 2614;
TzHaar-Ket6 = 2615;
TzHaar-Ket7 = 2616;
TzHaar-Mej-Jal = 2617;
TzHaar-Mej-Kah = 2618;
TzHaar-Ket-Zuh = 2619;
TzHaar-Hur-Tel = 2620
TzHaar-Hur-Koz = 2621;
TzHaar-Hur-Lek = 2622;
TzHaar-Mej-Roh = 2623;
TzHaar-Ket1 = 2624;
TzHaar-Ket2 = 2625;

WarpedTortoise = ####;
Waterfiend = ####;

TomTuff

2011-07-12 18:23:30

From: Awkwardsaw
I might want to use color for monster finding, It might be better for those monsters who never stay in one spot, such as spectres. I'm having trouble with them using tiles


ClickNPC can do that easily given color, do whatever you need. Just keep in mind that there's almost 100 different monsters, so color finding could take a while.

From: ggzz
Look I know its kinda late, and it looks really really messy but U help me alot around here so I just thought i'd return the favour.

This is for the smoke dungeon.. It contains Dustdevils, firegiants, pyrefiends.. I didn't really walk around in it much.. just gathered the essentials as my task was firegiants. Also below that u will find what I have already posted on a different thread: Monster ID's if needed.. they are all the monsters that kuradel assigns.


MonsterLocation: TBox;
MonsterPath: TPointArray;
CaveWalkPath: TPointArray;
CaveTeleAndCarpet:TPointArray;
CaveTeleWalkPath: TPointArray;
MonsterPathDangerous, CaveWalkPathDangerous, CaveTCDangerous: Boolean;
MonsterQuestRequirements: Array of string;
MonsterTeleportRequirements: Array of string;
ClosestBank:= string;
SmokeyWell, Obelisk, DuelingArenaObelisk: TRSObject;
PolnivneachCarpetNPC: TNPC;
DuelingArenaArea: TBox;

//Dungeon Beneath Polniveach;
FireGiant, PyreFiend: MonsterLocation.X1:= 3241; MonsterLocation.Y1:= 9373; MonsterLocation.x2:= 3254; MonsterLocation.Y2:= 9355;

//These Tiles have to Be Inverted because I went from the Monsters(FireGiants, PyreFiends) to CaveEntrance..
MonsterPath:= [Point(3310, 2961), Point(3212, 9376), Point(3226, 9375), Point(3233, 9367), Point(3240, 9364), Point(3246, 9364)]

//These Tiles have to be Inverted because I went from the cave to AlkharidBank chest.
CaveWalkPath:= [Point(3310, 2961), Point(3310, 2955), Point(3311, 2946), Point(3323, 2944), Point(3330, 2953), Point(3338, 2956),
Point(3348, 2959), Point(3359, 2969), Point(3364, 2979), Point(3364, 2984), Point(3361, 2992), Point(3358, 2999),
Point(3351, 3001), Point(3346, 3010), Point(3337, 3019), Point(3333, 3029), Point(3326, 3039), Point(3321, 3049),
Point(3315, 3061), Point(3309, 3071), Point(3305, 3082), Point(3305, 3094), Point(3310, 3099), Point(3309, 3107),
Point(3306, 3312), Point(3304, 3115), Point(3304, 3120)]

//These Tile have to be Inverted because I went from the cave to the House portal at Polnivneach.
CaveTeleWalkPath:= [Point(3310, 2961), Point(3310, 2955), Point(3311, 2946), Point(3323, 2944), Point(3330, 2953), Point(3338, 2956),
Point(3348, 2959), Point(3359, 2969), Point(3364, 2979), Point(3364, 2984), Point(3361, 2992), Point(3358, 2999),
Point(3351, 3001), Point(3346, 3004)];

MonsterPathDangerous:= false;
CaveWalkPathDangerous:= true; // Loses approx 300 hp walking/running all the way through the desert unless u have waterskins.
CaveTCDangerous:= false; //magic carpet
ClosestBank:= 'Alkharid Bank Chest';

SmokeyWell:= R_GetObjectAt(Point(3310, 2961), OBJ_INTERACTABLE);
if(R_FindObject(36002, OBJ_INTERACTABLE, 10, SmokeyWell) or R_FindObject(2745, OBJ_INTERACTABLE,10, SmokeyWell)) then
begin

end;

Obelisk:= R_GetObjectAt(Point(3333, 3000), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

PolnivneachCarpetNPC:= R_GetNPCAt(Point(3350, 3001), false);
if(PolnivneachCarpetNPC.ID = 2294) then
begin
MMouse(R_TileToMS(PolnivneachCarpetNPC.Tile, 0).x, R_TileToMS(PolnivneachCarpetNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Rug Merchant')) then
begin
SmartClickMouse(R_TileToMS(PolnivneachCarpetNPC.Tile, 0).x, R_TileToMS(PolnivneachCarpetNPC.Tile, 0).y, false);
R_ChooseOption('Travel Rug Merchant'); //User needs minimum 200 gold to travel!
end;
end;

const
PolnivneachTeleTab = 18811; //Love story quest.. Use Chisel on HouseTab.
RingOfSlaying(8) = 13281; //75 Crafting to make them or else u buy em.
HouseTab = 8013;
FerociousRing(2) = 15401; //Only From Kuradel Dungeon -- This one has 2 charges;
DragonDefender = 20072; //100+ Combat for Guild;
DragonBoots = 11732;
BarrowsGloves = 7462; //Recipe For Disaster;
GloryAmuletDepleted = 1704; //Glory Charged (0);
RoW(4) = 20659; //Ring Of Wealth (4) -- 4 charges.
SlayerHelmet = 15492; //Needs Smoking Kills Quest.
LongBone = 10976; //Requires Quest to get drop.

GuthanPlateBody(75) = 4917; //Guthans Top at 75%
VeracPlateSkirt(75) = 4995; //Verac Skirt at 75%
ChaoticRapier (59%) = 18349; //Rapier with charge 59%;
RedSoulwarsCape = 15434; //Requires Nomad Requeim to be completed;
KorassiSword = 19784; //Needs void stares back I think.. the one where u kill the queen.

GoldCharm = 12158;
GreenCharm = 12159;
BlueCharm = 12163;
CrimsonCharm = 12160;

HouseAltarID = 13197;
FancyStoneDoors = 36625;
FancyStoneDoors2 = 36590;
kharyllHousePortal = 13628; //Mahogany
ArdougneHousePortal = 13626; //Mahogany
YanilleHousePortal = 13627; //Mahogany
VarrockHousePortal = 13622; //Mahogany
FaladorHousePortal = 13624; //Mahogany
CamelotHousePortal = 13625; //Mahogany
MountedGlory = 13523;

EnchantedWaterTiara = 11969; //Curse of Scarabas quest of something like that..
RingOfDueling(3) = 2562;
RingOfDueling(4) = 2560;
RingOfDueling(8) = 2552;
ExplorersRing(3) = 13562; // Lumbridge Hard Task.. Explorer's Ring 3;

//This is the TBox of where u will be if u tele to dueling arena using a ring.
DuelingArenaArea.X1:= 3305; DuelingArenaArea.Y2:= 3240; DuelingArenaArea.X2:= 3323; DuelingArenaArea.Y2:= 3226;

DuelingArenaGate:= Point(3311, 3235) or Point(3311, 3234);

DuelingArenaObelisk:= R_GetObjectAt(Point(3306, 3244), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

DuelArenaToAKBankChest: TPointArray;
//These Tile DO NOT need inverting because I went from dueling arena to alkharid bank chest.
DuelArenaToAKBankChest:= [Point(3311, 3235), Point(3309, 3226), Point(3312, 3215), Point(3312, 3207),
Point(3312, 3198), Point(3308, 3183), Point(3309, 3175), Point(3309, 3165),
Point(3306, 3153), Point(3303, 3143), Point(3305, 3132), Point(3306, 3124),
Point(3306, 3122)];

ShantayNPC: TNPC;
ShantayNPC:= R_GetNPC(836, false);
if(R_FindNPC(836, false, ShantayNPC) then
begin
MMouse(R_TileToMS(ShantayNPC.Tile, 0).x, R_TileToMS(ShantayNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Shantay')) then
begin
SmartClickMouse(R_TileToMS(ShantayNPC.Tile, 0).x, R_TileToMS(ShantayNPC.Tile, 0).y, false);
R_ChooseOption('Trade'); //Option to trade and buy waterskins or u can use 'Buy-pass' to buy shantay pass..
end;
end;

ShantayGuard: TNPC;
ShantayGuard:= R_GetNPC(838, false);
if(R_FindNPC(838, false, ShantayGuard) then
begin
MMouse(R_TileToMS(ShantayGuard.Tile, 0).x, R_TileToMS(ShantayGuard.Tile, 0).y, 0, 0);
if(R_IsUpText('Guard')) then
begin
SmartClickMouse(R_TileToMS(ShantayGuard.Tile, 0).x, R_TileToMS(ShantayGuard.Tile, 0).y, false);
R_ChooseOption('Bribe'); //Option to offer him 200 coins from your bank or if u have any in your invent, u can give him that.
end;
end;

ShantayPassObj:= R_GetObject(Point(3405, 3116), OBJ_INTERACTABLE);
if(R_FindObject(12774, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(35543, OBJ_INTERACTABLE, 10, Obelisk) then
begin
R_ChooseOption('Go-through'); //Option to Go-through ShantayPass.. Or u can choose Look-At which is useless.
end;

Procedure ShantayPassAutoGoThrough;
begin
R_WalkToTile(Point(3304, 3114), 0);
//Find Interface and give him 200 gold from bank or invent or give him a shantaypass which is 5gp.
end;

ShantayPassObelisk:= R_GetObjectAt(Point(3301, 3112), OBJ_INTERACTABLE);
if(R_FindObject(29943, OBJ_INTERACTABLE, 10, Obelisk) or R_FindObject(29992, OBJ_INTERACTABLE, 10, Obelisk) then
begin
end;

ShantayPassCarpetNPC: TNPC; //THIS GUY MOVES Unlike the Polnivneach NPC!!
if(R_FindNPC(2291, false, ShantayPassCarpetNPC)) then
begin
MMouse(R_TileToMS(ShantayPassCarpetNPC.Tile, 0).x, R_TileToMS(ShantayPassCarpetNPC.Tile, 0).y, 0, 0);
if(R_IsUpText('Rug Merchant')) then
begin
SmartClickMouse(R_TileToMS(ShantayPassCarpetNPC.Tile, 0).x, R_TileToMS(ShantayPassCarpetNPC.Tile, 0).y, false);
R_ChooseOption('Travel Rug Merchant'); //User needs minimum 200 gold to travel!
end;
end;

PathToShantayPassNPC: TPointArray;
PathToShantayPassNPC:= [Point(3304, 3113), Point(3309, 3109)];


const
//Monster ID's For Kuradel:
AberrantSpecter1 = 1604;
AberrantSpecter2 = 1605;
AberrantSpecter3 = 1606;
AberrantSpecter4 = 1607;
AbyssalDemon = 1615;
Aquanite = ####;

BlackDemon1 = 84;
BlackDemon2 = 677;
BlackDragon = 54;
BabyBlackDragon = 3376;
Bloodveld1 = 1618;
Bloodveld2 = 1619;
BlueDragon = 55;
BabyBlueDragon = 52;
Dagannoth1 = 1338;
Dagannoth2 = 1339;
Dagannoth3 = 1340;
Dagannoth4 = 1341;
Dagannoth5 = 1342;
Dagannoth6 = 1343;
Dagannoth7 = 1344;
Dagannoth8 = 1345;
Dagannoth9 = 1346;
Dagannoth10 = 1347;
Dagannoth11 = 2254;
Dagannoth12 = 2456;
Dagannoth13 = 2887;
Dagannoth14 = 2888;
Dagannoth15 = 3591;
DagannothSpaw = 2454;
DarkBeast = 2783;
DesertStrykewyrm = ####;
Dustdevil = 1624;

FireGiant1 = 110;
FireGiant2 = 1582;
FireGiant3 = 1583;
FireGiant4 = 1584;
FireGiant5 = 1585;
FireGiant6 = 1586;

Gargoyle1 = 1610;
Gargoyle2 = 1611;
GreaterDemon = 83;
HellHound1 = 49;
HellHound2 = 3586;

IceStrykeWyrm = ####;
IronDragon = 1591;

JungleStrykewyrm = ####;

KalphiteWorker1 = 1153;
KalphiteWorker2 = 1156;
KalphiteSoldie1 = 1154;
KalphiteSoldier2 = 3589;
KalphiteGuardian1 = 1155;
KalphiteGuardian2 = 1157;
KalphiteLarva = 1161;

LivingRockCreature = ####;

MithrilDragon = ####;

Nechryael = 1613;

SkeletalStrykewyrm = ####;
SpiritualMage = ####;
SteelDragon1 = 1592;
SteelDragon2 = 3590;
Suqah = ####;

TerrorDog = ####;
TzHaar-Mej1 = 2591;
TzHaar-Mej2 = 2592;
TzHaar-Mej3 = 2593;
TzHaar-Mej4 = 2594;
TzHaar-Mej5 = 2595;
TzHaar-Mej6 = 2596;
TzHaar-Mej7 = 2597;
TzHaar-Hur1 = 2598;
TzHaar-Hur2 = 2599;
TzHaar-Hur3 = 2600;
TzHaar-Hur4 = 2601;
TzHaar-Hur5 = 2602;
TzHaar-Hur6 = 2603;
TzHaar-Xil1 = 2604;
TzHaar-Xil2 = 2605;
TzHaar-Xil3 = 2606;
TzHaar-Xil4 = 2607;
TzHaar-Xil5 = 2608;
TzHaar-Xil6 = 2609;
TzHaar-Ket1 = 2610;
TzHaar-Ket2 = 2611;
TzHaar-Ket3 = 2612;
TzHaar-Ket4 = 2613;
TzHaar-Ket5 = 2614;
TzHaar-Ket6 = 2615;
TzHaar-Ket7 = 2616;
TzHaar-Mej-Jal = 2617;
TzHaar-Mej-Kah = 2618;
TzHaar-Ket-Zuh = 2619;
TzHaar-Hur-Tel = 2620
TzHaar-Hur-Koz = 2621;
TzHaar-Hur-Lek = 2622;
TzHaar-Mej-Roh = 2623;
TzHaar-Ket1 = 2624;
TzHaar-Ket2 = 2625;

WarpedTortoise = ####;
Waterfiend = ####;

Thanks we'll do what we can with this info :)

Awkwardsaw

2011-07-12 18:25:59

From: TomTuff
ClickNPC can do that easily given color, do whatever you need. Just keep in mind that there's almost 100 different monsters, so color finding could take a while.


I dont see how it will take a while;


function FightMonster : boolean;
var
TempMArr : TNPCArray;
tmpMonster : TMonster;
i, c : integer;
tp : TPoint;
label
here;
begin
tmpMonster := Monsters[slayers[CurrentPlayer].Assignment.Monster];
here:
inc(c);
if c > 10 then
begin
escape;
exit;
end;
if not FindMonster then escape;
TempMArr := R_GetNPCsMulti(tmpMonster.name, false);
for i := 0 to high(TempMArr) do
begin
if TempMArr[i].incombat then continue;
tp := r_tiletoms(TempMArr[i].Tile, round(TempMArr[i].Height * 0.75));
break;
end;
writeln(TempMArr[i]);
{ }
if not tmpMonster.UseReflection then
with tmpMonster do
ClickNPC(true, TempMArr[i], Color, Tolerance, HueMod, SatMod, 7, 3, [TempMArr[i].name], true, ['ttack'])
else
begin
mmouse(tp.x, tp.y, 3, 3);
if not waituptext('ttack', 2000) then goto here;
getmousepos(tp.x, tp.y);
mouse(tp.x, tp.y, 0, 0, true);
end;
result := didredclick;
writeln('Clicked monster');
end;

TomTuff

2011-07-12 23:38:11

From: Awkwardsaw
I dont see how it will take a while;


function FightMonster : boolean;
var
TempMArr : TNPCArray;
tmpMonster : TMonster;
i, c : integer;
tp : TPoint;
label
here;
begin
tmpMonster := Monsters[slayers[CurrentPlayer].Assignment.Monster];
here:
inc(c);
if c > 10 then
begin
escape;
exit;
end;
if not FindMonster then escape;
TempMArr := R_GetNPCsMulti(tmpMonster.name, false);
for i := 0 to high(TempMArr) do
begin
if TempMArr[i].incombat then continue;
tp := r_tiletoms(TempMArr[i].Tile, round(TempMArr[i].Height * 0.75));
break;
end;
writeln(TempMArr[i]);
{ }
if not tmpMonster.UseReflection then
with tmpMonster do
ClickNPC(true, TempMArr[i], Color, Tolerance, HueMod, SatMod, 7, 3, [TempMArr[i].name], true, ['ttack'])
else
begin
mmouse(tp.x, tp.y, 3, 3);
if not waituptext('ttack', 2000) then goto here;
getmousepos(tp.x, tp.y);
mouse(tp.x, tp.y, 0, 0, true);
end;
result := didredclick;
writeln('Clicked monster');
end;


goto resets all vars, so increasing C and checking the value won't work, so that function is an infinite loop.

And I meant actually getting color info :P

Awkwardsaw

2011-07-12 23:49:32

From: TomTuff
goto resets all vars, so increasing C and checking the value won't work, so that function is an infinite loop.

And I meant actually getting color info :P


I never experienced goto reseting variables, :\

e:

program new;

label
here;
var
i : integer;
begin
here:
inc(i);
writeln(i);
if i = 5 then exit;
wait(100);
goto here;
end.

Brandon

2011-07-12 23:55:08

uhhh if goto works like it does in any other language, it doesn't reset the variables but rather it keeps the values that were previously stored in them.. example:

here:
enter a value for x
cin>>x;
goto here;

it will definitely just loop itself.. but not only that, it will not allow u to enter a value for x because x already has a value stored in it.. It jumps over code and is usually the reason ppl don't use it. It's better to just make a function and call another function inside it and if it needs to loop u just call the function again rather than goto.

TomTuff

2011-07-13 00:11:09

k perhaps i was wrong :p

Coh3n

2011-07-13 00:15:17

I know I said this already, but if you guys are going to use Reflection, use it for everything, unless you plan on having 100% color support. If there's something that's not working in Reflection, figure it out and fix it. There should be no reason Reflection fails unless hooks are outdated. I would suggest using model clicking since iamadam did create it.

Awkwardsaw

2011-07-13 00:19:42

From: Coh3n
I know I said this already, but if you guys are going to use Reflection, use it for everything, unless you plan on having 100% color support. If there's something that's not working in Reflection, figure it out and fix it. There should be no reason Reflection fails unless hooks are outdated. I would suggest using model clicking since iamadam did create it.


Are models added yet? Like I said, using color to find a moving npc is better than using tiles :p

Coh3n

2011-07-13 00:24:25

From: Awkwardsaw
Are models added yet? Like I said, using color to find a moving npc is better than using tiles :p
If it's not, then someone should. I'm not trying to discourage color, I just think for something like object finding it's kind of pointless if you're going to be relying on Reflection anyway. Also, using tiles shouldn't be that bad, as long as you update the NPC's location quickly, it can't move very far in a few ms. ;)

TomTuff

2011-07-13 00:50:21

I agree, we should ween off color. ClickNPC should probably be removed or made to work with reflection completely. I'll fix what I can with the Master's issue. Has Iamadam's model clicking been added to the main Reflection 2 branch on github? We should look into that.

I have ideas for navigation! Post tiles (one tile!) of teleport locations, bank locations, and monster locations so they can be added and organized. Once we have the tiles for all the teleports/banks, functions can be used to determine how to get places!

Here's an example of how what I have planned will work: we want to get to, say, the slayer tower for a task. We would first sort the bank tiles by distance from the monster location tile. The closest bank would be in canifis. The quickest way this player has access to canifis is by kharyll teleport (this player is on ancient spell book). To get runes for kharyll teleport, we must get the closest bank to the player. We walk to this bank, get the runes, kharyll teleport, bank at canifis, and walk to slayer tower!

So yeah, post tiles! (TTiles, not TTileArrays).

Coh3n

2011-07-13 00:53:28

From: TomTuff
I agree, we should ween off color. ClickNPC should probably be removed or made to work with reflection completely. I'll fix what I can with the Master's issue. Has Iamadam's model clicking been added to the main Reflection 2 branch on github? We should look into that.

I have ideas for navigation! Post tiles (one tile!) of teleport locations, bank locations, and monster locations so they can be added and organized. Once we have the tiles for all the teleports/banks, functions can be used to determine how to get places!

Here's an example of how what I have planned will work: we want to get to, say, the slayer tower for a task. We would first sort the bank tiles by distance from the monster location tile. The closest bank would be in canifis. The quickest way this player has access to canifis is by kharyll teleport (this player is on ancient spell book). To get runes for kharyll teleport, we must get the closest bank to the player. We walk to this bank, get the runes, kharyll teleport, bank at canifis, and walk to slayer tower!

So yeah, post tiles! (TTiles, not TTileArrays).
If you're going to do all that, you may as well use that time to make a world walker.. just sayin'. :rolleyes: Also, pretty sure Drags said there's no TTile in Ref2, it's all TPoints.

TomTuff

2011-07-13 00:57:06

All maps, including surface maps (don't think we really need those?) and under world maps, can be found on the tip.it atlas!

Links:



From: Coh3n
If you're going to do all that, you may as well use that time to make a world walker.. just sayin'. :rolleyes: Also, pretty sure Drags said there's no TTile in Ref2, it's all TPoints.


The point is navigation through teleportation. It's a lot faster to teleport than walk.

Coh3n

2011-07-13 01:03:40

From: TomTuff
The point is navigation through teleportation. It's a lot faster to teleport than walk.
No I know. That's obvious. I guess you never mentioned getting the paths from the bank to the monster's location. :p But what you did say about getting the closest bank and stuff, would be extremely useful in a world walker or at least in the same library.

grats

2011-07-13 01:04:52

I got a full size world map without the tipit watermark if you need

TomTuff

2011-07-13 01:05:17

From: Coh3n
No I know. That's obvious. I guess you never mentioned getting the paths from the bank to the monster's location. :p But what you did say about getting the closest bank and stuff, would be extremely useful in a world walker or at least in the same library.


World walkers just walked I thought? Regardless, yes walking from, say, canifis bank to the slayer tower would be done with a world walker (ideally). This is just the logic of how to teleport - tiles would still be needed.

Coh3n

2011-07-13 01:08:45

From: TomTuff
World walkers just walked I thought? Regardless, yes walking from, say, canifis bank to the slayer tower would be done with a world walker (ideally). This is just the logic of how to teleport - tiles would still be needed.
Well theoretically they walk ANYWHERE and handle ALL obstacles, but I'm sure the same methods used to do the latter could be used to find the closest bank. For example, a world walker should (or could I guess) have a method (walkToBank) that simply walks to the closest bank from the player's location, but uses a teleport if the player has one.

Now that I wrote it out more, it does seem more logical to have the teleporting/banking in the script. Disregard what I said. :p Still need a world walker though.

TomTuff

2011-07-13 01:10:20

From: Coh3n
Well theoretically they walk ANYWHERE and handle ALL obstacles, but I'm sure the same methods used to do the latter could be used to find the closest bank. For example, a world walker should (or could I guess) have a method (walkToBank) that simply walks to the closest bank from the player's location, but uses a teleport if the player has one.

Now that I wrote it out more, it does seem more logical to have the teleporting/banking in the script. Disregard what I said. :p Still need a world walker though.


Yup :) That's why I posted links to dungeon maps, too. Hopefully the walker can work in dungeons.

grats

2011-07-13 01:36:31

for web walk are you talking tomtuff?


I just made this for an example:


but for web walk the dungeon map has to be same size as minimap so when it clicks at that point it's the same distance type of click on the minimap that it is on the world map

Coh3n

2011-07-13 01:38:27

From: grats
but for web walk the dungeon map has to be same size as minimap so when it clicks at that point it's the same distance type of click on the minimap that it is on the world map
That`s only if you`re making a web walker for SPS. Tiles are different, unless of course you`re talking about using an application to get the tiles rather than writeln(toStr(getMyPos));

grats

2011-07-13 01:41:01

From: Coh3n
That`s only if you`re making a web walker for SPS. Tiles are different, unless of course you`re talking about using an application to get the tiles rather than writeln(toStr(getMyPos));


oh I wasn't sure if you guys were talking about web walking or just reflection tiles

because something like:



const

Graph1.Node := [Point(3013, 3360), Point(3025, 3366), Point(3036, 3369), Point(3044, 3369), Point(3057, 3371)];
Graph1.Edge := [Point(0, 1), Point(1, 2), Point(2, 3), Point(3, 4)];

from web walk, is similar to the tiles which is what confused me


I get confused easily =[

I'm going to test out web walking with my dungeon pic I made, I'd assume it works fine.. I want to see how well though just cuz I'm curious :P

TomTuff

2011-07-13 01:54:10

From: grats
oh I wasn't sure if you guys were talking about web walking or just reflection tiles

because something like:



const

Graph1.Node := [Point(3013, 3360), Point(3025, 3366), Point(3036, 3369), Point(3044, 3369), Point(3057, 3371)];
Graph1.Edge := [Point(0, 1), Point(1, 2), Point(2, 3), Point(3, 4)];

from web walk, is similar to the tiles which is what confused me


I get confused easily =[

I'm going to test out web walking with my dungeon pic I made, I'd assume it works fine.. I want to see how well though just cuz I'm curious :P


I gave the maps for a reflection web walker. I'm sure the maps can be resized if need be, even if it's a little granulated.

grats

2011-07-13 01:59:08

From: TomTuff
I gave the maps for a reflection web walker. I'm sure the maps can be resized if need be, even if it's a little granulated.


well if I were doing it I'd just go there and screen shot it so it's 100% size.. doesn't matter what's on the map even if it's black and has "YOUR PLAYER IS HERE" or anything :P just so I know it's the correct size

idk how to add the "nearest bank" type things or anything, that's all you guys

TomTuff

2011-07-13 02:03:51

From: grats
well if I were doing it I'd just go there and screen shot it so it's 100% size.. doesn't matter what's on the map even if it's black and has "YOUR PLAYER IS HERE" or anything :P just so I know it's the correct size

idk how to add the "nearest bank" type things or anything, that's all you guys


I know, I'm doing that myself. I just thought you were interested in making a web walker.

grats

2011-07-13 02:06:54

From: TomTuff
I know, I'm doing that myself. I just thought you were interested in making a web walker.


yea if you're wanting it for the script I like to make the web walkers

Echo_

2011-07-13 09:42:57

I can't wait until this comes out, I've never really had a high slayer level :p

Good luck :thumbsup:

TomTuff

2011-07-13 22:53:53

I added all the teleports I know of. I may have missed some jewelry teleports, I dont have some of the task reward item teleports (eg Ardy cloak), and I don't have a few of the livid farm teleports, so there are still some missing I'm sure. I also added sorting options. See the most recent version on github to see what teleports are/aren't there. Post if you know I missed one, and the tile too if you can.

Also added sorting functions.

Does anyone want to take anything over that's on the to do list?

TomTuff

2011-07-21 02:00:33

Unless someone who knows what they're doing wants to help out on this, it's being put on hold.

Flight

2011-07-21 02:12:39

Wanna be really awesome and use what you've made already to make a Waterfiend killer for us (me) :)? If we had that, I would see no point in using RsBuddy. I'd like to make the script myself but I just don't know much about NPC combat, and when I tried to make a simple fighter, it was very slow…

I know you of all people would also like a waterfiend killer, because you and I have the most interest in Summoning and we've both made Summoning scripts. ;)

Until then, I think I'd like to work on AntiRandoms and 'maybe' try my hand at making a ZMI-Crafter.

TomTuff

2011-07-24 01:48:45

From: Flight
Wanna be really awesome and use what you've made already to make a Waterfiend killer for us (me) :)? If we had that, I would see no point in using RsBuddy. I'd like to make the script myself but I just don't know much about NPC combat, and when I tried to make a simple fighter, it was very slow…

I know you of all people would also like a waterfiend killer, because you and I have the most interest in Summoning and we've both made Summoning scripts. ;)

Until then, I think I'd like to work on AntiRandoms and 'maybe' try my hand at making a ZMI-Crafter.


Well tbh nothing has been done except outlines and skeletons for information. Although once i save up some gp i'll be making a water fiender, hopefully with a pretty paint and form like my ultimate fletcher :)

pieapple

2011-08-24 22:34:15

: I love all the Group scripts that are kicking off. Synergy is one of SRLs greatest advantages over Java Bots.

i luffs yeww

2011-08-24 23:26:23

I was actually doing some thought into an AIO slayer script lately.. had no clue this existed, which is weird.. May not have access to wherever it was posted (saw another thread, the auto responder one, that I hadn't seen, I don't think). Oh well.

Why color? :< I know I'm usually pro-color, but for something this big.. just seems like a waste.

TomTuff

2011-08-25 00:41:35

From: i luffs yeww
I was actually doing some thought into an AIO slayer script lately.. had no clue this existed, which is weird.. May not have access to wherever it was posted (saw another thread, the auto responder one, that I hadn't seen, I don't think). Oh well.

Why color? :< I know I'm usually pro-color, but for something this big.. just seems like a waste.


I was having issues finding the npcs that are replaced during while guthix sleeps with reflection.

i luffs yeww

2011-08-25 00:46:54

I don't know what you mean at all.

TomTuff

2011-08-25 00:48:11

From: i luffs yeww
I don't know what you mean at all.


Several slayer masters are replaced during a quest, and as such act odd in reflection (idk why).

Brandon

2011-08-25 01:12:38

From: TomTuff
Several slayer masters are replaced during a quest, and as such act odd in reflection (idk why).



what u mean act odd? maybe I can try npc finding? on them :S I use kuradel..

TomTuff

2011-08-25 01:33:24

From: ggzz
what u mean act odd? maybe I can try npc finding? on them :S I use kuradel..


Ref wouldn't find them…

Awkwardsaw

2011-08-25 09:28:26

From: TomTuff
Ref wouldn't find them…


Besides, since ref doesnt have models(last i checked, which was about a month ago :p), color would be most efficient for npc finding

i luffs yeww

2011-08-25 13:56:40

iirc, there is some model detection in ref2. If not now, there's some work done at least, afaik.

I've been, and will continue to work on this. :)

Brandon

2011-08-25 15:27:06

From: TomTuff
Ref wouldn't find them…


Found Spria
NPC ID: 8480
NPC Name: null
NPC Tile: (2932, 3536)
NPC Height: 945
Successfully executed.

Found Kuradel
NPC ID: 9085
NPC Name: Kuradel
Successfully executed.

Found Lapalok
NPC ID: 8483
NPC Name: null
NPC Tile: (2870, 2981)
NPC Height: 799
Successfully executed.
Notice the NPC Name: null?? Yeah the ones that were changed from the quest were changed to null… They are just null NPC's they are still NPC's though and can still be found.
Pretty sure u can do the rest now that u know they're null.. I did the ones u said couldn't be found.. well I did the quest already so I can't get the ID's of the alter ego ones.. the originals but I got the ones after the quest.

I Used this to find and check them:


program new;
{.include SRL\SRL\misc\SMART.SCAR}
{.include SRL\SRL.scar}
{.include reflection2\reflection.simba}
{.include SRL\SRL\Misc\PaintSmart.SCAR}

Procedure FindKuradel;
var
Kuradel: TNPC;
begin
if(R_FindNPC(9085, false, Kuradel)) then
begin
writeln('Found Kuradel');
writeln('NPC ID: ' + tostr(Kuradel.ID));
writeln('NPC Name: ' + Kuradel.Name);
writeln('NPC Tile: ' + tostr(Kuradel.Tile));
writeln('NPC Height: ' + tostr(Kuradel.Height));
end;
end;

Procedure FindSpria;
var
Spria: TNPC;
begin
if(R_FindNPC(8480, true, Spria)) then
begin
writeln('Found Spria');
writeln('NPC ID: ' + tostr(Spria.ID));
writeln('NPC Name: ' + Spria.Name);
writeln('NPC Tile: ' + tostr(Spria.Tile));
writeln('NPC Height: ' + tostr(Spria.Height));
end;
end;

Procedure FindLapalok;
var
Lapalok: TNPC;
begin
if(R_FindNPC(8483, true, Lapalok)) then
begin
writeln('Found Lapalok');
writeln('NPC ID: ' + tostr(Lapalok.ID));
writeln('NPC Name: ' + Lapalok.Name);
writeln('NPC Tile: ' + tostr(Lapalok.Tile));
writeln('NPC Height: ' + tostr(Lapalok.Height));
end;
end;

Procedure DumpNPCs;
var
Dumped: TNPCArray;
I: Integer;
begin
Dumped:= R_GetAllNPCs(false);
For I:= 0 To High(Dumped) do
begin
if(Dumped[I].Name = 'null') then
writeln('Found Null NPC''s, One may be our Slayer Master');
writeln('Name: ' + Dumped[I].Name + ' ID: ' + ToStr(Dumped[I].ID));
writeln('');
writeln('');
end;

Dumped:= R_GetAllNPCs(true);
For I:= 0 To High(Dumped) do
begin
writeln('NPC''s That aren''t NULL; One may be our Slayer Master');
writeln('Name: ' + Dumped[I].Name + ' ID: ' + ToStr(Dumped[I].ID));
writeln('');
writeln('');
end;
end;



begin
Smart_Server := 131;
Smart_Members := True;
Smart_Signed := True;
SetupSRL;
if not(RSReady)then
Repeat
wait(5000);
Until(RSReady);
cleardebug;
DumpNPCS;
FindKuradel;
FindSpria;
FindLapalok
end.

Only way I see the above not working is if the Originals have the same ID as the ones after the quest.. then u'd actually have to use models or colour to find them..

Awkwardsaw

2011-08-25 16:51:05

exactly. Color works perfect for finding an npc, models could also be added :p

There's no point in using reflection for some, and color for others

i luffs yeww

2011-08-25 18:25:33

I'm quite impressed with reflection2, really. Hardly messed with at last night, but I was very easily able to do everything I needed very simply.

Great work to everyone involved (not that they'll see this most likely, but oh well).

Point is, I do believe I will be using mostly reflection for this.. I can hardly think of any reason to use color, so I won't be doing much/any work with it. Still leaving the hue/sat/color/etc. pieces in for the masters, though.. may add them for the monsters as well, but that'd be a hassle (also have an idea I mentioned to Cohen for color finding if anyone wants to work on color finding).