» Log in
User Name:


Not a member yet?
Register Now!
» Online Users: 110
0 members and 110 guests
No Members online
Most users ever online was 1,779, 07-11-2016 at 10:30 AM.
» Ads
» Welcome
Welcome to the Everquest Emulator, An Open Source project committed to providing Custom Everquest Servers.
If you are looking to play on an EQEmulator Server, try our Getting Started Wiki Guide.

EQEmu Has Gone Discord
Aug 10, 2016 - 3:27 PM - by Akkadius

Hello all, our coders channel has been trying out discord and we are loving it so far (most of us, change can be hard sometimes)

I am extending this invitation out to the public to the EQEmu "general" chat channel.

We're looking at adding channels and things over time as people become familiar with it.

Here is an invite link:




See you there!
0 Replies | 5,259 Views
EQEmu Project Update 2016
Mar 14, 2016 - 2:04 AM - by Akkadius
It's been a while since I've done a community update, but its time people get an update of the massive amount of work that continues to drive this project.

We should all be very thankful to have such an amazing community with all of the extremely talented and driven individuals that encompass it.

With that being said, there are so many things that have been done in the past year or so that I will do my best to go over as much of the things that I've seen happen, and I can guarantee you I will miss a bunch of things cause there is just that much going on.

I will also be posting more regular updates so we can have more updates on the things we are doing and plan on doing community wise.

Shards of Dalaya rejoins EQEmulator
  • After a very long project of the Shards team overhauling their back-end code, they have finally been able to make a connection to the EQEmulator public loginserver. Welcome them back as they have been a very unique and customized server that has been running for many years.
  • To get started on this server: https://shardsofdalaya.com/files.htm
  • Website: https://shardsofdalaya.com/

Tak Project (Alkabor - EQ Mac)
  • The Tak project is now on the EQEmulator public loginserver, they have a strong team that has been making huge strides in development
  • Some of the recent changes:
    • They have recently opened up the Bazaar and Nexus, they are working on Velious development and looking to open sometime this year
    • Raid window has been recently implemented
    • Client compatibility improvements
    • Live-like combat ac/mitigation overhauls and adjustments
  • Server Info: http://www.eqemulator.org/index.php?...o&worldid=2561

EQEmu Server Installer
  • For years we've had very long, sometimes convoluted server install guides that could take a new person a lot of time to try and figure out. Even for a seasoned and experienced developer it can be a frustrating process to get a server up and running. I've spent quite a bit of time making this process as streamlined and as simple as possible. I've recently done a several month testing in this thread (http://www.eqemulator.org/forums/showthread.php?t=40299) and things have gone very smooth. Right now this is set for Windows, but could very easily be extended to Linux as most of the installation process is driven from the new eqemu update system
  • Along with this, the "Akka's PEQ Repack" will be retired
  • http://wiki.eqemulator.org/p?Akkas_P...aller&frm=Main
  • Features:
    • 2-10 minute automated EQEmu Server Install
    • Perl 5.12.3
      • Perl DBI module also installed automatically
    • MariaDB x64 10.0.0 - Optimized MySQL configuration
      • Heidi SQL (Comes with MariaDB)
    • Latest PEQ Database and automatically updated with the installer
    • Latest PEQ Quests
    • Latest Plugins repository
    • Visual Studio runtimes (For the server executables)
    • Automatically added Firewall rules
    • New Map formats are loaded
    • New Path files are loaded
    • LUA Configured
    • Optimized and latest server binaries (Stable)
    • Loginserver:
      • The server is configured to use the EQEmu Public Loginserver
      • You can also install a local login-server for LAN play
Loginserver Source Updates (Not the public loginserver)
  • Recently overhauled the logging system that the loginserver uses to conform to the overhaul that happened with the rest of the project to use the same system
  • The loginserver now supports auto account creation for folks who want to have a "LAN based setup" that is completely disconnected from any internet access
  • You can now download a pre-compiled Windows loginserver using option 13 in the update script

Server Performance (Dramatic Improvements)
  • In the past years, we've seen exponential improvements in server performance in the source. Many of us developers have chipped away at costly code, rewritten big chunks of the source and made HUGE improvements.
  • The server performance is currently the best that it has ever been, since I've taken over EZ Server I've had the opportunity to take live production player traffic and put it under a Visual Studio profiler and figure out all of the costly code paths and reduce the CPU footprint dramatically in the source
  • EZ Server used to run 2 Xeon processors with 500-600 players fluctuating often between 30%-100% on all cores approximately 2 years ago. It now runs 1,000+ players with hardly budging from 25-30% idle. The entire community improves from these footprint changes
  • The changes and improvements that have been made are FAR too many to mention, but some of them include:
  • Over the past few years, we've also made huge strides at heavily reducing process crashes that are produced in the source, so the level of stability has also come a LONG way. Very few crashes occur in our current master source branch

