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 [RunUO 2.0]

ArteGordon

Wanderer
XmlSpawner2 [RunUO 2.0]

XmlSpawner2
v3.12
RunUO 2.0 version
updated 6/19/06
ArteGordon

Latest News:
- modified versions of container.cs and stealing.cs that support the general STEALABLEs system and deal with the issue of maintained spawner control of spawned items have been added to xmlspawner2-support.zip

- Version 3.12 has been updated with several fixes to run under RunUO 2.0.

- RunUO 2.0 instructions for optional installation steps is now available

- support for importing Nerun's new .map format files has been added.

- The RunUO 2.0 upgrade did not involve significant modification of any system features but I would consider this a beta until all features have been confirmed to function properly.

- XmlSpawner addons are being updated individually. SpawnEditor, XmlSiege, XmlSockets, and XmlCustomAttacks are now available. XmlPoints and XmlMobFactions are being worked on.

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.12
updated 6/19/06

- installation instructions for RunUO 2.0 have been added to xmlspawner2-20-v312-1of3.zip.

- fixed a problem with the main gump not refreshing after editing textentrybooks or when seleting spawns from the addcategorizedobject gump.

- added support for Nerun's new .map format in [xmlimportmap. The [xmlimportmap command will automatically detect new and old formats and import accordingly. You can even import old and new formats at the same time.

- fixed a problem with the TAKE and TAKEBYTYPE keywords not taking the correct amount from stacked items due to the change in the way RunUO 2.0 handles duping.

- changed an argument to the OnArmorHit method used by some attachments for RunUO 2.0 compatibility. This will affect some addons like the CustomAttacks/Defenses system which will be updated with this change as well.

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 XmlSiege addon can be found here XmlSiege 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

Discord's xmlspawner documentation wiki
Discord's xmlspawner docs

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
 

WizardingOne

Sorceror
excellent. I think it would be bad if this was not updated for 2.0, considering half my shard uses the spawners. Thank you very very much.
 

ArteGordon

Wanderer
hehe. well, I'm sure that there will still be things to fix, so it is not done yet, but it does compile and it does spawn, so that's a good first step.
 

ArteGordon

Wanderer
fixed an issue with spawner names that broke some features and examples that looked up spawners by name. 2.0 doesnt allow overriding Name any more so had to work around that.
Updated xmlspawner.cs in xmlspawner2-20-v311a-1of3.zip
 

gotoxy

Wanderer
I did installed it, run perfectly, did a lot a testing, importing msf and map... pretty cool, except that msf cant be import by directories :(

Ok, there we go with my problem:

I dont have access to some command like

[xmlspawnerwipeall

my AccessLevel = Owner

so, whats wrong ;) hehheehh

Im with RunUO 2.0 RC1

Thanks to answer my question.
 

ArteGordon

Wanderer
yeah, I have to go through and check for those. I think most are >= AccessLevel.Administrator, but a few just check ==

I'll have to check the .msf directory import.

(edit)

yeah, its just the old wipe commands. Everything else should already be >= AccessLevel.Administrator

and the .msf directory thing is is not due to 2.0, it is just because I just never coded in directory/subdirectory support for .msf importing (I thought I had). I only added it to .map importing.
 

Discord

Wanderer
Adding a questNPC's dialog to another NPC?

I have built a dialog tree on a questNPC, but would like to take that dialog and apply it to a different NPC I am making, is this possible to do without completely recreating the dialog on the new character?

I saved the original as OldWoman in the SAVE AS part of the xmledit gump, but cannot quite figure out how to call it up or if I can apply it now to another NPC. Any direction would be greatly appreciated.

Thanks - aside from the learning curve for non-scriptors, I love the flexibility of the spawner :)

Dis~
 

ArteGordon

Wanderer
Discord said:
I have built a dialog tree on a questNPC, but would like to take that dialog and apply it to a different NPC I am making, is this possible to do without completely recreating the dialog on the new character?

I saved the original as OldWoman in the SAVE AS part of the xmledit gump, but cannot quite figure out how to call it up or if I can apply it now to another NPC. Any direction would be greatly appreciated.

Thanks - aside from the learning curve for non-scriptors, I love the flexibility of the spawner :)

Dis~

yes, you can apply it to another npc. Actually, you can apply it to any object at all, even things like signs and doors.

To manually apply it, use the [loadnpc command like

[loadnpc OldWoman

and target an npc or object.

To spawn it, you can either use the ATTACH keyword to attach an xmldialog configured with your .npc file like

orc/ATTACH/xmldialog,OldWoman

or, if you are configuring an xmlquestnpc, you can do it like

xmlquestnpc/configfile/OldWoman/loadconfig/true

or

xmlquestnpc/ATTACH/xmldialog,OldWoman

They both end up doing the same thing.
 

Discord

Wanderer
LOL...

Thanks so much for the help Arte - I think I got it now :) On a side note, in an effort to make sense of the 50 page thread and the documentation that comes with the spawner for our staff I have started a document on the spawner. I will not pretend that it is complete, but it is a great deal more detailed than most of the tutorials I have seen to date, so if anyone else wants to make use of its information, please feel free to do so.

As I said, it is not offiliated with Arte or his fabulous spawner, but is meant to help those new to it understand its functionality a bit better.

http://www.grimmwold.com/wiki/index.php?title=Spawner

Dis~
 

ArteGordon

Wanderer
Discord said:
LOL...

Thanks so much for the help Arte - I think I got it now :) On a side note, in an effort to make sense of the 50 page thread and the documentation that comes with the spawner for our staff I have started a document on the spawner. I will not pretend that it is complete, but it is a great deal more detailed than most of the tutorials I have seen to date, so if anyone else wants to make use of its information, please feel free to do so.

As I said, it is not offiliated with Arte or his fabulous spawner, but is meant to help those new to it understand its functionality a bit better.

http://www.grimmwold.com/wiki/index.php?title=Spawner

Dis~

looks great! thanks for making it available. I will add this link to the tutorials and documentation list in the main post and support forum.
 

wensday

Wanderer
arte, you are a pure genius!!! Thank you so much for this updated xml as I love the system and cant wait to get it up and running on my 2.0 test shard and hopefully soon, on my 2.0 shard!
 
Top