RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

XmlSpawner2

ArteGordon

Wanderer
XmlSpawner2 v3.11

XmlSpawner2
v3.11
RunUO 1.0 version
updated 6/14/05
ArteGordon

Summary:

A spawn control system supporting sophisticated conditional spawn triggering, individual customization of spawns and their drops, spawn/item/mob search utilities, offline visual spawn editing, and systems for stealable rares, doom rares, interactive npcs, functional attachments, mob factions, pvp points/duels/games, custom special attacks, socketed items/creatures, and quests.

Recent Updates:
New to version 3.11
updated 6/14/06

- added support for proximity triggering by non-player npcs. Setting the new AllowNPCTrig property on the spawner to true will allow it to be triggered by both players and non-player npcs.
NPC proximity triggering is configured the same as regular player proximity triggering by setting the ProximityRange and the other optional triggering controls such as SpawnOnTrigger or even things like SpeechTrigger (when used with xmlquestnpcs that can generate actual speech), or the PlayerTrigProp property to test for properties on the triggering npc just as it used to for players.

- a small change to the XmlDialog attachment that allows it to be reset by setting the DoReset property via an Action field in XmlDialog entries (thanks to Vladimir for the idea). This allows the use of an action such as

SETONTHIS/doreset/true

to allow the xmldialog to become immediately available for reactivation without having to wait for it to timeout from the last player.

