Não jogar itens pelo teleportes C++
Bom.. o nome já diz, qualquer um que jogar itens nos teleportes do seu otserv, o mesmo será removido, como aquelas lixeiras, porem esse sistema é pela source, descartando scripts .LUA.
Em teleporte.cpp ache:
void Teleport::__addThing(Creature* actor, int32_t, Thing* thing)
{
if(!thing || thing->isRemoved())
return;
Tile* destTile = g_game.getTile(destination);
if(!destTile)
return;
if(Creature* creature = thing->getCreature())
{
g_game.addMagicEffect(creature->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost());
creature->getTile()->moveCreature(actor, creature, destTile);
g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost());
}
else if(Item* item = thing->getItem())
{
g_game.addMagicEffect(item->getPosition(), MAGIC_EFFECT_TELEPORT);
g_game.internalMoveItem(actor, item->getTile(), destTile, INDEX_WHEREEVER, item, item->getItemCount(), NULL);
g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT);
}
}
Altere ele todo para:
void Teleport::__addThing(Creature* actor, int32_t, Thing* thing)
{
if (!thing || thing->isRemoved())
return;
Tile* destTile = g_game.getTile(destination);
if (!destTile)
return;
if (Creature* creature = thing->getCreature())
{
g_game.addMagicEffect(creature->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost());
creature->getTile()->moveCreature(actor, creature, destTile);
g_game.addMagicEffect(destTile->getPosition(), MAGIC_EFFECT_TELEPORT, creature->isGhost());
}
else
{
Player* player = dynamic_cast<Player*>(actor);
if (player)
{
player->sendTextMessage(MSG_STATUS_SMALL, "You cannot teleport items.");
// Remover o item
Item* item = dynamic_cast<Item*>(thing);
if (item) {
g_game.internalRemoveItem(actor, item);
}
}
return;
}
}
agora é só compilar no modo Rebuilder e ligar o servidor, créditos a mim L3K0T pela alterações.