Log in

View Full Version : Ornamentions


Ld7783
09-15-2011, 09:29 PM
I was just wondering if anyone got the ornaments/ornamentions up and working? If so a little help on making them work would be great.

Thanks!

trevius
09-16-2011, 02:28 AM
Ornamentations are not implemented into EQEmu yet, so they won't work for anyone. They don't look like they would be overly hard to implement, but I am not sure of the best way to do it yet. I think we would probably need an extra 2 fields added to the inventory table for ornament icon and model number. Then we would just send that info in place of the ones that are loaded from the items table.

The implementation of the actual combine for ornamentations might be a bit harder to do. There is nothing in the ornament that tells us what model it is supposed to make the combined item look like. There is an icon for it, IIRC, just no model. I don't think there is anything on it that tells it what slots to restrict it to either. IIRC, there is a script file number filled out on the items, so I assume they may have called a script that had a list of what ornamentations use which models and what their slot restrictions are. I am not exactly sure on the best way to handle the actual combine part.

Uleat
04-02-2014, 09:45 AM
Ornamentations may be possible...

http://imagebin.org/303486


The items images shown are based on a preliminary attempt to activate ornaments.

At this point, I'm not sure if every model will show up based on the information in the database.

I do know that every client will not be able to display every ornament..that's dependent on whether a given client supports a given model id.

Kingly_Krab
04-02-2014, 04:10 PM
NatedogEZ has tested ornament-like code on Underfoot, it doesn't work, as the packets aren't sent like Rain of Fear so you can only do your primary weapon. When you attack it resets your secondary to its actual graphic. I don't believe he tested ranged weapons.

EDIT: I posted this to say that Rain of Fear will be the required client for all ornamentations to work correctly.

NatedogEZ
04-02-2014, 04:25 PM
If you change the way the item is sent to the player it would be do-able I think :p

I didn't mess with that though.. I just tried to remove the "update" packet that happens when you attack.. because it is SPAMMED like mad if the item look doesnt match what the client thinks it should look like

Uleat
04-02-2014, 08:37 PM
I'm still playing with it..but, yeah, I have GetEquipment() checking the item for bagOrnament, augOrnament, then base.

During the initial spawn, I can get the models to show up..but, switching always reverts to the base item.

I'm afraid that some models may be EliteMaterial and I currently don't have access to the attributes that I need to check that.

Uleat
04-03-2014, 11:01 AM
I think I figured out why my testing was so sporadic...

Part of the problem is model id#. Not all models show up in all clients.

The other part is a partial implementation of the virtualized Mob::GetEquipment() series of methods.


I'll finish those up tonight and do some more testing to see where I stand.

Uleat
04-04-2014, 05:19 AM
I am going to have to figure out how to handle differences in clients. It would be nice to have a list or range of IDFile #'s for each
supported client.

Otherwise..character select, initial spawn and item swapping currently work. It's most likely not how live does it..but, it's acceptable.
There is a small delay in switching to the ornamented graphic when swapping items. The base item is shown first..but, the ornament
is shown after the SendWearChange() packet is received. I attempted combat and saw no discrepancies using this method.

Now..I need to update: lua/perl api's, other inheritance classes (of Mob), and activate all of the augmentation/ornamentation op's.


(With a list of client 'ceilings,' I could send two textures to SendWearChange(); first for valid clients; second for earlier ones. That way,
all clients would at least display a weapon of some sort.)

Kingly_Krab
04-04-2014, 07:25 AM
I can't help you with the IDs, but this plugin has a lot of them (up to 11169): http://perl.pastebin.mozilla.org/4759046

Uleat
04-04-2014, 09:41 AM
Kewl, thanks for that! :)


Given the way that is done, I may be able to grab what I need from the db and lucy for the rest of the clients..then, just test the clients to see where
the supported line ends.

I'll just create a create a fallback array with one model per class and substitute that either in the handler or in the client patch files.

Could do the same for armor when the time comes.

moofta
04-04-2014, 10:26 AM
This might be a totally ignorant question (I apologise if it is)...

