PDA

View Full Version : Question on customizability of EQEmu


meshershark
12-17-2007, 09:56 AM
I've got EQEmu up and running, with build 992 (so I can do EQoffline bots) and the latest PEQ and MiniLogin.

My question is, how much of my EQ experience can I customize without having to modify the EQEmu source and recompile (something I'm not quite enough of a programmer to do at this point). I can see tables in the PEQ database like Variables and Rules, but what do they do? The only Variable entry I have is one I created for MiniLogin.

For instance, if I wanted to tweak things like Health and Mana regen rates, or how much damage Monk hand-to-hand does, or how much HP a character has as it levels, are those things I can do via the database or nonbinary files? I'm comfortable running MySQL commands and manually modifying tables, but I've barely dabbled in C++. I've looked around the PEQ tables but I don't see things like I mentioned above exposed in those tables. And I haven't seen any documentation on how or if I can use tables like Variables and Rules to do that kind of thing.

Basically I'm looking to experiment in ways to make the game more solo-friendly without resorting to the #invul command. I already know how to do something like modify the npc_types table to lower mob HP, but it would be nice to affect things at the character level too. I've seen the GM commands to set skill values, but I haven't seen any commands to set stat values or HP/Mana (I assumed because those two are derived values). And I've certainly never seen commands to modify regen rates or anything like that.

Secrets
12-17-2007, 10:40 AM
I've got EQEmu up and running, with build 992 (so I can do EQoffline bots) and the latest PEQ and MiniLogin.

My question is, how much of my EQ experience can I customize without having to modify the EQEmu source and recompile (something I'm not quite enough of a programmer to do at this point). I can see tables in the PEQ database like Variables and Rules, but what do they do? The only Variable entry I have is one I created for MiniLogin.

For instance, if I wanted to tweak things like Health and Mana regen rates, or how much damage Monk hand-to-hand does, or how much HP a character has as it levels, are those things I can do via the database or nonbinary files? I'm comfortable running MySQL commands and manually modifying tables, but I've barely dabbled in C++. I've looked around the PEQ tables but I don't see things like I mentioned above exposed in those tables. And I haven't seen any documentation on how or if I can use tables like Variables and Rules to do that kind of thing.

Basically I'm looking to experiment in ways to make the game more solo-friendly without resorting to the #invul command. I already know how to do something like modify the npc_types table to lower mob HP, but it would be nice to affect things at the character level too. I've seen the GM commands to set skill values, but I haven't seen any commands to set stat values or HP/Mana (I assumed because those two are derived values). And I've certainly never seen commands to modify regen rates or anything like that.

Few things you can do.

1) Binary changes. You can put cases for certain classes, you can put slashing attacks on a whole different formula than say piercing attacks, or you can redo existing formulas.

2) Zone changes. You can use navicat and #npcstats to change every mob in the game by hand, or run queries to update by range of damage, adjust level of all mobs, etc.

3) Item changes. This fits in with the above, but I give it a seperate section because items are not zones. Different items obviously give a different rate + custom-feel of playing.

4) Quests. They add depth and can be changed nearly at will. What you use them for is up to you... Event mob scripts, conversation with the locals... it's all up to you.

The best place to start to learn how to change most of these would be messing around with the binaries, reading the wiki, and simply 'cause and effecting' it in game with actual players testing the content, whether it be your friends, yourself, or the general public.

Once you get a feel for what CAN be changed, the possibilties are endless.

meshershark
12-17-2007, 11:07 AM
Thanks. When you say "Binary changes" what are you talking about? Modifying C++ source code and recompiling or using a hex editor? As I said, I'm not comfortable with doing C++. However, I've used a hex editor before, so I wouldn't be totally opposed to that if I had clear instructions. Still, what I'm really wanting to know is what I can do by just using the database or modifying text config files. Is there any documentation on doing any of that for EQEmu? Another thread here seemed to indicate that it was pretty much up to me to download the source code and figure it out.

I can see by looking at the tables how to do things like 2) and 3) that you mention. I regularly use Navicat to look at the PEQ database and browse around. I'm handy with SQL queries, so I can gather data and I even did some minor updates (tried out lowering mob HP).

As for quests, I'm not so worried about that right now, unless I run into some bugs. My understanding is that the quests are Perl based; I've used Perl in the past, but I'm pretty rusty now.

Since I originally posted, I've checked the PEQ forums and I saw that in the CVS download of the db there is more data. I already had that download, even though I used the newest Ykesha/PoP db I got from the web site. I can see in the "rules_values.sql" from the CVS download that there are some things like HP and Mana regen I can play around with, so I'll try that.

I now realize that it might have been better to start in the PEQ forums since my questions are more database focused that EQEmu focused, but I know many people frequent both forums, so I'll leave this here and try the other forum if I don't get much response here.

