General Movement Waypoints
Forum rules
Only post additional bot resources here. Please do not ask unrelated questions.
Only post additional bot resources here. Please do not ask unrelated questions.
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
General Movement Waypoints
Hiyas,
Just creating this topic to share some of my general movement waypoints (running from location to location) in case anyone else actually finds any of this useful - I use RomBot slightly differently from most people in that I use it to run the game for me while I play (runs from from place to place etc) via a windows form client that talks to MM via a UDP connection. I have some of the areas in various zones mapped out (the ones I use anyway).
My application tracks where the character is and keeps a 'nearest waypoint' indicator (along with a crappy map I plot). What this lets me do is say things like:
* I want to go to the nearest: mailbox, AH, Housemaid, Bank, PetVendor, Vendor
* I want to go to a specific waypoint (e.g. Dog and Fly Daileys waypoint)
It then builds a waypoint file called newWP.xml and tells MM to load this new waypoint file and execute it. Which results in my character running to the specific location.
Because I have included teleport links, it is able to generate waypoints that use the transporters (including the one to Dalanis even tho I haven't unlocked that one yet - the npc is just invisible until unlocked). I'll just post some of the more generic / useful ones in the following posts.
Just creating this topic to share some of my general movement waypoints (running from location to location) in case anyone else actually finds any of this useful - I use RomBot slightly differently from most people in that I use it to run the game for me while I play (runs from from place to place etc) via a windows form client that talks to MM via a UDP connection. I have some of the areas in various zones mapped out (the ones I use anyway).
My application tracks where the character is and keeps a 'nearest waypoint' indicator (along with a crappy map I plot). What this lets me do is say things like:
* I want to go to the nearest: mailbox, AH, Housemaid, Bank, PetVendor, Vendor
* I want to go to a specific waypoint (e.g. Dog and Fly Daileys waypoint)
It then builds a waypoint file called newWP.xml and tells MM to load this new waypoint file and execute it. Which results in my character running to the specific location.
Because I have included teleport links, it is able to generate waypoints that use the transporters (including the one to Dalanis even tho I haven't unlocked that one yet - the npc is just invisible until unlocked). I'll just post some of the more generic / useful ones in the following posts.
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Varanas Snoop to Robbie Butcher - Fly / Dog daileys NPC
I use this one a lot so I don't have to use transport runes etc due to laziness.
I use this one a lot so I don't have to use transport runes etc due to laziness.
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 01 --><waypoint x="2296" z="1154" type="RUN" tag="Varanas Snoop">
player:target_NPC(111256); sendMacro("ChoiceOption(8)");waitForLoadingScreen(30);
</waypoint>
<!-- # 02 --><waypoint x="-6346" z="-3887" type="RUN" tag="Coast of Opportunity Snoop">
player:target_NPC(118002); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 03 --><waypoint x="42" z="-1155" type="RUN" tag="Lyonside Transporter">
player:target_NPC(118020); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 04 --><waypoint x="-7414" z="1191" type="RUN" tag="Desert Investigation Post Transporter">
player:target_NPC(118020); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 05 --><waypoint x="-3" z="5025" type="RUN" tag="Fangers Makeshift Camp Transporter">
player:target_NPC(118020); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 06 --><waypoint x="982" z="13357" type="RUN" tag="Ruins Research Snoop">
player:target_NPC(118002); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 07 --><waypoint x="12874" z="1955" type="RUN" tag="Transporter Jinners Camp">
player:target_NPC(118020); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 08 --><waypoint x="6778" z="6313" type="RUN" tag="Frontline Camp Transporter"></waypoint>
<!-- # 09 --><waypoint x="6356" z="6178" type="RUN" tag="50"></waypoint>
<!-- # 10 --><waypoint x="6333" z="6111" type="RUN" tag="51"></waypoint>
<!-- # 11 --><waypoint x="6176" z="5562" type="RUN" tag="52"></waypoint>
<!-- # 12 --><waypoint x="6209" z="5420" type="RUN" tag="53"></waypoint>
<!-- # 13 --><waypoint x="6413" z="5441" type="RUN" tag="Dog and Fly Daileys"></waypoint>
</waypoints>
Last edited by BillDoorNZ on Sun Nov 06, 2011 7:46 pm, edited 2 times in total.
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Varanas Snoop to outside DOD
This one can probably do with some more attention around getting into the Dalanis Sewers themselves as sometimes due to deviations from the WP the character doesn't get teleported into the sewers.
This one can probably do with some more attention around getting into the Dalanis Sewers themselves as sometimes due to deviations from the WP the character doesn't get teleported into the sewers.
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 01 --><waypoint x="2296" z="1154" type="RUN" tag="Varanas Snoop">
player:target_NPC(111256); sendMacro("ChoiceOption(3)");waitForLoadingScreen(30);
</waypoint>
<!-- # 02 --><waypoint x="-20460" z="6507" type="RUN" tag="Dustbloom Snoop"></waypoint>
<!-- # 03 --><waypoint x="-20783" z="6209" type="RUN" tag="Battle Transporter">
player:target_NPC(110530); sendMacro("ChoiceOption(4)");waitForLoadingScreen(30);
</waypoint>
<!-- # 04 --><waypoint x="-21988" z="3654" type="RUN" tag="Mercenary Transporter"></waypoint>
<!-- # 05 --><waypoint x="-21907" z="3793" type="RUN" tag="90 - (-21907, -166, 3793)"></waypoint>
<!-- # 06 --><waypoint x="-21554" z="4038" type="RUN" tag="91 - (-21554, -167, 4038)"></waypoint>
<!-- # 07 --><waypoint x="-21486" z="4105" type="RUN" tag="94 - (-21486, -166, 4105)"></waypoint>
<!-- # 08 --><waypoint x="-21318" z="4357" type="RUN" tag="95 - (-21318, -212, 4357)"></waypoint>
<!-- # 09 --><waypoint x="-21019" z="4561" type="RUN" tag="96 - (-21019, -211, 4561)"></waypoint>
<!-- # 10 --><waypoint x="-20749" z="4357" type="RUN" tag="97 - (-20749, -168, 4357)"></waypoint>
<!-- # 11 --><waypoint x="-20613" z="4195" type="RUN" tag="Port to Dalanis">
player:target_NPC(114777); sendMacro("ChoiceOption(2)");waitForLoadingScreen(30);
</waypoint>
<!-- # 12 --><waypoint x="-4639" z="7600" type="RUN" tag="Portal to OS"></waypoint>
<!-- # 13 --><waypoint x="-4481" z="7587" type="RUN" tag="104 - (-4481, 81, 7587)"></waypoint>
<!-- # 14 --><waypoint x="-4407" z="7105" type="RUN" tag="105 - (-4407, 94, 7105)"></waypoint>
<!-- # 15 --><waypoint x="-4403" z="6854" type="RUN" tag="106 - (-4403, 80, 6854)"></waypoint>
<!-- # 16 --><waypoint x="-4224" z="6328" type="RUN" tag="107 - (-4224, 85, 6328)"></waypoint>
<!-- # 17 --><waypoint x="-4123" z="6024" type="RUN" tag="108 - (-4123, 67, 6024)"></waypoint>
<!-- # 18 --><waypoint x="-3762" z="6041" type="RUN" tag="109 - (-3762, 67, 6041)"></waypoint>
<!-- # 19 --><waypoint x="-3385" z="6228" type="RUN" tag="110 - (-3385, 57, 6228)"></waypoint>
<!-- # 20 --><waypoint x="-3257" z="6340" type="RUN" tag="111 - (-3257, 59, 6340)"></waypoint>
<!-- # 21 --><waypoint x="-3139" z="6510" type="RUN" tag="112 - (-3139, 57, 6510)"></waypoint>
<!-- # 22 --><waypoint x="-2943" z="6771" type="RUN" tag="113 - (-2943, 53, 6771)"></waypoint>
<!-- # 23 --><waypoint x="-2841" z="6925" type="RUN" tag="114 - (-2841, 54, 6925)"></waypoint>
<!-- # 24 --><waypoint x="-2800" z="7248" type="RUN" tag="115 - (-2849, -69, 7248)"></waypoint>
<!-- # 25 --><waypoint x="-2904" z="7237" type="RUN" tag="Outside Dalanis Sewer"></waypoint>
<!-- # 26 --><waypoint x="-2904" z="7237" type="RUN" tag="Teleport into Dalanis Sewer Portal">
waitForLoadingScreen(30)
</waypoint>
<!-- # 27 --><waypoint x="135" z="-820" type="RUN" tag="Inside Dalanis Portal"></waypoint>
<!-- # 28 --><waypoint x="37" z="-894" type="RUN" tag="119 - (37, 869, -894)">
player:target_NPC(115572); sendMacro("ChoiceOption(1)");waitForLoadingScreen(30);
</waypoint>
<!-- # 29 --><waypoint x="1645" z="-4909" type="RUN" tag="Portal out"></waypoint>
</waypoints>
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Central Plaza Teleporter (near Malatina) to Mailbox in Aslan (near GG npc)
I use this one when running mini-games to move from COT/Survival to get to GG NPC.
I use this one when running mini-games to move from COT/Survival to get to GG NPC.
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 01 --><waypoint x="4745" z="-1968" type="RUN" tag="Central Plaza">
player:target_NPC(110726); sendMacro("ChoiceOption(4)"); waitForLoadingScreen(30);
</waypoint>
<!-- # 02 --><waypoint x="2754" z="959" type="RUN" tag="Bridge Teleporter"></waypoint>
<!-- # 03 --><waypoint x="2489" z="1225" type="RUN" tag="27"></waypoint>
<!-- # 04 --><waypoint x="2296" z="1154" type="RUN" tag="Varanas Snoop">
player:target_NPC(111256); sendMacro("ChoiceOption(5)");waitForLoadingScreen(30);
</waypoint>
<!-- # 05 --><waypoint x="-5918" z="2880" type="RUN" tag="Aslan Snoop"></waypoint>
<!-- # 06 --><waypoint x="-5889" z="3056" type="RUN" tag="78"></waypoint>
<!-- # 07 --><waypoint x="-5854" z="3141" type="RUN" tag="76"></waypoint>
<!-- # 08 --><waypoint x="-5817" z="3176" type="RUN" tag="75"></waypoint>
<!-- # 09 --><waypoint x="-5840" z="3262" type="RUN" tag="Mailbox"></waypoint>
</waypoints>
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Outside Dalanis Sewers to Nebular Grey-Eye
I use this on to run to Nebular Grey-Eye to use memento's.
I use this on to run to Nebular Grey-Eye to use memento's.
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 01 --><waypoint x="-2904" z="7237" type="RUN" tag="Outside Dalanis Sewer"></waypoint>
<!-- # 02 --><waypoint x="-2800" z="7248" type="RUN" tag="115 - (-2849, -69, 7248)"></waypoint>
<!-- # 03 --><waypoint x="-2841" z="6925" type="RUN" tag="114 - (-2841, 54, 6925)"></waypoint>
<!-- # 04 --><waypoint x="-2943" z="6771" type="RUN" tag="113 - (-2943, 53, 6771)"></waypoint>
<!-- # 05 --><waypoint x="-3139" z="6510" type="RUN" tag="112 - (-3139, 57, 6510)"></waypoint>
<!-- # 06 --><waypoint x="-3257" z="6340" type="RUN" tag="111 - (-3257, 59, 6340)"></waypoint>
<!-- # 07 --><waypoint x="-3385" z="6228" type="RUN" tag="110 - (-3385, 57, 6228)"></waypoint>
<!-- # 08 --><waypoint x="-3762" z="6041" type="RUN" tag="109 - (-3762, 67, 6041)"></waypoint>
<!-- # 09 --><waypoint x="-4123" z="6024" type="RUN" tag="108 - (-4123, 67, 6024)"></waypoint>
<!-- # 10 --><waypoint x="-4179" z="5635" type="RUN" tag="538 - (-4179, 36, 5635)"></waypoint>
<!-- # 11 --><waypoint x="-4053" z="5203" type="RUN" tag="537 - (-4053, 33, 5203)"></waypoint>
<!-- # 12 --><waypoint x="-4042" z="5074" type="RUN" tag="536 - (-4042, 14, 5074)"></waypoint>
<!-- # 13 --><waypoint x="-4261" z="5050" type="RUN" tag="Thunderhoof Snoop">
player:target_NPC(114353); sendMacro("ChoiceOption(4)");waitForLoadingScreen(30);
</waypoint>
<!-- # 14 --><waypoint x="-6048" z="21508" type="RUN" tag="SJF Snoop">
player:target_NPC(114353); sendMacro("ChoiceOption(4)");waitForLoadingScreen(30);
</waypoint>
<!-- # 15 --><waypoint x="3570" z="31593" type="RUN" tag="NJF Snoop">
player:target_NPC(114353); sendMacro("ChoiceOption(4)");waitForLoadingScreen(30);
</waypoint>
<!-- # 16 --><waypoint x="3015" z="47708" type="RUN" tag="Lymor Desert Snoop"></waypoint>
<!-- # 17 --><waypoint x="2952" z="47767" type="RUN" tag="523 - (2952, 138, 47767)"></waypoint>
<!-- # 18 --><waypoint x="2952" z="47767" type="RUN" tag="524 - (2952, 138, 47767)"></waypoint>
<!-- # 19 --><waypoint x="2910" z="47882" type="RUN" tag="525 - (2910, 148, 47882)"></waypoint>
<!-- # 20 --><waypoint x="2910" z="47999" type="RUN" tag="526 - (2910, 145, 47999)"></waypoint>
<!-- # 21 --><waypoint x="2899" z="48127" type="RUN" tag="527 - (2899, 145, 48127)"></waypoint>
<!-- # 22 --><waypoint x="2899" z="48127" type="RUN" tag="528 - (2899, 145, 48127)"></waypoint>
<!-- # 23 --><waypoint x="2792" z="48206" type="RUN" tag="529 - (2792, 145, 48206)"></waypoint>
<!-- # 24 --><waypoint x="2687" z="48213" type="RUN" tag="530 - (2687, 147, 48213)"></waypoint>
<!-- # 25 --><waypoint x="2580" z="48242" type="RUN" tag="531 - (2580, 148, 48242)"></waypoint>
<!-- # 26 --><waypoint x="2580" z="48242" type="RUN" tag="532 - (2580, 148, 48242)"></waypoint>
<!-- # 27 --><waypoint x="2493" z="48306" type="RUN" tag="533 - (2493, 146, 48306)">player:target_NPC(116627);</waypoint>
</waypoints>
- MiesterMan
- Posts: 543
- Joined: Tue Jul 06, 2010 9:15 pm
- Location: Between the Second and Third Circles of Hell
Re: General Movement Waypoints
I'm a little confused, what is this? Looks interesting though I think I'm more interested in what you designed to record them.
Looking forward to the details!
Looking forward to the details!
My RoM Bot toys:
- Object Viewer: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2619
Teleporter Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2605
Waypoint Finder: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2616
Mail Functions: http://www.solarstrike.net/phpBB3/viewt ... =27&t=2612
Equipment Swapper(TempFixed): http://www.solarstrike.net/phpBB3/viewt ... =27&t=2571
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Ah yes. The complicated part - typical dev
After a heap of fiddling, I wrote a .net (C#) winform app that communicates with MM via 2 udp servers - 1 in the C#app (I call it RomViewer), 1 in MM. Primary motivation was to allow me to play at work with the game window hidden and driven through RomViewer.
I then butchered bot.lua to create my own version that doesn't prompt for a waypoint file, but just puts the bot into Wander mode with a radius of 0 (i.e. allows me to run my character around while it still does everything else its meant to do). Its a rather ugly app, but it does what I need.
Over time I added more code to implement a protocol for conversations between MM and RomViewer. The startup process for RomViewer went something like this:
1) Start the UDP comms server on a specified Port (this matches a few profile settings that have added to my characters profile)
2) Create a tab for each default chat type (World, guild, zone, whisper etc) so that when we get the chat messages from mm (via rocks ingamefunction stuff for monitorings events) we can display them in the appropriate tab.
3) Request the characters inventory and player details (gets displayed on front tab)
4) Send a request to MM via the UDP comms server for the processId and window handle for MM and Client.exe (these are used later so I can hide the windows completely so they are not on the taskbar etc and so I can send keypresses to the game window to run ACS / DIYCE as I can get better performance for combat that way)
5) Request the execution path (execution directory for MM so I can get waypoint dir etc)
Once I had all that working, I created my own version of Waypoints (called GameNodes) so I could create a database of waypoints and join them together for pathing etc. To support that I modded my bot code to send back the players location all the time - this is then used to work out which GameNode the character is closest too. When I press Insert in RomViewer it adds a new GameNode at the current coordinates and links it to the 'last waypoint'.
Basically each GameNode links to 1 or more GameNode(s) and has a list of known objects (NPCS / mailboxes etc) which may also link to other GameNodes via TransportLinks (snoops / transporters)
From all this, I then build a model of the world by creating another set of classes (shown here for the curious):
This stuff is generated when RomViewer starts and it then calculates the shortest route from each waypoint to the various types of objects so that when I want the character to go to a mailbox, it can build a path real fast. This path is then saved to a normal waypoint file and a message is sent to MM to tell it to load that waypoint file and the bot takes over from there
Once I had all that going I created a control to draw the map for me too so I can see whats going on etc and some code to send me back the current object list every now and again.
Then some more code to
* enable editing of the GameNodes
* rebuild the instance nodes from any changes
* enable and disable flyhack,
* use teleport,
* mount up
* send custom rom commands via a textbox. e.g. speed(70) etc.
* some stuff to keep a list of all players whenever they chat in zone/guild etc (does a sendMacro("AskPlayerInfo('playername')").
* display a list of RomObjects (from my db) that are at the current location with an 'interact' button
* display a list of all objects that are nearby (from the CObjectList stuff)
* run a thread in MM to pull back all chats etc and send on to RomViewer and vice versa
* hide/show the MM and Client.exe instance from view and on taskbar.
* send keypresses to Client.exe main window.
* store a set of commonly used custom commands for things as: chatting to housekeepers, summoning pet, feeding pet, turning in dailies, Configuring lootfilter, picking up eggs and cake from egg farmers
After a heap of fiddling, I wrote a .net (C#) winform app that communicates with MM via 2 udp servers - 1 in the C#app (I call it RomViewer), 1 in MM. Primary motivation was to allow me to play at work with the game window hidden and driven through RomViewer.
I then butchered bot.lua to create my own version that doesn't prompt for a waypoint file, but just puts the bot into Wander mode with a radius of 0 (i.e. allows me to run my character around while it still does everything else its meant to do). Its a rather ugly app, but it does what I need.
Over time I added more code to implement a protocol for conversations between MM and RomViewer. The startup process for RomViewer went something like this:
1) Start the UDP comms server on a specified Port (this matches a few profile settings that have added to my characters profile)
2) Create a tab for each default chat type (World, guild, zone, whisper etc) so that when we get the chat messages from mm (via rocks ingamefunction stuff for monitorings events) we can display them in the appropriate tab.
3) Request the characters inventory and player details (gets displayed on front tab)
4) Send a request to MM via the UDP comms server for the processId and window handle for MM and Client.exe (these are used later so I can hide the windows completely so they are not on the taskbar etc and so I can send keypresses to the game window to run ACS / DIYCE as I can get better performance for combat that way)
5) Request the execution path (execution directory for MM so I can get waypoint dir etc)
Once I had all that working, I created my own version of Waypoints (called GameNodes) so I could create a database of waypoints and join them together for pathing etc. To support that I modded my bot code to send back the players location all the time - this is then used to work out which GameNode the character is closest too. When I press Insert in RomViewer it adds a new GameNode at the current coordinates and links it to the 'last waypoint'.
Code: Select all
public class GameNode
{
Vector3 _coordinates;
int _id;
string _name;
List<GameObject> _gameObjects = new List<GameObject>();
Zone _zone;
List<GameNodeLink> _gameNodeLinks = new List<GameNodeLink>();
}
public class GameNodeLink
{
GameNode _target;
string _script;
}
public enum GameObjectType
{
None,
VendorPet,
VendorGeneral,
AuctionHouse,
Bank,
Mailbox,
Housemaid,
Transporter
}
public class GameObject
{
List<GameObjectType> _objectTypes = new List<GameObjectType>();
int _id;
string _name;
List<TransportLink> _transportLinks = new List<TransportLink>();
}
public class TransportLink
{
GameNode _destination;
string _script;
}
public class Zone
{
private int _id;
private string _name;
private List<GameNode> _waypoints = new List<GameNode>();
}
From all this, I then build a model of the world by creating another set of classes (shown here for the curious):
Code: Select all
public class Waypoint
{
public GameNode Node;
public Zone Zone = null;
public Vector3 Coordinates;
public int Id;
public string Name;
public Dictionary<int, WaypointLink> Links = new Dictionary<int, WaypointLink>();
public List<GameObjectType> SupportsObjectType = new List<GameObjectType>();
public Dictionary<GameObjectType, WaypointLink> NearestTypeLinks = new Dictionary<GameObjectType, WaypointLink>();
public Waypoint(Zone zone, Vector3 coordinates, int id, string name)
{
Zone = zone;
Coordinates = coordinates;
Id = id;
Name = name;
}
public Waypoint(GameNode node)
{
Id = node.Id;
Name = node.Name;
Coordinates = node.Coordinates;
Node = node;
Zone = node.Zone;
}
public WaypointLink AddLink(Waypoint destination, LinkStyle stlye)
{
WaypointLink result = new WaypointLink(this, destination, stlye);
Links.Add(destination.Id, result);
return result;
}
public WaypointLink AddLink(Waypoint destination, LinkStyle stlye, string script)
{
WaypointLink result = new WaypointLink(this, destination, stlye, script);
Links.Add(destination.Id, result);
return result;
}
public void SetNearestTypeWaypoint(GameObjectType gameType, WaypointLink link)
{
if (NearestTypeLinks.ContainsKey(gameType)) NearestTypeLinks.Remove(gameType);
NearestTypeLinks.Add(gameType, link);
}
public override string ToString()
{
return Node.ToString();
}
public string ToRomBotXML(int num, string script)
{
string s = "";
if ((script!=null) && (script.Length > 0))
{
s = Environment.NewLine + script + Environment.NewLine;
}
string result = string.Format(" <!-- # {0:00} --><waypoint x=\"{1}\" z=\"{2}\" type=\"RUN\">{3}</waypoint>", num, Coordinates.X, Coordinates.Z, s);
return result;
}
}
public class WaypointLink
{
public Waypoint Source { get; set; }
public Waypoint Destination { get; set; }
public LinkStyle Style { get; set; }
public string Script { get; set; }
public double Distance { get; set; }
public WaypointLink(Waypoint source, Waypoint destination, LinkStyle style)
{
Source = source;
Destination = destination;
Style = style;
if (style == LinkStyle.Walk)
Distance = source.Coordinates.Distance(destination.Coordinates);
else
Distance = 1200;
}
public WaypointLink(Waypoint source, Waypoint destination, LinkStyle style, string script): this(source, destination, style)
{
Script = script;
}
public override string ToString()
{
string source = (Source != null) ? Source.Name : "unknown";
string dest = (Destination != null) ? Destination.Name : "unknown";
return source + " -> " + dest;
}
}
public enum LinkStyle
{
Walk,
Transport
}
public class InteractiveObject
{
public GameObject GameObject;
public List<GameObjectType> ImplementsTypes = new List<GameObjectType>();
public Dictionary<GameObjectType, string> TypeScripts = new Dictionary<GameObjectType, string>();
public Dictionary<Waypoint, WaypointLink> TransportLinks = new Dictionary<Waypoint, WaypointLink>();
public InteractiveObject(GameObject gameObject)
{
GameObject = gameObject;
ImplementsTypes.AddRange(gameObject.ObjectTypes);
}
}
Once I had all that going I created a control to draw the map for me too so I can see whats going on etc and some code to send me back the current object list every now and again.
Then some more code to
* enable editing of the GameNodes
* rebuild the instance nodes from any changes
* enable and disable flyhack,
* use teleport,
* mount up
* send custom rom commands via a textbox. e.g. speed(70) etc.
* some stuff to keep a list of all players whenever they chat in zone/guild etc (does a sendMacro("AskPlayerInfo('playername')").
* display a list of RomObjects (from my db) that are at the current location with an 'interact' button
* display a list of all objects that are nearby (from the CObjectList stuff)
* run a thread in MM to pull back all chats etc and send on to RomViewer and vice versa
* hide/show the MM and Client.exe instance from view and on taskbar.
* send keypresses to Client.exe main window.
* store a set of commonly used custom commands for things as: chatting to housekeepers, summoning pet, feeding pet, turning in dailies, Configuring lootfilter, picking up eggs and cake from egg farmers
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Main screen (not connected as rom is undergoing maint)
Node manager
Editing a link in node manager
Map
Node manager
Editing a link in node manager
Map
Re: General Movement Waypoints
This is a really nice work Bill!
I'm trying to do the same just with LUA scripts and commands sent from the game (using LUA and MySQL). But it looks your project is a way better, do you need help?
I'm trying to do the same just with LUA scripts and commands sent from the game (using LUA and MySQL). But it looks your project is a way better, do you need help?
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
heh, I can updload the code at some point, its just terribly hacky atm (organically grown as it is) and there are a few'issues'.
- mainly on the design side of course (not so great decisions about how to implement something)
I might work on getting the code into a stable / readable / useable state and host it via SVN somewhere and let you know.
- mainly on the design side of course (not so great decisions about how to implement something)
I might work on getting the code into a stable / readable / useable state and host it via SVN somewhere and let you know.
Re: General Movement Waypoints
BillDoorNZ wrote:heh, I can updload the code at some point, its just terribly hacky atm (organically grown as it is) and there are a few'issues'.
- mainly on the design side of course (not so great decisions about how to implement something)
I might work on getting the code into a stable / readable / useable state and host it via SVN somewhere and let you know.
Cheers!
For my part, i'm stuck
-
- Posts: 446
- Joined: Wed Aug 03, 2011 7:37 pm
Re: General Movement Waypoints
Source code is all at
Code: Select all
http://romviewer.googlecode.com/svn/trunk
Who is online
Users browsing this forum: No registered users and 1 guest