Why can't we just overwrite the IDFile of the item with the one from the ornamentation when we serialize the item in SerializeItem, so when the item data is sent to the client it is just "there", then switch it back if they remove the augmentation?

Uleat
04-04-2014, 06:52 PM
I considered that...

But, we would need each item to have a pointer to the const item library as well as a locally managed instance. There would be
more code than the way I'm currently doing it, just for the owning client's benefit.

The bulk of the work is done in sending OP_WearChange's (Mob::SendWearChange). I just added accessors to ItemInst to pull the
'visible' IDFile. And since we already translate all client's OP_WearChange's, I can add a small reference array there to compensate
for invalid client models.


Not an ignorant question and I appreciate feedback like that. Even if I have a set understanding of something, having to explain
myself makes me re-examine my process as I type it out.

Akkadius
04-04-2014, 09:03 PM
Making it more complicated than it needs to be. You shouldn't leave it to the code to check a list of valid IT graphics before loading them. If an older client can't load the file that is up to the server operator to make that decision and or maintain client files necessary to do so. It just won't load anything if the client doesn't have the model and that shouldn't be something for the source to try and compensate for

Uleat
04-06-2014, 01:13 AM
moofta, I'd like to use your method as it would make certain things easier...

Unfortunately, I don't know exactly what the client does and does not do in regards to generating a WearChange OP.


Looking at the criteria for Inventory::SwapItem()'s SendWearChange() call, everything but Helm, Primary and Secondary are generated server-side.

I'm assuming that Helm is done client-side because of the show/~show feature and weapons the same due to ornaments/augments.

I had to change the criteria to include weapons for item swapping to work..but, I suspect that the client is still sending the base item's
material and that is being re-broadcast to everyone. This will probably lead to issues with a weapon changing to ornamentation, then back to base
after the re-broadcast.

I can nix the re-broadcast to only include the helm..but, I'm not making much progress otherwise...


Any opinions? (anyone?)

Drajor
11-07-2014, 08:42 AM
Bumping with some news. Whilst getting evolving item data sent correctly to the client the location of ornamentation icon / idfile has been discovered! The bad news is that it only works for evolving items for now.

demonstar55
11-10-2014, 07:18 PM
https://i.imgur.com/B5PZfKM.png

Thanks to the work from Drajor and Natedog!

Note: If you want to use newer models on UF, you can look up the IDFile (like IT12355) in live Resources/OnDemandResources.txt and copy the eqg file listed and add the entry to Resources/GlobalLoad.txt (ex. 2,0,TFFFE,wallet41.eqg,Loading Character Equipment Files)

Although that will still leave you with a pearl necklace for an icon :P

Bandor
12-16-2014, 04:10 PM
How do I get ornaments to work on my server? When I try to combine it in the container it says I can not combine.

trevius
12-16-2014, 05:29 PM
How do I get ornaments to work on my server? When I try to combine it in the container it says I can not combine.

Well, part of the problem is that SOE has changed how Ornamentations work since they were first implemented, so the database has different types of them from the 13th floor database dumps. Another issue is that 13th floor hasn't been getting updated in years now, so there isn't a very complete list of Ornamentations or items that can support the slot 20 and 21 type augs (which is what Ornamentations are) available in the database.

If you are running the most recent source code updates, your server should now have support for a 6th aug slot (if using a RoF+ client). You could then set the 6th aug slot on all worn items (armor and weapons) to use aug type 20, which means they could have an ornament put on them.

Once you have the aug slot available on all armor and weapons, all you need is to set all ornaments to be an augment that goes in that slot. Personally, I don't see the purpose of the ornaments that are a container that you combine with your item, so I am going to convert all Ornamentations into augments on my server to simplify things a bit.

If you plan to use RoF, the below SQL should allow ornamentation on your server. If you don't plan to use RoF, and will be using the UF client instead (no earlier client than UF supports Ornamentation), then you would need to alter this SQL a bit to instead use aug slot 5 on armor/weapons for Ornamentations (if they don't already have an aug type set in that slot).

