Programmatically manipulate mobiles?

djredman99

Citizen
Feb 11, 2020
20
0
1
Ok, so I am becoming more familiar with the code base and the owner capabilities in game. I’ve been spending time with spawners, looking at how quests work, etc.

So, here is something I’d love to figure out how to do, and if not implemented, what code would need to be written to make it possible. Let’s say I have a mobile, and I want to programmatically make them interact with the world for a few minutes. Walk to “that” spot, say something, run in that direction to another specific location, attack another mobile, etc?

For instance, to make a quest more interactive than just a static mobile with a quest gump, you could have an npc mobile ask a playermobile to follow them a short distance and maybe say a few things along the way. You could take the capability of programmatically moving a mobile a long way. Imagine taking a Peerless quest and making it much more of experience than just a small area where a boss spawns.

Something that can be done? I could do what I want through scripting a client, but as I said, I want it to be ordinary mobiles and not players. I’ve started digging into the mobile class and I did not see anything promising.

All comments welcome!
Post automatically merged:

 

Lokai

Moderator
ServUO Developer
Dec 4, 2014
1,323
234
63
Western New York State
Shard Name
Test Center
Donate
Donate money to this user
Waypoints can do the movement part. Perhaps the waypoints can be created as part of the quest. Proximity sensors can make them say things along the way. Proximity spawners can make something appear and attack them during the trip. All of these things are possible with the existing scripts.
 
Jun 24, 2016
170
40
28
34
Xmlspawners are not coding, nor are they stable. While easy, it is not a scalable solution.

On point, what you're asking is very doable, but quite fiddly. You can issue orders and provide destination cords easy enough.
 
  • Haha
Reactions: sahisahi

Ozzer2016

Rookie
Jul 2, 2016
82
15
8
45
As a Learner you should go for the XML route as XML are easy to config and you'l end up with a good result, don't listen to that shady char above :) Can be done in C# but a lot quicker and easier to do it in XML.
Post automatically merged:

XML are normally config files which are good to get used to using, no there not Coding but they are good easy support for he coding.
 

djredman99

Citizen
Feb 11, 2020
20
0
1
But, let's say I want to prevent players from boxing in the NPC with some objects. Can an XMLSpawner deal with that? I know I could in code.

Additionally, if no member of the quest party follows along with the NPC, I can make it stop and prompt the party to follow them again, even return to the party if they go in the wrong direction, etc. When a member of the party is in proximity, it would continue towards it's destination.

You see the robustness and flexibility I am looking for? It would seem like a more straightforward system and less fragile for building an immersive experience if I were to do this is code. How would I easily debug an intricate coordination of many different spawners to understand what is not correct?

To @Anon the Felon 's point, let's scale all of these simple examples I have asked about. I want to take an entire dungeon and turn it into a quest. I would have many NPC mobiles interact with a party, both friendly and enemy, they would fight against the party or fight along side of the party, have the party responsible to protect the friendly mobiles and consequences if they fail to protect them, have them quest through the dungeon with a story line, keeping them on track with the story, adjusting when they get off track...thousands of interactions I have to handle. I feel like I am trying to do too much for the Xmlspawners (granted, I am still new to them).

I get the value of Xmlspawners and being able to create spawn and what I would call simple quests on the fly with the server up an running. I will definitely keep digging into Xmlspawners, but writing scripts in an ingame gump is not a great user experience. I assume I could write just the XML in a file in Visual Studio and load it in?

One thing I am going to try: I've duplicated my own version of a Brigand camp, manipulated the spawned items and mobiles, things they say when someone enters the proximity of camp...simple stuff like that. What I want to try is adding an event handler that will make the spawned mobiles do stuff at specific intervals and/or events. Like if a player mobile is within 1 tile, it would quickly move away a few tiles and say something like, "Hey don't get so close".

... You can issue orders and provide destination cords easy enough.
Could you elaborate a little? Where would I pass my commands from in code to update them in the world or would I need to add my own handler for this as I suggested above?
Post automatically merged:

Post automatically merged:

I have watched many of the videos in that YouTube channel, they definitely have helped me get started with ServUO.

And, that is the best tutorial I have seen on XmlSpawners, thx for providing that!
 
Last edited:

gametec

Squire
Feb 5, 2014
364
65
28
Shard Name
Untitled
I don’t understand why ServUO ever became dependent on a spawner system that is as archaic as the dinosaurs... even Arte Gordon, the original developer of XML Spawner would probably tell you all that you’re crazy for using it. This system isn’t simple at all and requires you to know XML and understand its commands which can, at times, look like long strings of jibberish having to be typed out just to accomplish a task; let’s hope the individual spawner that you are working on doesn’t become corrupted. lol

Suggestion: if you want to use a spawner then do some research and develop your own, or hire someone to make a spawner for you that is more reliable. I use a combination of MegaSpawner (Morexton), GigaSpawner (Updated by Phantom), and MonsterNests (unknown)... these are were all I really need for the projects I had built. The best overall spawner, in my opinion, was always Premium Spawner (Nerun) because it had all accurate spawns to OSI and was not XML dependent.

At the end of the day it’s all based on preference so people who started this hobby on ServUO will inevitably want to use, and be die hard supporters of XML Spawner. While those of us who have been around longer will use alternatives as we see fit.

I think for what you want to do, it is very similar to my “failed” ActionAI project...

I say failed because it utilized the DoAction method and that is very limited. This method will accomplish 90% of what you want as far as walk, follow, guard etc. However if you want a fisherman to fish, a lumberjack to cut trees, a miner to mine metal, or a hunter to kill game then you will need to code all that from scratch; XML Spawner will not help.

All of what I mentioned is doable, but requires a seasoned developer with knowledge of ServUO/ RunUO to get working.

UO is also a very old game. So you will be limited to what you can do with it; ie. Jumping, Swimming, kneeling etc.. can’t do in UO... until someone adds packets, animation, and code to get it working on UOC the custom game client.

However an ActionAI solution is needed to modernize the current game and make it feel like you were playing a game like Skyrim or Fallout 4... I hope this helps a bit.
 
  • Like
Reactions: djredman99