Ir para conteúdo

Featured Replies

Postado

Olá Amigos do TibiaKing!

Faz um bom tempo que não apareço por aqui, mas enfim vamos ao tutorial, um amigo chamado DkHenzo (espero que não se importe em colocar seu nome ^^) Bem vamos agora ao tutorial, devido a algumas pessoas terem erros em servidores de Poketibia, não sei se Tibia possui, eu resolvi fazer esse tutorial para ajudar o amigo citado acima e pensei "porque não ajudar mais pessoas também!", este e o principal motivo deste tutorial ajudar quem precise.

O erro e o ( EVENT.WALK ) ele e um erro simples, que me custou algumas horas para descobrir como concertá-lo, primeiro para corrigi-lo existe 2(dois) meios o primeiro o corrige(Necessário source (Código Fonte do Servidor)) o segundo e apenas um paliativo(Não precisa de source).

Bem Vamos lá: Método 1

1) Peque sua source e abra ela com o seu editor C/C++ preferido ou use o DevC++(DevCpp), pasta da source Dev-cpp(Pode ter outro nome, refere-se a pasta onde possui o arquivo primário de abertura do projeto) >>> TheForgottenServer.dev

2) Apos aberto procure o arquivo creatureevent.cpp e depois faça uma busca por: No valid type for creature event.

Nota: Para fazer uma busca por determinado elemento basta usar a combinação de teclas CTRL + F

Deve ser uma linha como essa:

std::cout << "[Error - CreatureEvent::configureEvent] No valid type for creature event." << str << std::endl;

3) Apos ter feito essa busca você deve subir duas ou três linhas para cima e ira encontrar um bloco de código parecido com este:

	std::string tmpStr = asLowerCaseString(str);
	if(tmpStr == "login")
		m_type = CREATURE_EVENT_LOGIN;
	else if(tmpStr == "logout")
		m_type = CREATURE_EVENT_LOGOUT;
	else if(tmpStr == "joinchannel")
		m_type = CREATURE_EVENT_CHANNEL_JOIN;
	else if(tmpStr == "leavechannel")
		m_type = CREATURE_EVENT_CHANNEL_LEAVE;
	else if(tmpStr == "advance")
		m_type = CREATURE_EVENT_ADVANCE;
	else if(tmpStr == "sendmail")
		m_type = CREATURE_EVENT_MAIL_SEND;
	else if(tmpStr == "receivemail")
		m_type = CREATURE_EVENT_MAIL_RECEIVE;
	else if(tmpStr == "traderequest")
		m_type = CREATURE_EVENT_TRADE_REQUEST;
	else if(tmpStr == "tradeaccept")
		m_type = CREATURE_EVENT_TRADE_ACCEPT;
	else if(tmpStr == "textedit")
		m_type = CREATURE_EVENT_TEXTEDIT;
	else if(tmpStr == "reportbug")
		m_type = CREATURE_EVENT_REPORTBUG;
	else if(tmpStr == "look")
		m_type = CREATURE_EVENT_LOOK;
	else if(tmpStr == "think")
		m_type = CREATURE_EVENT_THINK;
	else if(tmpStr == "direction")
		m_type = CREATURE_EVENT_DIRECTION;
	 else if(tmpStr == "move")
		m_type = CREATURE_EVENT_MOVE;
	else if(tmpStr == "outfit")
		m_type = CREATURE_EVENT_OUTFIT;
	else if(tmpStr == "statschange")
		m_type = CREATURE_EVENT_STATSCHANGE;
	else if(tmpStr == "areacombat")
		m_type = CREATURE_EVENT_COMBAT_AREA;
	else if(tmpStr == "push")
		m_type = CREATURE_EVENT_PUSH;
	else if(tmpStr == "target")
		m_type = CREATURE_EVENT_TARGET;
	else if(tmpStr == "follow")
		m_type = CREATURE_EVENT_FOLLOW;
	else if(tmpStr == "combat")
		m_type = CREATURE_EVENT_COMBAT;
	else if(tmpStr == "attack")
		m_type = CREATURE_EVENT_ATTACK;
	else if(tmpStr == "cast")
		m_type = CREATURE_EVENT_CAST;		
	else if(tmpStr == "kill")
		m_type = CREATURE_EVENT_KILL;
	else if(tmpStr == "death")
		m_type = CREATURE_EVENT_DEATH;
	else if(tmpStr == "preparedeath")
		m_type = CREATURE_EVENT_PREPAREDEATH;	
	else if(tmpStr == "spawn")
		m_type = CREATURE_EVENT_SPAWN;
	else if(tmpStr == "onmove")
		m_type = CREATURE_EVENT_ONMOVE;
	else

Obs: alinha que procuramos acima no inicio do tutorial e parte deste bloco de código.

4) Agora se você nunca viu algo como isso antes não se assuste, devemos apenas ter atenção ao fazer tal operação.

Preste atenção que no final do bloco existe uma pequena função chamada else devemos adicionar antes dela um peno bloco de código, copie o código abaixo e o cole antes do else

Obs: Tente manter o mesmo padrão de sintaxe do código, forma ou estrutura ao qual o código e escrito.