Theeper
12-17-2007, 11:38 AM
The variables table has serverwide configuration stuff, some of which is deprecated. It's pretty self explanatory what each value does. The Rules system is relatively new and replaces some of the functionality of the 'variables'. Ultimately, I think the plan is that rules will be dynamically loadable on a per-zone basis and rules will overwrite variable values. Right now, I think rules are still global. But, you can make multiple rulesets and easily switch between them using a row in the variables table.

If you load up the default rules, it should contain most of what is available ATM.

The majority of the math for things like combat formulas happens in the code and can only be modified by editing the source and recompiling, but some of the values can be changed in the rule_values or variables tables .. like Combat::WarBerBaseCritChance. Some things are client side and cannot be changed at all.

You can change any thing you see in the database with whatever editor you use. Some things, like a player's HP are in the DB, but they are in binary form and require some programming knowledge and a ton of time to edit. The player 'profile' stuff is stored as an array of hundreds of binary data elements. You'd have to break it into it's components, then convert it to something human readable. Editing things like AA is very difficult until someone comes up with a good tool for it.

Diuretic
12-17-2007, 01:27 PM
Aye, you've asked a pretty general question, and the answers are spot-on.

You can do a lot of customization in SQL, pretty much all items and mobs. If you want to change the core mechanics of the game, not content (see above), then you're probably going to start needing to dabble in C++. Fortunately, the code's pretty well-documented (IMHO), and we all have to jump in some time. But before you do any of the source mods, consider getting your feet wet with items, mobs, and zones; i.e, the content before the laws of the universe.

And all of this should come after you check out the wiki's decent documentation of the rules and variables options. They're separate tables where the variables system is gradually being replaced by the rules architecture, but both seem to sort of apply, so you should probably get cool with knowing what both can do.

When you can master the variables/rules, the mobs, spawning, and items, then you're ready for source code b/c you'll have no other choice to do what you want to get done. Before that point, though, you're probably putting the cart before the horse.

I say all of this b/c I've only just know begun to realize what I can't do after 3 months of enthusiastic modding. I'm still pretty much ok customizing the DB and pretending I was Angelox or CaveDude from about 3 years ago. ;)

Anyway, good luck!

D.

meshershark
12-17-2007, 02:28 PM
Thanks for the replies.

I've sourced the variables and rule sets and rule values sql files from the PEQ CVS download to add the contents (I removed the lines that did anything else so they wouldn't wipe the tables, even though most of the tables were empty).

At least some of the Variables are working, because I now see the MOTD, and I customized it and I see my version. I can't tell if the Rules are working. I tried changing the HP and Mana regen multipliers but I can't see a difference in game. It's like those values are being ignored. The HP regen in game is very slow (even before I loaded those values), and does a strange backstep where I'll gain 6 hp then lose 4 in the subsequent tick (and no, even though it's a necro, he's not using the hp-to-mana spell).

Is there anywhere that definitively says which variables are used and which are no longer valid and which rule values are used and not ignored?

I've looked at the EQEmu and ProjectEQ wikis/wikkas, but I haven't seen any detail on how to use the variables and rules tables. I can find the schema, but that doesn't tell me anything I can't already see with Navicat. Am I not looking in the right place? I using the links http://www.projecteq.net/wikka/HomePage and http://www.eqemulator.net/wiki/wikka.php?wakka=HomePage which I've seen in forum threads.

Diuretic
12-18-2007, 02:28 AM
I was referring to http://www.eqemulator.net/wiki/wikka.php?wakka=ServerVariables (http://www.eqemulator.net/wiki/wikka.php?wakka=ServerVariables#MerchantsKeepItems ) for the variables table and http://www.eqemulator.net/wiki/wikka.php?wakka=ServerRules
for the rules pages.

But you're asking a great question. The documentation of setting dominance or migration from one system to the other is lacking and usually must be3 searched for on an issue-by-issue basis in the forums.

A patient man, I trust the wiki links above will get updated eventually.

meshershark
12-18-2007, 04:05 AM
Ah, thanks for those links. I couldn't find those looking through the EQEmu site for some reason. They really help.

I figured out why the Rules weren't working. I overlooked that the insert command I copied used ruleset_id 2 in rule_sets but the command I copied to insert the rule_values used ruleset_id 0. I changed the 2 to a 0 in rule_sets and now the rules seem to be working. In hindsight it seems obvious those need to match; I just didn't catch it because I copied both commands from the PEQ CVS sql files and assumed they were correct.

Now I can play with enhanced HP and Mana regen, so I can solo well without using #invul (which I hated resorting to). Since crowd control spells and abilites are iffy in EQEmu/PEQ, I felt I needed a boost to make it truly solo-friendly. The upped regen will help in tough fights and also reduce downtime (which was tolerable when grouping with real people but just tedious when soloing). I also lowered mob HP across the board to make fights shorter but not so short that I miss skillups or lose the feeling of truly engaging in battle (versus wading through paper targets like a god).