Message

Server message strings for events, commands, and system notifications

The Message configuration file defines all server message strings sent to clients for events, commands, and system notifications. These messages support printf-style formatting with %d and %s placeholders.

File Location

GameServer/Data/Message.xml

Configuration Structure

<MessageList>
    <Message Index="0" Text="Blood Castle will close in %d minute(s)"/>
    <Message Index="1" Text="Blood Castle closed"/>
    <!-- More messages... -->
</MessageList>

Message Element

Each message is defined with an index and text content.

Attribute
Type
Default
Description

Index

int

Required

Unique message identifier (0-880 in current config)

Text

string

Required

Message text (max 128 characters). Supports %d (number) and %s (string) placeholders

Important Behavior

circle-info

How Message Loading Works: The CMessage::Load() function reads Message.xml at server startup and stores messages in a std::map<int, MESSAGE_INFO> indexed by message ID. Each MESSAGE_INFO contains the index and a 128-character buffer for the message text.

circle-info

Missing Messages: If code requests a message index that doesn't exist, GetMessage() returns a default message buffer formatted as "Could not find message [index]!" instead of crashing.

circle-exclamation
circle-info

How Placeholders Work: GetMessage() simply returns the raw format string (e.g., "Blood Castle will close in %d minute(s)"). The actual formatting happens in the calling function (like GCNoticeSendToAll, GCNoticeSend, etc.) which passes additional arguments for the placeholders. The placeholder order in the message must match the argument order in the calling code.

Message Categories

Event Messages (0-11, 16-20, 144-211, etc.)

Event-related announcements and status updates.

Index Range
Event Type

0-11

Blood Castle

16-20

Chaos Castle

144-149

Devil Square

176-184

Illusion Temple

192-211

Invasions

304-306

Double Goer

320-325

Incubator (Selupan)

336-343

Kanturu

352-356

Castle Deep

368-415

Crywolf Fortress

416-426

Castle Siege

Account & Permission Messages (32-35, 64-69, 248-251)

Account level indicators and permission errors.

Index
Purpose

32-35

Account level names (Free/Bronze/Silver/Gold)

64-69

Generic permission/requirement errors

248-251

Account level display with expiration

Command Messages (70-135)

Command execution responses and errors.

Index Range
Command Type

70-74

/add (stat points)

75-78

/pkclear

79-80

/money

81-84

/change (evolution)

85-88

/ware (warehouse)

89-95

/reset

96-113

GM commands

114-117

Auto point/reset toggles

118-125

/mreset (master reset)

126-134

Reset rate limits

Duel System (160-175)

Player versus player duel messages.

Guild Messages (432-443)

Guild management and alliance notifications.

Castle Siege (448-469)

Life Stone summoning and soldier recruitment.

System Messages (480-498)

Server shutdown warnings, anti-cheat, and game state changes.

Index
Purpose

480

Server closed

481-489

Shutdown timers

482

Duplicated item warning

485-486

Self Defense state

Custom Features (500-880)

Server-specific custom features and events.

Index Range
Feature

500-511

King of MU event

602-628

Marriage system

630-659

Character management

660-726

Custom events (Veloz, Quiz, Tag, etc.)

730-768

Economy (WC/WP/GP)

769-798

PvP and attack commands

799-824

DeathMatch event

825-834

Team vs Team event

863-880

Guild vs Guild event

Examples

No placeholders - message displayed as-is.

Common Issues

circle-exclamation
circle-exclamation
circle-info

Index Gaps: The configuration has many gaps in index numbers (e.g., 11→16, 20→32, 35→36). This is intentional to group related messages and leave room for expansion. Don't renumber existing indices - add new messages in gaps or at the end.

circle-info

"Unknown Message" Placeholders: Indices 37-58 contain "Unknown Message" as placeholders for future use. These can be replaced with actual messages as needed.

Last updated