- added a new IgnoreCarried flag to xmldialog entries that will allow them to ignore the Trigger/NoTriggerOnCarried settings that normally control their activation (thanks to Vladimir for the idea). Previously, if the Trigger/NoTriggerOnCarried fields were set then all speech-dependent entries required that condition to be satisfied before they could be activated. In the [xmledit gump, the flag can be toggled by checking the new IgnoreCar box.

This will allow you to set up entries that you want to keep separate from the main triggering conditions.

- added a check to xmldialogs to prevent assigning invalid speechhue values (greater than 37852) that could cause client crashes.

- added the new spawn position control keywords #DXY,dx,dy[,dz] and #XY,x,y[,z].

#DXY will place the spawn at the specified delta xy coordinates relative to the spawner location.
#XY will place the spawn at the specified absolute xy coordinates.

For example, the spawn entries

#DXY,2,3 ; orc
#XY,5441,1700 ; troll

would spawn an orc at a location relative to the spawner and a troll at an absolute location.

- fixed a problem in referring to mobile or item type properties when assigning other mobile or item type properties. Mobile or Item type properties that return the name as well as the serial numbers of the target were not being properly parsed that caused examples like masterhelper.xml not to work. So spawn entries like

SETONSPAWN,1/combatant/GETONSPAWN,2,combatant

will now work properly.

- added the ability for [xmlfind to search spawners based on the type of objects being spawned and not just the spawner entry string itself. By specifying the search type as either 'xmlspawner' or 'spawner' and checking the new 'type' checkbox next to the 'entry' field, the entry string will be treated as the type of the spawn entry to be found instead of just a string to be matched against the spawn entry.
With both the entry and type boxes checked, the search will find all spawners that contain entries that are of the the specified type. So to find all spawners with vendors on them, specify an entry field of 'basevendor'.
This will work for both xmlspawners and regular distro spawners.

finding all spawners with baseweapon type spawn entries


- fixed a possible [xmlfind search results gump display synchronization problem. This may have produced garbled text or lost client connections when displaying search results under certain conditions. (thanks to LowCastle and CEO for pointing this out).

- added a new attachment called XmlDeathAction. This attachment, when applied to a creature allows any spawnable action to be performed on the creatures death. (thanks to Syntria for the idea). This could include sending the killer a gump or a message, adding items to the corpse, spawning another creature, etc. (the killer is considered to be the trigger mob in these actions).
An example of these applications is included in deathaction.xml in xmlextras.zip. Just "[xmlloadhere deathaction.xml" and start killing the creatures to see what happens.
For example, with this spawn entry

harpy/ATTACH/<xmldeathaction/action/@GUMP,Harpy be gone,0/Congratulations! You killed a harpy.

killing the harpy gives you this


You must perform xmlspawner installation step #2 for this attachment to work.

- added the XmlAddTithing attachment which is just like the XmlAddFame, or XmlAddKarma attachments but for tithing points.

- fixed a problem with TalkingBaseEscortable destinations that were not being properly restored after server restarts (thanks to EtraDor for pointing this out).

- added the 'stafflevel' property of the staffcloak (or any other item) to the protected property list that blocks any attempt to set it via xmlspawner to prevent possible exploits (thanks to snicker7 for pointing that out).

- spawn entry strings displayed in the properties list on mouseover of the spawner crystal are now truncated at 20 chars. This improves the appearance and avoids any problems the client might have trying to display extremely long spawn entries.

Description:

see xmlspawner2.txt in xmlspawner2-support.zip for details and complete changelog.

Spawning System Features:

- spawn items and mobiles.

- spawn in containers.

- spawn stacked items.

- add items to spawned mobiles packs.

- spawnrange (how far they spawn) and homerange (how far they wander).

- spawn objects that require arguments to their constructors, such as runic hammers, or doors.

- set properties on any spawn without having to make script modifications.

- add items to spawned mobs backpacks without having to make script modifications.

- probabilistic spawning that can be used to implement rare mob spawns, such as a single spawn that you have to kill on average some number of times to get a rare named spawn to appear.

- time-limited spawns, such as rares that only appear for a certain amount of time.

- sequential champ-like spawning that advances by killing spawns.

- spawning in regions.

- linked spawning of multiple spawn entries using subgrouping.

- spawn on difficult surfaces such as multilevel tables/floors and water by adding a leading '*' to the spawn entry.

- control spawning location and selection with control keywords #XY, #DXY, #XFILL, #YFILL, #EDGE, #PLAYER, #WAYPOINT, #RELXY, #CONDITION

- special keywords can be used in spawning for control or effects:

- value keywords: RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL

- control keywords: WAITUNTIL, IF, WHILE, and GOTO

- action keywords: ADD, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, SOUND, GUMP, DESPAWN, DELETE, ANIMATE, OFFSET

- loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL

- access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, PLAYERSINRANGE, TRIGSKILL

- spawner triggering by: player proximity, speech, player skill use, players carrying specific items, items or mobiles that have certain properties such as open doors or injured mobs, time of the day.

- automatic relocation of inaccessible spawns.

- "SmartSpawning" which allows spawners to automatically and transparently remove and restore spawns based on player proximity, reducing save times and mobile load.

Quest System Features:

- make complex multiple-objective quests ingame without any scripting.

- players can have multiple quests running at the same time.

- allow playermade quests that can be constructed by players and given to other players for things such as guild events.

- supports the following quest objective types: KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED

- construct interactive npc conversations using the [xmledit command.

- control whether and how often quests can be repeated.

- quests can be assigned difficulty levels that are used to give out quest points on completion of the quest.

- players can be ranked by quest points. These shardwide rankings can be displayed using the [questranking command or saved to html for web display.

- quest rewards can be purchased using quest credits.

Support Features:

- searching/sorting for spawners/items/mobiles with the "[xmlfind" utility.

- creating interactive dialog objects/mobs ingame with the "[xmledit" utility.

- rapidly adding and configuring spawners and their spawns with the "[xmladd" utility.

- track down any spawn using the "goto" button in the spawner gump

- saving and loading of spawn files with [xmlsave, and [xmlload.

- import .map and .msf format spawn files with the "[xmlimportmap" and "[xmlimportmsf" utilities.

- export and import existing standard distro spawners using the [exportspawner and [importspawners commands.

Addon Systems:

The following additional optional addon systems are also available:

The Spawn Editor 2 visual spawn editing/mapping program can be found here Spawn Editor 2

The XmlPoints addon can be found here XmlPoints system

The XmlMobFactions addon can be found here XmlMobFactions system

The XmlCustomAttacks addon can be found here XmlCustomAttacks system

The XmlSockets addon can be found here XmlSockets system

The PlayerRangeSensitiveMod provides the benefits of having PlayerRangeSensitive=false with virtually none of the server load. PlayerRangeSensitiveMod .

Additional Links:

godfood's XmlSpawner support forum
XmlSpawnerFan forum

Tryings beginners tutorial
Beginner's tutorial

Gator81's custom gauntlet with helpful walkthrough of setting up object-triggered spawners.
http://runuo.com/forums/showthread.php?t=50444

Eymerich's beginners guide to quest making. (thanks to DrussRob for the html rewrite)
Beginner's quest guide

LordHogFred's xml posts.
Diablo 2 quests
Halloween spawns

benchmarking information on spawner memory use.
http://runuo.com/forums/showpost.php?p=448568&postcount=1078

Installation:

The installation packages are available at XmlSpawnerFan forum

The are also mirrored here Orbsydia mirror
 

ArteGordon

Wanderer
updated to version 2.74

from the changelog

New to Version 2.74
updated 1/22/05

- IMPORTANT: this version contains modifications that are specific to RunUO 1.0.0

- modified questholder and questnote items to allow them to be spawned into containers in the world.

- added support for use of hex values (values with the format 0x#####) in property tests.

- added support for use of item/mob serial values in property tests and assignments. This allows, for example, the use of [xmlfind to find objects by serial number using the serial=0x##### property test.

- additional optimization to smartspawning. Now, only the individual objects with the HoldSmartSpawning property set to true will be restricted from smartspawning instead of the entire spawner being restricted. This allows further reduction in mob count when using smartspawning. The amount of improvement depends on how many mobs were defined with the HoldSmartSpawning property.

- added a "Goto" button on the spawner gump to replace the "Close" button (which was redundant with right click to close the spawner gump). This will teleport you to the location of the spawner.

- added a range test (default 2 tiles) to use of the simple and timed switch items. (thanks to aka Reu for the suggestion).

- calls to the the OnSpawned method have been replaced with the 1.0.0 OnAfterSpawn method that is now part of the standard distribution. OnAfterSpawn is invoked at the same point during spawning as OnSpawned was - after placement but before any spawn entry property modifications.

- support for the OnAfterSpawned method has been removed.

- support has been added for the 1.0.0 OnBeforeSpawn method that is called after spawn creation but before spawn placement. This also provides support for the 1.0.0 Paragon system.

- new 1.0.0 installation instructions have been added (basically the same as the RC0 instructions but with updated line numbers based on the 1.0.0 files).

- modified 1.0.0 versions of container.cs and stealing.cs have been added to support the stealable rares system under 1.0.0
 

ArteGordon

Wanderer
Just a quick note about XmlSpawner2 and upgrading to 1.0.0

I dont know of any current XmlSpawner2 issues in upgrading from RC0 to 1.0.0

You should be able to drop your previous XmlSpawner2 installation into 1.0.0 and bring the new server up with your spawns using any previous worldsave.

The 1.0.0 installation steps will need to be followed to activate the additional support features under 1.0.0

The primary reason I would recommend updating any current XmlSpawner2 installation to version 2.74 is for support of the new Paragon system.
 

A_Li_N

Knight
Hey ArteGordon...I read through your Instructions.txt and did all the changes and it all works...just thought I'd share the very few 'adendums' I found that you might want to take a look at.

Take a look at the attached txt file...

*Downloads the other XML packs*
 

ArteGordon

Wanderer
thanks! being coherent at 5am after getting back from coast to coast trip is always a challenge.
Let me know if you find anything else.
 

ArteGordon

Wanderer
there is one little bug in the spawner gump that cropped up in the latest version. When I added the new "goto" button, I accidentally used a button ID that was already being used by the increment spawn button (the little up arrow) for the first spawn entry.

Because of that conflict, at the moment you cant increment the first entry using the arrow.

I'll post the update for that shortly after I double check for anything else that I might have overlooked.
 

ArteGordon

Wanderer
updated to version 2.74a

this is just a fix to the gump bug I just mentioned.

from the changelog

updated 1/22/05
- fixed a bug in the spawner gump that prevented the increment-spawn arrow button from working on the first spawn entry.

- fixed a few typos in the installation notes. (thanks to A Li N for pointing them out).

If you have already downloaded the package, no need to reload everything, you only need to get the updated XmlSpawnerGumps.cs file in xmlspawner2-v274a-1of2.zip
 

ArteGordon

Wanderer
it does not include any pre-spawned maps. The only spawns that are included are the examples and the doom rares.
You can import world spawn maps from some of the existing world spawn packages like cwards or Nerun's if you like.

The emphasis is really on customization of spawns, in terms of tweaking stats for individual spawns, tweaking drops, spawn probabilities, etc. as well as spawn triggering conditions.
 

Brazen

Wanderer
Could SOMEONE please post their XML file with standard OSI world spawns for each facet? Goodness knows how easy it is to generate the file with Arte's Awesome system. Seems a real shame for people to have to wait for some other spawner system's file to go up when this one generates it's own. MANY thanks in advance from one and all wishing to start their new world fresh.

Brazen
Admin : A' Ciotach As Dan
 

Seven

Sorceror
The thing is that its hard to implement pre-exsiting spawns when only neruns exsits.
cward hasn't released felucca yet which is the main one i need.

The problem with neruns is that it isn't really accurate. Most of the time things are spawning in the wrong places. -I'm not sure if nerun has fixed this problem-
 

Liam

Sorceror
After installing, I receive the following errors:

Scripts: Compiling C# scripts...failed (6 errors, 5 warnings)
- Warning: Scripts\Custom\Neruns Distro\Samurai Empire\Scripts\Customs\New\Mobi
les\SE Monsters\YomotsuElder.cs: CS0162: (line 15, column 19) Unreachable code d
etected
- Warning: Scripts\Custom\Pheonix\TicketTrash.cs: CS0183: (line 93, column 30)
The given expression is always of the provided ('Server.Item') type
- Warning: Scripts\Custom\Pheonix\TicketTrash.cs: CS0183: (line 259, column 30)
The given expression is always of the provided ('Server.Item') type
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5090, colu
mn 29) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5109, colu
mn 29) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5124, colu
mn 21) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5136, colu
mn 17) 'Server.Item' does not contain a definition for 'OnAfterSpawn'
- Error: Scripts\Custom\Xmlspawner2\XmlSpawner2.cs: CS0117: (line 7293, column
37) 'Server.Mobile' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\XmlSpawner2.cs: CS0117: (line 7320, column
37) 'Server.Mobile' does not contain a definition for 'OnAfterSpawn'
- Warning: Scripts\Custom\motd.cs: CS0183: (line 322, column 47) The given expr
ession is always of the provided ('Server.Mobiles.PlayerMobile') type
- Warning: Scripts\Custom\motd.cs: CS0219: (line 369, column 8) The variable 'l
ine' is assigned but its value is never used
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.


Help? :)

Thanks for pointing me to the proper forum Arte :)


Edit:
I have installed just the two required zips. I did not install the supporting scripts just yet.
 

ArteGordon

Wanderer
Liam said:
After installing, I receive the following errors:

Scripts: Compiling C# scripts...failed (6 errors, 5 warnings)
- Warning: Scripts\Custom\Neruns Distro\Samurai Empire\Scripts\Customs\New\Mobi
les\SE Monsters\YomotsuElder.cs: CS0162: (line 15, column 19) Unreachable code d
etected
- Warning: Scripts\Custom\Pheonix\TicketTrash.cs: CS0183: (line 93, column 30)
The given expression is always of the provided ('Server.Item') type
- Warning: Scripts\Custom\Pheonix\TicketTrash.cs: CS0183: (line 259, column 30)
The given expression is always of the provided ('Server.Item') type
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5090, colu
mn 29) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5109, colu
mn 29) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5124, colu
mn 21) 'Server.Item' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\BaseXmlSpawner.cs: CS0117: (line 5136, colu
mn 17) 'Server.Item' does not contain a definition for 'OnAfterSpawn'
- Error: Scripts\Custom\Xmlspawner2\XmlSpawner2.cs: CS0117: (line 7293, column
37) 'Server.Mobile' does not contain a definition for 'OnBeforeSpawn'
- Error: Scripts\Custom\Xmlspawner2\XmlSpawner2.cs: CS0117: (line 7320, column
37) 'Server.Mobile' does not contain a definition for 'OnAfterSpawn'
- Warning: Scripts\Custom\motd.cs: CS0183: (line 322, column 47) The given expr
ession is always of the provided ('Server.Mobiles.PlayerMobile') type
- Warning: Scripts\Custom\motd.cs: CS0219: (line 369, column 8) The variable 'l
ine' is assigned but its value is never used
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.


Help? :)

Thanks for pointing me to the proper forum Arte :)


