Ir para conteúdo
  • Cadastre-se

[PxG] Texto de player


Posts Recomendados

Fala galera, tudo certo?

Então, a um tempo atras, criei um tópico aqui no fórum pedindo uma ajuda sobre como alterar algumas coisas dentro de um servidor de poketibia, porém, não encontrei a resposta.

[Duvida] Cores de mensagem

tutorial.thumb.png.b5020a17411c1ee05cd6b036773486db.png

 

Depois de um longo tempo procurando as informações dentro da source do cliente, consegui finalmente resolver o meu problema e me senti com uma divida no fórum, graças ao @Brunds que mesmo não resolvendo o meu problema, estava respondendo as minhas mensagens. Com isso venho compartilhar a minha solução.

Servidor utilizado para base: [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB

Musica utilizada: Tech N9ne - Come Gangsta (Izzamuzzic Remix)

 

Tutorial Como alterar a cor do texto

Antes de encontrar a solução, tentei criar um novo tipo de talktype, estava conseguindo, o servidor estava enviando as mensagens corretamente, mas o problema estava no cliente, então mudei a estrategia e tentei usar o que já estava funcionando, lembrei que atualmente existe dois tipo de monster talktype:

data/lib/000-constant.lua

TALKTYPE_MONSTER = 19
TALKTYPE_MONSTER_YELL = 20

O talktype 19 é usado normalmente para os monstros "falarem" e o outro valor não estava sendo usando, pensando nisso peguei esse valor para a minha função de texto.

 

Obs.: Não vou ensinar como compilar o cliente - Compilando OTC - CodeBlocks - Windows - Vídeo Aula

 

Primeiro passo

Alterei a linha 142

otclient/source/client/statictext.cpp

} else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageSpell || m_mode == Otc::MessageBarkLow || m_mode == Otc::MessageBarkLoud) {
	m_color = Color(254, 101, 0);
} else if(m_mode == Otc::MessageMonsterYell ){
	m_color = Color(255,165,0);
}

Com isso, estou definindo em m_color que, quando o valor de m_mode for igual a MessageMonsterYell, m_color receba a cor especificada em RGB. Alterando isso eu já consigo modificar a cor, porem, ainda não tem um limite de mensagens que aparecem quando  o player "fala", continue pesquisando e encontrei uma "meia" solução, adaptei e consegui o resultado que eu estava buscando.

Dentro do mesmo arquivo.

Alterei a linha 74

else if(m_name != name || m_mode != mode) {
	return false;
}
else if(mode == Otc::MessageMonsterYell){
	if(m_messages.size() > 2) {
		m_messages.pop_front();
		m_updateEvent->cancel();
		m_updateEvent = nullptr;
	}
}
// too many messages
else if(m_messages.size() > 10) {
	m_messages.pop_front();
	m_updateEvent->cancel();
	m_updateEvent = nullptr;
}

Adicionei um else if para o mode de MessageMonsterYell, que é o valor estamos utilizando para a comunicação do player, verificando a quantidade de mensagens e limitando em até 3 mensagens.

Apos essas alterações, basta apenas compilar o cliente, porem, ainda não esta pronto .

 

Segundo passo
Agora precisamos alterar o script do nosso servidor para "falar" da maneira correta, pois atualmente o player envia mensagens ao cliente com outro valor, vamos alterar.

Lembrando dos valores que estão definidos no data/lib/000-constant.lua  existe outro dois valores para representar a mesma coisa, porem, apenas com o nome diferente, acredito eu que é para facilitar, dentro do arquivo data/lib/100-compat.lua

TALKTYPE_ORANGE_1 = TALKTYPE_MONSTER
TALKTYPE_ORANGE_2 = TALKTYPE_MONSTER_YELL

Não muda nada, apenas o nome da "variavel".

 

Alterei a linha 39

data/lib/120-goback.lua

doCreatureSay(cid, mbk, TALKTYPE_ORANGE_2)

Alterei a linha 228

data/actions/scripts/Basic/goback.lua

doCreatureSay(cid, mgo, TALKTYPE_ORANGE_2)	

Alterei as linhas:

22, 69, 83, 85, 107, 186, 204, 222, 241, 248, 258, 263

data/actions/scripts/Basic/order.lua

-- linha 22
doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)], TALKTYPE_ORANGE_2)

-- linha 69
doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)], TALKTYPE_ORANGE_2)

-- linhas 83 e 85
if string.find(habilidades, "levitate") then
	doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)], TALKTYPE_ORANGE_2)
else
	doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)], TALKTYPE_ORANGE_2)
end

-- linha 107
doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.", TALKTYPE_ORANGE_2)

-- linha 186
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)], TALKTYPE_ORANGE_2)

-- linha 204
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)], TALKTYPE_ORANGE_2)

-- linha 222
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)], TALKTYPE_ORANGE_2)

-- linha 241
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)], TALKTYPE_ORANGE_2)

-- linha 248
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

-- linha 258
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

-- linha 263
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

 

Apos esse processo todo, salva e abre o serve.

 

Créditos

@Banker

@Brunds

kyogron -- outro forum

Me

 

Obs.: Aceito pagamento no PicPay para aula de programação

Obs.2: Não sou bom professor

Obs.3: Ajuda a comprar um Mc Lanche Feliz <3

Link para o post
Compartilhar em outros sites

Bem legal mesmo cara, mas dava para fazer pelo otc mesmo, mas mesmo assim ótima contribuição 

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites
  • 3 months later...
