Пример #1
0
bool BedItem::canUse(Player* player)
{
	if (!player || !house || !player->isPremium()) {
		return false;
	}

	if (sleeperGUID == 0) {
		return isBed();
	}

	if (house->getHouseAccessLevel(player) != HOUSE_OWNER) {
		std::string name;

		if (IOLoginData::getInstance()->getNameByGuid(sleeperGUID, name)) {
			Player* sleeper = new Player(name, NULL);

			if (IOLoginData::getInstance()->loadPlayer(sleeper, name)) {
				if (house->getHouseAccessLevel(sleeper) <= house->getHouseAccessLevel(player)) {
					delete sleeper;
					sleeper = NULL;

					return isBed();
				}
			}

			delete sleeper;
			sleeper = NULL;
		}

		return false;
	}

	return true;
}
Пример #2
0
bool BedItem::canUse(Player* player)
{
	if(!house || !player || player->isRemoved() || (!player->isPremium() && g_config.getBool(
		ConfigManager::BED_REQUIRE_PREMIUM)) || player->hasCondition(CONDITION_INFIGHT))
		return false;

	if(!sleeper || house->getHouseAccessLevel(player) == HOUSE_OWNER)
		return isBed();

	Player* _player = g_game.getPlayerByGuidEx(sleeper);
	if(!_player)
		return isBed();

	bool ret = house->getHouseAccessLevel(_player) <= house->getHouseAccessLevel(player);
	if(_player->isVirtual())
		delete _player;

	return ret;
}