else if(tmpStr == "walk")
	m_type = CREATURE_EVENT_WALK;

Deve ficar algo assim:

// Bloco de codigo anterior //

else if(tmpStr == "onmove")	
        m_type = CREATURE_EVENT_ONMOVE;

// Bloco de codigo que adicionamos //

else if(tmpStr == "walk")	
        m_type = CREATURE_EVENT_WALK;

// ELSE abaixo do nosso bloco de codigo //

	else

O código completo com o nosso bloco de código adicionado deve ser algo como abaixo, caso não, pode a ver outra funções já adicionadas por você ou por outras pessoas antes. Mas em geral ele deve ser bem parecido com este código abaixo.

	std::string tmpStr = asLowerCaseString(str);
	if(tmpStr == "login")
		m_type = CREATURE_EVENT_LOGIN;
	else if(tmpStr == "logout")
		m_type = CREATURE_EVENT_LOGOUT;
	else if(tmpStr == "joinchannel")
		m_type = CREATURE_EVENT_CHANNEL_JOIN;
	else if(tmpStr == "leavechannel")
		m_type = CREATURE_EVENT_CHANNEL_LEAVE;
	else if(tmpStr == "advance")
		m_type = CREATURE_EVENT_ADVANCE;
	else if(tmpStr == "sendmail")
		m_type = CREATURE_EVENT_MAIL_SEND;
	else if(tmpStr == "receivemail")
		m_type = CREATURE_EVENT_MAIL_RECEIVE;
	else if(tmpStr == "traderequest")
		m_type = CREATURE_EVENT_TRADE_REQUEST;
	else if(tmpStr == "tradeaccept")
		m_type = CREATURE_EVENT_TRADE_ACCEPT;
	else if(tmpStr == "textedit")
		m_type = CREATURE_EVENT_TEXTEDIT;
	else if(tmpStr == "reportbug")
		m_type = CREATURE_EVENT_REPORTBUG;
	else if(tmpStr == "look")
		m_type = CREATURE_EVENT_LOOK;
	else if(tmpStr == "think")
		m_type = CREATURE_EVENT_THINK;
	else if(tmpStr == "direction")
		m_type = CREATURE_EVENT_DIRECTION;
	 else if(tmpStr == "move")
		m_type = CREATURE_EVENT_MOVE;
	else if(tmpStr == "outfit")
		m_type = CREATURE_EVENT_OUTFIT;
	else if(tmpStr == "statschange")
		m_type = CREATURE_EVENT_STATSCHANGE;
	else if(tmpStr == "areacombat")
		m_type = CREATURE_EVENT_COMBAT_AREA;
	else if(tmpStr == "push")
		m_type = CREATURE_EVENT_PUSH;
	else if(tmpStr == "target")
		m_type = CREATURE_EVENT_TARGET;
	else if(tmpStr == "follow")
		m_type = CREATURE_EVENT_FOLLOW;
	else if(tmpStr == "combat")
		m_type = CREATURE_EVENT_COMBAT;
	else if(tmpStr == "attack")
		m_type = CREATURE_EVENT_ATTACK;
	else if(tmpStr == "cast")
		m_type = CREATURE_EVENT_CAST;		
	else if(tmpStr == "kill")
		m_type = CREATURE_EVENT_KILL;
	else if(tmpStr == "death")
		m_type = CREATURE_EVENT_DEATH;
	else if(tmpStr == "preparedeath")
		m_type = CREATURE_EVENT_PREPAREDEATH;	
	else if(tmpStr == "spawn")
		m_type = CREATURE_EVENT_SPAWN;
	else if(tmpStr == "onmove")
		m_type = CREATURE_EVENT_ONMOVE;
		else if(tmpStr == "walk")
		m_type = CREATURE_EVENT_WALK;
	else
	{
		std::cout << "[Error - CreatureEvent::configureEvent] No valid type for creature event." << str << std::endl;
		return false;
	}

5) Apos ter feito tudo isso recomendo que Salve e Compile o seu novo Distro, depois desfrute do resultado ! :wow:

#################################################################################

Segundo Modo

Se você esta usando um server de Poketibia vá ate a pasta do seu servidor e depois para data >> creaturescripts >> creaturescripts.xml então abra o arquivo e comente ou retire a linha abaixo(recomendo comentar use apos toda a parte a ser comentada)

<event type="walk" name="WalkTv" event="script" value="tvsys.lua"/>

Exemplo da linha comentada:

<!--   <event type="walk" name="WalkTv" event="script" value="tvsys.lua"/>   -->

Caso haja duvidas ou erros comente, farei o possível para ajudar.

Um grande abraço e fiquem com Deus!

Editado por ZORAN (veja o histórico de edições)

  • Respostas 8
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

:accept: Seu tutorial foi aprovado e você recebeu um ponto de reputação.

 

Agora, só mais uma coisa para que eu possa mover o tópico: você, por ser o criador, acha que esse tópico se encaixa melhor em Tutoriais de Programação ou em Creaturescripts (onde você acha que este tópico terá mais visibilidade, ou seja, onde é que as pessoas vão com mais frequencia à procura deste conteúdo)?

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.6k

Informação Importante

Confirmação de Termo