Pessoal estou com um problema no meu server e um bug que o pessoal fica jogando item em uma porta de level e se ele desconectar ou sai da porta ela da debug em todos que estão a sua volta. Eu queria limitar o numero de item que pode ficar em cima do outro. teria como fazer isso? Valeu REP+
Limitar quantidade de item no chão

Há dois modos de fazer isso:
1. Compilando isto, [Creaturescript/C++] onMove, nas sources de seu servidor e, indiretamente, através de um script Lua, bloquear que jogadores joguem itens em uma certa posição que já contém X itens.
2. Fazendo apenas uma modificação no bool Game::playerMoveItem, adicionando isso:
if(toCylinder->getTile()->getItemCount() > 5) { player->sendCancelMessage(RET_NOTPOSSIBLE); return false; }
Antes disso:
if(!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; }
No caso, ele não deixaria o jogador colocar um item em um tile com mais de cinco itens, mas é só alterar.
Abraços.
o amigo, fiz essa modificação não distro mas mesmo assim consegui jogar mais de 5 obejetos em cima, só me diz uma coisa eu tenho que fazer aquele seu outro tutorial também? pois só com essa modificação não foi. Abraço
Qual a versão do seu servidor, esqueci de dizer que essa modificação, fiz com base no 0.3.6pl1, o que pode mudar para o 0.4
Meu server é versão 8.60 uso tfs 0.4
Você tem certeza que compilou alguma coisa, meu colega? Pois a estrutura das sources nessa função do 0.3.6 para o 0.4 não muda nada.
E eu também testei na rev3777 e funcionou perfeitamente.
Abraços.
Tipow eu só fiz a modificação que está acima. Qual arquivo você editou na source? Abraço
se usa 0.4 vai no config.lua que vai ter tileLimit lá '--------------'
no 0.3.6pl1 precisa adicionar uma linha que tá faltando pra funcionar
Coloquei o tileLimit mas mesmo assim dá para jogar um monte de item em cima.
Arquivo game.cpp, procure pela linha
bool Game::playerMoveItem(uint32_t playerId, const Position& fromPos, uint16_t spriteId, int16_t fromStackpos, const Position& toPos, uint8_t count)
Dentro da função, procure por:
Cylinder* toCylinder = internalGetCylinder(player, toPos);
Adicione logo abaixo:
if(toCylinder->getTile()->getItemCount() > 5) { player->sendCancelMessage(RET_NOTPOSSIBLE); return false; }
Abraços.
e tem que compilador o servidor e trocar o executável, não é só editar o arquivo não

e tem que compilador o servidor e trocar o executável, não é só editar o arquivo não
No caso, acho que fica subentendido isso, né...
Prefiro nem falar nada sobre o flood do amigo aí de cima.
@Oneshot fiz as alterações e compilei e nada. continuo podendo jogar mais que 5 item. Minha source é a trunk.r3884
Uma duvida é necessário fazer aquele processo que está no seu outro tutorial?
Não é flood, ele está falando uma coisa séria, até.
Bom, cara, não importa a versão. Você está fazendo algo errado aí, pois testei na rev3884 e funcionou muito bem.
Delete a pasta obj/ antes de compilar algo novo.
Abraços.