* fix(Core): Save gameobject state on instances Currently, azerothcore doesn't save gameobject states on instances. Whenever there's a re-start or crash, the instance's gameobjects and their states aren't saved, producing un-wanted behaviours and blocking instances at times. Implemented CRUD for new table `instance_saved_data` that holds the states of gameobjects. - When worldserver launches and gameobjects are loaded, this will check if this object's state exists on the DB and sets the previous state. - On instance deletion (reset) these states are also removed based on the instance ID. - Whenever a gameobject state changes inside a dungeon or raid, we save on the database the set state. * Select query to synchronous and used FindMap() * loading gameobject states on create * reseting instance saved data * missing reset methods and on create state * database structure * Update src/server/game/Entities/GameObject/GameObject.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Entities/GameObject/GameObject.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Entities/GameObject/GameObject.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Entities/GameObject/GameObject.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Entities/Player/PlayerMisc.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Groups/Group.cpp Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * codestyle * table changes * table style * codestyle * table changes for columns * data sanitization * todo: - Finish loading db data into the containers - Using containers to find data - How to get data from ObjectMGR inside Gameobject? * loading on start up and db changes * Removing unused data structure * Uninitialised integer * Whitespace * clean-up and hooks to save states on memory * Codestyle MySQL deprecated backticks * i dont understand codefactor * build * Update data/sql/updates/pending_db_world/rev_1643395587559675400.sql Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Update src/server/game/Globals/ObjectMgr.h Co-authored-by: Kargatum <dowlandtop@yandex.com> * review changes * unecessary removal * pushback instead of emplace * wrong database update * Update ObjectMgr.cpp * missing check * removing entry from the PR * missing removals * last delete * build * aha! Found the culprit for the sudden assert errors * type safety, save only important gameobjects * static cast to unsigned short * Update data/sql/updates/pending_db_characters/rev_1643629468629316100.sql Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * type changes * queries fix * fix build * enabling which gameobjects to save on the database * deadmines iron clad door * Adjustment to gameobject onj create state and instances: - Gnomeregan doors and Grubbis boss state - Deadmines missing doors - Stratholme gameobjects state saved * forgot emi blastfuse change to despawn * Leaving group logic * codestyle * fixing merge issues * prevent bad behaviour * brain meltdown * Update data/sql/updates/pending_db_characters/rev_1643629468629316100.sql * Update data/sql/updates/pending_db_world/rev_1649359139539727000.sql Co-authored-by: Claudiodfc <54484196+claudiodfc@users.noreply.github.com> Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Co-authored-by: Kargatum <dowlandtop@yandex.com> Co-authored-by: Skjalf <47818697+Nyeriah@users.noreply.github.com>
AzerothCore
Introduction
AzerothCore (AC) is an open-source game-server application for World of Warcraft, currently supporting the 3.3.5a game version.
It is written in C++ and is based on MaNGOS, TrinityCore and SunwellCore.
Why AzerothCore?
- Stability
- The authenticity of the content
- Modularity
- A lot of modules to choose from
- Better configuration files system
- Compatibility with other emulators
- Friendly and helpful community
Stability
As players and administrators ourselves, we take great care into the stability of our core. Other projects focus on the development side of things and tend to forget that users want stability above everything else.
Hence why nobody is allowed to push commits directly to the core. All changes are reviewed and tested before they get to the master branch which means we need as many testers as possible to avoid stalling issues.
Authenticity
Fixing and implementing missing blizzlike content is one of our priorities, and we can boast to offer the most content-complete open-source emulator.
Modules
Modules are essential to AzerothCore's success. Modules allow users to plug them in and out easily, and do not require to modify the core files. It also means users can keep pulling the git changes from the main repository and only develop their modules.
We have a lot of modules already made, some of them are very important and will ease your work:
- Transmogrification
- Eluna (lua engine) support
- Full list available in the AzerothCore catalogue (link at the end)
Configuration files
Our configuration file system allows the user to use a tiny configuration file for better readability and maintenance.
Compatibility with other emulators
Not very far from its ancestor TrinityCore, most scripts can be adapted quite easily. For MaNGOS compatibility, it might require more knowledge but it shares a common base.
Philosophy
Our main goal is to create a playable game server, offering a fully working game experience.
Here are the main points we focus on:
- Stability
- Ease of use / Practicability
- Playability (in-game content)
- Customization
- Community-driven software (check our discord)
We also welcome new users (even non-English speaking users!) and help them learn/improve their skills (C++, SQL, Git, software collaboration, tutoring/wiki, etc...).
Unlike other projects which focus more on the developer's side of things, we want users to be able to run their server with as few troubles as possible. All of our contributors run their private servers (local or public).
That's why AzerothCore is easier to use, to maintain, to understand, to develop on, and to customize to suit your needs, than other emulators.
In short, we focus on the user experience (UX), whether it be the player's experience, the developer's experience, or the administrator's experience.
How to Thank us
Being an open-source project, we rely on volunteers to pursue development. Here are ways to help us if you use AzerothCore:
Github Star
Click on the "star this repository" button to help us gain more visibility on Github!
By contributing
Check the CONTRIBUTING section below.
Financially 💰
You can support the AzerothCore by donating. The money will be used to pay freelance developers for more open-source fixes.
Advertising
By talking about us on different platforms or to people who would like to get involved.
Contributing
AzerothCore is a learning project, and there are lots of different ways to contribute to the project:
- By testing our fixes (we can teach you how to correctly use Git to help us but that will also help you out tremendously)
- By developing directly to the core or the modules
- By reporting bugs within the project
- By creating new modules
- By improving our wiki
- By providing direct support to our community (on Discord, StackOverflow or specialized forums)
- By making extra content (video tutorial for example)
- By putting bounties on issues
If you want to contribute to the project, you will find a lot of resources that will guide you in our wiki.
Feel free to join us on our Discord chat server where we teach a lot of new people how to get started and who are now important contributors!
Installation
Installation instructions are available here.
We also have an auto-installation bash script here (Warning: try it/analyze it before running it).
Dockerization of AzerothCore is fully supported, and we have various community-made tutorials (eg: AWS / Digital Ocean installation).
Support
Our self-made wiki probably has a lot of answers for you.
For help requests, it is recommended to ask your question on StackOverflow and link it in our chat.
Authors & Contributors
This project exists thanks to:
- The AzerothCore developers and contributors
- The SunwellCore developers xinef and pussywizard
- All the TrinityCore developers and contributors
- All the MaNGOS, ScriptDev2 and UDB developers and contributors
Important Links
- Website
- AzerothCore catalogue (modules, tools, etc...)
- Module template / Module skeleton
- Our community hub (Discord)
- Our wiki
- Our Forum
- Our Facebook page
- Our LinkedIn page
License
- The new AzerothCore source components are released under the GNU AGPL v3
- The old sources based on MaNGOS/TrinityCore are released under the GNU GPL v2
Special thanks
JetBrains is providing free open-source licenses to the AzerothCore developers.