Here is the SQL for RoF+ clients (only) to have access to Ornamentations (NOTE: This SQL is untested and I highly recommend you backup your database before running any of it!):

/* Update Aug Slots on Armor/Weapons and move Type 20 to 22 and 21 to 23 */
UPDATE items SET augslot1type = (augslot1type + 2) WHERE augslot1type = 20 OR augslot1type = 21;
UPDATE items SET augslot2type = (augslot2type + 2) WHERE augslot2type = 20 OR augslot2type = 21;
UPDATE items SET augslot3type = (augslot3type + 2) WHERE augslot3type = 20 OR augslot3type = 21;
UPDATE items SET augslot4type = (augslot4type + 2) WHERE augslot4type = 20 OR augslot4type = 21;
UPDATE items SET augslot5type = (augslot5type + 2) WHERE augslot5type = 20 OR augslot5type = 21;
UPDATE items SET augslot6type = (augslot6type + 2) WHERE augslot6type = 20 OR augslot6type = 21;


/* Remove Aug Type 20 (524288) and replace with Aug Type 22 (2097152) */
UPDATE items SET
augtype = (augtype - 524288 + 2097152)
WHERE augtype & 524288;

/* Remove Aug Type 21 (1048576) and replace with Aug Type 23 (4194304) */
UPDATE items SET
augtype = (augtype - 1048576 + 4194304)
WHERE augtype & 1048576;

/* Change existing Ornamentations (weapons only) to Type 20 Augments */
UPDATE items SET
augtype = 524288, /* Aug Type 20 */
augrestrict = 2, /* Weapons Only */
augdistiller = 0,
bagsize = 0,
bagslots = 0,
bagtype = 0,
bagwr = 0,
price = 1000,
itemclass = 0,
itemtype = 54,
loregroup = 0,
slots = 26624 /* Primary / Secondary / Range */
WHERE name LIKE "%Ornamentation" AND charmfile != "";

/* Change Ornamentations from Lucy (armor only) to Type 20 Augments (probably none of these exist in the DB yet) */
UPDATE items SET
augtype = 1048576, /* Aug Type 21 */
augrestrict = 1, /* Armor Only */
augdistiller = 0,
bagsize = 0,
bagslots = 0,
bagtype = 0,
bagwr = 0,
price = 1000,
itemclass = 0,
itemtype = 54,
loregroup = 0,
slots = 923268 /* Head / Arms / Bracers / Hands / Chest / Legs / Feet */
WHERE name LIKE "%Ornament" AND itemtype = 54 AND charmfile != "";

/* Update all Armor and Weapons to have Aug Slot 6 for Ornamentations
This only updates items that have:
Any material slot set
At least 1 Aug Slot already Defined (prevent adding from newbie/old items)
Weapon or Armor item types
Nothing already set for Aug Slot 6
Item Class 0 */
UPDATE items
SET augslot6type = 20, augslot6visible = 1, augslot6unk2 = 1
WHERE (
slots & 4 OR
slots & 128 OR
slots & 1536 OR
slots & 4096 OR
slots & 131072 OR
slots & 262144 OR
slots & 524288 OR
slots & 2048 OR
slots & 8192 OR
slots & 16384
) AND (
augslot1type > 0 OR
augslot2type > 0 OR
augslot3type > 0 OR
augslot4type > 0 OR
augslot5type > 0
) AND (
itemtype < 6 OR
itemtype = 8 OR
itemtype = 10 OR
itemtype = 35 OR
itemtype = 45
)
AND augslot6type = 0 AND itemclass = 0;

Here is similar SQL if you plan to support Weapon Ornamentations on UF. This will still allow you to use Weapon and Armor Ornamentations on RoF+, but some items will probably have all 5 aug slots used already and will not be able to be Ornamented (NOTE: DO NOT run both the above and below SQL. Only run 1 or the other depending on if you want to use the 6th (RoF+ Only) or 5th (UF+) aug slot for Ornamentation):

