» Navigation
» EQEmulator
» » Forum Home
» » Server List

» Play
» » Getting Started

» Server Installers
» » Windows
» » Linux

» Resources
» » Tools Cheat Sheet
» » Latest Windows Bins
» » Pastebin
» » EOC
» » FAQ
» » Wiki
» » Changelog

» Log in
User Name:


Not a member yet?
Register Now!
» Online Users: 160
3 members and 157 guests
devn00b, kcmore194, Osage
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.

Changes to Heading -- Breaking Changes
Feb 16, 2018 - 4:46 PM - by demonstar55
Heading was wrong. So I fixed it. Sadly this means quests and DB have to be fixed.

The required SQL included (2018_02_13_Heading.sql) will fix spawn2 and gird heading entries.

Quests can be fixed with running eqemu_server.pl. Some headings that the script finds fishy will be remarked with "needs_heading_validation" and will require manual intervention.

If you wish to manually fix headings in your quests you will have to look at calls to quest::spawn2, eq.spawn2, eq.unique_spawn, quest::unique_spawn, GMMove, MovePCInstance, MovePC, and moveto. Doubling the current heading values will result in new correct headings. Anything that references a heading from say another mob don't need to be modified.

If you go on to official servers and use MQ2 to get headings you can do /echo ${Math.Calc[${Target.Heading.Degrees}*512/360]} to convert it to correct "EQ degrees"
3 Replies | 2,804 Views
NPC Spell AI Casting Changes
Feb 01, 2018 - 8:05 PM - by demonstar55
I added a special case for priority 0 spells. This new special case basically emulates what we believe EQ devs call "innate spells."

NPCs with innate spells will try to spam these on their reuse timers. Ex. Lord Naggy's AE fear is always cast on recast timer. You should be able to count on it.

Most of normal EQ mobs function like this and eliminates the need to use quest scripting.

I also added support to define a valid HP range an NPC will cast a spell. The min_hp field is the low end of the range and max_hp field is the high end. For example, lots of mastruqs in GoD will cast Protection of Discord at low HP, setting max_hp will allow the NPC to not cast this until they reach this percentage. This range is also purely based on the caster's HP ratio.
3 Replies | 2,734 Views
Dev Blog: New Server Config Loader (Json)
Jan 13, 2018 - 7:48 PM - by Akkadius

Thanks to the work of Shin Noir (Xackery) from RebuildEQ, we've converted our server config loader from XML to JSON.

This is now live, whenever new binaries are used, world.exe will automatically pull down a config converter before attempting to load the config. This looks something like this:


World will use the new eqemu_config.json effective immediately. All other utilities that were built around loading config variables from XML will have to be adjusted or updated to use the JSON format.

A backup of the old XML config will be located in serverdir/backups/
  • The Perl MySQL plugin has been updated already: see here
  • Linux Installer now uses the new .json format
  • Windows Installer now uses the new .json format
  • DiscordEQ OOC chat relay built by Shin should have a new release ready for this change: see here

If you find any tools or utilities tied to the old XML format that needs to be changed or adjusted, let us know in this thread and we will make sure that things get adjusted appropriately.
19 Replies | 4,050 Views
Dev Blog: 2017 && 2018
Jan 04, 2018 - 11:13 PM - by Akkadius
Greetings Norrathians!

This blog update is to make everyone aware of the major changes that have happened over the past year.

We've made massive progress on so many fronts this last year, many milestones that would otherwise be hard to know about unless you've been paying very close attention to commits and changelog messages, so here we go!

Netcode Rewrite (KLS)

  • [mackal] Auras have been implemented
  • [mackal] Food and Water consumption algorithms have been fixed to match close to live
  • [mackal] Emulator Combat engine has been massively overhauled to match Live like formulas to be 98% accurate with Live changelog
  • [mackal] Extended target functionality

Server Installers
  • [Akkadius/N0ctrnl] Linux and Windows installers were introduced in late 2016 to streamline the EQEmu Server installation processes
    • Linux Installs to date: 959
    • Windows Installs to date: 3,489

