Mercenary Development Tracking
This thread was created to track the development of Mercenaries in EQEmu.
Here is the previous (old) thread on this subject from when the work was initially started: http://www.eqemulator.org/forums/showthread.php?t=35147 Overall, Mercenaries are now more functional than ever. There are still a few remaining issues to work out. Last Updated - February 1st 2015 Top Priority Work: 1. Grouping - Mercenaries can sometimes still cause a group to get bugged in certain scenarios of creating/disbanding groups. 2. Stances - Currently, changing mercenary stances is not supported. This will require writing AI for different stance types and applying it. Medium Priority Work: 1. Casters - There have been reports that the damage caster Mercenary does not cast often or at all. Needs further investigation. 2. Resurrection - Mercenaries resurrections are not yet supported in EQEmu. Low Priority Work: 1. Timers - The timers for upkeep and suspend aren't always accurate. This is probably due to how/when we send certain packets. 2. Mercenary Window - Sometimes the Mercenary Window will pop up for players that don't own a mercenary. They also get messages related to Mercenaries. This needs to be investigated. 3. Base Settings - Mercenaries only save their current settings such as size, race, etc. They should have base settings added for those fields and only save the base instead. 4. Follow Distance - Mercenaries currently follow a bit too closely. Need to adjust the follow distance to about double (or so) what it is now. Client Issues: 1. The dbstr_us.txt file does not include all Mercenary types for every race that is available for Mercenaries. This can be corrected by adjusting the database to match what the clients have available. Database and Source Code Changes that will be needed at some point: 1. AAs - There is now a Mercenary AA tab on newer clients. No support for this yet in EQEmu. 2. Inventory - Mercenaries now have a few slots for inventory in newer clients. No support for this yet in EQEmu. 3. Multiple Mercenaries - Newer clients support owning multiple Mercenaries at a time, so you can switch between then without needing to visit the merchant again. Still only able to have 1 Mercenary spawned at a time. 4. Give Mercenary - Giving a Mercenary to another player is not yet supported in EQEmu. 5. Simplicity - Need to simplify database management of Mercenaries and their Merchants. Recently Resolved Issues: 1. /split - Splitting money to a group using /split (and probably turning split on) caused Mercenaries to take a share. This has been resolved. 2. No Mercenary Messages - On zoning, you get duplicate no Mercenary messages. This was resolved by removing a duplicate SpawnMercOnZone() function during zone process. 3. Unsuspend Issues - Sometimes it is required to zone/relog in order to be able to unsuspend a Mercenary. This bug was resolved by having unsuspend load the Mercenary data if it isn't already loaded. 4. Leveling - Mercenaries currently don't level with a character. This was resolved by adding the level appearance on level as well as scaling their stats. If there are any other issues with the current Mercenary updates, please feel free to post them in this thread and they will get added to the list above once verified. |
Using ROF2 client sometimes caint unsuspend a merc unless zone or evac.
|
Another Merc issue has arrived since you did last update on Storm Haven i caint invite other toons my group if i have merc out have get rid it invite others group.
|
Quote:
I was already aware of the issue where mercs sometimes cannot be spawned without zoning first. I am not sure why this happens yet, but will look into it further once RoF2 is finished. |
The AI on the healer mercs needs tweaking. Before level 10 my healer merc would cast heals when I was about 35% or so which is fine. Once she hit level 10, the healer merc would cast heals even if I was at 99%. Inefficiently burned up all her mana in battles. I am using recent build from 1/9/15 and SoF2 client.
|
where can i debug (more debug then already can do) no mercs? #questerrors gives no errors, no errors in sourcing the sql in its all there in the database (manually confirmed this). no errors in any log any where, however i cant get the merc hire window to come up.
|
Quote:
Code:
#define MERC_DEBUG 0 Pretty soon, I think that debug will be available to enable in-game without having to change anything in the source. The logging system is undergoing a massive revamp right now that I think should be done soon. Once it is ready, I will convert all of those client Message() debugs in the merc code into using the new logging system. You would then be able to chose what you want to be shown to GMs in game in real-time, which is pretty badass. In the current source, it should be fairly simple to get mercs running. You just turn the AllowMercs rule on (true) and create an NPC of class 71 and set their NPC ID in the merc_merchant_entries table. |
After a few hours, i just dropped ALL merc tables and resourced them, i can now right click them, but about 1second later the window closes with the message
"you do not meet the requirements to purchase any mercenaries" running RoF Client and the git was from last night about 9pm when i updated it. |
I had the same problem, but only with the liaison in (revamped) freeport (did not try other cities), the ones in POK did work...
|
I dont get it, everything is proper, rof2 client, i noticed that it reports 0/0 expansions, but eqemu has always done that, i can access all content, zones etc that are in eqemu and rof2.
just cant access these dog gone mercs i even set account where expansion says 0 to 21 and went down from there and nothing. |
And you added the Liaison NPC ID to your merc_merchant_entries table?
|
The mercs.sql appears to be incomplete. I had to run the extra scripts from the below thread. Once I did that, the merc vendors worked fine and I was able to buy one.
http://www.eqemulator.org/forums/sho...ht=merc+failed |
If your tables are not correct, you should be getting MySQL error messages in your world process window. Have you reviewed that window to see if any errors show up when your zones boot or when you right click on a Mercenary Liaison?
|
Quote:
when i source the sql for that table it gives errors why is there such a query used for this? heres the sql that comes with eqemu Code:
REPLACE INTO merc_merchant_entries ( merc_merchant_template_id, merchant_id ) VALUES ( (SELECT merc_merchant_template_id FROM merc_merchant_templates WHERE name = 'Default Barbarian Mercenaries'), (SELECT ID FROM npc_types WHERE name = 'Guardian_Caynd')); and the error [evlite] ERROR 1242: Subquery returns more than 1 row |
EDIT ON BOTTOM
just fyi, im working on new sql for this table, something a little more efficient, about halfway done with it. no errors with this sql. Code:
REPLACE INTO `merc_merchant_entries` (`merc_merchant_entry_id`, `merc_merchant_template_id`, `merchant_id`) VALUES(1, 23, 394050); after i spent 30 minutes getting the sql right and in, the failed to load pops up, now ive already used the info in the linked thread so yea. not sure if i missed anything. from query error log Code:
[MYSQL ERR] Table 'eq.vwBotCharacterMobs' doesn't exist Code:
ALTER TABLE `merc_weaponinfo` CHANGE `d_meele_texture1` `d_melee_texture1` INT(10) UNSIGNED NOT NULL DEFAULT '0', CHANGE `d_meele_texture2` `d_melee_texture2` INT(10) UNSIGNED NOT NULL DEFAULT '0'; |
From your errors, I am guessing you are using bots, but also have some SQL issues with them.
As for the merc SQL errors, those should have been corrected when you started world and the auto db update script ran. When it starts, it will bring up a menu that says if your db is up to date or not (and yours should have said it was not due to the meele vs melee issue). However, if your server was updated correctly, and then you resourced the merc stuff after that, the DB version would match the server code, so it wouldn't check for the db updates like the meele one for mercs. If you set your db version in the db_version table to something like 1, it would recheck all SQL updates and let you apply them automatically. This should have been able to correct your issue with the SQL errors. As far as setting up the individual merchants goes, I haven't really looked into that when using a current PEQ DB and the merc related SQL. Basically, what you need to do is get 1 Merc Merchant working by adding it to the merc_merchant_entries table and after that you can fix the rest in the same way. Seems like you are already making progress on that stuff though. |
not using bots yet, compiled with but the sql is... and issue in another topic.
I built in the exact order (except the virtual box stuff) as this guide states http://wiki.eqemulator.org/p?EQEmu_o...n_7_Virtualbox and still ended with those issues, but ive fixed them and mercs are operating excellently, tank mercs are swinging at about 500% haste but that is a small issue that can be fixed later |
I have been playing Live recently and noticed that Merc healers (balanced) start to heal you when your health dips below 75%. In EQEmu it is set to 95%. Can this be adjusted to match Live? 95% is inefficient and a merc can burn all their mana early in one combat.
I have thought about parameterizing it, but I am not that well versed in C++. |
Quote:
|
Quote:
We still need to implement stances, roles, and plenty of other things first, unless someone else wants to work on the AI at the same time as this stuff is being done. Quote:
|
Merc attack speed should be fixed now.
|
Just started playing with a merc for first time, since they were put in the EQEmu game.
I only tried a tank merc, but seemed to work pretty good, zoned around, killed a few mobs.(on my own server) I disabled the upkeep in rule values, then I noticed my UF client still getting the upkeep messages, so for now I set the upkeep interval timer to 9999999 just to slow that annoying message down. I also noticed if I zone with the merc unsuspended, the merc window changes and the "info" shows a db_string error. No big deal though, everything still works. |
Hi guys, newbie here so please forgive me if this is answered elsewhere. I haven't had much luck finding fixes for the merc stuff though I do appreciate the fact that I've learned a lot of SQL and am really getting a good insight as to how things work on the backend.
Anyway, I've been working on getting my mercs up and running for a few days now and keep running into problems. I sourced mercs.sql but after a lot of forum research, I've come to the conclusion that I might have an old version of it. Eyeballing the database tables and looking at what the script was doing, I found some problems:
Quote:
I'm running EQEmu in a Debian VM using MySQL if it matters. And definitely thanks for all you guys do, even without the mercs I'm having a lot of fun learning how the game works! Edit: I think I got it. Rereading my own quote from Trevius (duh) I ran the query: Quote:
Quote:
|
Is there a way to enable journeyman 5 mercs?
|
Just installed a fresh PEQ db from an install of the awesome auto-installer by Akkadius. I enabled one mercenary vendor (71) in PoK to test. I am using UF. I get apprentice and journeyman drop downs. But I get no tiers and the right 2 sub-panes DB string errors. I have tried 2 different client dbstr_us.txt (live current ~7mb and rof2 ~4mb). I have also reloaded mercs.sql and restarted the server. And last, when I hit hire I get "mercenary failed to spawn". There are no events logged and no sql errors in world pane. Oh and yes rule set is enable also.
Help! Celestial |
Using ROF2 tested out mercs on my server and the tank merc journeyman tier 2 attacks everything as soon as auto attack comes on, the damage caster will run up to the mob but does nothing, and the healer will cast buff but not heal.
|
Update: I dropped all merc tables and the view. Sourced in tables from the current peq db and got Mercs to work. I confirm ionhsmith's assessment of merc behavior. I am using UF client.
Celestial |
Quote:
I noticed someone abusing the merc healer set at a default 10 second timer, by running him dry then suspending him and unspending him back to full mana and health. So, I thought changing them both to the same number would change the interval, apparently the timer was hitting zero with the MS setting and the actual unsuspend time was going the full time of the Seconds setting and not letting me unsuspend. If that makes any sense. I changed the Merc:SuspendIntervalMS setting to 180000 (1000 milliseconds = 1 second) and the Merc:SuspendIntervalS setting to 180 Now the unsuspend merc button will appear after 3 minutes of suspending the merc or the death of the merc. The unsuspend/suspend button works without zoning on Sof2 and Underfoot. |
Quote:
|
Quote:
|
Quote:
|
Quote:
EDIT: Test this out for me. In your rule_values, set the Mercs:SuspendIntervalS to 52 and your Mercs:SuspendIntervalMS to 52000 and then restart your server and test the suspend button. Watch the timer and see where it starts and where it refreshes, then attempt to continue to use the suspend/unsuspend and see if works unlimited. Somewhere 52 seconds is getting added to the timer, then when it hits 52 the button refreshes, anything set over 52 seconds and the timer will work twice then pass the 52 second mark without refreshing then run to 0 with no refresh of the unsuspend button. Ok, it has nothing to do with the Mercs:SuspendIntervalS time, no matter what time you set it at, once you unsuspend the merc the timer tics until you run out of time to unsuspend after you either suspend or the merc dies. |
Quote:
Notice how you don't even need to populate Mercs:SuspendIntervalMS; you could just leave it at 0 and it falls back on the Mercs:SuspendIntervalS entry. The opposite isn't true, however. |
Quote:
EDIT: Actually there is a packet sent to refresh the unsuspend button for a limited time, seems like the first time you unsuspend the mercenary a hidden timer goes off and after approximately 5 minutes or so the unsuspend will not refresh no matter how many times it worked prior. confusing i know. haha |
All times are GMT -4. The time now is 08:46 AM. |
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.