Server Development, Management and Tools
  • Hotfix (Shared Memory Hot Reload) (KLS):
    • For the longest time, in order to make changes to spells, items, loot etc. You had to make your changes and restart your server processes (world/zone etc.). Now, thanks to KLS and a massive overhaul with how the shared memory system works, you can use #hotfix to re-apply spell/item/loot changes etc. while you are developing. This cuts down heavily on the feedback loop and creative process when building a server. The command issues a shared_memory reload in all zone processes and world
  • Tools Guide (Compiled by Shendare)
    • This community has seen an incredible amount of tools created by members of the community over many years, some of them are no longer maintained, some of them posted in threads that no one sees anymore etc. Shendare was nice enough to compile a massive tool cheat sheet for developers. Check it out here: (It's quite outstanding)
  • Repop Close (Akkadius)
    • Sometimes when developing or working on a zone, you might need to repop a zone over and over and over repeatedly. This can become a slow process as your zone gets larger and larger. #repopclose was created for developers to only repop a zone with NPC's that are within 500 units of the GM who initiated the command
  • 13th Floor Items Database Update (Demonstar, Natedog, Akkadius)
    • For a while, the 13th floor DB repo had no longer been maintained, so we've not been able to import the latest items into PEQ for the past 2 years or so. Someone recently spun up a copy of 13th floor and we made an effort to help collect item data from Live to be able to import that data into the EQEmu items schema.
    • The new 13th floor import script was originally authored by Natedog, adjustments made by Akkadius:
  • KLS has been recently working on a crazy major overhaul of pathing which includes a visualization program that helps build path files
    • This could be extended into a visual world editor, but right now generates the path/map files for the new overhaul
  • Github Branch: https://github.com/EQEmu/Server/tree/lets_move
  • Navigation Editor: http://wiki.eqemulator.org/p?Navigation_Files
  • Pathing Overhaul Benefits:
    • Better overhaul pathing (Obviously)
    • Future AI overhauls
    • Find functionality will actually generate more proper paths in zones
    • NPC's will avoid swimming unless its a shortcut because there are defined paths. For example if there is a bridge nearby, the NPC will prefer to take that path over just jumping in the waterPathing System Major Overhaul (KLS) (Work in Progress)
  • Alternate Advancement System Overhaul (KLS and Demonstar)
    • This is an older update, but the AA system was a massive disgusting code mess that needed a rewrite. Demonstar put together the packet collect scripts to pull down live AA data and together with KLS they worked on overhauling the AA code.
    • Not only has this made the AA code far cleaner, but it has also made it harder to exploit with the holes that were in it before.
    • With this overhaul we also have all new AA's through Live
  • Inventory Snapshots (Uleat)
    • The ability to have period inventory snapshots for backup purposes has been implemented, a tool can easily be built to restore these snapshots to a character inventory
  • #command overhaul (Uleat)
    • The #command system had a bit of an overhaul, including the ability to set multiple command aliases, the new table is now command_settings, these aliases are separate by a pipe | delimiter
  • Version 2 Maps (KLS)
    • Version 2 maps have been out for quite a while, but this is also an overhaul that has definitely improved server performance, this was introduced close to 2 years ago now and they can be downloaded via the update script
  • Saylink Adjustments (Demonstar/Akkadius)
    • Allowed item ID's to be linked up to ID 1,048,575
    • Saylink ID's are now processed in the aug portion of the item packet so they don't conflict with Item ID's
  • Fixed base resists (Demonstar)
  • Fixed ammo slot modding Skills (Uleat)
  • Secondary Recall Implemented (Demonstar)
  • Guild Banks work for RoF2 now

EQEmu Update System (Akkadius)
  • The eqemu_update.pl script has become an integral part of how a lot of us keep the core server updated. It started by managing our automatic database versioning, which has been a HUGE improvement to server maintaining and has streamlined both the process of developers making database changes, and server operators keeping their database up to date without frustration. It has also extended to multiple other features and uses and will continue to do so.
  • Normally, world will execute this script on boot-up, but you can also manually run it yourself in the server directory (eqemu_update.pl)
    • Database Update System: http://wiki.eqemulator.org/p?Automat...Upgrade_System
      • Will now update databases as far back as 2012 (SVN DB Updates)
    • Bot Database Updates
      • If you are running compiled bot binaries, the update system will recognize this and also has the ability to keep a bots database schema up to date. This is option 4 in the update menu.
    • Precompiled Windows Server Binaries
    • Other things the update script maintains:
      • 1) [Backup Database] :: (Saves to Backups folder)
        2) [Backup Database Compressed] :: (Saves to Backups folder)
        3) [EQEmu DB Schema] :: Check and stage pending REQUIRED Database updates
        4) [EQEmu DB Bots Schema] Check for Bot REQUIRED database updates... (Must have bots enabled)
        5) [OPCodes] :: Download latest opcodes for each EQ Client
        6) [Maps] :: Download latest map and water files
        7) [Plugins (Perl)] :: Download latest Perl plugins
        8) [Quests (Perl/LUA)] :: Download latest PEQ quests and stage updates
        9) [LUA Modules] :: Download latest LUA Modules (Required for Lua)
        10) [DB Data : Alternate Advancement] :: Download Latest AA's from PEQ (This overwrites existing data)
        11) [Windows Server Build] :: Download Latest and Stable Server Build (Overwrites existing .exe's, includes .dll's)
        12) [Windows Server .dll's] :: Download Pre-Requisite Server .dll's
        13) [Windows Server Loginserver Setup] :: Download and install Windows Loginserver
        14) [Remove Duplicate Rule Values] :: Looks for redundant rule_values entries and removes them
        19) [EQEmu DB Drop Bots Schema] :: Remove Bots schema and return database to normal state
        20) [Update the updater] Force update this script (Redownload)


== 03/05/2016 ==
mackal: Implement extra bind points (secondary recall)
For SE_Gate, base2 is which bind to use (starting at 1)
For SE_BindAffinity, base1 is which bind to set (starting at 1)
For SE_GateCastersBindpoint, base1 is which bind to use (starting at 1)
There was actually no spells that don't send to the main bind, but it uses a base1 of 1 which matches with SE_Gate
This also doesn't break anything

== 03/01/2016 ==
Uleat: Fix for LDoN treasure 'npcs' not leaving a corpse (please report any issues..)

== 02/29/2016 ==
Uleat: Change in AddItemBonuses - now includes ammo slot for skill mods only. Defined SoD- client SkillModMax packet property (client does not show..but, does enforce.)

== 02/11/2016 ==
Hateborne: Added IgnoreSpellDmgLvlRestriction rule (boolean) to ignore the 5 level spread when checking to add SpellDmg

== 02/10/2016 ==
Hateborne: Added FlatItemExtraSpellAmt rule (boolean) to allow SpellDmg on items to be added as raw damage versus scaled.

