HI

Como adicionar um SpellBar no OTClient

Por Hi im Mell, 25 de ago. de 2016 em Clients

spellbar
otc
otclient
duvida
suporte
adicionar
como
16
5.3k
Hi im MellH
25 de agosto de 2016 às 18:40

 

Olá pessoal, eu sou meio novo em relação ao OTC e como já diz o título eu queria saber como colocar ou criar um spellbar no otclient, vou explicar melhor abaixo.

 

 

 

 

 

Eu queria criar (ou se ja tiver apenas colocar) um SpellBar por Vocation, onde eu possa adicionar livremente novas spells. Como por exemplo colocar um botão de Transformar.

 

 

 

 

 

Será que alguma boa alma pode me ajudar? Ficaria realmente muito grato :')

 

 

25 de agosto de 2016 às 19:08

Quero saber tmb, seria interessante.
Deve ser por module e tal.

Hi im MellH
25 de agosto de 2016 às 19:11

Certamente, mas creio que usaria um pouco da DATA. Eu acho.. 

25 de agosto de 2016 às 19:16
4 minutos atrás, Hi im Mell disse:

Certamente, mas creio que usaria um pouco da DATA. Eu acho.. 

Sim, porque os icones e tal das magais seriam itens que executam magias ao clicar. Tipo aql cdbar dos poketibias

Hi im MellH
25 de agosto de 2016 às 19:18

Exato! Mas se cada uma fosse um item, iria dar muito trabalho, e um sistema extremamente grande. Mas seria perfeito! Cada Spell com seu devido ícone.

27 de agosto de 2016 às 03:22

up

dalvorsnD
27 de agosto de 2016 às 03:30

Usa opcodes, é o meio mais prático.

27 de agosto de 2016 às 03:32
1 minuto atrás, dalvorsn disse:

Usa opcodes, é o meio mais prático.

Cara, sorry pela ignorância (acho que eu já disse isso pra ti HSUASHUAHUSA), mas opcode nesse caso significa código de operação?

Eu sempre achei que isso fosse algo relacionado a hardware ou sei lá ;x 

dalvorsnD
27 de agosto de 2016 às 03:49
6 minutos atrás, Gabriel Netto disse:

Cara, sorry pela ignorância (acho que eu já disse isso pra ti HSUASHUAHUSA), mas opcode nesse caso significa código de operação?

Eu sempre achei que isso fosse algo relacionado a hardware ou sei lá ;x 

Não deixa de ser, porém no contexto otclient quando eu me refiro a opcode(entenda extended opcode), me referi a um sistema flexivel de protocolos de rede implementado no otcliente onde não é necessario recompilar, o cliente para criar novos packets no protocolgame, pois o extended opcode é um packet que permite enviar "subpackets", ele tem um codigo de operação(opcode), que recebe um int que é um subcodigo de operação e uma string, possibilitando que através de um unico packet tu possa enviar diversas informações sem a necessidade de recompilar.

 

Caso o servidor que tu esteja usando não tenha inclua.

https://github.com/edubart/otclient/blob/master/tools/tfs_extendedopcode.patch

Esse é um patch para auxiliar nas modificações necessárias.

 

Para uso é bem simples, você tem duas opções, enviar informações do servidor para o cliente, e enviar do cliente para o servidor.

Do cliente para o servidor, voce precisa instanciar a classe protocol, e enviar o opcode. Dai tu recebe ele na creature script onExtendedOpcode no server e executa o que quer executar.

Exemplo: https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L8-L15

 

E do servidor para o cliente tu usa a função doSendPlayerExtendedOpcode(cid, opcode, buffer). E no cliente voce registra uma função para receber esse opcode:

https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L54-L59

O locales é um bom exemplo do opcode em uso

BananaFightB
27 de agosto de 2016 às 03:55
20 minutos atrás, Gabriel Netto disse:

Cara, sorry pela ignorância (acho que eu já disse isso pra ti HSUASHUAHUSA), mas opcode nesse caso significa código de operação?

Eu sempre achei que isso fosse algo relacionado a hardware ou sei lá ;x 

 

Isso é uma referencia a um método de ação do processador.

 

Mas basicamente é enviar informações para o receptor agir de formas diferentes, e por isso essa referencia.

 

Ou seja você vai enviar informações do servidor para o client usando os ExtendedOpcodes que ja estão implantados na source do client ( E em alguns servidores tfs 1.x ), caso no seu servidor não tenha você pode adicionar manualmente nas source seguindo os tutoriais ja postados aqui.

 

 

KarlKalvinK
27 de agosto de 2016 às 03:59

Tem como adicionar sim... estou terminando de editar aqui e vou postar pra vocês.

27 de agosto de 2016 às 04:13
16 minutos atrás, dalvorsn disse:

Não deixa de ser, porém no contexto otclient quando eu me refiro a opcode(entenda extended opcode), me referi a um sistema flexivel de protocolos de rede implementado no otcliente onde não é necessario recompilar, o cliente para criar novos packets no protocolgame, pois o extended opcode é um packet que permite enviar "subpackets", ele tem um codigo de operação(opcode), que recebe um int que é um subcodigo de operação e uma string, possibilitando que através de um unico packet tu possa enviar diversas informações sem a necessidade de recompilar.

 

Caso o servidor que tu esteja usando não tenha inclua.

https://github.com/edubart/otclient/blob/master/tools/tfs_extendedopcode.patch

Esse é um patch para auxiliar nas modificações necessárias.

 

Para uso é bem simples, você tem duas opções, enviar informações do servidor para o cliente, e enviar do cliente para o servidor.

Do cliente para o servidor, voce precisa instanciar a classe protocol, e enviar o opcode. Dai tu recebe ele na creature script onExtendedOpcode no server e executa o que quer executar.

Exemplo: https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L8-L15

 

E do servidor para o cliente tu usa a função doSendPlayerExtendedOpcode(cid, opcode, buffer). E no cliente voce registra uma função para receber esse opcode:

https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L54-L59

O locales é um bom exemplo do opcode em uso

 

Então posso usar basicamente qualquer resposta vinda do servidor? Desde dar um item ao player até pegar o level dele?

dalvorsnD
27 de agosto de 2016 às 04:17
2 minutos atrás, Gabriel Netto disse:

 

Então posso usar basicamente qualquer resposta vinda do servidor? Desde dar um item ao player até pegar o level dele?

é uma string que tu envia, o que tu vai fazer quando receber essa string ai é contigo, pode fazer praticamente tudo que esteja dentro do escopo das funções lua do server/client

KarlKalvinK
27 de agosto de 2016 às 05:07

 

dalvorsnD
27 de agosto de 2016 às 14:53
9 horas atrás, KarlKalvin disse:

 

Ainda acho mais elegante/eficiente usando opcodes, mas assim funciona também