[TFS 1.2] Rework sendAnimatedText

Skulls
Por Skulls
em Linguagens de Programação

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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,

Danihcv

I'm Coordenador, Bitch!
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/04/15Posts: 926Gênero: Masculino

Muito bom, man!!

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

Te ajudei?? REP+ e ficamos quites... happyy.png

Atenciosamente,
                    Danihcv.
                           Abraços!

Administrador

xTibia 2017
avatar
Administrador
Administrador

INFOS

Grupo: AdministradorRegistrado: 09/07/05Posts: 5780Gênero: Outro

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.

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

 

 

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino
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!

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

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

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

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

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino
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!