== 01/26/2016 ==
Uleat: Fix for Berserker 'Piercing' skill issues. Server Admins: If you run custom skill sets, this patch touches the code segments that you will need to modify if you have changed the default berserker 1H-/2H-piercing skill values.
Uleat (Daerath): Fix for precision-loss item weight conversions in older clients.
- Note: Cmake must be re-run to include/exclude the required files

== 01/13/2016 ==
Kinglykrab: Modified #flag so you can refresh your target's account status (GM status level) without them having to relog.
- Just target the person whose flag you want to refresh and type #flag.
Uleat: Added itemlink functionality to the #summonitem command. Current use is limited to extracting the item id from the link.
- Invoking by item link '#summonitem Arrow' produces the same result as by item id '#summonitem 8005'

== 01/12/2016 ==
Athrogate: Adding ClearCompassMark() to Lua.
- Lua didn't have ClearCompassMark(). Perl already had this.

== 01/12/2016 ==
Uleat: Fix for tradeskill containers remaining locked after a RoF+ client leaves. Intermediary fix for RoF+ clients accessing tradeskill containers when in use by another player (thanks Natedog!)

== 12/29/2015 ==
Akkadius: Implemented standardized zone controller scripts (Rule Zone, UseZoneController) Defaulted to true
- When a zone boots, it will spawn an invisible npc by the name of zone_controller
- Lua and Perl scripts can be represented with this npc as zone_controller.pl/lua
- This NPC's ID is ruled be define ZONE_CONTROLLER_NPC_ID 10
- Two EVENT's uniquely are handled with this NPC/controller (They only work with the zone_controller NPC)
- EVENT_SPAWN_ZONE :: All NPC spawns in the zone trigger the controller and pass the following variables:
- EVENT_DEATH_ZONE :: All NPC deaths in the zone trigger the controller event and pass the following variables:

== 12/28/2015 ==
Kinglykrab: Added GetInstanceTimer() to Perl and Lua.
- Added GetInstanceTimerByID(instance_id) to Perl and Lua.
- Note: If you do not provide an instance id in the method it defaults to instance id 0 and returns 0 for time remaining.
- Added UpdateZoneHeader(type, value) to Perl and Lua.
- Note: UpdateZoneHeader allows you to manipulate fog color, fog density, and many other zone header settings on the fly in Perl and Lua.

== 12/21/2015 ==
Natedog: Updated item table fields and added a few missing fields for evolving items
-DO NOT implement Heirloom items till the inventory code is fixed to allow placing NO DROP
items in your shared bank. (but item field located on items table)
-NYI - SkillModMax: Max skill point modification from the percent mods. EX:
100% 2HSlashing (Max 50) - can only increase 2hslash by 50 MAX! (item field located though)
Kinglykrab: Added GetMeleeMitigation() for NPCs and Clients in Perl and Lua.
- This allows you to check total item, spell, and AA melee mitigation contribution.

== 12/19/2015 ==
Kinglykrab: Added many methods to Perl and Lua, list below:
- SeeInvisible()
- SeeInvisibleUndead()
- SeeHide()
- SeeImprovedHide()
- GetNimbusEffect1() - returns first nimbus effect
- GetNimbusEffect2() - returns second nimbus effect
- GetNimbusEffect3() - returns third nimbus effect
- IsTargetable()
- HasShieldEquiped()
- HasTwoHandBluntEquiped()
- HasTwoHanderEquiped()
- GetHerosForgeModel() - returns int32 Hero's Forge model
- IsEliteMaterialItem() - returns uint32 Hero's Forge Model
- GetBaseSize() - returns Mob's base size
- HasOwner()
- IsPet()
- HasPet()
- IsSilenced()
- IsAmnesiad()

== 12/16/2015 ==
Noudess: Repaired issue with Bind Wounds on someone else. Message was not coming out on client (hold still) and a bind wounds on someone already binding their wounds would interrupt their bind and make them stand. Also removed some duplicate messaging.

== 12/14/2015 ==
Kinglykrab: Added IsBlind() and IsFeared() functionality to Perl and Lua.
- Note: Both methods are Mob methods and may be used on NPCs or PCs.
Natedog: Added Discipline functions, UpdateInstanceTimer function, and UnmemSpellBySpellID to lua and perl
-Examples: http://wiki.eqemulator.org/i?M=Pastebin&Paste=BJ0ygmNM

== 12/07/2015 ==
Uleat: Command aliases are no longer handled through the command_add() function.
- To add a command alias, edit the database table `command_settings` - here, you will find three columns: `command`, `access` and `aliases`
- Adding command aliases require that the command contain an entry in `command_settings`.`command`
- Only 'real' commands go inside of the command_init() function in command.cpp .. if you wish to add aliases, you must enter them into the database
- 'Real' commands are loaded first .. then any access/alias data is loaded and applied afterwards
- Duplicate aliases will be ignored .. only the first encountered occurrence will be honored - if it does not conflict with an existing command name
- Aliases should not contain whitespace and should be '|' (pipe) delimited
- The restriction on the number of aliases has been removed .. though each alias will still be limited to the access level of the parent command
- If you need need more name space for aliases, simply edit the `command_settings` table and increase the size of the `aliases` column
- The old `commands` table has been renamed to `commands_old` for reference
- All of the current 'standard' commands have been added to the new `command_settings` table


== 11/30/2015 ==
Uleat: Changed criteria for a few bots scripts from count to null/not null in hopes of fixing special case failures

== 11/22/2015 ==
Uleat: Fix for loginserver project compile failure

== 11/7/2015 ==
Akkadius: Implemented #repopclose [distance in units] - Used for development purposes, defaults to 500 units
- Real case use: Large zones with 700 NPC's and you are making fast quick tweaks to nearby NPC's you can refresh just the NPC's around you instead of all in the zone
- This can be quite the time saver
- This command will depop all NPC's and only respawn the NPC's that are 500 units around you or unless you specify otherwise

