Ir para conteúdo
  • Cadastre-se

(Resolvido)[AJUDA C++] push player: you cannot move this object.


Ir para solução Resolvido por Ackerzin,

Posts Recomendados

Olá, Tk!

Quero fazer uma configuração na source do meu OT 8.6. Eu uso TFS 0.5 exclusive edition. É o seguinte, eu não consigo dar uma sequência de push muito rápida em um player. Se eu der dois push bem rápido, o segundo é cancelado e eu recebo a mensagem: "You cannot move this object." , ou seja, existe um intervalo definido entre dois pushes.. Eu vi em player.cpp que esta mensagem é enviada no caso de RET_NOTMOVABLE . Tentei alterar algumas linhas em game.cpp na seguinte função (linha 1116), mas não tive sucesso:

Citar

bool Game::playerMoveCreature(uint32_t playerId, uint32_t movingCreatureId,
    const Position& movingCreaturePos, const Position& toPos, bool delay)

 Fiz um pequeno video mostrando o erro abaixo. Se alguém tentar me ajudar, REPPPPPPP. Valeu!

Citar

O ideal seria o player comum ficar igual ao GM, como neste segundo video:

Citar

 

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 horas atrás, Celulose disse:

no caso tu quer o push cruzado, pois isso dai é o delay 

@Celulose eu já tenho push cruzado. Eu quero diminuir o delay entre um push e o outro. Para dar uma sequência de vários push sem ficar travando.

Link para o post
Compartilhar em outros sites
40 minutos atrás, Celulose disse:

@Mecianosz pushCreatureDelay = 1 * 1000

@Celulose valeu, mas não é isso cara kkk.. '-'  eu quero fazer uma configuração na source para poder dar vários chutes em seguida,  bem rápido, tendeu. Porque no meu servidor não dá para fazer isso ,vc recebe a mensagem "You cannot move this object".. tenho quase certeza que é em game.cpp

game.cpp

 

Achei que fosse nessas linhas, mas não consegui mudar:

 

			if(player->isProtected())
			{
				Player* movingPlayer = movingCreature->getPlayer();
				if(movingPlayer && !movingPlayer->isProtected())
				{
					player->sendCancelMessage(RET_NOTMOVABLE);
					return false;
				}
			}

 

A mensagem de erro que aparece está em player.cpp:

		case RET_NOTMOVABLE:
			sendCancel("You cannot move this object.");
			break;

 

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 hora atrás, Celulose disse:

@Mecianosz na verdade

é aqui

 


uint32_t delayTime = g_config.getNumber(ConfigManager::PUSH_CREATURE_DELAY);

 

Acho que não fui claro. É o seguinte. Você está me passando a configuração para o delay do push (quando vc pusha um personagem, ele demora um tempo para responder). O meu problema é diferente, não é o delay do push. Eu preciso reduzir o intervalo entre um push e outro, por exemplo: Acabei de pushar um player e quero dar o segundo push. No meu servidor, existe um tempo que vc precisa esperar entre um push e outro. Portanto, não é o tempo que ele demora para responder um push, mas o intervalo entre um push e outro. Eu quero poder empurrar um player logo que ele chega no SQM seguinte, para poder dar uma sequência rápida de vários pushes. Entendeu?

 

Fiz um vídeo para ficar mais claro. Dá para perceber que o segundo push não vai, porque precisa esperar um intervalo de tempo. Novamente, a mensagem de erro que aparece em branco é "You cannot move this object."

Citar

@Celulose

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Foi conforme falei a função acima é o início dela.

 

uint32_t delayTime = g_config.getNumber(ConfigManager::PUSH_CREATURE_DELAY);

Não é aqui que tu vai alterar e sim é o início da função

You cannot move this object."

 

Um pouco pra baixo tu vai acha, a função quando eu tiver no Pc dou uma olhada 


 
Link para o post
Compartilhar em outros sites
  • Solução

em creature.h

mude o numero ZERO, quanto mais alto, mas rapido, vai testando aos poucos.

virtual bool isPushable() const {return getWalkDelay() <= 0;}

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Ackerzin disse:

em creature.h

mude o numero ZERO, quanto mais alto, mas rapido, vai testando aos poucos.


virtual bool isPushable() const {return getWalkDelay() <= 0;}

 

resolvido! <3 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo