Skills Question
Ok I've done a lot of hunting around on the forums so I've done my homework on adding/changing skills on a class and I understand that it's either impossible or just difficult. I'm referring to say giving Bard double attack. My question is to some of you who know more than me is if it is possible, how would you do it?
I've changed a lot of code on the server and in the database in the process of figuring out where this all lead to (that the client side is hard coded) so I have a good idea of how the server side works but how does one go about changing the client? Which file is that code in? Has anyone made a change like this before? Just looking for someone to show me what would be required to make a change like this, I would really really like to customize my server in this way. I think this is one of the most glaring weaknesses in EQ, so many skills are class specific. Why can't a druid parry? Ok maybe it's 25% of a warriors, or 10% or whatever but it should be in there in my opinion. Anyways does anyone have examples, or even just instructions on how to go about doing this? |
one of the problems with giving classes skill they don't normal;y get is that Client won't recognize them.
Yes you CAN give Druid parry and double attack - SERVER SIDE, the client won't see it, but it will work But even giving berserk dual wield server side, won't have any effect on them, cause client will not let you equip 2 weapons no matter what the server thinks. so it works for most things, but not for all |
You can fill in the skillcaps file to make the client think it has those skills in many cases.
|
Which file are u referring to?
|
Pretty sure it's Skillcaps.txt in the resources directory.
|
Yes the one in the resources.
Incase anyone's interested I had these two stupid scripts floating around, the top one exports skillcaps and the bottom one imports. Code:
use DBI; Code:
use DBI; |
Ok not to sound like the village idiot, but I can't find that file anywhere. I've looked in all the client folders and server folders for any text file similar to that and I can't find anything. What resources folder are u referring to? If it's the one on the client I don't have that file. If that is the case, can it be added?
|
I found SkillCaps.txt in SoF, but not titanium. I guess it was something they added later on (perhaps so updating/changing skills wouldn't require the customer to download a whole new updated client).
edit: that is, in Resources/SkillCaps.txt |
Would it be compatible with the titanium client or would I need to update my client to the SoF version? Any way you can send me that file?
|
yeah I am curious if this will work for T, like granting casters Dual Wield
|
Thanks a lot for posting those scripts KLS, you saved me countless hours!
|
Hey thanks for all the help, I've made some headway. I can now see and train the new skills in the client, however they don't seem to be working. My druid doesn't ever parry or double attack. I've been looking pretty hard in the attack.cpp file but to the best I can tell it's checking the DB for whether or not a character can parry. There is some hard coded class stuff in there in the same function but it looks like that is for the NPC code and the clients check the DB. Any idea why the skills might not be working? Hope it's not also hard coded in the client.
|
I know I am missing something simple here but what is the catch to use those import/export scripts. I can tell I have something right cause the import script will delete my skill_caps table but it won't add anything to it.
What are the required perl packages/modules that I need to install? I currently have all DBD, DBI, mysql & sql packages excluding the DBIx packages. What am I missing? |
They carry same dependency as the import and export spells scripts. DBI and mysql. You do of course need to manually set the info since i don't read from the config file or anything.
|
They should work basically the same as the import/export spell scripts, except you have to edit the DB info in them. You will need to run them from the command prompt something like this:
Code:
perl export_skillcaps.pl |
I finally got the scripts to work. On Windows you can right click the file and open with Perl Command Line Interpreter. In order for the import script to work properly I had to put the SkillCaps.txt in C:\Windows\SysWOW64
Didn't figure that out till the export script ran properly...had to search my drives to find it. It may have just been my computer configuration but I think the windows version of perl requires some additional perl packages to be installed. That may be different in some Linux versions as perl comes as part of the OS install...Ubuntu is a good example of that. |
I had to install the DBI stuff on windows with activeperl but otherwise worked perfectly if it can't find it in the directory its run from sounds like a perl configuration issue.
|
Could running the scripts from my desktop had anything to do with the file input/output location?
|
It just looks for the file in the current directory, so if your skillcaps.txt file wasn't on the desktop too then that's likely the problem.
|
But do the skills you added actually work? So far mine look the part but don't work in combat. Wondering if I need to edit the code.
|
I figured it out. You will have to edit the mob.cpp file for each skill you add.. woohoo thanks for the help guys!
|
I am so confused here.. Wanted to find a way to give SK track skill. But, I can't make any sense out of the info here. I found the skillcaps.txt. I tried to run the script as a .vbs file. I must be screwing something up.. :confused:
|
To add skills to a class, you have to modify both your skill_caps table in your database and your SkillCaps.txt file. SkillCaps.txt is located in the Resources folder under your Everquest directory. I think the SkillCaps.txt file has to match on both your server and client. I know it has to be the udated one in the client Everquest folder.
If you want to add Tracking to an SK, go to your skill_caps table in your database ( I use HeidiSQL for this) and go to the data tab and hit Show All. Scroll down until you see Skill 51 (51 is Throwing) for Class 5 (5 is SK). Follow this until it ends at level 100 or whatever level yours ends at. You will see the skill column skip from 51 to 55. Insert your data here. Do not skip any levels. If you do not want your SKs to get Tracking until level 10 then fill in levels 1 thru 10 with a cap of 0, else you will be able to use it at level 1. Next go to your SkillCaps.txt file and open it with Notepad++ the first two columns in it are reversed from the one in the database table. Scroll down in it until you see 5^51^100^400^0 or whatever is the last 5^51 in your file and insert your data here as well. I hope that helps you. |
If you select to build the client files tools, you just run the export_client_files program after editing the database. (Note make sure you make a directory named export before running)
The Perl script failed to run as a vbs script because its a Perl script not a vbs script. |
Quote:
http://i58.tinypic.com/rapan9.jpg Quote:
Here's both my skillcaps files after the changes: http://i62.tinypic.com/67jd51.jpg http://i61.tinypic.com/fn47bq.jpg P.S. If I continue to scale track skill past 200 will it keep increasing in effectiveness? Or will I break something..? |
EntityList::MakeTrackPackets in zone/entity.cpp has some class checks.
|
Quote:
http://i61.tinypic.com/22e49l.jpg Still the same problem as before. Empty track window in-game. :,( |
http://forums.axclassic.com/viewtopic.php?f=1&t=2715
Seems like they had a similar problem. They don't say how they went about fixing it though.. :confused: Would very much like to make this work. If anyone knows how? |
Did you recompile after making the change to the entity.cpp file?
|
Quote:
Do I just redo step four in the guide? "Step 4: Compiling the server. *a) Get (Git) the source code! Now on your main C-Drive, expand the EQ folder and then right click on the folder called Source. From the menu that pops up, select 'GIT Bash'. A command window should pop up (similar but not the same as the standard Windows command prompt). Type the following EXACTLY (including the period at the end): git clone git://github.com/EQEmu/Server.git . *Note the . at the end of the command*, i.e. there is a space after Server.git and then a period/full-stop. This is important. It tells GIT to clone the source code into the current folder , i.e. C:\EQ\Source If you omitted the . it would create a new folder called C:\EQ\Source\Server and download the source into that. The output of the git clone command should look similar to this: Cloning into '.'... remote: Counting objects: 1288, done. remote: Compressing objects: 100% (1070/1070), done. remote: Total 1288 (delta 225), reused 1262 (delta 199) Receiving objects: 100% (1288/1288), 3.17 MiB | 856 KiB/s, done. Resolving deltas: 100% (225/225), done. Checking out files: 100% (1181/1181), done. If you go to C:\EQ\Source in Windows Explorer, you should see a bunch of files and sub-folders have appeared, namely CMakeLists.txt LICENSE.md cmake eqlaunch ucs zone shared_memory README.md common loginserver utils GPL.txt changelog.txt dependencies queryserv world Note that if you want to update your source code in the future to the latest version, follow the process above, but instead of typing 'git clone ...' you would just type: git pull and that would check for updates to the source code and download the latest version if there have been any changes since you last did a git clone or git pull." |
Just open the SLN file.. and hit compile :) after you have made whatever changes to the source files.
|
Quote:
http://i59.tinypic.com/123phs4.jpg http://i58.tinypic.com/30bpuuv.jpg Still no change in-game though. No matter which zone I try there is never anything on track.. http://i62.tinypic.com/2gvlycj.jpg Was there another step after recompiling those files?.. :confused: |
You need to select build to build the solution (F7), then you need to copy the newly built executables to your server directory.
|
Quote:
http://i59.tinypic.com/33xyg6c.jpg http://i59.tinypic.com/24mwdxj.jpg Still no change. Nothing on track regardless of track skill/distance/zone/mobs. I think the gods are against me.. |
You know, you could just say you did it, the giant screen shots add nothing to the conversation.
|
This does work... but there are a few other areas you NEED to change!
client_packet.cpp Code:
void Client::Handle_OP_TrackTarget(const EQApplicationPacket *app) Notice all I did was add Warrior to those 2 functions .. plus I added warrior to the one you posted earlier as well.. Hopefully this helps :) This is it working on a warrior http://i.imgur.com/hfdUdUE.png |
Quote:
Quote:
That was my thought process anyway.. |
Those screen shots help people like me who do not have the knowhow or experience to do it without a little hand holding. Don't shun it unless you want to keep the community small.
I know I necro'd this... to SHOW you I was researching it before I start a new thread with my own question! BFD, don't read it then... |
All times are GMT -4. The time now is 12:46 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.