== 11/2/2015 ==
Akkadius: Performance boost (exponential) - Adjusted default idle cast check timers in rules
- Spells:AI_IdleNoSpellMinRecast 500 (Now 6000) 6 seconds
- Spells:AI_IdleNoSpellMaxRecast 2000 (Now 60000) 60 seconds
- Database version 9089 will take care of this update automatically only if you used the default values
- The CPU cost of NPC's checking the entire entity list to cast beneficial spells (Heals/Buffs) becomes extremely high when higher NPC count zones exist (Based off of process profiling)
- Distance checks for every single NPC to every single other NPC who are casting beneficial spells occur every .5 - 2 seconds unless npc_spells dictates other values, which most of the time it does not
- Zones that once fluctuated from 1-8% CPU with no activity (Idle but players present) now idle at .5% based on my testings due
to this change in conjunction with the past few performance commits, these are zones that have 600-800 NPC's in them
- These values normally are overidden by the spells table (npc_spells), fields (idle_no_sp_recast_min, idle_no_sp_recast_max)

== 11/1/2015 ==
Akkadius: Made many performance optimizing oriented code changes in the source
- Added Rate limit the rate in which signals are processed for NPC's (.5 seconds instead of .01 seconds)
Akkadius: Added Perl Export Settings which should heavily reduce the Perl footprint
- Normally when any sub EVENT_ gets triggered, all kinds of variables have to get exported every single time an event is triggered and
this can make Perl very slow when events are triggered constantly
- The two most taxing variable exports are the item variables ($itemcount{} $hasitem{} $oncursor{}) and qglobals ($qglobals{})
- qglobals can pose to be an issue quickly when global qglobals build up, it is highly recommend to use the GetGlobal() and SetGlobal()
methods instead as they don't reference the hashmap $qglobals{} that is rebuilt every single time a sub event is triggered
- A stress test conducted with 10,000 samples shows an excess of time taken to export variables: http://i.imgur.com/NEpW1tS.png
- After the Perl Export Settings table is implemented, and all exports are shut off you see the following test result:
- The difference of eliminating uneeded exports brings the overhead and footprint of 10,000 triggers from 54 seconds to 2 seconds
- In a 10,000 sample test (10,000 sub event triggers), exporting item variables adds 12 seconds alone, when item variables are only needed in
EVENT_ITEM and EVENT_SAY a majority of the time if at all
- In a 10,000 sample test (10,000 sub event triggers), exporting qglobals with approximately 1,000 global qglobals in the database creates
about 11-20 seconds of delay on its own (Depending on hardware of course)
- I've written a parser that has determined which of these exports are needed in which sub routines and have turned off all of the unneeded
exports in sub routines that do not need them and used it to create the default table that will be installed in the database.
- The export table is called 'perl_event_export_settings' and it resembles the following structure and contains all current 81 EVENTS
- If an entry doesn't exist in this table and a new subroutine is added to the source, all exports will be on by default for that routine

| event_id | event_description | export_qglobals | export_mob | export_zone | export_item | export_event |
| 0 | EVENT_SAY | 1 | 1 | 1 | 1 | 1 |
| 1 | EVENT_ITEM | 1 | 1 | 1 | 0 | 1 |
| 2 | EVENT_DEATH | 1 | 1 | 1 | 0 | 1 |
| 3 | EVENT_SPAWN | 1 | 1 | 1 | 0 | 1 |
| 4 | EVENT_ATTACK | 0 | 1 | 1 | 0 | 1 |
| 5 | EVENT_COMBAT | 1 | 1 | 1 | 0 | 1 |

- If a change is made to this table while the server is live and running, you can hot reload all zone process settings via:
- For those who wonder what "exports" are, they are reference to variables that are made available at runtime of the sub event, such as:
(export_qglobals) (Heavy) : $qglobals https://github.com/EQEmu/Server/blob...arser.cpp#L916
(export_item) (Heavy) : $itemcount{} $hasitem{} $oncursor{} https://github.com/EQEmu/Server/blob...rser.cpp#L1103
(export_zone) : $zoneid, $instanceid, $zoneln etc. https://github.com/EQEmu/Server/blob...rser.cpp#L1083
(export_mob) : $x, $y, $z, $h, $hpratio etc. https://github.com/EQEmu/Server/blob...rser.cpp#L1032
(export_event) : (event specific) IE: EVENT_SAY ($text) https://github.com/EQEmu/Server/blob...rser.cpp#L1141

== 10/16/2015 ==
Uleat: Added command '#bot clearfollowdistance [ | spawned | all ]' to coincide with the activation of the load/save feature for follow_distance

== 10/13/2015 ==
Uleat: Important update to 2015_09_30_bots.sql - fix for orphaned entries causing crashes during the conversion process
Note: Please visit the thread below if you encounter issues during the conversion process

== 10/12/2015 ==
Uleat: Implemented 'bots' database versioning
Note: See thread for more information: http://www.eqemulator.org/forums/showthread.php?t=40091

Kayen: Feign death will now break when hit by casted spells, consisted with live.
Implemented suport for AA/spell effect which provides a chance to avoid FD breaking from spells.

== 10/10/2015 ==
Kayen: Updated mechanics to be consistent with live regarding how invisible breaks when the client is the target of a spell.
Invisible will drop whenever a client is hit with a detrimental spell, regardless of if resisted, if it does damage or AOE.
Hide skill now also follows the same rules as above.
Implemented support for Rogue AA - Nerves of Steel which gives a chance for hide NOT to break
when client is hit with an AOE spell.

== 09/25/2015 ==
Uleat: Implemented 'Inventory Snapshot' feature to track online player inventories at timed intervals.
'Character:ActiveInvSnapshots' - active (true) or inactive (false - default)
'Character:InvSnapshotMinIntervalM' - minimum time between snapshots (in minutes)
'Character:InvSnapshotMinRetryM' - minimum time to attempt a retry after a failed snapshot (in minutes)
'Character:InvSnapshotHistoryD' - minimum time to keep snapshot entries (in days)
'#invsnapshot' - Takes a snapshot of target client's inventory (feature active or inactive)
'#clearinvsnapshots [use rule]' - Clears snapshot entries based on bool argument ([true] - honors the 'InvSnapshotHistoryD' rule, [false] - erases all)

