Files
DarkflameServer/dGame/dUtilities/SlashCommands/GuildCommands.h
Aaron Kimbrell f6f937955e feat(world): guilds in the world: create box, character component, guild commands
The world side of guilds (docs/Guilds.md):

- TMP_GUILD_CREATE, which the client's guild create box sends to its world, goes to the chat server as GUILD_CREATE.
- The character component reads the character's guild from the database when it loads (instead of the old unused "gn"
  and "gid" charxml attributes) and takes GUILD_GET_STATUS from the chat server; a change is serialized once (the
  client redraws the name billboard every time it reads a guild name). A name waiting for moderation isn't shown.
- Slash commands (the client has none for guilds): /g and /guild (guild chat; the client's guild tab sends /g, which
  goes through the chat filter and mute like zone chat, then to the chat server as channel 10), /guildcreate (opens the
  create box with DisplayGuildCreateBox), /gkick, /grank <name> <officer|veteran|recruit>, /gleader and
  /gdisband confirm.
- The Guild Master script (LOT 3001, L_GUILD_CREATE.lua: using it opens the create box). Live never placed it; GMs
  can spawn it.

Check in game (two accounts, a client with a FeatureGating row "guilds", 1, 0, 0 in its cdclient.fdb): /guildcreate,
make a guild (the name shows under yours, the guild button appears on the status bar); invite the second character
from the guild window, accept, both lists show both; guild chat tab; /grank, /gkick, /gleader; leave from the window;
log the second character out and in (guildmate logged off/in lines).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 06:48:40 -05:00

24 lines
957 B
C++

#ifndef GUILDCOMMANDS_H
#define GUILDCOMMANDS_H
#include <string>
class Entity;
struct SystemAddress;
/**
* Guild slash commands (docs/Guilds.md). The client has none: its guild chat tab sends "/g <text>", which reaches the
* server like any unknown command, and it has no controls for kicking, ranks or disbanding. The chat server decides
* everything; these only pass the request on.
*/
namespace GuildCommands {
void Chat(Entity* entity, const SystemAddress& sysAddr, const std::string args);
void OpenCreateBox(Entity* entity, const SystemAddress& sysAddr, const std::string args);
void Kick(Entity* entity, const SystemAddress& sysAddr, const std::string args);
void Rank(Entity* entity, const SystemAddress& sysAddr, const std::string args);
void Leader(Entity* entity, const SystemAddress& sysAddr, const std::string args);
void Disband(Entity* entity, const SystemAddress& sysAddr, const std::string args);
}
#endif // GUILDCOMMANDS_H