Edit:
I have installed just the two required zips. I did not install the supporting scripts just yet.

looks like you are not using RunUO 1.0.0

RC0 and earlier distributions do not have the OnBeforeSpawn or OnAfterSpawn methods defined for Item or Mobile classes.

Those are the 1.0.0-specific references that I mentioned in the changelog notes.

If you still want to proceed with a non-1.0.0 installation you could just comment out those references.
Of course, I would recommend upgrading. I just finished moving my shard over from RC0 to 1.0.0 and it went without a hitch, and the improvements in performance are quite noticeable.
 

daat99

Moderator
Staff member
Brazen said:
Could SOMEONE please post their XML file with standard OSI world spawns for each facet? Goodness knows how easy it is to generate the file with Arte's Awesome system. Seems a real shame for people to have to wait for some other spawner system's file to go up when this one generates it's own. MANY thanks in advance from one and all wishing to start their new world fresh.
I kinda like to join in on his request.
Also can you please give me the exact command that I should type if I want to spawn 1 of the examples you attached in the extras ? I can't seem to make it spawn :(
I'm probably way too tired to figure it out now so I'll be heading ot sleep now and hoping someone will reply and post a full shard xml file while I regain my str :)
 

ArteGordon

Wanderer
to load the examples, you must first place the .xml files either in the top level directory of the RunUO installation (kind of messy), or in a folder named "Spawns" that has been placed in the top level RunUO directory (less messy). These are the two default search locations for .xml spawn files.