== 08/02/2015 ==
Shendare: VS2013 query StringFormat glitches when "%f" is passed for the int GetRunSpeed().
Shendare: In CreateNewNPCCommand(), the npc_type_id and spawngroupid are created in the database, but never set in the spawn class, so later it can't delete them with #npcspawn remove or #npcspawn delete.

== 07/27/2015 ==
Uleat: Reworked the QS Audit code in Handle_OP_ShopPlayerBuy (\zone\client_packet.cpp) to help eliminate potential for exception errors

== 07/22/2015 ==
mackal: Corrected some hate value calcs based on updated http://www.eqemulator.org/forums/showthread.php?t=39819

Rule Aggro:MaxStunProcAggro to Aggro:MaxScalingProcAggro since the cap applies to more than stuns

== 07/16/2015 ==
mackal: Rework spell aggro based on http://www.eqemulator.org/forums/showthread.php?t=39819

== 07/15/2015 ==
Hateborne: Added optional ability to enforce task level requirements in perl and lua via an added, optional parameter to $client->AssignTask and quest::assigntask.
Use cases:
quest::assigntask(703); # this still assigns the task as normal, no functional change
quest::assigntask(703, 1); # this will assign the task, provided the character meets the db-stored level requirements
$client->AssignTask(703, $npc->GetID()); # still assigns the task as normal, no functional change
$client->AssignTask(703, $npc->GetID(), 1); # this will assign the task, provided the character meets the db-stored level requirements
== 07/06/2015 ==
mackal: Implement Triple Attack Skill
Parses showed about rand(1000) for the chance, may need more investigating
Corrected Double Attack chances as well
Running optional 2015_07_06_TripleAttack.sql will set current toons to their max skill
This is optional because the admins might want to go a different route.

== 07/05/2015 ==
mackal: Rewrite NPC combat attack round logic
An NPC "quading" is really just an NPC with innate dual wield that doubles on both hands
The old rules allowed NPCs to hit 6 times in one round
NPCs also seem to have their own skill progression for DW/DA
See: http://www.eqemulator.org/forums/showthread.php?t=38708
You can set Combat:UseLiveCombatRounds to false to use the old rules
PC Double Attack rates kind of follow the same thing but still needs to be implemented
Kinglykrab: WARNING: summonburriedplayercorpse is now summonburiedplayercorpse, getplayerburriedcorpsecount is now getplayerburiedcorpsecount, summon_burried_player_corpse is now summon_buried_player_corpse, and get_player_burried_corpse_count is now get_player_buried_corpse_count FIX THESE IN YOUR SCRIPTS OR THEY WILL NOT WORK!!!!
Added bot saylinks (thanks Uleat!)
Command aliases for #augmentitem (#aug), #findnpctype (#fn), #findspell (#fs)
Bot command changes: #bot sow -> #bot speed, #bot magepet -> #bot setpet, #bot resurrectme -> #bot resurrect
Changed all occurrences of burried to buried in the code.
client_packet.cpp was referencing old columns in character_corpses, not sure how we didn't already see this before.

== 7/4/2015 ==
mackal: Reworked the activated avoidace skills (riposte, dodge, etc) based on dev quotes
This also fixes the order things are checked (avoidance skills, THEN hit/miss)
Also riposte immunity from the increase riposte chance spell effect.

== 7/2/2015 ==
KLS/Demonstar55: AA system has been rewritten fixing a ton of bugs and extending functionality while making it easier to create new AA points.
KLS/Demonstar55: New tables are needed and so older data will need to be migrated to the new system.
KLS/Demonstar55: The SQL saves the old aa points spent/avail/character_alt_abilities data if any server ops want to do something different than PEQ did with it.
KLS/Demonstar55: Will try to get a wiki entry written up next week some time explaining the system but it's really not hard to follow the db tables in the meantime.

== 7/1/2015 ==
Akkadius: Fix an issue where emote messages would overflow the buffer of 256 by increasing the size and changing some of the initialization
Akkadius: Added a custom Health Update message that will display in the middle of the players screen, to enable this server wide you must enable rule 'Character:MarqueeHPUpdates'
Example: https://www.youtube.com/watch?v=KUVdbPxLIn0
Akkadius: (Haynar) Fixed some runspeed issues with Perl and LUA scripts
Akkadius: (Haynar) Updated #showstats and #npcstats for new speed calcs to display speeds again in familiar float format.
Akkadius: (Haynar) Improved client movement while AI Controlled, such as feared and charmed. Movement will be much smoother from clients perspective.

== 06/12/2015 ==
Uleat: Adjusted SessionStats to better reflect a sister implementation

== 06/07/2015 ==
Uleat: Implemented optional rule for using disenchanted bags. Action triggers at the same point that temporary items are removed.
Optional SQL: utils/sql/git/optional/2015_06_07_TransformSummonedBagsRule.sql
mackal: changes to AA packets since more fields have been identified
mackal: fix exploit with expendable AAs punching holes in the aa_array and staying around longer than they are welcomed

== 05/25/2015 ==
Akkadius: Implemented disjointed zone based time, this can be triggered via quest methods
Akkadius: Added parameter to LUA and Perl method settime(hour, minute, [update_world = true])
- If update_world is false, the zone will then unsubscribe itself from regular worldserver time synchronizations
- Basically this localizes the zones time and keeps it from syncing with world updates
Akkadius: Added DB ver 9082 with update to add npc_types texture columns if table does not currently have them

== 05/22/2015 ==
Uleat: Added null-term declaration for character names in ENCODE(OP_CharInfo) - where appropriate

