Postado Agosto 13, 2018 6 anos Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website). TFS 0.4 Então, eu queria limitar o numero de players dentro de uma guild,só que meu server é SQLITE. dai eu pensei em colocar pro comando !joinguild NOMEDAGUILD parasse de funcionar se a guild tivesse 10 players Eu achei isso daqui nas sources, mas nao tenho ideia de como editar isso sem bugar =S Spoiler bool TalkAction::guildJoin(Creature* creature, const std::string&, const std::string& param) { Player* player = creature->getPlayer(); if(!player || !g_config.getBool(ConfigManager::INGAME_GUILD_MANAGEMENT)) return false; std::string param_ = param; trimString(param_); if(!player->getGuildId()) { uint32_t guildId; if(IOGuild::getInstance()->getGuildId(guildId, param_)) { if(player->isGuildInvited(guildId)) { IOGuild::getInstance()->joinGuild(player, guildId); player->sendTextMessage(MSG_INFO_DESCR, "You have joined the guild."); char buffer[80]; sprintf(buffer, "%s has joined the guild.", player->getName().c_str()); if(ChatChannel* guildChannel = g_chat.getChannel(player, 0x00)) guildChannel->talk(player, SPEAK_CHANNEL_RA, buffer); } else player->sendCancel("You are not invited to that guild."); } else player->sendCancel("There's no guild with that name."); } else player->sendCancel("You are already in a guild."); return true; } algum filho de Deus pode me ajudar pf? (aceito outras formas de ajuda que limite)
Postado Agosto 17, 2018 6 anos Solução @poko360 leia as regras, caso volte a comentar up novamente ou qualquer frase para subi seu tópico você será advertido, o fórum tem um botão que você pode utilizar para subi seu tópico: Vá na sua source no arquivo ioguild.h, abaixo de: uint32_t getRankIdByLevel(uint32_t guild, GuildLevel_t level); coloque: uint32_t getGuildMembersCount(uint32_t guild); em ioguild.cpp, acima de: bool IOGuild::getRankEx(uint32_t& id, std::string& name, uint32_t guild, GuildLevel_t level) coloque: uint32_t IOGuild::getGuildMembersCount(uint32_t guild) { Database* db = Database::getInstance(); DBResult* result; uint32_t count = 0; DBQuery query; query << "SELECT `id` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " << guild << ")"; if(!(result = db->storeQuery(query.str()))) return count; do { ++count; } while(result->next()); result->free(); return count; } em talkactions.cpp, troque sua função por essa: Spoiler bool TalkAction::guildJoin(Creature* creature, const std::string&, const std::string& param) { Player* player = creature->getPlayer(); if(!player || !g_config.getBool(ConfigManager::INGAME_GUILD_MANAGEMENT)) return false; std::string param_ = param; trimString(param_); if(!player->getGuildId()) { uint32_t guildId; if(IOGuild::getInstance()->getGuildId(guildId, param_)) { if(player->isGuildInvited(guildId)) { if(IOGuild::getInstance()->getGuildMembersCount(guildId) < 10) { // 10, limite de membros na guild. IOGuild::getInstance()->joinGuild(player, guildId); player->sendTextMessage(MSG_INFO_DESCR, "You have joined the guild."); char buffer[80]; sprintf(buffer, "%s has joined the guild.", player->getName().c_str()); if(ChatChannel* guildChannel = g_chat.getChannel(player, 0x00)) guildChannel->talk(player, SPEAK_CHANNEL_RA, buffer); } else player->sendCancel("The amount of members of this guild has been reached!"); } else player->sendCancel("You are not invited to that guild."); } else player->sendCancel("There's no guild with that name."); } else player->sendCancel("You are already in a guild."); return true; }
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.