diff options
Diffstat (limited to 'src/map/channel.c')
-rw-r--r-- | src/map/channel.c | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/src/map/channel.c b/src/map/channel.c index 0704bf706..69f7ab872 100644 --- a/src/map/channel.c +++ b/src/map/channel.c @@ -5,28 +5,28 @@ #include "channel.h" +#include "map/atcommand.h" +#include "map/guild.h" +#include "map/instance.h" +#include "map/irc-bot.h" +#include "map/map.h" +#include "map/pc.h" +#include "common/cbasetypes.h" +#include "common/conf.h" +#include "common/db.h" +#include "common/malloc.h" +#include "common/nullpo.h" +#include "common/random.h" +#include "common/showmsg.h" +#include "common/socket.h" +#include "common/strlib.h" +#include "common/timer.h" +#include "common/utils.h" + #include <stdio.h> #include <stdlib.h> #include <string.h> -#include "atcommand.h" -#include "guild.h" -#include "instance.h" -#include "irc-bot.h" -#include "map.h" -#include "pc.h" -#include "../common/cbasetypes.h" -#include "../common/conf.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/timer.h" -#include "../common/utils.h" - struct channel_interface channel_s; static struct Channel_Config channel_config; @@ -258,7 +258,7 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const if (sd && chan->msg_delay != 0 && DIFF_TICK(sd->hchsysch_tick + chan->msg_delay*1000, timer->gettick()) > 0 && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) { - clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1455)); + clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd,1455)); return; } else if (sd) { snprintf(message, 150, "[ #%s ] %s : %s",chan->name,sd->status.name, msg); @@ -352,7 +352,7 @@ enum channel_operation_status channel_join(struct channel_data *chan, struct map } else { sprintf(output, msg_sd(sd,1403), chan->name); // You're now in the '%s' channel } - clif->colormes(sd->fd, COLOR_DEFAULT, output); + clif->messagecolor_self(sd->fd, COLOR_DEFAULT, output); } if (chan->type == HCS_TYPE_ALLY) { @@ -477,6 +477,17 @@ void channel_map_join(struct map_session_data *sd) channel->join(map->list[sd->bl.m].channel, sd, NULL, false); } +void channel_irc_join(struct map_session_data *sd) +{ + struct channel_data *chan = ircbot->channel; + if (sd->state.autotrade || sd->state.standalone) + return; + if (channel->config->irc_name[0] == '\0') + return; + if (chan) + channel->join(chan, sd, NULL, false); +} + /** * Lets a guild's members join a newly allied guild's channel. * @@ -574,7 +585,8 @@ void read_channels_config(void) int ally_enabled = 0, local_enabled = 0, local_autojoin = 0, ally_autojoin = 0, allow_user_channel_creation = 0, - irc_enabled = 0; + irc_enabled = 0, + irc_autojoin = 0; if( !libconfig->setting_lookup_string(settings, "map_local_channel_name", &local_name) ) local_name = "map"; @@ -655,11 +667,14 @@ void read_channels_config(void) libconfig->setting_lookup_bool(settings, "map_local_channel_autojoin", &local_autojoin); libconfig->setting_lookup_bool(settings, "ally_channel_autojoin", &ally_autojoin); + libconfig->setting_lookup_bool(settings, "irc_channel_autojoin", &irc_autojoin); if (local_autojoin) channel->config->local_autojoin = true; if (ally_autojoin) channel->config->ally_autojoin = true; + if (irc_autojoin) + channel->config->irc_autojoin = true; libconfig->setting_lookup_bool(settings, "allow_user_channel_creation", &allow_user_channel_creation); @@ -678,7 +693,6 @@ void read_channels_config(void) safestrncpy(channel->config->colors_name[i], config_setting_name(color), HCS_NAME_LENGTH); channel->config->colors[i] = (unsigned int)strtoul(libconfig->setting_get_string_elem(colors,i),NULL,0); - channel->config->colors[i] = (channel->config->colors[i] & 0x0000FF) << 16 | (channel->config->colors[i] & 0x00FF00) | (channel->config->colors[i] & 0xFF0000) >> 16;//RGB to BGR } channel->config->colors_count = color_count; } @@ -768,7 +782,7 @@ int do_init_channel(bool minimal) return 0; channel->db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, HCS_NAME_LENGTH); - channel->config->ally = channel->config->local = channel->config->irc = channel->config->ally_autojoin = channel->config->local_autojoin = false; + channel->config->ally = channel->config->local = channel->config->irc = channel->config->ally_autojoin = channel->config->local_autojoin = channel->config->irc_autojoin = false; channel->config_read(); return 0; @@ -828,6 +842,7 @@ void channel_defaults(void) channel->guild_join_alliance = channel_guild_join_alliance; channel->guild_leave_alliance = channel_guild_leave_alliance; channel->quit_guild = channel_quit_guild; + channel->irc_join = channel_irc_join; channel->config_read = read_channels_config; } |