|
@@ -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"),
|