/* Update Aug Slots on Armor/Weapons and move Type 20 to 22 and 21 to 23 */
UPDATE items SET augslot1type = (augslot1type + 2) WHERE augslot1type = 20 OR augslot1type = 21;
UPDATE items SET augslot2type = (augslot2type + 2) WHERE augslot2type = 20 OR augslot2type = 21;
UPDATE items SET augslot3type = (augslot3type + 2) WHERE augslot3type = 20 OR augslot3type = 21;
UPDATE items SET augslot4type = (augslot4type + 2) WHERE augslot4type = 20 OR augslot4type = 21;
UPDATE items SET augslot5type = (augslot5type + 2) WHERE augslot5type = 20 OR augslot5type = 21;
UPDATE items SET augslot6type = (augslot6type + 2) WHERE augslot6type = 20 OR augslot6type = 21;


/* Remove Aug Type 20 (524288) and replace with Aug Type 22 (2097152) */
UPDATE items SET
augtype = (augtype - 524288 + 2097152)
WHERE augtype & 524288;

/* Remove Aug Type 21 (1048576) and replace with Aug Type 23 (4194304) */
UPDATE items SET
augtype = (augtype - 1048576 + 4194304)
WHERE augtype & 1048576;

/* Change existing Ornamentations (weapons only) to Type 20 Augments */
UPDATE items SET
augtype = 524288, /* Aug Type 20 */
augrestrict = 2, /* Weapons Only */
augdistiller = 0,
bagsize = 0,
bagslots = 0,
bagtype = 0,
bagwr = 0,
price = 1000,
itemclass = 0,
itemtype = 54,
loregroup = 0,
slots = 26624 /* Primary / Secondary / Range */
WHERE name LIKE "%Ornamentation" AND charmfile != "";

/* Change Ornamentations from Lucy (armor only) to Type 20 Augments (probably none of these exist in the DB yet) */
UPDATE items SET
augtype = 1048576, /* Aug Type 21 */
augrestrict = 1, /* Armor Only */
augdistiller = 0,
bagsize = 0,
bagslots = 0,
bagtype = 0,
bagwr = 0,
price = 1000,
itemclass = 0,
itemtype = 54,
loregroup = 0,
slots = 923268 /* Head / Arms / Bracers / Hands / Chest / Legs / Feet */
WHERE name LIKE "%Ornament" AND itemtype = 54 AND charmfile != "";

/* Update all Armor and Weapons to have Aug Slot 6 for Ornamentations
This only updates items that have:
Any material slot set
At least 1 Aug Slot already Defined (prevent adding from newbie/old items)
Weapon or Armor item types
Nothing already set for Aug Slot 6
Item Class 0 */
UPDATE items
SET augslot5type = 20, augslot5visible = 1, augslot5unk2 = 1
WHERE (
slots & 4 OR
slots & 128 OR
slots & 1536 OR
slots & 4096 OR
slots & 131072 OR
slots & 262144 OR
slots & 524288 OR
slots & 2048 OR
slots & 8192 OR
slots & 16384
) AND (
augslot1type > 0 OR
augslot2type > 0 OR
augslot3type > 0 OR
augslot4type > 0 OR
) AND (
itemtype < 6 OR
itemtype = 8 OR
itemtype = 10 OR
itemtype = 35 OR
itemtype = 45
)
AND augslot5type = 0 AND itemclass = 0;


This is not the ideal way to add Ornamentations to your Database, but it is a decent work-around for it. Ideally, we would find a way to start getting Database updates from Live again so the PEQ DB could be updated to match Live for armor/weapons Aug Slots for Ornamentions as well as adding all of the Armor and Weapon Ornamentations from Live. If that happens, you would just need to get the new items table from the PEQ DB, then add the ones you want (or all items) into your items table.