Mob Z Axis Breakthrough
  • [Akkadius/Noudess/KLS] - Mob Z axis correction has had a major breakthrough in 2017 - we cracked race/size offsets for models - this helps bigly with
    • Corpses going underground
    • NPC's hopping during a pull
    • Pet's hopping during combat
    • NPC's hopping while pathing
    • NPC's going half into the ground while pathing
    • NPC's falling through the ground in general
    • While these problems can still happen depending on the zone and situation, the chances of them occurring have been vastly decreased

Server Side Performance Enhancements (Akkadius)

I've personally taken this issue down to the core, because we're at a mature point in our project where we can focus on shaving the fat off of some of our quickly implemented code that has created many performance issues.

We've been able to continually measure PEQ and EZ zone processes running hot with players in them, profile the code stack and find problematic code paths and measure over time. We've come a long way.

It allows servers to run better, faster, with less cpu cycle consumption to create the best gaming experience possible!

PEQ with 840 players online (chart by netdata) at a steady low cpu util

So many other changes

Please let me know if I missed something worth mentioning here, the idea is to highlight what we have been doing as a whole - cause not everyone is up to speed all the time....

To keep from making this post too long - there's tons in the Github commits and EQEmu changelog that may not be seen here, and many people are contributing to bug fixes and slight feature changes to the project everyday!

Thanks to everyone who brings this project together

  • We have a lot of work to do in this department and is one of my highest priorities, details posted here

  • KLS has spent a lot of time working on a Navmesh system for our code and it has come a long way, from everything to a navmesh tile generator to in game logic to follow those tiles
  • Navmesh is basically waypoint pathfinding, using a shortest path algorithm to determine what tiles/path to use between it and its target
  • The Navmesh tool KLS built generates 95% of the tiles automatically, you may need to create manual connections in zones where necessary
  • You can see an example of this below

EQEmu Server Config Format
  • Thanks to Shin Noir - the server standard config will soon be .json as soon as I can merge it into master and have time to resolve any issues
  • Future Loginserver release will also use .json
  • Another thought is to also define paths to resources so the main server folder can become decluttered of resources/files

Expedition System and Shared Tasks
  • The groundwork for this system has been started again - but progress has been halted for now, but this is an immediate future priority

Our brother project PEQ has made some considerable strides as well
  • New website and forums: http://peqtgc.com/forums/index.php?articles/
  • Released Omens of War expansion
  • Dragons of Norrath pre-work
  • Continual work on old content continuity
  • Ever growing population
  • Streamlined 'Getting Started Process'
  • The team has been making solid progress and if you're interested in helping out - check out Discord on the left and the #public channel and jump in!
  • Project tracker: https://trello.com/b/fDpukzMU/projecteq
  • Systems Pending Development: Expeditions DZ system - Shared Tasks
5 Replies | 3,070 Views
Hosted EOC has moved!
Jan 03, 2018 - 3:30 PM - by Akkadius

After about 4-5 years, hosted EOC has moved!

If you have troubles connecting to your server - it's possible you need to adjust your SQL user for connection via the new IP

CREATE USER 'eoc_database_user'@'' IDENTIFIED BY 'eoc_database_password';
GRANT GRANT OPTION ON *.* TO 'eoc_database_user'@'';
GRANT ALL ON *.* TO 'eoc_database_user'@'';
You may need to clear your cookies and re-enter your database information
2 Replies | 3,074 Views
Complete Emulator Project Documentation Refresh 2018
Dec 23, 2017 - 10:35 PM - by Akkadius
Complete Emulator Project Documentation Refresh 2018

Hello everyone - we've been pretty quiet from a forum front but there has been very many massive accomplishments over the past year. I'm going to update more on a general news thread, however I want to have a thread solely to the purpose of this project.

We have an incredible project and community here, with lots of tools and resources available. Some of our documentation is great, but a lot of it has become very outdated and we just don't have 80% of what we should and I want to change that.