== 05/20/2015 ==
demonstar55: Bard instrument mods should be more consistent with live. Zoning will keep instrument mod for long duration buffs (selo's)
Still need to have procs/doom effects to inherit the instrument mods from their source buff/whatever

== 05/18/2015 ==
KLS: Changed how fishing locates water to hopefully be a bit more accurate at the expense of a bit more cpu power per line cast.
4 Replies | 6,210 Views
Worldserver Promotions
Apr 26, 2015 - 2:40 PM - by Akkadius
It makes me happy being involved in such a strong community where people are able to relive the passion we all share, express their boundless creativity and learn beyond what you would think is possible.

I don't have one ounce of regret spending the ridiculous time I have contributing to this community. Don't forget the many other developers who also have put tremendous work into this project.

The amount of activity this time of year is typically low, but even considering we have more people involved in the community than ever.

Today I've made quite a few server bumps.

General unofficial criteria for preferred status is to have:
  • 30+ Players
  • Good standing in community
  • High uptime
  • Been established for many months with stable and respected ownership

Servers moved to preferred:
  • Imperium
  • Kimura
  • Blood of Turmoil
  • Vegarlson Asylum
  • Leetsauce Productions
  • Chronicles of Norrath

There are a few servers that failed to register their world servers and were not promoted.

Be proud to run a server that has a following, it is no easy task. However, the rewards can be many if you can stand the hard challenges you face without becoming burned and jaded from the lack of appreciation of players which encompasses all kinds of different scenarios. I've pretty much seen them all. It takes a special person to run a server. Players make sure you extend your appreciation when you can.

Make sure that with this server status, that you run your server with integrity. Our community is heavily based on it.

I would have easily bumped Eriviyn to preferred, but Drakiyth has stepped out to take care of life for a while. Respect to his work and dedication.

Server Names:
  • Make sure you remove special characters like '!!!!!' or 'zzzz' garbage that moves your server to the top of the white list. This is not acceptable on the preferred bracket. If you fail to update your server within the next few days I will bring you back down to white.

If there is any question to any of these bumps, feel free to respond to this thread or PM.
5 Replies | 5,188 Views
Forum Changes and Worldserver Management
Apr 20, 2015 - 11:29 AM - by Akkadius
Forum Changes
  • Code blocks are now 60 lines long if they reach that by default
  • Code block width has been adjusted to 70% of the parent element width
  • New users will now have "Default Thread Subscription Mode" set to "Instant E-Mail notifications"
  • To enable this yourself, you can do so here: http://www.eqemulator.org/forums/pro...do=editoptions
World Server Registration & Management
  • Cranked out World Server account management last weekend that has been long awaited by many (Located on the left Site Navigation under the account system)
  • All of your existing World Server accounts that were tied to your forum account will show up here
  • You can have up to 4 World Server accounts private or public
New World Registrations
  • What you put in the world registration needs to line up with your eqemu_config.xml information in the block. When your server connects to the EQEmu loginserver, it will authenticate itself with this information
World Server Descriptions
  • These can use HTML, I have Javascript tags being stripped. If you post inappropriate content expect to be banned. The same goes for inappropriate server names and use. If anyone finds there is childish server registrations being made, report them to me directly.
Preferred Server Status
  • If you want to be eligible for Preferred Server status, make sure you have your world server registered by the end of this week. I will be going through and promoting/demoting by the end of this week
9 Replies | 5,549 Views
Updating and Maintainability
Mar 12, 2015 - 12:39 PM - by Akkadius
I need to make some overdue news posts on our community and the amazing work our guys are doing behind the scenes all the time, but I wanted to get this information out there because it is no good if people aren't aware of these things being available.

To some of you it has been obvious the attempts to improve an area that has been much needed in improvement, and that is the installing, deployment and maintaining of a server.

For some of us, we can set up a server from scratch in as little as 15 minutes. For some of us it would take a week after frustrating battles and slamming your face into desk.

Akka's Repack
For most new people, the repack has made EQEmu server immediately available and this puts the power of creativity, simplicity, ease and enjoyment into the hands of anyone who wishes to re-experience or express themselves using this great game as their medium.

EQEmu Update Script (Linux and Windows)
Originally, this script was made to keep databases up to date with changes, which it has done so almost flawlessly with some bumps here and there, like any software you overcome bugs and challenges. Now, it has grown into a more complete utility script that you can use to keep server assets up to date with ease.

Right now it supports the following options you see in the image below. With the ability to 'Officially' download the latest V2 Map files which have not been easily available anywhere until now.

It also supports updating LUA Modules/Perl Plugins/PEQ Quests and it does so intelligently, as in, if you have changes between your local file and the updated copy, it will display those changes and ask you if you want to actually update that file before doing so. This makes the process far less blind. And, if you wanted to install all of these things from scratch, it will also pull everything down flawlessly.

Future Additions
What my plans are for adding onto this script:
  • Windows server setup from scratch
  • Windows Loginserver Setup (Local)
  • PEQ Database Auto Import (With prompts to set database name)
  • Windows latest server binary stable download
  • Any other useful utilities that come by over time

Currently this script updates itself when new server binaries are ran, however if you want to update it manually yourself until you update it, here is the current version: https://raw.githubusercontent.com/EQ...qemu_update.pl

So while this is more of a FYI, feel free to post any new thoughts, appreciation or ideas. Thanks, Akka

6 Replies | 4,291 Views
Changes to Bag Save Procedures
Mar 03, 2015 - 7:20 PM - by Uleat
A recent fix to the inventory system necessitated an enforcement of bag size restrictions during the save process.

Any players using an 'interface' to exploit inaccessible bag slots will need to remove items they want to keep from these
locations immediately upon logging in.

Upon logging out or zoning, any items in locations not considered as 'valid' will be lost forever.

Sorry for the inconvenience!
2 Replies | 3,308 Views
UPDATED: Approved Akka's Repack Update 8-26-2015
Feb 05, 2015 - 8:11 PM - by Akkadius
If you are using my repack, and you want to update your server software, there is no current automatic way, but I have stable binaries built and approved through testing here:

UPDATED (8-26-2015) STABLE (From 2-13-2015)

To Update
  • Go to your server folder
  • Backup all of your .exe's (Just incase)
  • Extract the .rar into your server folder and overwrite the .exe's if necessary
  • Run world.exe
  • It will pull down a database upgrade script which will prompt you to update your database
  • Backup your database with option 1) (To be safe)
  • Once that is done, choose option 3 to stage updates so it can figure out which updates need to be ran
  • Run option 3) again to apply the updates
  • Run option 5) to pull down latest opcodes
  • Option 0) to exit
  • Close world, use your server start .bat as normal
  • Done, enjoy all the fixes and stability changes as of 8-26-2015 as well as RoF2

