Ir para conteúdo

[TFS 1.2] Rework sendAnimatedText


Posts Recomendados

Fala galera, tudo bem?

 

Hoje, para estrear a cara nova do fórum, trago pra vocês uma função bem simples, porém muito legal e útil.

Nos TFS 1.X a função sendAnimatedText foi retirada. O motivo aparente, pelo que procurei saber, é que a função não mais é suportada em cipclients. Porém, o suporte a função continua funcionando no OTC e, por isso, decidi refazê-la e trazer para vocês. O tfs 1.2 possui a opção de enviar número animados pela sendTextMessage, porém só funciona para números.

 

sendAnimatedText -> Envia um texto animado na posição escolhida. Ex: "critical" animation, damage animation, etc.

 

Sem mais delongas, vamos ao que interessa.


Em luascript.h, abaixo de "// Game", cole:

static int luaGameSendAnimatedText(lua_State* L);

Em luascript.cpp, abaixo de "// Game", coloque a nova função:

int LuaScriptInterface::luaGameSendAnimatedText(lua_State* L) {	// Game.sendAnimatedText(position, text, color)	TextMessage message;	message.position = getPosition(L, 1);	message.text = getString(L, 2);	message.primary.color = getNumber<TextColor_t>(L, 3);	if (message.position.x && message.position.y && message.position.z) {		SpectatorVec list;		g_game.map.getSpectators(list, message.position, false, true);		for (Creature* spectator : list) {			spectator->getPlayer()->sendAnimatedText(message);		}		pushBoolean(L, true);	} else {		lua_pushnil(L);	}	return 1;}

 

Feito isso agora vá até player.h, procure por void sendTextMessage e logo após a segunda função sendText message cole:

void sendAnimatedText (TextMessage& message) const {    if (client) {    	client->sendAnimatedMessage(message);    }  }

Para finalizar vamos criar o protocolo de envio das informações do nosso efeito de texto para o cliente.

Vamos criar a chamada da função em protocolgame.h. Logo após "void sendTextMessage(const TextMessage& message);" coloque:

void sendAnimatedMessage(const TextMessage& message);

      

Vá em protocolgame.cpp, procure pela função "void ProtocolGame::sendTextMessage(const TextMessage& message)" e cole logo após seu fim:

void ProtocolGame::sendAnimatedMessage(const TextMessage& message){	NetworkMessage msg;	msg.addByte(0x84);	msg.addPosition(message.position);	msg.addByte(message.primary.color);	msg.addString(message.text);	writeToOutputBuffer(msg);}

É isso galerinha, após seguir esses passos você terá a função sendAnimatedText funcionando certinho.

Para usá-la basta, no lua, usar a função como no exemplo abaixo:

Game.sendAnimatedText(Creature(attacker):getPosition(), "ATACOU", TEXTCOLOR_SKYBLUE)
Spoiler

K6FXKEO.png

 

Abraços,

Link para o comentário
Compartilhar em outros sites

1 minute ago, danihcv said:

Muito bom, man!!

 

Adoro essa função. Dá uma "dinamicidade" pro mapa... sahusahuas

Pois é, eu acho essa função sensacional. Fiquei bolado pq o mark tirou no 1.x e a po##@ da sendTextMessage só gera número dinâmicos, nada de textos. =/

Valeu ai! o/

1 minute ago, Daniel said:

Parabéns pela organização do tópico @Skulls

A respeito do conteúdo, não tem o que falar. Esse tipo de coisa que parece impossível só você faz.

Hahaha obrigado @Daniel! Até que faço tópicos organizados, kkkk

Parece impossível pra você assim como seus mapas são pra mim, hahahah

Mas no fundo, essa função é bem simples. Só usei o canal do protocolo que ja existia no OTC e refiz ela :p.

 

Abraços!

Link para o comentário
Compartilhar em outros sites

1 minute ago, masterover said:

Curti, eu vi alguém atrás dessa função aqui no fórum, a um tempo atrás.

Amo seus conteúdos cada! Kkk

O mark vacilou de tirar, ele tinha que ter colocado uma flag pra checar o cliente nela e pronto.

Mas, resolvido xD

1 minute ago, PsyMcKenzie said:

Caraca, eu tentei usar uma vez quando tava fazendo um sistema de cortar madeira e realmente não funcionava, obrigado @Skulls e parabéns!

Passei pelo mesmo tempos atrás, mas eu tinha preguiça de source edit. E cá estou eu hoje fazendo quase só isso.

 

Valeu ai galerinha! Abraços!

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...