Limitar quantidade de item no chão

cs007
Por cs007
em Resolvidos
  • 1
  • 2

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

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+

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

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

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Vai no config.lua e procura por maxItemsPerPZTile = 0, só funciona em área pz pra fazer em non-pz tem que ter a função onMoveItem.

jeoz.png

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

Meu server é versão 8.60 uso tfs 0.4

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

Tipow eu só fiz a modificação que está acima. Qual arquivo você editou na source? Abraço

Rutserzim

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/09/10Posts: 11

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

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

Coloquei o tileLimit mas mesmo assim dá para jogar um monte de item em cima.

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

e tem que compilador o servidor e trocar o executável, não é só editar o arquivo não

5303fg1.png

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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é...

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

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?

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

  • 1
  • 2