My Most Difficult Question To Date...

12/01/2008 16:51 Incariuz#1
Ok... So here is the deal... I'm looking to design a few completely new classes/skills into the source I'm using, and I realize this will require a number of client sided modifications. The thing is, I'm not 100% sure as to what. I know I need to make a lot of graphics (for buttons, items, effects, etc...), which I have absolutely no problem at all doing. I just don't know how to make the client read my graphical creations, and therefor need some tutorials on it.

I know this is a big question, and the mass majority here will have no answers for me. But if anyone atleast has a vague idea of where I can locate some tutorials in reference to this project I wish to take on, I would greatly appreciate it.
12/01/2008 16:59 unknownone#2
Most of your editing work will be done in magictype.dat. It contains the bulk of information you need to make the actual skill, and also references to ini files that contain the skill effect, and sound files etc.

Firstly, you'll need to go about decrypting the file. The information to do so it already public (it's the same as itemtype.dat, monster.dat). You can make all your edits to a decrypted version of the file, then go about encrypting the edited file back, so it's usable with the client.

Skills are grouped into types which alter how the client/server interpret them. TQ call this the "magic sort", but you can call it whatever you want. It's just a numeric value in the magictype file before the magic name. You'll need to use an existing 'sort' or the client won't know what to do with it, so pick an existing skill that is most like yours and use the same sort.

The rest of the fields tell everything about the skill, then towards the end is a list of external references to effects etc. Again, just follow some examples of existing skills and put all your effects in the same ini files and such. Should be self-explanatory after that.
12/01/2008 17:18 Incariuz#3
Awesome, I thought I'd be doing something along those lines, but wasn't 100% sure, and didn't wanna mess anything up. I'll look around and learn more about the decrypting and encrypting, then see what I can muster.

Thanks for the insight. :)
12/01/2008 17:45 Beta Limit#4
Creating a new class


Ive not been doing this long but i know that you would need to add job names to ProfessionalName.ini

Then in your source you would need to create the class. So where Taoist is in your source you must copy the Taoist code and adapt it for your new class.

Example:

From Database.cs
Code:
if (Charr.Job > 129 && Charr.Job < 136 || Charr.Job > 139 && Charr.Job < 146 || Charr.Job == 100 || Charr.Job == 101) // Job refers to Job ID's in ProfessionalName.ini from Conquer2.0/ini
            {
                str = (Stats.ReadValue("Taoist", "Strength[" + lv + "]")); //Read Strength from Stats.ini in Bin/Debug
                agi = (Stats.ReadValue("Taoist", "Agility[" + lv + "]")); //Read Agility from Stats.ini in Bin/Debug
                vit = (Stats.ReadValue("Taoist", "Vitality[" + lv + "]")); //Read Vitality from Stats.ini in Bin/Debug
                spi = (Stats.ReadValue("Taoist", "Spirit[" + lv + "]")); //Read Spirit from Stats.ini in Bin/Debug
            }

if (Charr.Job > 199 && Charr.Job < 206) 
            {
                str = (Stats.ReadValue("Paladin", "Strength[" + lv + "]")); 
                agi = (Stats.ReadValue("Paladin", "Agility[" + lv + "]")); 
                vit = (Stats.ReadValue("Paladin", "Vitality[" + lv + "]")); 
                spi = (Stats.ReadValue("Paladin", "Spirit[" + lv + "]")); 
            }
Lower down in Database.cs
Code:
if (Class == 100)
                {
                    str = (Stats.ReadValue("Taoist", "Strength[1]")); // Looks for level and applies Strength attributes
                    agi = (Stats.ReadValue("Taoist", "Agility[1]")); // Looks for level and applies Agility attributes
                    vit = (Stats.ReadValue("Taoist", "Vitality[1]")); // Looks for level and applies Vitality attributes
                    spi = (Stats.ReadValue("Taoist", "Spirit[1]")); // Looks for level and applies Spirit attributes
                }
if (Class == 200)
                {
                    str = (Stats.ReadValue("Paladin", "Strength[1]"));
                    agi = (Stats.ReadValue("Paladin", "Agility[1]"));
                    vit = (Stats.ReadValue("Paladin", "Vitality[1]"));
                    spi = (Stats.ReadValue("Paladin", "Spirit[1]"));
                }
Stats.txt Attached = Stats.ini (Just copied Warrior stats and changed the name for this example)

ProfessionalName.txt Attached = ProfessionalName.ini (Removed Unused Jobs and added my example jobs)

Obviously like i said im not an expert at this but this is just a start to editting the source to create a new class. If any of the information i have provided is proved to be wrong please let me know and ill change it!

Hope it helps.
12/01/2008 17:57 Incariuz#5
Ya, the source code part of that I already figured, lol. Sort of common sense for this. Didn't realize that I'd be looking for txt files to deal with adding the jobs though.

On a side note. I looked around on the forums. Fro what I gather, the MagicType.dat isn't encrypted? o.o

I already have all the info set up in a readable format from it. However, I can't just hop into the MagicType.dat istself and start changing anything without causing issues to loading the client I'm guessing. Based on what I read atleast.

So where exactly would that leave me? Is what I read not true? And I merely have to find a proper decryptor which works with it's algo. Or is there another method?
12/01/2008 18:08 Beta Limit#6
In my example tho the Paladin Class i created could wear Taoist stuff, i cant work out why. So thats one thing you may also face
12/01/2008 18:18 Incariuz#7
Well that's normally something that would be set within the DB isn't it? My only other thought is that all the classes originally placed after job 100 had to do with taoist classes. Maybe that's the cause... Perhaps changing to class 90 would be more effective. But who knows, just a guess...
12/01/2008 18:27 Beta Limit#8
Hmm could be, ill go have a play around with that.

EDIT: Changed Jobs to 50-55 in ProfessionName.ini, Changed Info in Database.cs to match and i can no longer wear Taoist stuff.
My next plan of action is to create an item specific to its class.
12/01/2008 19:51 Incariuz#9
Well... I honestly didn't expect that to be the cause, lol. But hey, atleast it worked.

If you don't mind using existing item meshes, and altering attributes, that should be a breeze. ><