bool IOGuild::joinGuild(Player* player, uint32_t guildId)
{
Database* db = Database::getInstance();
if(!db->connect())
return false;
DBQuery query;
DBResult result;
query << "SELECT `id`, `name` FROM `guild_ranks` WHERE `guild_id` = " << guildId << " AND `level` = 1 LIMIT 1";
if(!db->storeQuery(query, result))
return false;
player->setGuildRank(result.getDataString("name"));
player->setGuildId(guildId);
query << "UPDATE `players` SET `rank_id` = " << result.getDataInt("id") << " WHERE `id` = " << player->getGUID() << db->getUpdateQueryLimit() << ";";
if(!db->executeQuery(query))
return false;
player->setGuildName(getGuildNameById(guildId));
query << "SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " << guildId << " AND `level` = 1 LIMIT 1;";
if(!db->storeQuery(query, result))
return false;
query << "SELECT `id`, `guild_id`, `enemy_id` FROM `guild_wars` WHERE (`guild_id` = " << guildId << " OR `enemy_id` = " << guildId << ") AND `status` = 2;";
if(db->storeQuery(query, result))
{
for(uint32_t i = 0; i < result.getNumRows(); ++i)
{
War_t war;
war.war = result.getDataInt("id", i);
[B][COLOR="#FF0000"]if(player->getGuildId() == result.getDataInt("guild_id", i))[/COLOR][/B]
{
war.type = WAR_GUILD;
player->addEnemy(result.getDataInt("enemy_id", i), war);
}
else
{
war.type = WAR_ENEMY;
player->addEnemy(result.getDataInt("guild_id", i), war);
}
}
g_game.updateCreatureEmblem(player);
}
player->setGuildLevel(GUILDLEVEL_MEMBER);
player->invitedToGuildsList.clear();
return true;
}