Add channel_join script command (#7970)

This commit is contained in:
HAO YAN
2023-12-11 15:43:56 +08:00
committed by GitHub
parent eec798bfc3
commit 461294f423
2 changed files with 43 additions and 0 deletions

View File

@@ -24656,6 +24656,37 @@ BUILDIN_FUNC(channel_create) {
return SCRIPT_CMD_SUCCESS;
}
// ===================================
// *channel_join "<channel_name>"{, <char_id>};
// Join an existing channel.
// The command returns 0 upon success, and these values upon failure:
// -1 : Invalid channel or player
// -2 : Player already in channel
// -3 : Player banned
// -4 : Reached max limit
// ===================================
BUILDIN_FUNC(channel_join) {
map_session_data *sd = nullptr;
if (!script_charid2sd(3, sd)) {
script_pushint(st, -1);
return SCRIPT_CMD_FAILURE;
}
struct Channel *channel = nullptr;
const char *chname = script_getstr(st, 2);
if (!(channel = channel_name2channel((char *)chname, nullptr, 0))) {
ShowError("buildin_channel_join: Channel name '%s' is invalid.\n", chname);
script_pushint(st, -1);
return SCRIPT_CMD_FAILURE;
}
script_pushint(st, channel_join(channel, sd));
return SCRIPT_CMD_SUCCESS;
}
/**
* Set channel option
* channel_setopt "<chname>",<option>,<value>;
@@ -27634,6 +27665,7 @@ struct script_function buildin_func[] = {
// Channel System
BUILDIN_DEF(channel_create,"ss?????"),
BUILDIN_DEF(channel_join, "s?"),
BUILDIN_DEF(channel_setopt,"sii"),
BUILDIN_DEF(channel_getopt,"si"),
BUILDIN_DEF(channel_setcolor,"si"),