new version commit
This commit is contained in:
293
doc/Logging.md
Normal file
293
doc/Logging.md
Normal file
@@ -0,0 +1,293 @@
|
||||
# Logging system "log4j-like"
|
||||
|
||||
## LOGGERS AND APPENDERS
|
||||
|
||||
```
|
||||
Logging system has two components: loggers and appenders. These types of
|
||||
components enable users to log messages according to message type and level and
|
||||
control at runtime where they are reported.
|
||||
```
|
||||
|
||||
## 1. **LOGGERS**
|
||||
|
||||
```
|
||||
The first and foremost advantage of this system resided in the ability to
|
||||
disable certain log statements while allowing others to print unhindered.
|
||||
This capability assumes that the loggers are categorized according to some
|
||||
developer-chosen criteria.
|
||||
```
|
||||
|
||||
Loggers are named entitites. Logger names are case-sensitive and they follow
|
||||
the hierarchical naming rule:
|
||||
|
||||
```
|
||||
A Logger is said to be an ancestor of another logger if its name followed
|
||||
by a dot is a prefix of the descendant logger name. A logger is salid to be
|
||||
a parent of a child logger if there are no ancestors between itself and the
|
||||
descendant logger.
|
||||
```
|
||||
|
||||
For example, the logger named `"entities.player"` is a parent of the logger named
|
||||
`"entities.player.character"`. Similarly, `"entities"` is a parent of `"entities.player"`
|
||||
and an ancestor of `"entities.player.character"`.
|
||||
|
||||
Loggers may be assigned levels. The set of possible levels are `TRACE`, `DEBUG`,
|
||||
`INFO`, `WARN`, `ERROR` AND `FATAL`, or be disabled using level `DISABLED`.
|
||||
|
||||
By definition the printing method determines the level of a logging request.
|
||||
For example:
|
||||
|
||||
```cpp
|
||||
LOG_INFO(...) // is a logging request of level INFO.
|
||||
```
|
||||
|
||||
A logging request is said to be enabled if its level is less than or equal to
|
||||
the level of its logger. Otherwise, the request is said to be disabled. A logger
|
||||
without an assigned level will inherit one from the hierarchy
|
||||
|
||||
Example
|
||||
|
||||
```
|
||||
Logger Name Assigned Level Inherited Level
|
||||
root Proot Proot
|
||||
server None Proot
|
||||
```
|
||||
|
||||
As `"server"` is not defined, it uses the root logger and it's log level.
|
||||
|
||||
```
|
||||
FATAL < ERROR < WARN < INFO < DEBUG < TRACE
|
||||
```
|
||||
|
||||
## 2. **APPENDERS**
|
||||
|
||||
```
|
||||
The ability to selectively enable of dissable logging request based on their
|
||||
loggers is only part of the picture. This system allows logging requests to
|
||||
print to multiple destinations. An output destination is called an appender.
|
||||
Current system defines appenders for Console, files and Database, but can be
|
||||
easily extended to remote socket server, NT event loggers, syslog daemons or
|
||||
any other system.
|
||||
```
|
||||
|
||||
More than one appender can be attached to one logger. Each enabled logging
|
||||
request for a given logger will be forwarded to all the appenders in that
|
||||
logger
|
||||
|
||||
|
||||
**CONFIGURATION**
|
||||
|
||||
System will read all config elements with prefix `"Logger."` and `"Appender."`
|
||||
and configure the logging system. If `"root"` can not be properly configured the core
|
||||
will remove all loggers and appenders and create a default set:
|
||||
|
||||
```
|
||||
- Logger "root" with log level Error
|
||||
- Logger "server" with log level Info
|
||||
- Appender "Console" to log to console
|
||||
```
|
||||
|
||||
Appender config line follows the format:
|
||||
|
||||
```
|
||||
Type,LogLevel,Flags,optional1,optional2
|
||||
```
|
||||
|
||||
```
|
||||
Its a list of elements separated by comma where each element has its own meaning
|
||||
Type: Type of the appender
|
||||
1 - (Console)
|
||||
2 - (File)
|
||||
3 - (DB)
|
||||
LogLevel
|
||||
0 - (Disabled)
|
||||
1 - (Fatal)
|
||||
2 - (Error)
|
||||
3 - (Warning)
|
||||
4 - (Info)
|
||||
5 - (Debug)
|
||||
6 - (Trace)
|
||||
Flags: Define some extra modifications to do to logging message
|
||||
1 - Prefix Timestamp to the text
|
||||
2 - Prefix Log Level to the text
|
||||
4 - Prefix Log Filter type to the text
|
||||
8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS
|
||||
(Only used with Type = 2)
|
||||
16 - Make a backup of existing file before overwrite
|
||||
(Only used with Mode = w)
|
||||
```
|
||||
|
||||
Depending on the type, elements `optional1` and `optional2` will take different
|
||||
```
|
||||
Colors (read as optional1 if Type = Console)
|
||||
Format: "fatal error warn info debug trace"
|
||||
0 - BLACK
|
||||
1 - RED
|
||||
2 - GREEN
|
||||
3 - BROWN
|
||||
4 - BLUE
|
||||
5 - MAGENTA
|
||||
6 - CYAN
|
||||
7 - GREY
|
||||
8 - YELLOW
|
||||
9 - LRED
|
||||
10 - LGREEN
|
||||
11 - LBLUE
|
||||
12 - LMAGENTA
|
||||
13 - LCYAN
|
||||
14 - WHITE
|
||||
Example: "1 9 3 6 5 8"
|
||||
|
||||
File: Name of the file (read as optional1 if Type = File)
|
||||
Allows to use one "%u" to create dynamic files
|
||||
|
||||
Mode: Mode to open the file (read as optional2 if Type = File)
|
||||
a - (Append)
|
||||
w - (Overwrite)
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
Appender.Console1=1,5,6
|
||||
```
|
||||
|
||||
Creates new appender to log to console any message with log level `DEBUG`
|
||||
or less and prefixes log type and level to the message.
|
||||
|
||||
```ini
|
||||
Appender.Console2=1,2,1,"1 9 3 6 5 8"
|
||||
```
|
||||
|
||||
Creates new appender to log to console any message with log level `ERROR`
|
||||
or less and prefixes timestamp to the message using colored text.
|
||||
|
||||
```ini
|
||||
Appender.File=2,5,7,Auth.log,w
|
||||
```
|
||||
|
||||
Creates new appender to log to file `"Auth.log"` any message with log level
|
||||
`DEBUG` or less and prefixes timestamp, type and level to message
|
||||
|
||||
In the example, having two different loggers to log to console is perfectly
|
||||
legal but redundant.
|
||||
|
||||
Once we have the list of loggers to read, system will try to configure a new
|
||||
logger from its config line. Logger config line follows the format:
|
||||
|
||||
```ini
|
||||
LogLevel,AppenderList
|
||||
```
|
||||
|
||||
Its a list of elements separated by comma where each element has its own meaning
|
||||
```
|
||||
LogLevel
|
||||
0 - (Disabled)
|
||||
1 - (Fatal)
|
||||
2 - (Error)
|
||||
3 - (Warning)
|
||||
4 - (Info)
|
||||
5 - (Debug)
|
||||
6 - (Trace)
|
||||
AppenderList: List of appenders linked to logger
|
||||
(Using spaces as separator).
|
||||
```
|
||||
|
||||
**EXAMPLES**
|
||||
|
||||
1. **EXAMPLE 1**
|
||||
|
||||
Log errors to console and a file called server.log that only contain
|
||||
logs for this server run. File should prefix timestamp, type and log level to
|
||||
the messages. Console should prefix type and log level.
|
||||
|
||||
```ini
|
||||
Appender.Console=1,2,6
|
||||
Appender.Server=2,2,7,Server.log,w
|
||||
Logger.root=2,Console Server
|
||||
```
|
||||
|
||||
Lets trace how system will log two different messages:
|
||||
|
||||
```cpp
|
||||
LOG_ERROR("guild", "Guild 1 created");
|
||||
```
|
||||
|
||||
System will try to find logger of type GUILD, as no logger is configured
|
||||
for GUILD it will use Root logger. As message Log Level is equal or less
|
||||
than the Log level of logger the message is sent to the Appenders
|
||||
configured in the Logger. `"Console"` and `"Server"`.
|
||||
|
||||
Console will write:
|
||||
```
|
||||
"ERROR [GUILD] Guild 1 created"
|
||||
```
|
||||
|
||||
Server will write to file
|
||||
```
|
||||
"2012-08-15 ERROR [GUILD] Guild 1 created"
|
||||
```
|
||||
|
||||
```cpp
|
||||
LOG_INFO("entities.player.character", "Player Name Logged in");
|
||||
```
|
||||
|
||||
System will try to find logger of type `"character"`, as no logger is
|
||||
configured for `"character"` it will use Root logger. As message Log Level is
|
||||
not equal or less than the Log level of logger the message its discarted.
|
||||
|
||||
2. **EXAMPLE 2**
|
||||
|
||||
Same example that above, but now i want to see all messages of level INFO on
|
||||
file and server file should add timestamp on creation.
|
||||
|
||||
```ini
|
||||
Appender.Console=1,2,6
|
||||
Appender.Server=2,4,15,Server.log
|
||||
Logger.root=3,Console Server
|
||||
```
|
||||
|
||||
Lets trace how system will log two different messages:
|
||||
```cpp
|
||||
LOG_ERROR("guild", "Guild 1 created");
|
||||
```
|
||||
|
||||
Performs exactly as example 1.
|
||||
|
||||
```cpp
|
||||
LOG_INFO("entities.player.character", "Player Name Logged in");
|
||||
```
|
||||
|
||||
System will try to find logger of type `"character"`, as no logger is
|
||||
configured for `"character"` it will use Root logger. As message Log Level is
|
||||
equal or less than the Log level of logger the message is sent to the
|
||||
Appenders configured in the Logger. `"Console"` and `"Server"`.
|
||||
Console will discard msg as Log Level is not less or equal to this appender
|
||||
|
||||
Server will write to file:
|
||||
```
|
||||
"2012-08-15 INFO [CHARACTER ] Player Name Logged in"
|
||||
```
|
||||
|
||||
3. **EXAMPLE 3**
|
||||
|
||||
As a dev, i may be interested in logging just a particular part of the core
|
||||
while i'm trying to fix something. So... i want to debug `"guild"` to maximum
|
||||
and also some `"character"` events to some point. Also im checking some Waypoints
|
||||
so i want SQLDEV to be logged to file without prefixes. All other messages
|
||||
should only be logged to console, `"guild"` to `TRACE` and `"character"` to `INFO`
|
||||
|
||||
```ini
|
||||
Appender.Console=1,6
|
||||
Appender.SQLDev=2,5,0,SQLDev.log
|
||||
Logger.guild=6,Console
|
||||
Logger.entities.player.character=4,Console
|
||||
Logger.sql.dev=4,SQLDev
|
||||
```
|
||||
|
||||
With this config, any message logger with a Log type different to `"guild"`,
|
||||
`"character"` or `"sql.dev"` will be ignored, as we didn't define a logger Root and
|
||||
system created a default Root disabled. Appender Console, log level should be
|
||||
defined to allow all possible messages of its loggers, in this case `"guild"` uses
|
||||
`TRACE (6)`, so Appender should allow it. Logger Characters will limit it's own
|
||||
messages to `INFO (4)`
|
||||
8
doc/changelog/README.md
Normal file
8
doc/changelog/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# CHANGELOG
|
||||
|
||||
All breaking/notable changes to this project will be documented in the master.md file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://www.azerothcore.org/wiki/project-versioning).
|
||||
|
||||
To create a new changelog please follow the instructions on our [wiki page](https://www.azerothcore.org/wiki/how-to-use-changelog)
|
||||
520
doc/changelog/master.md
Normal file
520
doc/changelog/master.md
Normal file
@@ -0,0 +1,520 @@
|
||||
## 7.0.0-dev.1 | Commit: [0c4feb674444210da295751a0c4e5eefb9c771f1
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/0c4feb674444210da295751a0c4e5eefb9c771f1
|
||||
|
||||
|
||||
### How to upgrade
|
||||
|
||||
Motd is removed from config file
|
||||
|
||||
Motd is can now be found in auth database table `motd`
|
||||
|
||||
`realmid` = Realm ID or -1 for all realms.
|
||||
`text` = Text for Motd
|
||||
|
||||
Specified realmId is prioritized over -1 (All Realms)
|
||||
|
||||
For example:
|
||||
|
||||
You have realm 1, 2, 3
|
||||
|
||||
(-1, "This Motd will show for 2, 3")
|
||||
(1, "This Motd will show for 1")
|
||||
|
||||
## 6.0.0-dev.3 | Commit: [44b7a0666c78dc99ab0bbc94045abb6685b3ad86
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/44b7a0666c78dc99ab0bbc94045abb6685b3ad86
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
- New hook for OnQuestComputeXP(). The intended use is to change the XP values for certain quests programmatically. The hook is triggered after XP calculation and before rewarding XP or gold to the player.
|
||||
|
||||
### How to upgrade
|
||||
|
||||
- No special changes needed. The new hook is available for use and should not interfere with any existing hooks or logic.
|
||||
|
||||
## 6.0.0-dev.2 | Commit: [680e60c68b1864596bf23d427e9f4742c6437b86
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/680e60c68b1864596bf23d427e9f4742c6437b86
|
||||
|
||||
|
||||
### Changed
|
||||
Removed Rate.XP.BattlegroundKill, added one rate config for each bg.
|
||||
|
||||
### How to upgrade
|
||||
|
||||
Delete Rate.XP.BattlegroundKill, and then set all the battlegroundkill rate for each bg.
|
||||
Rate.XP.BattlegroundKillAV = 1
|
||||
Rate.XP.BattlegroundKillWSG = 1
|
||||
Rate.XP.BattlegroundKillAB = 1
|
||||
Rate.XP.BattlegroundKillEOTS = 1
|
||||
Rate.XP.BattlegroundKillSOTA = 1
|
||||
Rate.XP.BattlegroundKillIC = 1
|
||||
|
||||
|
||||
## 6.0.0-dev.1 | Commit: [de13bf426e162ee10cbd5470cec74122d1d4afa0
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/de13bf426e162ee10cbd5470cec74122d1d4afa0
|
||||
|
||||
|
||||
## How to upgrade
|
||||
- `PrepareStatment`
|
||||
|
||||
```diff
|
||||
- setNull(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setBool(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setUInt8(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setInt8(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setUInt16(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setInt16(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setUInt32(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setUInt64(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setInt64(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setFloat(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setDouble(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setString(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setStringView(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
```diff
|
||||
- setBinary(...)
|
||||
+ SetData(...)
|
||||
```
|
||||
|
||||
- `Fields`
|
||||
|
||||
```diff
|
||||
- GetBool()
|
||||
+ Get<bool>()
|
||||
```
|
||||
```diff
|
||||
- GetUInt8()
|
||||
+ Get<uint8>()
|
||||
```
|
||||
```diff
|
||||
- GetInt8()
|
||||
+ Get<int8>()
|
||||
```
|
||||
```diff
|
||||
- GetUInt16()
|
||||
+ Get<uint16>()
|
||||
```
|
||||
```diff
|
||||
- GetInt16()
|
||||
+ Get<int16>()
|
||||
```
|
||||
```diff
|
||||
- GetUInt32()
|
||||
+ Get<uint32>()
|
||||
```
|
||||
```diff
|
||||
- GetInt32()
|
||||
+ Get<int32>()
|
||||
```
|
||||
```diff
|
||||
- GetUInt64()
|
||||
+ Get<uint64>()
|
||||
```
|
||||
```diff
|
||||
- GetInt64()
|
||||
+ Get<int64>()
|
||||
```
|
||||
```diff
|
||||
- GetFloat()
|
||||
+ Get<float>()
|
||||
```
|
||||
```diff
|
||||
- GetDouble()
|
||||
+ Get<double>()
|
||||
```
|
||||
```diff
|
||||
- GetString()
|
||||
+ Get<std::string>()
|
||||
```
|
||||
```diff
|
||||
- GetStringView()
|
||||
+ Get<std::string_view>()
|
||||
```
|
||||
```diff
|
||||
- GetBinary()
|
||||
+ Get<Binary>()
|
||||
```
|
||||
|
||||
## 5.0.0-dev.1 | Commit: [8b7df23f064f8c1c41aea222342b53f109c4e3b9
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/8b7df23f064f8c1c41aea222342b53f109c4e3b9
|
||||
|
||||
|
||||
### How to upgrade
|
||||
|
||||
```diff
|
||||
- time(nullptr)
|
||||
+ GameTime::GetGameTime().count()
|
||||
```
|
||||
```diff
|
||||
- sWorld->GetGameTime()
|
||||
+ GameTime::GetGameTime().count()
|
||||
```
|
||||
```diff
|
||||
- World::GetGameTimeMS()
|
||||
+ GameTime::GetGameTimeMS().count()
|
||||
```
|
||||
|
||||
## 5.0.0-dev.0 | Commit: [2fd8b00d7bac1f9c9b565916453cf490fb069df0
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/2fd8b00d7bac1f9c9b565916453cf490fb069df0
|
||||
|
||||
|
||||
We suggest that you always use the latest version of our master branch.
|
||||
https://github.com/azerothcore/azerothcore-wotlk/tree/master
|
||||
|
||||
### How to upgrade
|
||||
|
||||
For server administrators: instructions about how to upgrade existing servers are available [here](http://www.azerothcore.org/wiki/Upgrade-from-pre-2.0.0-to-latest-master).
|
||||
|
||||
## Release notes
|
||||
|
||||
This PR removes the modelId column from creature table to allow us to move to a dual entry spawn system.
|
||||
|
||||
If this causes an issue for in game or custom spawns the following line of SAI can update the modelId.
|
||||
|
||||
(#entryorguid,0,0,0,11,0,100,0,0,0,0,0,0,3,0,#modelId,0,0,0,0,1,0,0,0,0,0,0,0,0,"Creature Name - On Spawn - Change Model to #modelId"),
|
||||
|
||||
Special thanks to @Shin @Kitzunu @M'Dic for assistance.
|
||||
|
||||
## 4.0.0-dev.13 | Commit: [bc82f36f1ff46bb21d32e1cfdaec8271dde08af1
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/bc82f36f1ff46bb21d32e1cfdaec8271dde08af1
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
```cpp
|
||||
// Unit.cpp
|
||||
virtual void Talk(std::string_view text, ChatMsg msgType, Language language, float textRange, WorldObject const* target);
|
||||
virtual void Say(std::string_view text, Language language, WorldObject const* target = nullptr);
|
||||
virtual void Yell(std::string_view text, Language language, WorldObject const* target = nullptr);
|
||||
virtual void TextEmote(std::string_view text, WorldObject const* target = nullptr, bool isBossEmote = false);
|
||||
virtual void Whisper(std::string_view text, Language language, Player* target, bool isBossWhisper = false);
|
||||
virtual void Talk(uint32 textId, ChatMsg msgType, float textRange, WorldObject const* target);
|
||||
virtual void Say(uint32 textId, WorldObject const* target = nullptr);
|
||||
virtual void Yell(uint32 textId, WorldObject const* target = nullptr);
|
||||
virtual void TextEmote(uint32 textId, WorldObject const* target = nullptr, bool isBossEmote = false);
|
||||
virtual void Whisper(uint32 textId, Player* target, bool isBossWhisper = false);
|
||||
```
|
||||
|
||||
### Removed
|
||||
|
||||
```cpp
|
||||
// Object.cpp
|
||||
void MonsterSay(const char* text, uint32 language, WorldObject const* target);
|
||||
void MonsterYell(const char* text, uint32 language, WorldObject const* target);
|
||||
void MonsterTextEmote(const char* text, WorldObject const* target, bool IsBossEmote = false);
|
||||
void MonsterWhisper(const char* text, Player const* target, bool IsBossWhisper = false);
|
||||
void MonsterSay(int32 textId, uint32 language, WorldObject const* target);
|
||||
void MonsterYell(int32 textId, uint32 language, WorldObject const* target);
|
||||
void MonsterTextEmote(int32 textId, WorldObject const* target, bool IsBossEmote = false);
|
||||
void MonsterWhisper(int32 textId, Player const* target, bool IsBossWhisper = false);
|
||||
|
||||
void SendPlaySound(uint32 Sound, bool OnlySelf);
|
||||
```
|
||||
|
||||
### How to upgrade
|
||||
|
||||
```diff
|
||||
- creature->MonsterSay(text, LANG_XXX, nullptr);
|
||||
+ creature->Say(text, LANG_XXX);
|
||||
|
||||
- creature->MonsterTextEmote(text, 0);
|
||||
+ creature->TextEmote(text);
|
||||
|
||||
- creature->MonsterWhisper(text, receiver);
|
||||
+ creature->Whisper(text, LANG_XXX, receiver);
|
||||
|
||||
- creature->MonsterYell(text, LANG_XXX, NULL);
|
||||
+ creature->Yell(text, LANG_XXX);
|
||||
|
||||
- creature->MonsterWhisper(text, target, isBossWhisper);
|
||||
+ creature->Whisper(text, LANG_XXX, target, isBossWhisper);
|
||||
|
||||
- SendPlaySound(uint32 Sound, bool OnlySelf);
|
||||
PlayDirectSound(uint32 sound_id, Player* target = nullptr);
|
||||
```
|
||||
|
||||
## 4.0.0-dev.12 | Commit: [bcec4191e43de8a7b57a4219d6baaa7c5e3dfaf1
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/bcec4191e43de8a7b57a4219d6baaa7c5e3dfaf1
|
||||
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
- Added `OnPlayerPVPFlagChange` hook, it will be executed after the pvp flag from a player gets changed.
|
||||
|
||||
|
||||
|
||||
## 4.0.0-dev.11 | Commit: [d18545263fda54e19c875d22adfb28ae4072ec01
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/d18545263fda54e19c875d22adfb28ae4072ec01
|
||||
|
||||
|
||||
### Added
|
||||
|
||||
- Added `OnBeforeFinalizePlayerWorldSession ` that can be used to modify the cache version that is sent to the client via modules.
|
||||
## 4.0.0-dev.10 | Commit: [0897705a6814fc19007e5f88fbcb98b3689880c9
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/0897705a6814fc19007e5f88fbcb98b3689880c9
|
||||
|
||||
|
||||
### How to upgrade
|
||||
|
||||
Upgrade your Boost version to 1.74 or higher.
|
||||
|
||||
## 4.0.0-dev.9 | Commit: [edfc2a8db48a17bf3e9ace0b36edc819aa0e5e23
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/edfc2a8db48a17bf3e9ace0b36edc819aa0e5e23
|
||||
|
||||
|
||||
Changelog for commit "[feature(Core/Spells): Allow to learn all spells for characters on creation](https://github.com/azerothcore/azerothcore-wotlk/commit/06ee4ea7c46a5c0494dd7502a7646e84f83dab89)"
|
||||
|
||||
### Added
|
||||
|
||||
- All abilities for classes up to TBC into playercreateinfo_spell_custom
|
||||
- Config option PlayerStart.AllSpells - If enabled, players will start with all their class spells (not talents). You must populate playercreateinfo_spell_custom table with the spells you want, or this will not work! The table has data for all classes / races up to TBC expansion.
|
||||
|
||||
### Removed
|
||||
|
||||
- Config option PlayerStart.CustomSpells
|
||||
|
||||
### How to upgrade
|
||||
|
||||
- Update the worldserver.conf file with the new PlayerStart.AllSpells if you want to change it to "ON". Otherwise it will go with the default option "OFF" from the worldserver.conf.dist file.
|
||||
|
||||
## 4.0.0-dev.8 | Commit: [edfc2a8db48a17bf3e9ace0b36edc819aa0e5e23
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/edfc2a8db48a17bf3e9ace0b36edc819aa0e5e23
|
||||
|
||||
|
||||
Changelog for commit "[fix(Core/Player): Use SkillLineAbility.dbc to determine player initial spells - skill assignment done in a new table `playercreateinfo_skills`](https://github.com/azerothcore/azerothcore-wotlk/commit/1be561e03b56dc396270335886e59eddad9fa0c6)"
|
||||
|
||||
### Added
|
||||
|
||||
- playercreateinfo_skills - New Database table for skill assignment.
|
||||
|
||||
### Removed
|
||||
|
||||
- playercreateinfo_spells
|
||||
|
||||
### Changed
|
||||
|
||||
- Use SkillLineAbility.dbc to determine player initial spells.
|
||||
- Renamed SkillLineAbilityEntry fields
|
||||
|
||||
### How to upgrade
|
||||
|
||||
```diff
|
||||
- uint32 id; // 0 m_ID
|
||||
- uint32 skillId; // 1 m_skillLine
|
||||
- uint32 spellId; // 2 m_spell
|
||||
- uint32 racemask; // 3 m_raceMask
|
||||
- uint32 classmask; // 4 m_classMask
|
||||
- //uint32 racemaskNot; // 5 m_excludeRace
|
||||
- //uint32 classmaskNot; // 6 m_excludeClass
|
||||
- uint32 req_skill_value; // 7 m_minSkillLineRank
|
||||
- uint32 forward_spellid; // 8 m_supercededBySpell
|
||||
- uint32 learnOnGetSkill; // 9 m_acquireMethod
|
||||
- uint32 max_value; // 10 m_trivialSkillLineRankHigh
|
||||
- uint32 min_value; // 11 m_trivialSkillLineRankLow
|
||||
- //uint32 characterPoints[2]; // 12-13 m_characterPoints[2]
|
||||
+ uint32 ID; // 0
|
||||
+ uint32 SkillLine; // 1
|
||||
+ uint32 Spell; // 2
|
||||
+ uint32 RaceMask; // 3
|
||||
+ uint32 ClassMask; // 4
|
||||
+ //uint32 ExcludeRace; // 5
|
||||
+ //uint32 ExcludeClass; // 6
|
||||
+ uint32 MinSkillLineRank; // 7
|
||||
+ uint32 SupercededBySpell; // 8
|
||||
+ uint32 AcquireMethod; // 9
|
||||
+ uint32 TrivialSkillLineRankHigh; // 10
|
||||
+ uint32 TrivialSkillLineRankLow; // 11
|
||||
+ //uint32 CharacterPoints[2]; // 12-13
|
||||
```
|
||||
|
||||
- for example skillLine->forward_spellid will become skillLine->SupercededBySpell
|
||||
|
||||
## 4.0.0-dev.7 | Commit: [59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
|
||||
|
||||
### Removed
|
||||
- Old gossips api [#5414](https://github.com/azerothcore/azerothcore-wotlk/pull/5414)
|
||||
|
||||
### How to upgrade
|
||||
- `player->ADD_GOSSIP_ITEM(whatever)` -> `AddGossipItemFor(player, whatever)`
|
||||
- `player->ADD_GOSSIP_ITEM_DB(whatever)` -> `AddGossipItemFor(player, whatever)`
|
||||
- `player->ADD_GOSSIP_ITEM_EXTENDED(whatever)` -> `AddGossipItemFor(player, whatever)`
|
||||
- `player->CLOSE_GOSSIP_MENU()` -> `CloseGossipMenuFor(player)`
|
||||
- `player->SEND_GOSSIP_MENU(textid, creature->GetGUID())` -> `SendGossipMenuFor(player, textid, creature->GetGUID())`
|
||||
|
||||
You also need `#include "ScriptedGossip.h"` in your cpp files
|
||||
|
||||
## 4.0.0-dev.6 | Commit: [59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
|
||||
|
||||
### Changed
|
||||
- New options for loading scripts `static dynamic minimal-static minimal-dynamic` [#5346](https://github.com/azerothcore/azerothcore-wotlk/pull/5346)
|
||||
```
|
||||
static - Build statically. Default option. for all scripts (As it was before)
|
||||
dynamic - Build dynamically. After start support Dynamic Linking Library (DLL) can make separated library for each script. Now don't support
|
||||
minimal-static - builds commands and spells statically
|
||||
minimal-dynamic - builds commands and spells dynamically. Now don't support
|
||||
```
|
||||
- Also the default value which is provided by the `SCRIPTS` variable is overwriteable through the `SCRIPTS_COMMANDS, SCRIPTS_SPELLS...` variable.
|
||||
- Each subdirectory contains it's own translation unit now which is responsible for loading it's directory
|
||||
- If module using deprecated script loader api, you get error message.
|
||||
```cmake
|
||||
> Module (mod-ah-bot) using deprecated loader api
|
||||
```
|
||||
|
||||
### How to upgrade
|
||||
- For most modules, the `CMakeLists.txt' file is no longer needed
|
||||
- Need change script loader file.
|
||||
```
|
||||
1. Rename extension in file to `.cpp`
|
||||
2. Rename general loading function to `Add(module name with replace all whitespace to '_')Scripts()`.
|
||||
3. Delete macros `AC_ADD_SCRIPT_LOADER` from `CMakeLists.txt`
|
||||
```
|
||||
- Example loader script for modules:
|
||||
```cpp
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
// From SC
|
||||
void AddSC_ServerAutoShutdown();
|
||||
|
||||
// Add all scripts
|
||||
void Addmod_server_auto_shutdownScripts()
|
||||
{
|
||||
AddSC_ServerAutoShutdown();
|
||||
}
|
||||
```
|
||||
- List modules support new script loader api:
|
||||
https://github.com/azerothcore/mod-server-auto-shutdown
|
||||
|
||||
## 4.0.0-dev.5 | Commit: [59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/59a3912a3b3bd4dd2d8e2b1c2cdd225b9c4d6244
|
||||
|
||||
|
||||
### Added
|
||||
- New cmake option `WITH_STRICT_DATABASE_TYPE_CHECKS` [#5611](https://github.com/azerothcore/azerothcore-wotlk/pull/5611)
|
||||
|
||||
### Changed
|
||||
- Prevent mixing databases with query holders [#5611](https://github.com/azerothcore/azerothcore-wotlk/pull/5611)
|
||||
- Prevent using prepared statements on wrong database [#5611](https://github.com/azerothcore/azerothcore-wotlk/pull/5611)
|
||||
- Prevent committing transactions started on a different database [#5611](https://github.com/azerothcore/azerothcore-wotlk/pull/5611)
|
||||
- Convert async queries to new query callbacks [#5611](https://github.com/azerothcore/azerothcore-wotlk/pull/5611)
|
||||
|
||||
### How to upgrade
|
||||
- `PreparedStatement`
|
||||
```diff
|
||||
- PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LOGONPROOF);
|
||||
+ LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LOGONPROOF);
|
||||
```
|
||||
- `SQLTransaction`
|
||||
```diff
|
||||
- SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
+ CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
```
|
||||
## 4.0.0-dev.4 | Commit: [fbad1f3d6c27a5d3eea22483913c67a827ab01be
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/fbad1f3d6c27a5d3eea22483913c67a827ab01be
|
||||
|
||||
|
||||
### Added
|
||||
- new hook `OnBeforeSendJoinMessageArenaQueue` and `OnBeforeSendExitMessageArenaQueue`
|
||||
|
||||
### Changed
|
||||
- Rename `CanExitJoinMessageArenaQueue` to `OnBeforeSendExitMessageArenaQueue`
|
||||
- Rename `CanSendJoinMessageArenaQueue` to `OnBeforeSendJoinMessageArenaQueue`
|
||||
|
||||
### How to upgrade
|
||||
- Just rename all hooks from `CanExitJoinMessageArenaQueue` and `CanSendMessageArenaQueue`, to `OnBeforeSendExitMessageArenaQueue`
|
||||
- Just rename all hooks from `CanSendJoinMessageArenaQueue` and `OnBeforeSendJoinMessageArenaQueue`
|
||||
|
||||
## 4.0.0-dev.3 | Commit: [c35dde6fae732269357b78fb796fba21956b83fc
|
||||
](https://github.com/azerothcore/azerothcore-wotlk/commit/c35dde6fae732269357b78fb796fba21956b83fc
|
||||
|
||||
|
||||
Changelog for commit "[refactor(Collision): Update some methods to UpperCamelCase](https://github.com/azerothcore/azerothcore-wotlk/commit/b84f9b8a4b334632cb37dcebbb2dd4e087f65610)"
|
||||
|
||||
### Changes
|
||||
|
||||
```diff
|
||||
- getPosition
|
||||
- getBounds
|
||||
- getBounds2
|
||||
- getInstanceMapTree
|
||||
- getModelInstances
|
||||
- getPosInfo
|
||||
- getMeshData
|
||||
- getGroupModels
|
||||
- getIntersectionTime
|
||||
- getObjectHitPos
|
||||
- getAreaInfo
|
||||
+ GetPosition
|
||||
+ GetBounds
|
||||
+ GetBounds2
|
||||
+ GetInstanceMapTree
|
||||
+ GetModelInstances
|
||||
+ GetPosInfo
|
||||
+ GetMeshData
|
||||
+ GetGroupModels
|
||||
+ GetIntersectionTime
|
||||
+ GetObjectHitPos
|
||||
+ GetAreaInfo
|
||||
```
|
||||
|
||||
### How to upgrade
|
||||
|
||||
If you are using any of those methods, simply rename it by changing the first letter of the method from lowercase to uppercase.
|
||||
|
||||
Example: `getAreaInfo` -> `GetAreaInfo`
|
||||
|
||||
## 4.0.0-dev.2 | Commit: [3f70d0b80ff483f142ffbebf8960aeb503913a35](https://github.com/azerothcore/azerothcore-wotlk/commit/3f70d0b80ff483f142ffbebf8960aeb503913a35)
|
||||
|
||||
|
||||
### Added
|
||||
- Created new changelog system.
|
||||
|
||||
### How to upgrade
|
||||
|
||||
To create a new changelog please follow the instructions on our [wiki page](https://www.azerothcore.org/wiki/how-to-use-changelog)
|
||||
|
||||
|
||||
21
doc/changelog/pendings/create.sh
Normal file
21
doc/changelog/pendings/create.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
unamestr=$(uname)
|
||||
echo "OS: $unamestr"
|
||||
if [[ "$unamestr" == 'Darwin' ]]; then
|
||||
rev=$(gdate +%s%N );
|
||||
else
|
||||
rev=$(date +%s%N );
|
||||
fi
|
||||
|
||||
CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )/" && pwd )";
|
||||
|
||||
filename=changes_"$rev".md
|
||||
|
||||
echo "Insert your changelog here
|
||||
|
||||
### How to upgrade
|
||||
|
||||
Add instructions on how to adapt the code to the new changes
|
||||
|
||||
" > "$CUR_PATH/$filename" && echo "File created: $filename";
|
||||
51
doc/changelog/previous-versions/v2.x.md
Normal file
51
doc/changelog/previous-versions/v2.x.md
Normal file
@@ -0,0 +1,51 @@
|
||||
## We suggest using the latest master branch
|
||||
This is old and may not be working.
|
||||
We suggest that you always use the latest version of our master branch.
|
||||
https://github.com/azerothcore/azerothcore-wotlk/tree/master
|
||||
|
||||
## Upgrade instructions
|
||||
|
||||
For server administrators: instructions about how to upgrade existing servers are available [here](http://www.azerothcore.org/wiki/Upgrade-from-pre-2.0.0-to-latest-master).
|
||||
|
||||
|
||||
## Release notes
|
||||
|
||||
I'm pleased to release this new version of AzerothCore. This achievement was only possible thanks to all the contributors of our awesome community.
|
||||
|
||||
Special thanks to @talamortis @BarbzYHOOL @Deku @Stoabrogga @poszer @Viste @wetbrownsauce @CookieMonsterDev @Nefertumm @xDevICCI @pangolp @Winfidonarleyan @brussens @Yehonal
|
||||
@comix1988 @Rochet2 @masterking32 @mik1893 @STARRHELD @a4501150 @Trystanosaurus @FALL1N1 @Kaev @Ayasecore @Pondaveia @Gargarensis and all the other [developers](https://github.com/azerothcore/azerothcore-wotlk/graphs/contributors), testers, supporters and custom modules/tools developers!
|
||||
|
||||
The full list of improvements was just too big to be published here, so I will only add some of the improvements that have been implemented since release 1.x:
|
||||
|
||||
- Solved all DB installation issues
|
||||
- Implemented AC Docker setup
|
||||
- Fixed all DB startup errors
|
||||
- Eluna is now supported (special thanks @AyaseCore )
|
||||
- Travis now prevents startup DB errors to get on master
|
||||
- Fixed all compilation warnings
|
||||
- Align most of the DB tables structure with TC
|
||||
- Align SmartAI enums with TC
|
||||
- Align conditions enums with TC
|
||||
- Misc improvements to the SmartAI system
|
||||
- The core will now trigger error if unsupported SmartAI action/even/types are used
|
||||
- Fixed MySQL 5.7 issues
|
||||
- Fixed many Quests (the list is too big to report it here)
|
||||
- Improved movement and positioning for vanity pets
|
||||
- Fixed clang 7 build
|
||||
- Fixed Val'anyr Hammer of Ancient Kings
|
||||
- Fixed Amplify Damage
|
||||
- Update waypoints for black knight in Trail of the champion to be more blizzlike
|
||||
- Fixed Mage Empowered Fire Talent
|
||||
- Warlock Life Tap
|
||||
- Fixed Mirror Image
|
||||
- Added a few custom commands
|
||||
- Fixed Glyph Learning for dual talent
|
||||
- Fixed Deathgrip
|
||||
- Fixed Rogue Tier 1 proc
|
||||
- Fixed Guild Charter
|
||||
- Fixed heirlooms to apply stats before giving health.
|
||||
- Fixed pet bar will now show after /reload command
|
||||
- Fixed npc falling through textures
|
||||
- Fixed Noth the Plaguebringer casting upon returning back to ground
|
||||
|
||||
...and many other improvements! You can check the full changelog [here](https://github.com/azerothcore/azerothcore-wotlk/commits/master).
|
||||
1271
doc/changelog/previous-versions/v3.x.md
Normal file
1271
doc/changelog/previous-versions/v3.x.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user