tass23

Member
Some of you have probably heard about the client changes after 7.0.9, specifically changes to tiledata that are making it increasingly difficult to add custom animations. I went round and round with this one today and I have not gotten it figured out yet. It does seem however that Mythic Devs decided to tie together an itemID and a mountID. What this means is the following:

If you look at any mount script, you'll see this:
Code:
 [Constructable]
public LesserHiryu() : base( "a lesser hiryu", 243, 0x3E94, AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )

This doesn't look so foreign, except, what's that hex number next to the body value? Good question, I'm glad you asked...THAT is the itemID in the game that the creature becomes when it's mounted! I have NO idea why they didn't just use the small "statuette" IDs instead, but there it is. So a mount has this as a base:
Name = "a lesser hiryu"
Body = 243
itemID = 0x3E94
AIType = AIType.AI_Melee
FightMode = Closest

and other things pertaining to whatever. So I thought, well so there's an itemID tied to an animation now, so I looked in Fiddler at item 0x3E94, yep, it's a piece of a boat AND it has an animation number of 243 (corresponding to the hiryu's animation). I thought, well I'll just add a new animation and tie it to an itemID as well, nope that did NOT work. The mount just turns invisible when you mount it. I can't seem to find any client files or server files that would point me in the direction of fixing this issue. So anyone that wants to take a crack at this, feel free to jump in...
 
I remember the guy who released the custom mount/mob pack on runuo trying to update them and complaining about what the heck happened :) Hopefully some one will know a fix for this!
 
Yeah, I'm still baffled. There was a walk-thru I found somewhere else in my searching today, several years old that mentioned making sure you set the right Quality number for the item in TileData. Well 25 is the Quality number for mounts, but that still didn't work.
 
Has anyone found how to open the Anim256.bin, Anim1024.bin, or the new mount types? I believe that is where most of the animation setting are for the newer clients. I had added new customs to the newest client, but had to revert back to an older client (7.0.7.1) since my custom mounts would not work (riding air or just walking fast). As for the animations that are ~not~ mounts, you need to add the animations, then put ids in the BodyConv.def, add to the mobstype.txt, and of course make a script. It's a little tricky as some creatures use newer bodies Why I haven't a clue since 99.9% of them are the old bodies anyway. o_O I usually change something to it's older body in the scripts. Ex: I had wolves looking like (what I call) a Vinewalker..so I changed the wolves back to there older body in the scripts :

Old: Body = Utility.RandomList( 25, 27 );
New: Body = 27;

Tiledata is ~not~ needed to add monsters, just mounts. The mount quality is 25 in older clients. In clients newer that 7.0.8.2 (maybe 7.0.8.0) I'm thinking the new quality setting are stuffed in the bins, which is trapped from my view at the moment. :oops:
 
The .bin files you mentioned can be opened with a program I have called UltraEdit. They are nothing but hex code however. I'm guessing they are full of packet information. I'm not sure that's where the key lies for adding new custom mounts though, I say this because if you replace an existing mount with a completely new animation, when you mount the mob in game, it retains the new bodyID and it doesn't revert back to the old. Now I suppose that there could be an array in the bin files that is used for mounts, lets say from 0x3f4-0x6d8 or some such. That would mean in order to add a new bodyID as a mount, you would have to increase this array accordingly. As far as I know, those bin files have been around prior to 7.0.9 (after which came the change that is causing issues adding new animations for mounts).

Something else does puzzle me though. After adding the new animation and loading re-loading Fiddler. I examined the anim files again. I saw the new mount animation on anim4, but it had a -1 next to it. All the other mounts (and regular animations) had another number that corresponded to the animation listed on the Animations tab in Fiddler. If you're not sure what I'm talking about, click on any mob in the Animations tab, then go to Settings->Animation Edit. When that window opens, select the proper anim mul from the dropdown and scroll through the list to find the monster you were looking at. If you look at Kappa for example, which is Animation 240, it is an H animation loaded on anim4.mul. H-1 to be exact. Now H-1 shows 240 in parenthesis. I wonder if that is the missing link. how or why does 240 show up like that?
 
@tass23
Unfortunately that isn't the issue, but I do have an answer for your (-1) in anim4.mul. This is the number in the BodyConv.def, which "tells" the client what animation to use. In my example, the unicorn (replacement) was using slot 122 in anim.mul, but now is using slot 222 in anim4.mul. If you look at 214 in the pic you will see a (-1), this is because I added a creature, but haven't specified that I'm using it yet.
Example.jpg[DOUBLEPOST=1379585088,1379583612][/DOUBLEPOST]@tess23
"That would mean in order to add a new bodyID as a mount, you would have to increase this array accordingly. As far as I know,
those bin files have been around prior to 7.0.9 (after which came the change that is causing issues adding new animations for
mounts)"

Hmm, *smoke coming from ears as thinks*.... I believe it has something to do with the tiledata.mul/uop, which gives the needed "quality" for mounts. I will research this theory further.

The Anim.bins (I believe) are a hex version of all the animations (bmp to hex)...well played EAG, well played. Which I do want to rip out to get other animations that we no longer can "see" at this time. (Pumpkin/Halloween Monster)
 
Ok. I know this is an old post but I'm working on trying to get a mount animation working. My Client is 7.0.21.1 and I'm using ServUO Publish 54. I was able to get the animation to display, but disappears upon mount. I notice that the animations seem to be directed by the script somehow:

Code:
public TigerMount(string name)
  : base((1)name, (2)0xDE(222), (3)0x3EC7(16071), AIType.AI_Animal, FightMode.Aggressor, 10, 1, 0.2, 0.4)