Once they are there, you can load them with

[xmlload filename

or

[xmlloadhere filename

[xmlload restores the spawns to their original locations, [xmlloadhere preserves the relative positions of multiple spawners within the file, but centers them on your current location, instead of the original location.

Note that most of the examples were created in Green Acres by default, so if you just do an [xmlload, that is where they will appear.

If you wanted to put them in a folder within the Spawns folder, then just give the path

[xmlload Examples/filename

would search for the the file as Examples/filename, and Spawns/Examples/filename within the RunUO installation directory.
 

Trying

Sorceror
daat99 said:
I kinda like to join in on his request.
Also can you please give me the exact command that I should type if I want to spawn 1 of the examples you attached in the extras ? I can't seem to make it spawn :(
I'm probably way too tired to figure it out now so I'll be heading ot sleep now and hoping someone will reply and post a full shard xml file while I regain my str :)

To "load" any of the extra`s for example use, the files as far as I am aware need to be placed in your "root" of runuo... (where the server.exe is) then your command would be [xmlload questnpc for example...

this will spawn the spawner fully working (normally) in Green Arces.. so you an see what it does...

Trying.

**Edit as above**
 

daat99

Moderator
Staff member
Great :)
ThanX a lot to both of you guys :)
Can you please add a standard monsters spawn pack to this script ?
It looks real great and I want some base spawn to modify instead of making a new spawn from scratch :(
Real great script :)
 

ArteGordon

Wanderer
your best bet is to import maps from Nerun's and/or cwards. As Seven and a few others have mentioned, they arent perfect but between the two of them you can do pretty well. You can use the

[xmlimportmap

and

[xmlimportmsf

commands to do it.
 

daat99

Moderator
Staff member
The originals should be located in the folder where the server.exe file is, right ?
 
Top