This will also work for all other windows installs.

Perl version 5.12.3
No bots enabled
60 Replies | 19,051 Views
EOC 2.0 Released & Other News
Nov 11, 2014 - 8:37 PM - by Akkadius
EQEmu Operations Center for Development

Apparently releasing EOC 2.0 in its own thread wasn't enough to let people know because in this one week alone I've had people asking me when 2.0 will be released. But check it out because some of the tools are amazing.

Please read this thread and go to the Wiki page that I fully describe everything encompassing EOC 2.0 (Developers toolkit).


As I describe on the Wiki page, EOC 2.0 is simply another development tool, some are very amazing and effective at what they offer. All in all you can use this tool and the already well established PEQ Editor without having to install anything yourself, just follow the simple directions that have been written in the Wiki article.

The purpose of EoC is to provide rapid server development tools that may or may not be available through other mediums.

The goal is not to replace or duplicate effort but to make an extremely effective creative medium to develop and manage server's and their content respectively
EOC Wiki Page: http://wiki.eqemulator.org/p?EQEmu_O...elopment#tools

To answer the question, "Will EOC be open sourced for development?" - The answer is yes, I will Github this project, but only a standalone deployment for 1 user simply because I don't want others doing hosted EOC setups when there already is one. When I get time to address the things I need to address and push it to Github I will.

This will also unlock a can of worms for others to make modules and tools for it as well if they wish.

If you have any questions respond to this thread or the one linked above please.

Worldserver Registrations

  • If you are not intending to advertise information regarding your server, such as the website URL or the description of the server on the server list, IE you are running a development server - you do NOT need to register your server for it to function or appear on the Loginserver.
  • I just got done going through about 20 registration PM's and we have about 75 EQEmu servers on the Loginserver currently


  • Ornamentations have finally made their way to EQEmu with the work of Natedog and Drajor

Active Projects
  • Trevius is currently looking at Mercenaries to see what we can do to get them stable/usable
  • Uleat is working on various fixes as usual and working on the massive Inventory code conversion in the smoothest way possible
  • Kayen implemented target rings with some opcodes and information from Lecht
  • Akkadius to implement de-blobbing the player corpse
  • Akkadius working towards automatic database versioning and upgrade method
  • Addmoreice working towards simplifying the DB API and getting rid of RunQuery, as well as simplifying other API portions of the EQEmu code.
  • KLS and Akkadius continue working on a HTML5 websockets real-time communication framework with the EQEmulator server in the 'web_interface' branch of github SEEN HERE

EQEmu Server List
  • The server list page now shows new servers that are both unregistered and registered on the list now. Thanks Rogean.

Navigation Bar Links
  • Updated commonly used reference links on the navigation bar

Georges Tools Updated

PEQ Database Dump
  • For a while these were broken, not exporting all tables correctly because the script broke due to large changes in the database schema lately, this should be good to go again per KLS

Magelo Updated

  • Maudigan updated his Magelo build to reflect the recent large change in how characters are loaded/saved, to note his announcement, all of the Magelo is currently completely functional
  • Link - http://mqemulator.net/downloads.php#charbrowser

PEQ Mac (Al Kabor)


Robregen: Well we had a breakthrough on the netcode. Thanks to Secrets. He's still refactoring it to further improve it. We open up the Iksar and Vah Shir starting cities and area.
Still moving along nicely although we still have a ways to go. Hoping to open up beta sometime early next year
Speedz: The official Mac clients have actually been able to connect, up until this point its just been the PC client version with recent netcode changes. OSX still needing some work.

Far less desyncs and overall issues since Akkadius' character deblob overhaul. Seems to have alleviated a lot of odd issues, overall we're heading in a great direction.
Recent EQEmu Changelog

== 11/11/2014 ==
Uleat: Third attempt at a fix for GM trainer zone crashes... (this is starting to look like a KLS fix...)

== 11/10/2014 ==
Uleat: Fix for GM Trainer crashing server (really!)
JJ: Yellow faction messages.

== 11/09/2014 ==
Kayen: Implemented support for spell target type (45) 'Target Rings' on Underfoot (does work earlier expansions). Thanks to Lecht for figuring out the op_code side.
JJ: Implement new Live-like faction adjustment message using rule Client:UseLiveFactionMessage.
Optional SQL: utils/sql/git/optional/2014_11_09_LiveFactionMessages.sql

== 11/06/2014 ==
demonstar55: Tracking default sort will now be correct order
Trevius: Fixed dynamic merchant list loading. Allows any merchant to be used in any zone.

== 11/03/2014 ==
Secrets: Fixed an overflow in melee lifetap calculations (int16 vs int32)
Secrets: Fixed overflow on AC and ATK values that can go out of range.
Secrets: Merc/Bot fixes for previous updates.
Secrets: Changed a lot of int16s for stat-related functions to int32 because they were causing combat formula overflows (int16/int32 mismatch).
Secrets: Linux fix?

== 11/02/2014 ==
Akkadius: Added out of range checking for Spell Save/Loads