Currently, there are no Armor (Hero's Forge) Ornamentations in the PEQ DB as far as I know. So, if you want to use Armor Ornamentations (which are very cool and which I just implemented this week), you will have to add the Ornament Augs to your database manually. They are pretty simple to add though. You just create an aug (such as copying any existing one), then set it to aug type of 20 (524288), and set the herosforgemodel field to something like 63 or 81, or whatever armor type you want it to look like. You can see the different armor types if you are on RoF+ as a GM and type "#heromodel <modelnumber>" (example: #heromodel 63). Also note that Hero models start around 61 and go up to around 120ish, but not every number has a model available so you have to try them out in game 1 by 1 to find which are available that you like.

Sorry that I didn't have a simple answer for this question, but there are a lot of factors in why it is a bit complicated to use Ornamentations currently. They are quite cool though, and once you figure out how to make them work, it really isn't too hard to get them added.

Bandor
12-16-2014, 08:52 PM
So what I gather is for UF client I should run SQL 2. My question before running this is I do see augment slot 20 on weapons already,So what im understanding is this sql will create another aug slot specifically for ornaments for all my armor/weapons. Then from there If I want to implement armor augs(which i totally do) I would then have to update it manually on a per item basis? Im I correct or did I overlook something?

demonstar55
12-16-2014, 08:59 PM
Heroic Armor (armor ornamentation) is RoF+ only.

Bandor
12-16-2014, 09:26 PM
upon running the SQL code I ran into a couple errors. First one kept saying column type 6 is nonexistant so I removed this code and it passed through

UPDATE items SET augslot6type = (augslot6type + 2) WHERE augslot6type = 20 OR augslot6type = 21;



Then when I get down to the bottom of the code it says error in my SQL synthax

) AND (
itemtype < 6 OR
itemtype = 8 OR
itemtype = 10 OR
itemtype = 35 OR
itemtype = 45
)
AND augslot5type = 0 AND itemclass = 0;



Upon logging into my server I can see what it did,switching all container ornaments to augs instead of containers and setting special ornaments with there own slot (21). It also removed slot 20 off my weapons and changed them to slot 22. So now would I simply edit my items and decide which get slot 20 and 21?

PS slot 21 is actually labeled special ornaments but it changed them from weapon augs to armor augs lol.

trevius
12-17-2014, 01:12 PM
From the SQL errors you are getting, it means you are not on the latest source updates. I just implemented the 6th aug slot for RoF+ a couple of days ago, so if you wanted to use it (for RoF+ only), you would need to update your source and your database (via automatic DB update script when you start the server after source update).

Again, the SQL in my previous post was designed for my server, Storm Haven. In our case, we have augs using slot 20 and 21 that are not ornaments, so I had to move them to another slot. That may not be required in your own database.

There is actually some more SQL that would be needed for your inventory table if you already have some ornaments applied to some items so it can move them from aug slot 5 to aug slot 6. Most servers probably would not have any, though.

Currently, we only have support for 1 ornamentation aug slot (per the rule for it). We will need to implement a new rule to override the current one that would allow both slot 20 and 21 to be considered ornamentation slots. I may get this added fairly soon if I get time. Basically, for now, all you can do is set both Armor and Weapon Ornamentations to use the same aug type (20 by default I think). On Live, I believe type 20 is for Weapons and 21 is for Armor, but I haven't really looked too deep into it yet. There may be other criteria as to why some are special and some are not.

You should already have a lot of functional weapon Ornamentations in your database if you ran the SQL I posted previously. Though, not all items with "Ornamentation" in the name will actually work because some are old and are missing the idfile data that tells the server which weapon model to use for them. For those, I am going to look into matching up weapon models with item icons and see if we can get some SQL together to automatically set the weapon models based on icon number for ornaments.

Even after all of this, the only way to have Hero's Forge Armor Model Ornamentations is to manually add them yourself. You can test them by simply setting the heroforgemodel field to something like 63 on one of your weapon Ornamentations, and then setting the slots field to 923268, which will allow it to be used in all worn slots (so you can have a full set of the same armor model by using the same Ornamentation aug if it is not lore).

