void LocalPlayer::pickedUp(const ItemInfo &itemInfo, int amount) { if (!amount) { if (config.getValue("showpickupchat", 1)) { localChatTab->chatLog(_("Unable to pick up item."), BY_SERVER); } } else { if (config.getValue("showpickupchat", 1)) { // TRANSLATORS: This sentence may be translated differently // for different grammatical numbers (singular, plural, ...) localChatTab->chatLog(strprintf(ngettext("You picked up %d " "[@@%d|%s@@].", "You picked up %d [@@%d|%s@@].", amount), amount, itemInfo.getId(), itemInfo.getName().c_str()), BY_SERVER); } if (mMap && config.getValue("showpickupparticle", 0)) { // Show pickup notification addMessageToQueue(itemInfo.getName(), Palette::PICKUP_INFO); } } }
void ChatTab::chatInput(const std::string &message) { std::string msg = message; trim(msg); if (msg.empty()) return; // Check for item link std::string::size_type start = msg.find('['); while (start != std::string::npos && msg[start+1] != '@') { std::string::size_type end = msg.find(']', start); if (start + 1 != end && end != std::string::npos) { // Catch multiple embeds and ignore them // so it doesn't crash the client. while ((msg.find('[', start + 1) != std::string::npos) && (msg.find('[', start + 1) < end)) { start = msg.find('[', start + 1); } std::string temp = msg.substr(start + 1, end - start - 1); const ItemInfo itemInfo = ItemDB::get(temp); if (itemInfo.getId() != 0) { msg.insert(end, "@@"); msg.insert(start + 1, "|"); msg.insert(start + 1, toString(itemInfo.getId())); msg.insert(start + 1, "@@"); } } start = msg.find('[', start + 1); } // Prepare ordinary message if (msg[0] != '/') handleInput(msg); else handleCommand(std::string(msg, 1)); }