We still have tons of new people coming in - with old resources and the simplest of things that were more available in the past, are not so available now. I've been seeing lots of the same questions

Why is this important
  • This is important because without documentation, barrier to entry on creating things, making things possible and giving back to the community is much harder. It is important to me that we have examples for every script, our entire API of LUA and Perl. HOW to use the API to do much more with far less. To allow everyone to express creativity using this amazing platform as their medium
  • Even our long time developers reference the Wiki for common references and information all of the time. It is a huge instrument when working with an area of development, backend, server content development etc.

  • Provide in depth quest API examples for both LUA and Perl - For everything, this could include how to do hp events on an encounter, triggering events on other NPC's, spawning other NPC's, quest events, rewards, task usage, literally anything that people need to enhance their servers and make a fun experience for their players
  • Documentation on our server backend systems - we have TONS of information and systems to document, I will detail those below
  • Make certain resources more available, how to guides etc.

Brand New Wiki/Docs Engine
  • We will be soon using a new Wiki engine that is vastly improved upon the one we were using before, I've been working on that and should be nearing completion in the near future. Once that is read we can start our documentation drive, and I want to be 90% done with that documentation drive within a months timeframe

What you can do to help
  • If you have been in this community for a long time, and you feel like you can provide How-To's, info snippets, script examples that can help other people, volunteer yourself in this thread, then when the time comes - we will be ready to have you help on those pieces

What do you want documented
  • Here's your big chance to say what you want more information on. It can be - how do I manage my launcher, I want to know more about config options, more script examples, task examples, door/object examples, ANYTHING. If you want our core development group to take time to put these things down, please put your ask in this thread

Disclaimer: Any post to derail this thread or go off topic will be deleted as forewarning
18 Replies | 5,702 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 | 10,415 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 | 8,313 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 | 8,783 Views
» Loginserver
.:: Server Listing ::.
» Stats
Members: 240,642
Threads: 39,500
Posts: 256,342
Welcome to our newest member, vileurp
» Current Poll
Favorite Server Type
PvP Only - 8.22%
215 Votes
Mostly PvP, Some PvE - 7.99%
209 Votes
PvE, Optional PvP - 40.25%
1,053 Vote
PvE Only - 43.54%
1,139 Vote
Total Votes: 2,616
You may not vote on this poll.
» Recent Posts
Rise of Norrath: A...
11-10-2018 01:13 AM
Last post by Kingly_Krab
Today 09:05 PM
10 Replies, 2,035 Views
Using the Lua...
Today 03:43 PM
Last post by irongut_av
Today 09:02 PM
2 Replies, 33 Views
Player Event: Merchant...
Today 07:43 PM
Last post by Kingly_Krab
Today 08:34 PM
1 Replies, 16 Views
Out of Box PEQ,...
11-24-2018 10:24 PM
by S0lusek
Last post by HarrisKin
Today 07:43 AM
5 Replies, 388 Views
Been a few years
Yesterday 08:32 PM
by mongor
Last post by Uleat
Today 12:07 AM
1 Replies, 59 Views
Rise of Norrath
01-15-2018 10:32 PM
Last post by Llars
Yesterday 10:07 PM
59 Replies, 7,057 Views
UltimateEQ - Progression...
06-27-2018 01:15 PM
Last post by Llars
Yesterday 09:57 PM
49 Replies, 7,801 Views
Any Info on Maynard's...
11-23-2018 06:33 PM
by Moehang
Last post by Moehang
12-12-2018 06:49 AM
3 Replies, 452 Views
Necro Pet Model
12-10-2018 02:55 AM
Last post by demonstar55
12-11-2018 11:31 PM
6 Replies, 145 Views
Sanctuary - Fully Custom...
12-30-2014 02:09 PM
by zerjz3
Last post by zerjz3
12-11-2018 04:42 PM
152 Replies, 38,906 Views

All times are GMT -4. The time now is 10:35 PM.
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 - 2018, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3