Bandor
01-14-2015, 09:03 PM
So I updated my source recently and can now use weapon augs though only on UF. Augs appear to be completely broke on my side for RoF2 for some reason. Everytime I put a aug anywhere off my cursor I get Warning Invalid slot move from slot 30 to slot 31 with 0 charges. And if I aug a item it just instead duplicates the item im trying to aug and items go missing etc its a mess lol. So in essence no idea how to test if my aug to give hero forge appearance works giving as I can not currently use augs in RoF2 lol.

Bandor
01-14-2015, 09:07 PM
Ok so edit the aug is working,to Test I simply auged the item via UF client then logged ingame via RoF2 and the ornament was visable. Aswell as weapon ornament that I also auged via UF. So essiently I have a problem with RoF2 client auging anything at all (also tested non ornament augs).

trevius
01-14-2015, 09:48 PM
Did you copy the latest utils/patches/patch_RoF2.conf file to your server folder?

Bandor
01-14-2015, 09:50 PM
Yes sir I did. As far as I can tell thus far the only thing not wanting to work for me are the augs,did I need to source anything or just copy the new stuff into folder?

Bandor
01-16-2015, 08:37 AM
So just to update,it seems all my problems were comming from only character. It appears I bugged it messing around with my character config for that particular player,Note to everyone else do NOT add character profiles from UF to ROF folder as you will bug yourself to hell lol.

belvino
03-16-2019, 01:08 PM
Digging up another old post. :) Running the PEQ setup Akkadius has posted. Instead of starting a New topic i figure just bring this one back to life maybe someone has new info that been working on the topic. Also wanted to update what available on the DB for New folks such as myself.

Here where i stand with Ornamentation. With the current db If you change the rule Character:OrnamentationAugmentType=20 to 21 it will allow you to use armor Ornamentation. You still have to go to all the Aug in the DB and attach HeroForgeModel id to them. Little time consuming but not hard.

Where i am Stuck:
You can equip weapon Ornaments then change the rule and the weapon ornaments stay unless you unequip the aug then you have to set the rule back to 20 to reequip the aug. Changing the rule to 21 allows you to see the armor and if you change it to 20 again its gone.

Anyone have any solutions? I tried adding up the types and putting in 41 since that works on some things aug related, no dice. I don't know the process to add a rule in. If I add a row and make a Character:ArmorOrnamentationAugmenttype is doesn't work. If you change the naming in the rule it replaces the rule in the db when you start the server with a default value.

How do you add rules in or is there a easier way to do it.


Thanks in advanced,
The Noob who knows just enough to break shit.

belvino
03-16-2019, 11:27 PM
SO i used part of Trevius's post to change all the armor to type 20 ornament in the slot 6 aug slot.

/* Update all Armor and Weapons to have Aug Slot 6 for Ornamentations
This only updates items that have:
Any material slot set
At least 1 Aug Slot already Defined (prevent adding from newbie/old items)
Weapon or Armor item types
Nothing already set for Aug Slot 6
Item Class 0 */
UPDATE items
SET augslot5type = 20, augslot5visible = 1, augslot5unk2 = 1
WHERE (
slots & 4 OR
slots & 128 OR
slots & 1536 OR
slots & 4096 OR
slots & 131072 OR
slots & 262144 OR
slots & 524288 OR
slots & 2048 OR
slots & 8192 OR
slots & 16384
) AND (
augslot1type > 0 OR
augslot2type > 0 OR
augslot3type > 0 OR
augslot4type > 0 OR
) AND (
itemtype < 6 OR
itemtype = 8 OR
itemtype = 10 OR
itemtype = 35 OR
itemtype = 45
)
AND augslot5type = 0 AND itemclass = 0;

Then i changed some of the ornaments that were there by making them slot 20 and adding a hero model id. The ornaments worked before when i changed the rule in the Db to use 21 as ornament slot. This was my attempt to get both working.

When i try to equip an ornament it says not valid slot. I also tried creating a new aug ornament from scratch and get the same error.

Is there somethign else you have to change to get the ornament to go in a type 20 slot. It almost acting like it still thinks its a type 21 aug

woton
06-14-2021, 06:43 PM
Just wondering if anyone is willing to reopen this discussion? Asked many times in Discord and get no replies. Really need help with the hero's forge.