The OxDE parameter covers the actual animation, but 0x3EC7 covers the ItemID which appears in Art.mul.
As others have stated, these go to art work for ships. So, I'm wondering if a range of Art.mul entries have been set aside for Mounts(I know Tass23 has mentioned this already) but I'm trying to work this out in my head and hopefully find a workaround for this. I cross-referenced other TileData entries and the only identical properties in any of them were Weight=255, and Height = 3.

I know my script works as I've taken the (3) parameter from the code above and changed it to an already existing Mount and it works fine, even though the animation I used in parameter (2) was the Tiger I was trying to impliment(0xDE(222)). So, for some reason, the 2nd parameter appears to be used when you first spawn the Tiger, but when mounted it uses the ItemID to determine which mount you are on. For instance, 0x3EBC is the hex for a Giant Beetle and if you change parameter (3) to 0x3EBC this is what happens:

I use [add TigerMount, and a tiger appears(fully animated), when I double-click the Tiger it shows me on a Giant Beetle. So, there seems to be a missing "Middle man" that is directing the (3) parameter to point to the correct animation. Lastly, I tried inserting a copied graphic(along with TileData) from an already used "Mount Slot" and it didn't work. I copied the TileData verbatim, so it doesn't appear to be a Flag issue in Tiledata.

I know this may seem obvious to some and i'm just reiterating what others have already said, but I'm just posting my train of thought to hopefully help myself or others out with figuring a workaround for this. Any insights into the problem or suggestions on things to test are welcome.
 
Last edited:
When that window opens, select the proper anim mul from the dropdown and scroll through the list to find the monster you were looking at. If you look at Kappa for example, which is Animation 240, it is an H animation loaded on anim4.mul. H-1 to be exact. Now H-1 shows 240 in parenthesis. I wonder if that is the missing link. how or why does 240 show up like that?

Each AnimX.mul has it's own set of slots. Basically, Anim.mul acts as a pointer to where the animation is actually located. In my version of UoFiddler, if you hover the mouse over any animation slot in the Animation Tab in UOFiddler, it will show you which AnimX.mul the animation resides. Now, the reason for this, I believe, is that animations have to appear in the appropriate slots(High, Low, or Personal.)

So, let's say you need a High slot in Anim.mul and there aren't any left. It's irrelevant. You pick an Empty slot in Anim.mul regardless of whether it is High, Low or Personal. You then choose one of the other Anim files(Anim 2-5) to put your animation. Now, at this point you do have to match the appropriate type of animation to an appropriate slot type(H, L, P). As far as how you do this link I'm not sure about. I just know that existing animations do it this way.

@tass23 - The 240 in Anim4.mul is not the same 240 in Anim.mul. The H: 1(240) is Slot 1 for Anim4 which references Slot 240 in Anim.mul :


kappaexample-png.5002



Also, the -1 in each of the AnimX.mul files, I believe, just mean that it isn't occupied by an animation. I hope all this made some sense......I still don't understand it that well, but I feel I understand it a bit better.
 

Attachments

  • KappaExample.png
    KappaExample.png
    68.3 KB · Views: 478
Ok...I took a Ridgeback Animation(slot 187), which occupied 3 Anim.mul slots, and I replaced it with a Tiger animation. I then went into the scripts and redirected the Ridgeback scripts that depended on that animation and rerouted them to another Ridgeback animation(slot 188). Here is what we have in the scripts...

Code:
public Ridgeback(string name)
  : base(name, 187, 0x3EBA, AIType.AI_Animal, FightMode.Aggressor, 10, 1, 0.2, 0.4)

So, the 187 is the BodyID and 0x3EBA is the ItemID. The BodyID determines the animation used in an Unmounted state. The ItemID determines the animation in a Mounted state.

@tass23 did this with the Kappa as he states up above. So basically, I've confirmed that the Anim.mul slots are directly linked to an ItemID slot. I believe this link is, unfortunately, hardcoded(I hope I'm wrong.)

Anyway, as a workaround, you can consolodate your animations by replacing Mount animations that have insignificant differences in look(or ones you just don't like), with custom mounts. Let's say you did this with a Ridgeback(which I did.) You go into the Ridgeback scripts and have them all point to the same BodyID and ItemID. Obviously, you need to use an Anim.mul# and ItemID# that is different than the one that is linked to the new animation. The above Ridgeback script points to Anim 187 which I replaced with the Tiger animation. There is another Ridgeback animation which resides in Anim.mul slot 188, so I just changed the BodyID and ItemID to what appears in the following snippet(188,0x3EB8):

Code:
public SavageRidgeback(string name)
  : base(name, 188, 0x3EB8, AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)

Just a word of warning though, you need to thoroughly check your scripts and make sure that if you've replaced animations that you adjust the scripts that depend on the replaced animation accordingly. Hope this helps someone!
 
Last edited:
Did we ever figure this one out to the end of was the end result that we got, "hardcoded on" and can no longer add new animations and just have to replace old ones? I'm fine with doing that but I miss the expandability if the old clients... :(
 
I was unable to add "new animations", but I did overwrite a few duplicates that matched with an L or H Monster. I couldn't get the mounts working, because I don't know where the animation# is coming from in the TileData file. It's not the actual body#. So what happens is, you wind up having a new animation monster, but when you mount it, it looks like an existing mount (horse, ostard, etc).
 
Damn... I wonder if anyone that still works with UO has figured this one out on any of the forums out there... How frustrating. Adding animations and rides etc was always my favorite thing to do..
 
You still have to overwrite an existing animation, but yes. No matter what, as of now, there isn't a way to expand the number of animation slots.
 
We need to contact all the vets and crack this stuff haha. Is there any way of getting the client right before they patched all this? I may make a side server with just the old stuff..
 

Active Shards

Donations

Total amount
$0.00
Goal
$1,000.00
Back