• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Fix/Patch [0.3.6pl1] !disband fix

Skazw

New Member
Joined
Jun 23, 2013
Messages
3
Reaction score
2
Fix for !disband command ^_^

ioguild.cpp, find:
Code:
bool IOGuild::disbandGuild(uint32_t guildId)
{
	Database* db = Database::getInstance();

	DBQuery query;
	query << "UPDATE `players` SET `rank_id` = '' AND `guildnick` = '' WHERE `rank_id` = " << getRankIdByLevel(guildId, GUILDLEVEL_LEADER) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_VICE) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_MEMBER);
	if(!db->executeQuery(query.str()))
		return false;

	for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it)
	{
		if(it->second->getGuildId() == guildId)
			it->second->leaveGuild();
	}

	query.str("");
	query << "DELETE FROM `guilds` WHERE `id` = " << guildId << " LIMIT 1";
	if(!db->executeQuery(query.str()))
		return false;

	query.str("");
	query << "DELETE FROM `guild_invites` WHERE `guild_id` = " << guildId;
	if(!db->executeQuery(query.str()))
		return false;

	query.str("");
	query << "DELETE FROM `guild_ranks` WHERE `guild_id` = " << guildId;
	return db->executeQuery(query.str());
}

replace with:
Code:
bool IOGuild::disbandGuild(uint32_t guildId)
{
    Database* db = Database::getInstance();

    DBQuery query;
    query << "UPDATE `players` SET `rank_id` = '' AND `guildnick` = '' WHERE `rank_id` = " << getRankIdByLevel(guildId, GUILDLEVEL_LEADER) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_VICE) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_MEMBER);
    if(!db->executeQuery(query.str()))
        return false;

    InvitedToGuildsList::iterator iit;
    for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it)
    {
        if(it->second->getGuildId() == guildId)
            it->second->leaveGuild();
        else
        {
         iit = std::find(it->second->invitedToGuildsList.begin(), it->second->invitedToGuildsList.end(), guildId);
            if(iit != it->second->invitedToGuildsList.end())
                 it->second->invitedToGuildsList.erase(iit);
        }
    }

    query.str("");
    query << "DELETE FROM `guilds` WHERE `id` = " << guildId << db->getUpdateLimiter();
    if(!db->executeQuery(query.str()))
        return false;

    query.str("");
    query << "DELETE FROM `guild_invites` WHERE `guild_id` = " << guildId;
    if(!db->executeQuery(query.str()))
        return false;

    query.str("");
    query << "DELETE FROM `guild_ranks` WHERE `guild_id` = " << guildId;
    return db->executeQuery(query.str());
}

Credits: slawkens
 
and what does it do? clears invitations? 036 already does it
 
Back
Top