== 11/01/2014 ==
Trevius: Fixed potential crash related to Pets/Mercs buffs when targeting themselves.
JJ: (noudess) Revamped faction system. See https://github.com/EQEmu/Server/pull/256

== 10/28/2014 ==
Uleat: Added Client::InterrogateInventory(). Can be invoked by #interrogateinv and is also called when Handle_OP_MoveItem() calls for SwapItemResync()

== 10/22/2014 ==
Uleat: Fix for stacking items in a world object..added a new command option: #peekinv world - will show world container contents, if one is in use by target.

== 10/20/2014 ==
demonstar55: Inspect Buffs rank 1 will now show NPC buffs in target window (SoD+)

== 10/19/2014 ==
Uleat: Updated command #peekinv to display item links properly in RoF clients
demonstar55: Group Mentoring in raids
demonstar55: Inspect Buffs (text only version) works in raid groups
demonstar55: Make use of the Inspect Buffs op/packet. 62 SOL until someone finds its op

== 10/18/2014==
demonstar55: Implement group mentor, sharing leadership exp (SoF+ only)
demonstar55: Add gaining of group leadership while in raids

== 10/16/2014 ==
Uleat: Fixed the auto-conversion view naming error and renamed the views in the script files. Added a fix sql for databases that auto-converted.
Fix SQL: ../sql/git/bots/deprecated/2014_10_16_Lower_Case_View_Fix.sql

== 10/15/2014 ==
Uleat: Cleaned up load/drop bots sqls, added '../utils/sql/git/bots/deprecated' and '../deprecated/load_bots_old.sql' (use this file on pre-player blob conversion databases.)
Notes: I modifed the behavior of both load and drop bots to fail on the first operation if their modifications have been performed already.
'load_bots.sql' will explicitly add bot schema, while 'drop_bots.sql' will explicitly drop it. I also added a few lines to change
a few altered tables back to their original state - as of the date in the file.

== 10/13/2014 ==
demonstar55: Partially implement leadership and raids
Currently working: client side only effects and stat bonuses.
Not working: Mark NPC, and other stuff that need extra server side support
Currently only UF tested (Tit and 62 may just work, others need packet work)

== 10/12/2014 ==
Akkadius: Fix for LDON Character Stat load
If I missed anything, please let me know. I'm sure I did, there's a lot going on
5 Replies | 5,187 Views
Windows Server Repack (EQEmu Akka's PEQ Repack)
Sep 27, 2014 - 3:55 AM - by Akkadius
Day after day, I see so many threads of people having issues with their servers and trying to get one started or struggling to get a solid base together.

With all of my 7 years of expertise I have compiled a very precise, simple solution to getting a base PEQ server up and running and it takes as little as 2-5 minutes to install and get off the ground. It took a lot of time to get this repack right but here it is for all to use.

Enjoy - Please post if you have used this and share how easy it was for you.

For more information see below:

Download Page: http://wiki.eqemulator.org/p?Akkas_P...epack&frm=Main

294 Replies | 83,232 Views
World Server Registration for the Loginserver
Sep 17, 2014 - 9:26 PM - by Akkadius
If you want your World Server officially registered on the list.

Send me a PM Here: http://www.eqemulator.org/forums/pri...newpm&u=100179

If you do not fill out the below form, I will ignore your request and will not do anything with your PM.

Server Name:
Server Operator Forum Name:
Worldserver Account:
Worldserver Password:
Website URL:
Server Description:

Note: Worldserver account and password is something entirely new that you create and decide, this will only be used in you eqemu_config.xml which will jive with its registration with the loginserver when it boots up.

I will also edit existing accounts, just send me the same form

10 Replies | 18,117 Views
» Loginserver
.:: Server Listing ::.
» Stats
Members: 234,835
Threads: 38,949
Posts: 252,720
Welcome to our newest member, NightNight
» Current Poll
Favorite Server Type
PvP Only - 8.21%
207 Votes
Mostly PvP, Some PvE - 8.21%
207 Votes
PvE, Optional PvP - 40.60%
1,023 Vote
PvE Only - 42.98%
1,083 Vote
Total Votes: 2,520
You may not vote on this poll.
» Recent Posts
Net Neutrality repeal...
12-14-2017 04:48 PM
Last post by jakalecax
Yesterday 11:11 PM
5 Replies, 148 Views
Question: Updating Quests
12-15-2017 08:26 PM
by dracir
Last post by dracir
12-15-2017 08:26 PM
0 Replies, 42 Views
low fps / lag on new...
12-14-2017 01:16 AM
Last post by shooteneq1
12-15-2017 12:17 PM
8 Replies, 121 Views
The Eqemu App
12-12-2017 10:39 PM
Last post by Mortykins
12-14-2017 07:41 PM
2 Replies, 270 Views
Fun new changes on Raid...
11-30-2017 01:25 AM
Last post by shooteneq1
12-14-2017 11:41 AM
3 Replies, 396 Views
Looking to assemble a...
12-14-2017 10:46 AM
Last post by surfbobo
12-14-2017 10:46 AM
0 Replies, 48 Views
Different Rewards Per...
12-13-2017 01:27 AM
by Minirva
Last post by Splose
12-13-2017 11:49 PM
5 Replies, 105 Views
Looking for a specific...
10-07-2017 10:11 PM
Last post by surfbobo
12-13-2017 10:33 PM
6 Replies, 676 Views
Quick Fix - Mysql -...
12-12-2017 04:40 AM
by dracir
Last post by dracir
12-13-2017 05:01 AM
4 Replies, 122 Views
Thinking Outloud -...
12-12-2017 05:45 PM
by dracir
Last post by dracir
12-12-2017 10:00 PM
1 Replies, 66 Views

All times are GMT -4. The time now is 06:05 AM.
Powered by vBadvanced CMPS v%1$s


Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
Powered by vBulletin®, Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3