• 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!

Leave guild command

Joined
Jun 17, 2009
Messages
171
Reaction score
15
Location
getThingPos(cid)
Hello otlander's. I need to edit leave guild command.When player have battle can't leave form guild
Its it?
Code:
bool Player::isGuildInvited(uint32_t guildId) const
{
	for(InvitedToGuildsList::const_iterator it = invitedToGuildsList.begin(); it != invitedToGuildsList.end(); ++it)
	{
		if((*it) == guildId)
			return true;
	}

	return false;
}

void Player::leaveGuild()
{
	sendClosePrivate(CHANNEL_GUILD);
	guildLevel = GUILDLEVEL_NONE;
	guildId = rankId = 0;
	guildName = rankName = guildNick = "";
}
 
Go to chat.cpp and find this (around line 566):
PHP:
if(text.substr(1) == "disband")
	{
		if(player->getGuildLevel() == GUILDLEVEL_LEADER)
		{            
			uint32_t guildId = player->getGuildId();
			channel->talk(player, SPEAK_CHANNEL_W, "The guild has been disbanded.");
			IOGuild::getInstance()->disbandGuild(guildId);
		}
		else
			player->sendCancel("You are not the leader of your guild.");
	}
and replace it by:
PHP:
if(text.substr(1) == "disband")
	{
		if(player->getGuildLevel() == GUILDLEVEL_LEADER)
		{
            if(!player->hasCondition(CONDITION_INFIGHT))
			{
                  uint32_t guildId = player->getGuildId();
			      channel->talk(player, SPEAK_CHANNEL_W, "The guild has been disbanded.");
			      IOGuild::getInstance()->disbandGuild(guildId);
            }
            else
                  player->sendCancel("You may not disband the guild if you're in a fight.");
		}
		else
			player->sendCancel("You are not the leader of your guild.");
	}

now find for:
PHP:
else if(text.substr(1, 5) == "leave")
	{
		if(player->getGuildLevel() < GUILDLEVEL_LEADER)
		{
			sprintf(buffer, "%s has left the guild.", player->getName().c_str());
			channel->talk(player, SPEAK_CHANNEL_W, buffer);
			player->leaveGuild();
		}
		else
			player->sendCancel("You cannot leave your guild because you are the leader of it, you have to pass the leadership to another member of your guild or disband the guild.");
	}
and replace it with:
PHP:
else if(text.substr(1, 5) == "leave")
	{
		if(player->getGuildLevel() < GUILDLEVEL_LEADER)
		{
            if(!player->hasCondition(CONDITION_INFIGHT))
            { 
			      sprintf(buffer, "%s has left the guild.", player->getName().c_str());
                  channel->talk(player, SPEAK_CHANNEL_W, buffer);
		          player->leaveGuild();
            }
            else
                  player->sendCancel("You may not leave the guild if you're in a fight.");
		}
		else
			player->sendCancel("You cannot leave your guild because you are the leader of it, you have to pass the leadership to another member of your guild or disband the guild.");
	}
finally find for:
PHP:
							else
							{
								if(player->getGuildLevel() > paramPlayer->getGuildLevel())
								{
									sprintf(buffer, "%s has been kicked from the guild by %s.", paramPlayer->getName().c_str(), player->getName().c_str());
									channel->talk(player, SPEAK_CHANNEL_W, buffer);
									paramPlayer->leaveGuild();
								}
								else
									player->sendCancel("You may only kick players with a guild rank below your.");
							}
and replace it with:
PHP:
							else
							{
								if(player->getGuildLevel() > paramPlayer->getGuildLevel())
								{
                                    if(!paramPlayer->hasCondition(CONDITION_INFIGHT))
                                    { 
									     sprintf(buffer, "%s has been kicked from the guild by %s.", paramPlayer->getName().c_str(), player->getName().c_str());
									     channel->talk(player, SPEAK_CHANNEL_W, buffer);
									     paramPlayer->leaveGuild();
                                    }
									else
                                         player->sendCancel("The player you're trying to kick is in a fight.");
								}
								else
									player->sendCancel("You may only kick players with a guild rank below your.");
							}

You're done. Tested and working properly.
Regards.
 
Last edited:

Similar threads

Back
Top