void ChatHandler::handleListChannelUsersMessage(ChatClient &client, MessageIn &msg) { MessageOut reply(CPMSG_LIST_CHANNELUSERS_RESPONSE); std::string channelName = msg.readString(); ChatChannel *channel = chatChannelManager->getChannel(channelName); if (channel) { reply.writeString(channel->getName()); const ChatChannel::ChannelUsers &users = channel->getUserList(); for (ChatChannel::ChannelUsers::const_iterator i = users.begin(), i_end = users.end(); i != i_end; ++i) { reply.writeString((*i)->characterName); reply.writeString(channel->getUserMode((*i))); } client.send(reply); } // log transaction Transaction trans; trans.mCharacterId = client.characterId; trans.mAction = TRANS_CHANNEL_USERLIST; trans.mMessage = ""; storage->addTransaction(trans); }
std::string Chat::getChannelName(const Player& player, uint16_t channelId) { ChatChannel* channel = getChannel(player, channelId); if (!channel) { return ""; } return channel->getName(); }
std::string Chat::getChannelName(Player* player, uint16_t channelId) { ChatChannel *channel = getChannel(player, channelId); if(channel) return channel->getName(); else return ""; }
std::string Chat::getChannelName(Player* player, const uint16_t& channelId) { ChatChannel* channel = getChannel(player, channelId); if (channel) { return channel->getName(); } else { return ""; } }
void ChatHandler::handleTopicChange(ChatClient &client, MessageIn &msg) { short channelId = msg.readShort(); std::string topic = msg.readString(); ChatChannel *channel = chatChannelManager->getChannel(channelId); if (!guildManager->doesExist(channel->getName())) { chatChannelManager->setChannelTopic(channelId, topic); } else { guildChannelTopicChange(channel, client.characterId, topic); } // log transaction Transaction trans; trans.mCharacterId = client.characterId; trans.mAction = TRANS_CHANNEL_TOPIC; trans.mMessage = "User changed topic to " + topic; trans.mMessage.append(" in " + channel->getName()); storage->addTransaction(trans); }
void ChatHandler::handleQuitChannelMessage(ChatClient &client, MessageIn &msg) { MessageOut reply(CPMSG_QUIT_CHANNEL_RESPONSE); short channelId = msg.readShort(); ChatChannel *channel = chatChannelManager->getChannel(channelId); if (channelId == 0 || !channel) { reply.writeByte(ERRMSG_INVALID_ARGUMENT); } else if (!channel->removeUser(&client)) { reply.writeByte(ERRMSG_FAILURE); } else { reply.writeByte(ERRMSG_OK); reply.writeShort(channelId); // Send an CPMSG_UPDATE_CHANNEL to warn other clients a user left // the channel. warnUsersAboutPlayerEventInChat(channel, client.characterName, CHAT_EVENT_LEAVING_PLAYER); // log transaction Transaction trans; trans.mCharacterId = client.characterId; trans.mAction = TRANS_CHANNEL_QUIT; trans.mMessage = "User left " + channel->getName(); storage->addTransaction(trans); if (channel->getUserList().empty()) { chatChannelManager->removeChannel(channel->getId()); } } client.send(reply); }