* feat(Core/Chat): Provide a fully-formed protocol for addons to interact with GM commands
* Send success/fail state, allow interleaving, and indicate end of output. Add framework for supporting non-human-readable output in commands.
* cherry-pick commit (508c9d2fc1)
This PR implements a well-formed protocol for addons to communicate with the server, outlined below:
- All communication happens over the addon channel (`LANG_ADDON` in terms of the core, `CHAT_MSG_ADDON`/`SendAddonMessage` for the client). The prefix used for all messages is `AzerothCore` (in client terms - in core terms, every message starts with `AzerothCore\t`).
- In each message, the first character is the opcode. The following four characters are a unique identifier for the invocation in question, and will be echoed back by the server in every message related to that invocation. Following is the message body, if any.
- The following opcodes are supported:
- Client to server:
- `p` - Ping request. The core will always respond by ACKing with the passed identifier. No body.
- `i` or `h` - Command invocation. The message body is the command text without prefix. `i` requests machine-readable output, `h` requests human-readable.
- Server to client:
- `a` - ACK. The first message sent in response to any invocation (before any output). No body.
- `m` - Message. Sent once per line of output the server generates. Body = output line.
- `o` - OK. Indicates that the command finished processing with no errors. No body.
- `f` - Failed. Indicates that command processing is done, but there was an error. No body.
Expected overhead is minimal, and this integrates seamlessly with existing command scripts (no changes necessary).
PS: There's also a client-side addon library that exposes this protocol in a developer-friendly way over at https://github.com/azerothcore/LibAzerothCore-1.0
---------
Co-authored-by: Treeston <14020072+Treeston@users.noreply.github.com>
* chore(Scripts/Commands): QOL server debug
* England
* might as well do updatetime while we are at it. Consistency right?
* Hey let's sneak this ENGLAND in
* fix(Core/Unit): Invalidate update object cache when changing health in the same world update tick.
Should fix an issue when the client sees dead NPCs when they are not.
* Fix styling
* Another codestyle fix
* fix(Scripts/Shattrath): Daily Dungeon quests holographs
* Move to single script + doaction SAI
* ocd
* use NEAR_PLAYER
* use only Wind Trader as SAI
* use creature_guid target
* rename action
* cleanup
* zzz
* Update zone_shattrath_city.cpp
* init
* update movement
* updates and debug
* stuck :/
scheduler doesn't seem to update when at the end of wp movement???
* fix wps and implement fight
* finalise
* unused
* Update boss_nalorakk.cpp
* keep oprientation
* ran_intro
chore(Core/Conf): Show better logging when fatal config options are missing
* Show better log when the server halts due to missing fatal config option
* Change error to warning for missing config options. As they are not errors
* Update output when autoupdater is disabled for all databases
* chore(Core/DBC): define unused unknown dbc fields
* Name unused unknown dbc fields using WDBX and wowdev.wiki
* rename SpellShapeshiftEntry to SpellShapeshiftFormEntry to properly match the DBC used
* rename sSpellShapeshiftStore to sSpellShapeshiftFormStore to properly match the DBC used
* Comment out unused field for GlyphPropertiesEntry
* Comment out unused field for MapEntry
* forgot one
* SpellShapeshiftfmt to SpellShapeshiftFormfmt
* SpellShapeshiftFormEntryfmt
* Check to see if other members in your arena team are queued or in a rated arena already and, if so, do not allow queue to go through
* Accidentally put team party check inside the for loop
* some basic logic efficiency changes
* minor syntax issue
- to me this hook should obviously provide an option to overwrite
the InstanceScript pointer
- this is e.g. beeing used by mod-eluna (but currently broken)
* refactor(Core/ObjectMgr): Handle Profanity & Reserved Names in load
* closes https://github.com/azerothcore/azerothcore-wotlk/issues/18556
* Update ObjectMgr.cpp
* Update ObjectMgr.cpp
* I swear I am not drunk
* We already check all of these
* fix build
* Forgot we dont send the responsecode in senderrormessage
* last commit I swear
* fix(Script/GunshipBattle): Wipe if no player is on the deck
* reorder
* Update boss_icecrown_gunship_battle.cpp
* Update worldserver.conf.dist
* Update boss_icecrown_gunship_battle.cpp
* missed it!
* Update instance_icecrown_citadel.cpp
* skip other effects in case of taunt DR
* set flags_extra creature_template
fe38b78c87
Co-authored-by: offl <offl@users.noreply.github.com>
* update query to only entries found in acore_world.creature_template
* add name as comment
* fix ci codestyle
---------
Co-authored-by: offl <offl@users.noreply.github.com>