Crypton3
Retired
- Joined
- Mar 13, 2010
- Messages
- 549
- Reaction score
- 139
Jak zablokować zasypywanie depo i domków?
Witam,W tym poradniku opiszę jak zablokować zasypywanie depo i domków przez innych graczy.
Po dodaniu poniższego kodu tylko gracze, którzy stoją jedną kratkę od lockera będą mogli na niego rzucać przedmioty.
A więc tak:
W pliku game.cpp szukamy:
Code:
if(playerPos.z < mapFromPos.z && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere))
{
player->sendCancelMessage(RET_FIRSTGODOWNSTAIRS);
return false;
}
Code:
// Anty zasypywanie depo
if (!Position::areInRange<1,1,0>(playerPos, mapToPos))
{
if (toCylinder->getTile()->hasFlag(TILESTATE_DEPOT))
{
player->sendCancelMessage(RET_NOTPOSSIBLE);
return false;
}
}
Czas na domki - po dodaniu tego kodu tylko gracz, który jest właścicielem domku będzie mógł do niego wrzucać przedmioty z zewnątrz.
W pliku game.cpp, pod powyższym kodem dodajemy:
Code:
// Anty zasypywanie domków
if (toCylinder->getTile()->hasFlag(TILESTATE_HOUSE))
{
// Blokujemy zasypywanie nie swoich domków z zewnątrz
if (!fromCylinder->getTile()->hasFlag(TILESTATE_HOUSE))
{
House* tileHouse = toCylinder->getTile()->getHouse();
House* playerHouse = Houses::getInstance()->getHouseByPlayerId(player->getGUID());
if (tileHouse != playerHouse)
{
player->sendCancelMessage(RET_NOTPOSSIBLE);
return false;
}
}
// Blokujemy zasypywanie cudzych domków z innego domku :D
else
{
House* firstHouse = fromCylinder->getTile()->getHouse();
House* secondHouse = toCylinder->getTile()->getHouse();
if (firstHouse != secondHouse)
{
player->sendCancelMessage(RET_NOTPOSSIBLE);
return false;
}
}
}
Gotowe ☺
Last edited: