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!

skills.idx values

sirens song

Wanderer
skills.idx values

Skills.mul/Skills.idx in the Uo client have 3 values.
(string)SkillName (bool (well 1 or 0)HasButton and (some interger)

what the heck does that third interger do? I have no idea. Help is appreciated.
If i posted this in the wrong spot please forgive me
 

sirens song

Wanderer
Im sorry phantom I thought I made myself quite clear,

The skills.MUL/IDX files of the UO client list each skill with 2 numbers.
one number is if it has a skill button or not, Like magery isnt used dirrectly, but inscription is by clicking the button in the skill gump. But the other number is kind of randomly assigned to a skill and it is an interger from 0 to 15. What does that second number do? At first I thought it was the value that the skill holds when displaying the title. (Like if all skills are 100,. it says GM alchemist because alchemist holds more weight) But I looked in the source and that is handled by the RunUO emulator.

-Jamie
 

sirens song

Wanderer
I most certainly can, this is the Skills.Mul decompiled

Code:
15	0	Alchemy
13	1	Anatomy
13	1	Animal Lore
13	1	Item Identification
13	1	Arms Lore
13	0	Parrying
13	1	Begging
13	0	Blacksmithy
13	0	Bowcraft/Fletching
13	1	Peacemaking
15	0	Camping
13	0	Carpentry
13	1	Cartography
13	0	Cooking
13	1	Detecting Hidden
14	1	Discordance
13	1	Evaluating Intelligence
13	0	Healing
13	0	Fishing
13	1	Forensic Evaluation
13	0	Herding
13	1	Hiding
13	1	Provocation
13	1	Inscription
13	0	Lockpicking
14	0	Magery
13	0	Resisting Spells
13	0	Tactics
13	0	Snooping
13	0	Musicianship
13	1	Poisoning
13	0	Archery
13	1	Spirit Speak
14	1	Stealing
13	0	Tailoring
13	1	Animal Taming
13	1	Taste Identification
13	0	Tinkering
13	1	Tracking
13	0	Veterinary
13	0	Swordsmanship
13	0	Mace Fighting
13	0	Fencing
13	0	Wrestling
2	0	Lumberjacking
2	0	Mining
1	1	Meditation
1	1	Stealth
1	1	Remove Trap
1	0	Necromancy
3	0	Focus
1	0	Chivalry
0	0	Bushido
0	0	Ninjitsu

Consider the following format
(X) (Y) (Z)

Z is the Name of the skill

Y is a true or false boolean in the form of 0 or 1 that determines if the skill has a button to use dirrectly from the clients skill gump. The skill Magery is NOT used dirrectly it must be used via another method, such as casting spells from the spellbook. So Magery's Y value is 0. Where as Remove Trap is used Dirrectly, To use Remove trap you open the skill gump (or set a macro) and press a button next to the skill, So Remove Traps's Y value is 1.(for true).

Now the X value I have no idea what it could be? That is what I am asking, what is the number in the X value field of the format. I have considered it to be the order in which profession-titles show up when skills are equal, Suppose magery and Alchemy are both at 100.0. Your profession title would be Alchemist because Alchemy has a X value of 15 and magery has an X value of 14. But I found in the arguments in the RunUO core that this ordering system is handled by the Server and Not the client. So I ask this, What is this value in the "X" field refer to?

It has nothing to do with the order of the skills, because the Server handles how they show in the skills gump when they are catagorized by CombatSkills MiscSkills and Actions. It has nothing to do with how the client catagorizes or orders the skills because that is handled by the Skills Index file. You can rewrite these skills in ANY order in the skills.MUL and it has no effect on the client as the IDX is where the skills are ordered and refered to by skillname(Zvalue).

So what does this seemingly random number partain to??

Thank you for your patience and help.

-Jamie
 

Necr0Potenc3

Sorceror
just to make sure what you are asking.

you have two files, Skills.idx and .mul

Skills.idx structure is:

DWORD (offset to a skills structure in skills.mul)
DWORD (length of entry in skills.mul in bytes)
DWORD (unknown)

skills.mul structure is:

BYTE (bool for button)
BYTE[] (name of skill, null terminated)


you mean the 3rd DWORD of skills.idx right?

edit:

ps: if you find some oddities in skills.mul don't worry. that file is completly screwed up. you'll even find several non-referenced entries in it.

edit2:

by checking the client's asm (2.0.0) I found no use for it... so go figure. maybe its useless indeed. didnt do a very good search, I only checked the routine that loads the skills files.
 

sirens song

Wanderer
I understand the index file no problem. Was only inquiring about the MUL file as you said it has a BYTE for the has button boolean and a BYTE[] for the skillname string. There is a second BYTE however which i cant seem to figure out, Its probably usless junk anyway. You did provide a nice answer and I thank you for that, someone finally understood me :"P

-Jamie
 

Necr0Potenc3

Sorceror
nah buddy I think you got me wrong about the .mul file

I'll give you an example

idx: 0x32d (the entry) 0x09 (the length) 0x0F (unknown value, unused also)


in the mul, at the 0x32d offset:

0000032d: \0x01 A l c h e m y \0x00

think of the ASCII as bytes heh... if you notice I actually wrote an ascii text instead of bytes... anyway.

the last byte, the one after the 'y' is the string null terminator. all strings are nulled at the end to identify the end of the string

the null terminator is also known by '\0' in C

now, I noticed you meant the "15" value by "Alchemy" in the table you created. that 15 value is actually the unknown 0x0F I mentioned above. its usage is unknown and for what I could tell, unused.

then again, that value is in skills.idx, not in the mul.

now, let's say the length was 10 and after the 0x00 you found another byte... well, thats just cause skills.mul is really malformed. I can only wonder why.


anyway, I hope you understood

[]'s

edit:
ps: dont mind people like phantom or anyone else. people on this forum aren't used to real coding or reverse engineering. I doubt they even know what that is. krrios is good at it though.
 
Top