Em 28/10/2017 em 22:30, gustavof disse:

Fala galera, tudo certo?

Então, a um tempo atras, criei um tópico aqui no fórum pedindo uma ajuda sobre como alterar algumas coisas dentro de um servidor de poketibia, porém, não encontrei a resposta.

[Duvida] Cores de mensagem

tutorial.thumb.png.b5020a17411c1ee05cd6b036773486db.png

 

Depois de um longo tempo procurando as informações dentro da source do cliente, consegui finalmente resolver o meu problema e me senti com uma divida no fórum, graças ao @Brunds que mesmo não resolvendo o meu problema, estava respondendo as minhas mensagens. Com isso venho compartilhar a minha solução.

Servidor utilizado para base: [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB

Musica utilizada: Tech N9ne - Come Gangsta (Izzamuzzic Remix)

 

Tutorial Como alterar a cor do texto

Antes de encontrar a solução, tentei criar um novo tipo de talktype, estava conseguindo, o servidor estava enviando as mensagens corretamente, mas o problema estava no cliente, então mudei a estrategia e tentei usar o que já estava funcionando, lembrei que atualmente existe dois tipo de monster talktype:

data/lib/000-constant.lua


TALKTYPE_MONSTER = 19
TALKTYPE_MONSTER_YELL = 20

O talktype 19 é usado normalmente para os monstros "falarem" e o outro valor não estava sendo usando, pensando nisso peguei esse valor para a minha função de texto.

 

Obs.: Não vou ensinar como compilar o cliente - Compilando OTC - CodeBlocks - Windows - Vídeo Aula

 

Primeiro passo

Alterei a linha 142

otclient/source/client/statictext.cpp


} else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageSpell || m_mode == Otc::MessageBarkLow || m_mode == Otc::MessageBarkLoud) {
	m_color = Color(254, 101, 0);
} else if(m_mode == Otc::MessageMonsterYell ){
	m_color = Color(255,165,0);
}

Com isso, estou definindo em m_color que, quando o valor de m_mode for igual a MessageMonsterYell, m_color receba a cor especificada em RGB. Alterando isso eu já consigo modificar a cor, porem, ainda não tem um limite de mensagens que aparecem quando  o player "fala", continue pesquisando e encontrei uma "meia" solução, adaptei e consegui o resultado que eu estava buscando.

Dentro do mesmo arquivo.

Alterei a linha 74


else if(m_name != name || m_mode != mode) {
	return false;
}
else if(mode == Otc::MessageMonsterYell){
	if(m_messages.size() > 2) {
		m_messages.pop_front();
		m_updateEvent->cancel();
		m_updateEvent = nullptr;
	}
}
// too many messages
else if(m_messages.size() > 10) {
	m_messages.pop_front();
	m_updateEvent->cancel();
	m_updateEvent = nullptr;
}

Adicionei um else if para o mode de MessageMonsterYell, que é o valor estamos utilizando para a comunicação do player, verificando a quantidade de mensagens e limitando em até 3 mensagens.

Apos essas alterações, basta apenas compilar o cliente, porem, ainda não esta pronto .

 

Segundo passo
Agora precisamos alterar o script do nosso servidor para "falar" da maneira correta, pois atualmente o player envia mensagens ao cliente com outro valor, vamos alterar.

Lembrando dos valores que estão definidos no data/lib/000-constant.lua  existe outro dois valores para representar a mesma coisa, porem, apenas com o nome diferente, acredito eu que é para facilitar, dentro do arquivo data/lib/100-compat.lua


TALKTYPE_ORANGE_1 = TALKTYPE_MONSTER
TALKTYPE_ORANGE_2 = TALKTYPE_MONSTER_YELL

Não muda nada, apenas o nome da "variavel".

 

Alterei a linha 39

data/lib/120-goback.lua


doCreatureSay(cid, mbk, TALKTYPE_ORANGE_2)

Alterei a linha 228

data/actions/scripts/Basic/goback.lua


doCreatureSay(cid, mgo, TALKTYPE_ORANGE_2)	

Alterei as linhas:

22, 69, 83, 85, 107, 186, 204, 222, 241, 248, 258, 263

data/actions/scripts/Basic/order.lua


-- linha 22
doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)], TALKTYPE_ORANGE_2)

-- linha 69
doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)], TALKTYPE_ORANGE_2)

-- linhas 83 e 85
if string.find(habilidades, "levitate") then
	doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)], TALKTYPE_ORANGE_2)
else
	doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)], TALKTYPE_ORANGE_2)
end

-- linha 107
doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.", TALKTYPE_ORANGE_2)

-- linha 186
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)], TALKTYPE_ORANGE_2)

-- linha 204
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)], TALKTYPE_ORANGE_2)

-- linha 222
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)], TALKTYPE_ORANGE_2)

-- linha 241
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)], TALKTYPE_ORANGE_2)

-- linha 248
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

-- linha 258
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

-- linha 263
doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2)

 

Apos esse processo todo, salva e abre o serve.

 

Créditos

@Banker

@Brunds

kyogron -- outro forum

Me

 

Obs.: Aceito pagamento no PicPay para aula de programação

Obs.2: Não sou bom professor

Obs.3: Ajuda a comprar um Mc Lanche Feliz <3

oi, poderia  me ajudar  tipo baixei essa  base porem não sei compilar Client nem source, você  poderia  me fala como faço para  o servidor, Client, Source, e site, trabalharem juntos ? 

 

[DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB

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