Ir para conteúdo
Banner com Efeitos

Featured Replies

  • 1 year later...
  • Respostas 27
  • Visualizações 4.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Matheus tente o seu script original novamente... só que use essa tag na talkaction só pra testar ... aqui no meu servidor deu certo! <talkaction log="yes" words="!leavehouse" filter="word

  • Se tu tiver as sources, veja em houses.cpp void House::clean() { for(HouseBedList::iterator bit = bedsList.begin(); bit != bedsList.end(); ++bit) { if((*bit)->getSleeper())

  • compilei tudo certinho e mesmo assim continua não funcionando =/ ele não entrega os itens para o depot parece que falta mais algo para editar nas sources...   Pois testei no testserver que é

Postado
Em 13/12/2012 em 12:20, Matk disse:

Seguinte galera, consegui solucionar o erro, o problema realmente era na source do servidor, olhe a solução:

 

Vá até house.cpp e procure por:

 

 

bool House::transferToDepot()

{

if(!townId)

return false;


Player* player = NULL;

if(owner)

{

uint32_t tmp = owner;

if(isGuild() && !IOGuild::getInstance()->swapGuildIdToOwner(tmp))

tmp = 0;



if(tmp)

player = g_game.getPlayerByGuidEx(tmp);

}


Item* item = NULL;

Container* tmpContainer = NULL;


ItemList moveList;

for(HouseTileList::iterator it = houseTiles.begin(); it != houseTiles.end(); ++it)

{

for(uint32_t i = 0; i < (*it)->getThingCount(); ++i)

{

if(!(item = (*it)->__getThing(i)->getItem()))

continue;


if(item->isPickupable())

moveList.push_back(item);

else if((tmpContainer = item->getContainer()))

{

for(ItemList::const_iterator it = tmpContainer->getItems(); it != tmpContainer->getEnd(); ++it)

moveList.push_back(*it);

}

}

}


if(player)

{

for(ItemList::iterator it = moveList.begin(); it != moveList.end(); ++it)

g_game.internalRemoveItem(NULL, (*it), (*it)->getItemCount(), false, FLAG_NOLIMIT);


if(player->isVirtual())

{

IOLoginData::getInstance()->savePlayer(player);

delete player;

}

}

else

{

for(ItemList::iterator it = moveList.begin(); it != moveList.end(); ++it)

g_game.internalRemoveItem(NULL, (*it), (*it)->getItemCount(), false, FLAG_NOLIMIT);

}

return true;

}[/code]




Agora substitua isso tudo por:

bool House::transferToDepot()
{
if(!townId)
return false;

Player* player = NULL;
if(owner)
{
uint32_t tmp = owner;
if(isGuild() && !IOGuild::getInstance()->swapGuildIdToOwner(tmp))
tmp = 0;

if(tmp)
player = g_game.getPlayerByGuidEx(tmp);
}

Container* tmpContainer = NULL;
TileItemVector* items = NULL;

ItemList moveList;
for(HouseTileList::iterator it = houseTiles.begin(); it != houseTiles.end(); ++it)
{
if(!(items = (*it)->getItemList()))
continue;

for(ItemVector::iterator iit = items->begin(); iit != items->end(); ++iit)
{
if((*iit)->isPickupable())
moveList.push_back(*iit);
else if((tmpContainer = (*iit)->getContainer()))
{
for(ItemList::const_iterator cit = tmpContainer->getItems(); cit != tmpContainer->getEnd(); ++cit)
moveList.push_back(*cit);
}
}
}

if(player)
{
Depot* depot = player->getDepot(townId, true);
for(ItemList::iterator it = moveList.begin(); it != moveList.end(); ++it)
g_game.internalMoveItem(NULL, (*it)->getParent(), depot, INDEX_WHEREEVER, (*it), (*it)->getItemCount(), NULL, FLAG_NOLIMIT);

if(player->isVirtual())
{
IOLoginData::getInstance()->savePlayer(player);
delete player;
}
}
else
{
for(ItemList::iterator it = moveList.begin(); it != moveList.end(); ++it)
g_game.internalRemoveItem(NULL, (*it), (*it)->getItemCount(), false, FLAG_NOLIMIT);
}
return true;
}

 

 

Pronto erro solucionado!

Sim kimos, era a source.. ?

 

Como eu vou nesse house.cpp?

  • 1 year later...
Postado

compilei tudo certinho e mesmo assim continua não funcionando =/ ele não entrega os itens para o depot parece que falta mais algo para editar nas sources...

 

Pois testei no testserver que é windows x64 e ele entrega os itens no depot, alguém sabe o que pode ser ou o que falta?

 

Edit1: Consegui resolver, essa alteração realmente resolve, porém no meu server tinha algumas houses que estavam com o ID de outras cidades sem ser a da principal, minha ideia para arrumar foi o seguinte: em vez de recriar as houses com tiles da cidade principal eu criei uma area com depots de todas as cidades e em um desses depot estava lá os itens. E deixei acessiveis para o players já que a cidade principal já tava praticamente comprada todas as houses.

 

Obrigado por esse tópico existir, feliz ano novo a todos xD

Editado por vine96
correção de bug (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo