mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-10 23:20:25 +00:00
[Commands] Command Status Reloading
Currently command status changes require a server restart to take effect, this will allow them to be changed and use `#reload commands` without needing a restart. Added a helper method called GetCommandStatus() for future reference when sending command saylinks to people and making sure if they're high enough status for the command before sending the link.
This commit is contained in:
+20
-19
@@ -226,25 +226,26 @@
|
||||
#define ServerOP_ReloadAAData 0x4100
|
||||
#define ServerOP_ReloadAlternateCurrencies 0x4101
|
||||
#define ServerOP_ReloadBlockedSpells 0x4102
|
||||
#define ServerOP_ReloadContentFlags 0x4103
|
||||
#define ServerOP_ReloadDoors 0x4104
|
||||
#define ServerOP_ReloadGroundSpawns 0x4105
|
||||
#define ServerOP_ReloadLevelEXPMods 0x4106
|
||||
#define ServerOP_ReloadLogs 0x4107
|
||||
#define ServerOP_ReloadMerchants 0x4108
|
||||
#define ServerOP_ReloadNPCEmotes 0x4109
|
||||
#define ServerOP_ReloadObjects 0x4110
|
||||
#define ServerOP_ReloadPerlExportSettings 0x4111
|
||||
#define ServerOP_ReloadRules 0x4112
|
||||
#define ServerOP_ReloadStaticZoneData 0x4113
|
||||
#define ServerOP_ReloadTasks 0x4114
|
||||
#define ServerOP_ReloadTitles 0x4115
|
||||
#define ServerOP_ReloadTraps 0x4116
|
||||
#define ServerOP_ReloadVariables 0x4117
|
||||
#define ServerOP_ReloadVeteranRewards 0x4118
|
||||
#define ServerOP_ReloadWorld 0x4119
|
||||
#define ServerOP_ReloadZonePoints 0x4120
|
||||
#define ServerOP_ReloadDzTemplates 0x4121
|
||||
#define ServerOP_ReloadCommands 0x4103
|
||||
#define ServerOP_ReloadContentFlags 0x4104
|
||||
#define ServerOP_ReloadDoors 0x4105
|
||||
#define ServerOP_ReloadGroundSpawns 0x4106
|
||||
#define ServerOP_ReloadLevelEXPMods 0x4107
|
||||
#define ServerOP_ReloadLogs 0x4108
|
||||
#define ServerOP_ReloadMerchants 0x4109
|
||||
#define ServerOP_ReloadNPCEmotes 0x4110
|
||||
#define ServerOP_ReloadObjects 0x4111
|
||||
#define ServerOP_ReloadPerlExportSettings 0x4112
|
||||
#define ServerOP_ReloadRules 0x4113
|
||||
#define ServerOP_ReloadStaticZoneData 0x4114
|
||||
#define ServerOP_ReloadTasks 0x4115
|
||||
#define ServerOP_ReloadTitles 0x4116
|
||||
#define ServerOP_ReloadTraps 0x4117
|
||||
#define ServerOP_ReloadVariables 0x4118
|
||||
#define ServerOP_ReloadVeteranRewards 0x4119
|
||||
#define ServerOP_ReloadWorld 0x4120
|
||||
#define ServerOP_ReloadZonePoints 0x4121
|
||||
#define ServerOP_ReloadDzTemplates 0x4122
|
||||
|
||||
#define ServerOP_CZDialogueWindow 0x4500
|
||||
#define ServerOP_CZLDoNUpdate 0x4501
|
||||
|
||||
@@ -1307,6 +1307,7 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) {
|
||||
case ServerOP_ReloadAAData:
|
||||
case ServerOP_ReloadAlternateCurrencies:
|
||||
case ServerOP_ReloadBlockedSpells:
|
||||
case ServerOP_ReloadCommands:
|
||||
case ServerOP_ReloadDoors:
|
||||
case ServerOP_ReloadGroundSpawns:
|
||||
case ServerOP_ReloadLevelEXPMods:
|
||||
|
||||
@@ -11301,6 +11301,16 @@ void Client::SendReloadCommandMessages() {
|
||||
).c_str()
|
||||
);
|
||||
|
||||
auto commands_link = Saylink::Silent("#reload commands");
|
||||
|
||||
Message(
|
||||
Chat::White,
|
||||
fmt::format(
|
||||
"Usage: {} - Reloads Commands globally",
|
||||
commands_link
|
||||
).c_str()
|
||||
);
|
||||
|
||||
auto content_flags_link = Saylink::Silent("#reload content_flags");
|
||||
|
||||
Message(
|
||||
|
||||
+16
-8
@@ -53,6 +53,7 @@ int (*command_dispatch)(Client *,std::string) = command_notavail;
|
||||
std::map<std::string, CommandRecord *> commandlist;
|
||||
std::map<std::string, std::string> commandaliases;
|
||||
std::vector<CommandRecord *> command_delete_list;
|
||||
std::map<std::string, uint8> commands_map;
|
||||
|
||||
/*
|
||||
* command_notavail
|
||||
@@ -82,7 +83,9 @@ int command_notavail(Client *c, std::string message)
|
||||
|
||||
int command_init(void)
|
||||
{
|
||||
commandaliases.clear();
|
||||
if (!commandaliases.empty()) {
|
||||
command_deinit();
|
||||
}
|
||||
|
||||
if (
|
||||
command_add("acceptrules", "[acceptrules] - Accept the EQEmu Agreement", AccountStatus::Player, command_acceptrules) ||
|
||||
@@ -468,8 +471,10 @@ int command_init(void)
|
||||
*/
|
||||
void command_deinit(void)
|
||||
{
|
||||
for (auto &c : command_delete_list)
|
||||
for (auto &c : command_delete_list) {
|
||||
delete c;
|
||||
}
|
||||
|
||||
command_delete_list.clear();
|
||||
commandlist.clear();
|
||||
commandaliases.clear();
|
||||
@@ -520,6 +525,8 @@ int command_add(std::string command_name, std::string description, uint8 admin,
|
||||
c->description = description;
|
||||
c->function = function;
|
||||
|
||||
commands_map[command_name] = admin;
|
||||
|
||||
commandlist[command_name] = c;
|
||||
commandaliases[command_name] = command_name;
|
||||
command_delete_list.push_back(c);
|
||||
@@ -528,6 +535,11 @@ int command_add(std::string command_name, std::string description, uint8 admin,
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8 GetCommandStatus(Client *c, std::string command_name) {
|
||||
auto command_status = commands_map[command_name];
|
||||
return command_status;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* command_realdispatch
|
||||
@@ -607,11 +619,6 @@ void command_help(Client *c, const Seperator *sep)
|
||||
}
|
||||
|
||||
command_link = Saylink::Silent(
|
||||
fmt::format(
|
||||
"{}{}",
|
||||
COMMAND_CHAR,
|
||||
cur.first
|
||||
),
|
||||
fmt::format(
|
||||
"{}{}",
|
||||
COMMAND_CHAR,
|
||||
@@ -622,8 +629,9 @@ void command_help(Client *c, const Seperator *sep)
|
||||
c->Message(
|
||||
Chat::White,
|
||||
fmt::format(
|
||||
"{} | {}",
|
||||
"{} | Status: {} | {}",
|
||||
command_link,
|
||||
cur.second->admin,
|
||||
!cur.second->description.empty() ? cur.second->description : ""
|
||||
).c_str()
|
||||
);
|
||||
|
||||
@@ -5,6 +5,7 @@ class Client;
|
||||
class Seperator;
|
||||
|
||||
#include "../common/types.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#define COMMAND_CHAR '#'
|
||||
@@ -27,6 +28,7 @@ int command_add(std::string command_name, std::string description, uint8 admin,
|
||||
int command_notavail(Client *c, std::string message);
|
||||
int command_realdispatch(Client *c, std::string message);
|
||||
void command_logcommand(Client *c, std::string message);
|
||||
uint8 GetCommandStatus(Client *c, std::string command_name);
|
||||
|
||||
// Commands
|
||||
void command_acceptrules(Client *c, const Seperator *sep);
|
||||
|
||||
@@ -11,6 +11,7 @@ void command_reload(Client *c, const Seperator *sep)
|
||||
bool is_aa = !strcasecmp(sep->arg[1], "aa");
|
||||
bool is_alternate_currencies = !strcasecmp(sep->arg[1], "alternate_currencies");
|
||||
bool is_blocked_spells = !strcasecmp(sep->arg[1], "blocked_spells");
|
||||
bool is_commands = !strcasecmp(sep->arg[1], "commands");
|
||||
bool is_content_flags = !strcasecmp(sep->arg[1], "content_flags");
|
||||
bool is_doors = !strcasecmp(sep->arg[1], "doors");
|
||||
bool is_dztemplates = !strcasecmp(sep->arg[1], "dztemplates");
|
||||
@@ -37,6 +38,7 @@ void command_reload(Client *c, const Seperator *sep)
|
||||
!is_aa &&
|
||||
!is_alternate_currencies &&
|
||||
!is_blocked_spells &&
|
||||
!is_commands &&
|
||||
!is_content_flags &&
|
||||
!is_doors &&
|
||||
!is_dztemplates &&
|
||||
@@ -74,7 +76,10 @@ void command_reload(Client *c, const Seperator *sep)
|
||||
} else if (is_blocked_spells) {
|
||||
c->Message(Chat::White, "Attempting to reload Blocked Spells globally.");
|
||||
pack = new ServerPacket(ServerOP_ReloadBlockedSpells, 0);
|
||||
} else if (is_content_flags) {
|
||||
} else if (is_commands) {
|
||||
c->Message(Chat::White, "Attempting to reload Commands globally.");
|
||||
pack = new ServerPacket(ServerOP_ReloadCommands, 0);
|
||||
} else if (is_content_flags) {
|
||||
c->Message(Chat::White, "Attempting to reload Content Flags globally.");
|
||||
pack = new ServerPacket(ServerOP_ReloadContentFlags, 0);
|
||||
} else if (is_doors) {
|
||||
|
||||
@@ -40,6 +40,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "../common/profanity_manager.h"
|
||||
|
||||
#include "client.h"
|
||||
#include "command.h"
|
||||
#include "corpse.h"
|
||||
#include "entity.h"
|
||||
#include "expedition.h"
|
||||
@@ -1915,6 +1916,12 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
zone->LoadZoneBlockedSpells();
|
||||
break;
|
||||
}
|
||||
case ServerOP_ReloadCommands:
|
||||
{
|
||||
zone->SendReloadMessage("Commands");
|
||||
command_init();
|
||||
break;
|
||||
}
|
||||
case ServerOP_ReloadContentFlags:
|
||||
{
|
||||
zone->SendReloadMessage("Content Flags");
|
||||
|
||||
Reference in New Issue
Block a user