New Adventure Tool Request
Georges,
We were discussing creating the new Adventure zones for LDoN and others that would have multiple versions of each zone, and it made me think that you might be able to incorporate something for it into your NPC Loot Editor. Here is the thread where I brought the idea up at: http://www.eqemulator.net/forums/sho...t=28512&page=2 I haven't made any adventure zones yet, so I don't really know all of the details needed to make them, but here are some ideas about what I think the tool would need to take into consideration for making copies of Adventure zones: 1. Use the NPC Loot Editor to select a zone. 2. Add a new button on the Editor to create a new Version Copy of the zone. 3. Pressing that button would pop up a new window that gives options for creating the version copy. The options I think would be most important off of the top of my head are: A. Field for setting the Zone Version number that the new copy should use. B. Toggle button to give the option to remove loot table IDs from the new copy or to carry over the existing ones. C. Field for setting the level difference for the new zone from the one being copied. This field could either have positive (add levels) or negative (subtract levels) values put into it. When the new copy is created, this is a flat number that all NPCs in the zone will have added or subtracted from their level setting in the original copy. So, if all of the NPCs in the zone are level 20 and you set this field to 10, all of the NPCs in the copied Version of the zone will be level 30 when the copy is created. D. Field for setting a percentage increase/decrease for Min/Max hit if the current value of the NPC is > 0. I think the default for this field should be 100, meaning that the Min/Max hit would be the same for the copy. If this field was set to 50, all NPCs in the copy would have 50% of the Min/Max hit of the NPCs they are being copied from. If this field was set to 200, all of the NPCs in the new copy would have double the Min/Max hit of the original NPCs, and so on. E. Field for setting HP/Mana to a percentage of the original NPCs being copied. This would work the same as the field for Min/Max hit and default would also be 100 for this field. F. Field for setting all remaining stats (STR, STA, Etc, Resists, Attack Rating, Accuracy, Etc) to a percentage of the original NPCs being copied. This too would work like the Min/Max Hit field, and Default would also be 100. Of course, if any of these fields are set to 0, they remain 0 after the change. G. Toggle button for copying all of the NPC pathing Grids for the new spawn groups so they use the same pathing as the originals. Default would be to have it set to use the same grids, but there could be an option to stop it from carrying over the grids. This field is optional, as in almost all cases, I think the grids would be wanted for every copy, so this field is not a priority to have in the tool. Just trying to think of extra possible features for it. H. This one isn't too important to have in the tool, but if possible, it might be nice to have a field for automatically creating new loot table IDs for each Unique loot table ID in the original zone and assign them to the NPCs in the new zone. Basically, if you have 20 NPCs all using the same loot table, the new copy would be using a new loot table ID for all of those same NPCs. Then, the main point of this field is to be able to set coin drop min and max to a percentage of the original loot tables. So, if you are copying NPCs that are level 20 and you want to make the new Version for level 40s, you could have it generate all of the new Loot tables and add double the coin to their loot tables. This way, all of the new loot tables would be there and ready to go and all you would need to do is add in the actual loot. Just trying to cut down time on making the new version copies as much as possible. But, this field is definitely not something that would be required to make the tool extremely helpful. I am sure you are probably pretty busy as always, so if you don't have time to add a feature like this, it is perfectly understandable. I just wanted to make the suggestion in case you get the time and were looking for some new features to make your tools even more feature packed than they already are :) Seems like most of these features would just be writing up some fairly simple queries and then putting them in so the tool can use them as needed. Also, if possible, Cavedude requested that the tool generate an SQL file of the changes that it is making (or trying to make) with the tool, since he doesn't have GUI access on PEQ. Maybe that could be one of the options in the Version Copy window to have a Toggle that is default set to automatically update the database, but also has the option of only generating the SQL to do the edit and not actually editing anything directly. Thanks in advance either way, GeorgeS! |
That sounds like a great challenge - great timing - I just came back from a business trip where I learned some pretty cool sql stuff, so I'm pretty prepared for writing this add-on.
Replication of a zone requires the following workflow (i'm just thinking out-loud) easy parts /1/ Creation of a replicate new zone entry in 'zone' table -- pretty easy. /2/ Assign a new zone-id number in that table, and new shortname moderately hard parts /3/ Find NPC's from the zone - easy query (I already have this one made) /4/ Replicate these NPC's with new id's -easy to do /4a/ Ability to "wipe" zone clean of npc or it's loot - easy Hard part /5/ Find spawngroups from the zone (easy) but create new spawngroups with original npc's - brutal to write, but doable That's the hard part because of the many table dependencies there. I'm confident i can manage the code. New Spawngroups are needed so as to create a distinct, and not a relational copy. Easy /6/ Have it re-use (if needed) grids - easy no issue there /7/ Remove loot table IDs from the new copy or to carry over the existing ones - easy sql I'll prototype this today, and start a progress log. This can definitely be used for any zone, and assist in zone npc building better. GeorgeS |
I want to point out that a zone not nessesrily have to be a COPY of existing zone. It could be a stand alone instance zone which doesn't exist as mundane. It also also not nesesarily may have multyple versions of itself (unlike LDON)
|
Quote:
|
Yeah, since the main thing we need is to make an exact copy of the current zone for use in the same zone, but maybe some different values for stats, I don't think it should be as bad as you think, GeorgeS. The idea to copy spawns to another zone is interesting, but there is no way to really handle the spawn2 locations for 2 separate zones easily. In those cases, it is easy enough to just use #npctypespawn in game and #npcspawn add the new spawns in. We just need exact copies of the current zone as far as spawn points go and then copies of the original NPCs in those spawn points. You could probably just append "v1" or "v2" or whatever version to the end of the existing spawngroup name.
Actually, it might make things more simple if you just made something that does an exact copy of the zone and sets it to be used in the new version, and then the other stats can be modified after the new copies are created. To do the modifications, you could add in a new percentage option for adjusting entire columns. It would be similar to the Propogate/Copy field function you already have, accept it would pop up a window that would let you adjust all fields by adding, subtracting, multiplying, or dividing from the original value in the field. So, if you set it to the divide option (radial button or something), then set it to divide all by 2, each field would be half of what it previously was set to. Of course, it would have to be able to use decimals when dividing or multiplying. But, this option would make it really quick to be able to adjust an entire zone column by column to scale exactly how you want to. It also might make your work a bit easier lol. Thanks in advance as usual, GeorgeS! |
I think I understand this better - and just to clarify , I would need to:
(I'm using an example zone -- mmca, The Forlorn Caverns) (user specified version #1 as a starting source#) (1) Find spawngroups from 'mmca' version#1, (I count 106) , and make copies of these version#1 106 spawngroups. -- Assign a new version # (user specified) into the 'spawn2' table field='version'. (2) Find distinct NPC's in 'mmca' version#1, -- Make copies of those NPC's. -- Insert a version# in the version field. The user will specify which version# to use as a destination. (1-20 already exist in this case). Say the user selects a new version#21 (2a) Place these new npc's in the spawnentry table using the new spawngroup id's made before --modify spawngroup with new spawngroup.id and add a new spawngroup.name --spawn2.version=21, and add spawngroupID to = new 106 spawngroups --spawnentry.spawngroupID set to new 106 spawngroups --spawnentry.npcID change to new NPC's we made before (3) Allow field editing as Trevius mentioned before in main tool I think this looks right. The order of the workflow is/will be determined later, but I already looked at the db structure and see what's going on. GeorgeS |
Yeah, that sounds right to me, but I haven't actually made any extra versions just yet. Cavedude would probably be the best to give the final verification on whether that is all that is needed or not.
One thing that might be worth mentioning is that I think spawning a zone initially will spawn it as version 0. So, you might need to have it copy version 0, or you could just set it to allow you to select which version to create the copy from and which version to save the new copy as. Again, CD would have to verify that to be 100% sure. |
Yep, that's correct.
Version 0 will always spawn, so an option is probably needed to tell the program whether to exclude version 0 entries or not. |
Oh, so if there is a version 0 of spawns in the zone, they will spawn in every instance version? I didn't know that lol. That being the case, it might be nice to also have a way to just change an entire zone to a different version as well. So, you could spawn a zone normally as version 0 with the normal commands and such and then once you are done, just use the tool to change them all over to whatever version number you chose. This would be an extra feature other than what was already listed. This one should be pretty easy though I think as it should just mean finding the mobs in the zone and then changing the version fields for them.
Oh, and that makes me think of another thing that you are probably already aware of, GeorgeS. When searching for the spawns in the zone, we would probably want an option to chose which version of the zone we are searching for, with the default being version 0. |
Yep, you can think of versions like spawn_conditions, except you cannot change them on the fly once the zone is up. Also, a bit off-topic but while I am thinking of it for the time being, spawn_conditions won't work in an instanced zone. I imagine what will happen is it'll work fine in the first version, but once the second version boots the conditions will effect both zones simultaneously.
|
Hmm... if Version 0 of spawns appear no matter what version of a zone you have loaded, and the default is version 0, then making a blank instanced version of a normal zone sounds like it could be rather difficult.
I suppose you could move all of the existing NPCs to Version 1, and load Version 2 when you want your instanced version, but then how do you make sure everyone is always loading Version 1 of a zone when they don't want the instance, instead of Version 0, which would now have no NPCs in it? - Shendare |
I'm sorry, I was mistaken. Version 0 spawnpoints will only spawn in the default (version 0) zone. If you want that particular NPC and spawngroup to spawn in another version, you need to copy the spawn2 entry and set a new version. I was thinking about doors, traps, and objects where they WILL spawn in all versions if set to 0.
|
Ah, now that makes sense.
Thanks for the clarification! - Shendare |
KLS just corrected me, only traps will appear in all versions if set to 0. doors and other object work like NPCs.
|
Cool! The more control, the better, IMO!
- Shendare |
And I even said traps would follow the versioning concept, but hadn't tested it.
|
Here's my progress on this beta version -
NPC and Loot Editor 08.22.04 - Incorporated a Zone & Adventure Editor - under special window menu. This is used for Adventure zone copying and also for normal zones SO, I tested the tool under the PEQ mirc and mmca zones - and it appears to work fine. NPC's are copied as well as spawngroups. There's a function to delete 'old' versions - this will wipe the relevant version NPC, spawngroup,spawn2 and spawnentries. I also tested it for copying a 'normal' zone - such as oasis version '0', and it does it fine. There's no "special" editing of npc stats yet, and as Trevius mentioned, the version# will be included for editing. version # now appears in the last field in the main window. You can filter out the unwanted versions if you want. btw - it's a beta still, and things will break if your there's a missmatch between spawnentry,spawn2 and related NPC's. The program has error checking built in, and whenever an error occurs, I found the best thing to do is delete that version, and figure out why it happened. GeorgeS |
Thanks for working on this tool!
Unfortunately, I've run into a problem. Whenever I work on a new instance, I wipe spawn2, spawnentry, spawngroup, and npc_types so the only data in those tables are the zone I am currently working on. In this case, I have 30 npc_types (all set to version 1), 30 spawngroup entries, 30 spawnentries, and 120 spawn2 entries (all version 1.) The version populates fine in-game, and I am seeing 120 spawnpoints all properly placed. Identify reports: Code:
Version -- 1 exists with 30 NPC'S Code:
Copied NPCid: 248006 To New id: 248112 |
Hi Cavedude, please send me a link to download those related tables that are causing the problem. I'll source these in and take a look.
npc_types spawngroup spawnentry spawn2 I'll know the problem once I take a look at this - and code in fixes. Thanks GeorgeS |
Here you are. Thanks! http://projecteq.net/spawn.sql
|
Ok, I wiped
npc_types spawngroup spawnentry spawn2 then sourced in your 4 tables in the zip - that went fine. With the most recent version of the tool, there's a great deal of debugging built in - Your mmcd zone version 1 will show the following - (I made the version 2 with the tool) Code:
Version -- 1 exists with 30 NPC'S Code:
Copied NPCid: 248006 To New id: 248112 GeorgeS |
Rats, still getting the same exact errors as before. I do however get all OKs on the identify screen. It looks exactly like yours except for the single version. Would you mind sending me your table schema for those 4 tables? That's about the only thing it could be at this point. I reset my auto_increment on spawn2 and spawngroup to no avail, not sure what else it could be.
|
I exported the schema with drop tables before inserts so you can get an exact copy
cavedude_schema.zip Since you report the program reported all 30 spawngroups -were linked ok, it most likely must mean an index problem - as in auto-increment is on. My program looks at the last index then adds 1. Everything created after that uses this index reference, till it's done. If this method does not work, then a last index method needs to be called each time it tries to write data. If it still fails using this exact schema, then I think I will have to rewrite the way I query and write indices. you can quickly check if this works - Code:
SELECT max(id)+1 as nextrecord FROM spawngroup Code:
INSERT INTO spawngroup (id,name) VALUES (51963,"TEST1200"); Thanks for helping, George |
Thank you! I've found my problem, but I am not certain why it's an issue. Before, I was connecting to my MySQL 5.0 database that was being served from a Linux box. It didn't work with my schema or yours despite everything being OK. However, once I moved the database to the same box as the editor, it worked perfectly. I'm not certain if it's a Linux/Windows difference, or the editor just doesn't like connecting to a database on a different host. Either way, it's working great now and I can get back to the grind! Thank you very much for this tool, even in its current state it will save me a TON of time!
|
That's great it works in Windows - I spent a better part of the day working on this and think that differences are capitalization of specific tables. For example "SELECT * FROM Spawnentry" will fail, where "SELECT * FROM spawnentry" should work in Linux. It's fixed in the recent revision.
Anyway - version .07 is the recent one which has more optimisation done. GeorgeS |
Yeah, in linux, everything is case sensitive.
|
Got a chance to try this, it now works perfectly when the DB is hosted on Linux!
|
When trying to copy I'm getting runtime error 3265 "item cannot be found in the collection corresponding to the requested name or ordinal"
Tried several zones, and getting that everytime. Any ideas? |
Bah sorry can't edit...I just realized I'm getting this error with the latest version of the tool trying to pull up any zones. I'm not completely sure what version I had before(think it was .03) but it was working fine.
|
Sorry, which tool is this for and what part of the tool crashes?
GeorgeS |
The NPC_Loot_editor. It crashes whenever I try to load a zone, or I try to copy a zone via the new adventure part.
|
Ok, which DB version are you using?
You're also crashing when loading zone - you mean on main page, loading all npc's in a particular zone (using search button on main page)? GeorgeS |
I'm using PEQ.....let's see version number is 384. Last time I updated it, but just been adding sql files from then on out.
yeah crashing zone on main page. |
ok, then it means you may be missing the 'version' field in npc_types
Add it in then it should work fine Let me know if you cannot find the sql GeorgeS |
Hmm, yep I'm missing version number in npc_types. Strange because I went back to sql 612_instance_changes and the only npc_types change is
Code:
ALTER TABLE `npc_types` ADD `adventure_template_id` INT UNSIGNED DEFAULT '0' NOT NULL AFTER `npc_faction_id`; Code:
ALTER TABLE `npc_types` ADD `version` INT UNSIGNED DEFAULT '0' NOT NULL AFTER `slow_mitigation`; I couldn't find any other recent sql changes that added version. I may just be missing it though. I'll give the above a try and see if it works. *edit* Yep that did the trick. |
BTW would it be possible to get version number added to the spawn editor at some point?
|
NPC and Loot Editor
08.22.10 - Tool automatically checks for and add 'version' field to npc_types table if it's missing. GeorgeS |
All times are GMT -4. The time now is 01:27 PM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.