Bom amigo, isso já foi postado no Xtibia.
http://www.xtibia.com/forum/topic/208678-extended-opcodes-otclient/
Mais mesmo assim agradeço a sua preocupação de trazer novos conteúdos para o Xtibia
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Bom amigo, isso já foi postado no Xtibia.
http://www.xtibia.com/forum/topic/208678-extended-opcodes-otclient/
Mais mesmo assim agradeço a sua preocupação de trazer novos conteúdos para o Xtibia
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

bom seria alguns exemplos praticos '--'
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Server-side:
Enviar:
doSendPlayerExtendedOpcode(cid, opcode, buffer) Ex.: doSendPlayerExtendedOpcode(cid, 51, "oibls")
Receber:
Você deve ter visto a callback
OPCODE_LANGUAGE = 1 function onExtendedOpcode(cid, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language if buffer == 'en' or buffer == 'pt' then -- example, setting player language, because otclient is multi-language... --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer) end else -- other opcodes can be ignored, and the server will just work fine... end end
Client-side:
Enviar:
local protocol = g_game.getProtocolGame() protocol:sendExtendedOpcode(51, "oibls") -- opcode, buffer
Receber:
ProtocolGame.registerExtendedOpcode(opcode, callback) Ex.: ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer) print(buffer) end)
Créditos ao @dalvorsn, por ter me passado esse tutorial.
@Off, Slicer me perguntaram se sua versão 2.9 do PDA ainda tinha o bug das pokebolas que depois de um tempo o pokemon não sai mais, e manda chamar o God.
Editado Março 24 por BananaFight
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

/\ avisa q isso ocorre em todas as versoes do PDA e ainda n tem soluçao, ja q ngm sabe pq isso ocorre...
Minha intenção com esse poste e "arrumar" nova funcionabilidade para isso, como não intendo muito pensei em cria algo para estudo cada um posta oque pensa e todos nos aprendemos um poquinho, minha ideia seria com isso fazer um opcode para um globalevent tipo no pxg que quando entra em x area muda o shader ou som etc estou montando uma coisa aqui espero que de certo se tudo ocorrer bem postarei aqui ![]()
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Bom, uma boa iniciativa é ensinar o pessoal a compilar os opcode em ot 8.6, pois no tutorial quando você tenta instalar não consegue.
Bom, uma boa iniciativa é ensinar o pessoal a compilar os opcode em ot 8.6, pois no tutorial quando você tenta instalar não consegue.
Olha ensinar não vou conseguir pois uso windows e tem que fazer as adaptação na unha, estou terminando de adapitar o meu mas pra quem quiser eu posto as sources do 8,6 ja com as opcode intalado so mais uma coisinha =p não e o tfs e o otx mas e com a mesma base do tfs então creio que funcione todos scripts e libs normal
Compilado mais sources Creditos Kaiser
Banana Fight por favor faz um scan e posta ae a net aqui ta a manivela
Como exemplo de uso, o modulo client_locales utiliza para enviar o locale escolhido para o servidor.
Como exemplo de uso, o modulo client_locales utiliza para enviar o locale escolhido para o servidor.
Voce teria algum exemplo de como utilizar so servidor para o cliente tipo
usar um onuse em x objeto e o cliente apresentar alguma caracteristica dele tipo som
com as informações que temos ta dificil pra alguns mais leigos e fuçados tentar execultar algo
a unica coisa que consegui utilizar ate agora foi o isPlayerUsingOtclient(cid)
ainda n intendi como usar o opcode
Exemplo bem básico:
Client:
#modules/game_print/print.otmod
de0vrxyU[/pastebin]
#modules/game_print/print.otui
S8SDFciL[/pastebin]
#modules/game_print/print.lua
DRv7GHbY[/pastebin]
Server:
#data/creaturescripts/extendedopcode.lua
GfG1mZF9[/pastebin]
Obs.: É necessário que tenhas o codigo compilado nas sources, se não tiver não vai funcionar a callback.
Modulo anexado
Edit:
Como exemplo de uso, o modulo client_locales utiliza para enviar o locale escolhido para o servidor.
Voce teria algum exemplo de como utilizar so servidor para o cliente tipo
usar um onuse em x objeto e o cliente apresentar alguma caracteristica dele tipo som
com as informações que temos ta dificil pra alguns mais leigos e fuçados tentar execultar algo
a unica coisa que consegui utilizar ate agora foi o isPlayerUsingOtclient(cid)
ainda n intendi como usar o opcode
É só usar essa função no script do server
doSendPlayerExtendedOpcode(cid, opcode, buffer)
E no otclient voce usa essa função aqui:
ProtocolGame.registerExtendedOpcode(opcode, callback)
lembrando que callback deve ser uma função qualquer criada por voce, que tenha como parametros isso: protocol, opcode, buffer
Ex.:
function minhafuncao(protocol, opcode, buffer) print(opcode, buffer) ehd ProtocolGame.registerExtendedOpcode(opcode, minhafuncao)
Editado Março 28 por dalvorsn
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Muito bom Dalvo, bem pratico e alto explicativo, muito obrigador por estar sempre ajudando nessa parte.
info
Grupo: Visconde
Registrado: 10/02/11
Posts: 377
Reputação: +78

tem como colocar no ot 8.54?
edit:
no arquivo const.h
n tem essa parte
enum OperatingSystem_t
{
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03,
+ CLIENTOS_OTCLIENT_LINUX = 0x0A,
+ CLIENTOS_OTCLIENT_WINDOWS = 0x0B,
+ CLIENTOS_OTCLIENT_MAC = 0x0C,
};
Editado Março 28 por rohfagundes
tem como colocar no ot 8.54?
edit:
no arquivo const.h
n tem essa parte
enum OperatingSystem_t
{
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03,
+ CLIENTOS_OTCLIENT_LINUX = 0x0A,
+ CLIENTOS_OTCLIENT_WINDOWS = 0x0B,
+ CLIENTOS_OTCLIENT_MAC = 0x0C,
};
então essa parte que esta em verde e para vc adicionar nas sources, se vc usa linux e so da uma pesquisada sobre diff que os arquivos aqui postados são para auto adição dos codigos na source, se não acho que o unico jeito de adicionar isso e na unha me corrijam se eu estiver errado por favor.
tem como colocar no ot 8.54?
edit:
no arquivo const.h
n tem essa parte
enum OperatingSystem_t
{
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_FLASH = 0x03,
+ CLIENTOS_OTCLIENT_LINUX = 0x0A,
+ CLIENTOS_OTCLIENT_WINDOWS = 0x0B,
+ CLIENTOS_OTCLIENT_MAC = 0x0C,
};
e porque esse diff foi feito com base numa source bem recente da svn privada do tfs
pra usar em tfs 036 vai ter que ler todas as modificaçoes, entender e adaptar, isso e bem complicado se voce for leigo em c++
info
Grupo: Campones
Registrado: 02/01/13
Posts: 87
Reputação: +26
Ola pessoal
Como podemos ver os artigos e coisas relacionadas com o OTC e muito poucos
então venho aqui sugerir que abrimos um grupo de estudo em relação a opcodes.
Oque seria OPCODES?
Opcodes é um sistema para permite a adição de novos opcodes ao protocolo do jogo usando os scripts apenas .Lua em ambos os lados cliente e servidor, tornando assim fácil de implementação de novas funcionalidades de cliente / servidor, independentemente da progranação feito em C + +. Apenas um código de operação é suportado, no momento, a 0x01, que é enviado pelo cliente para informa ao jogador a linguagem corrente. Opcodes novos serão adicionados no futuro, incluindo opcodes para reprodução de sons e novas interfaces.
Modificaçãos necessarias na Source do servidor!
protocolgame.h
-[Diff] protocolgame.h - Pastebin.com
protocolgame.cpp
-[Diff] protocolgame.cpp - Pastebin.com
const.h
-[Diff] const.h - Pastebin.com
luascript.h
-[Diff] luascript.h - Pastebin.com
luascript.cpp
-[Diff] luascript.cpp - Pastebin.com
player.h
-[Diff] player.h - Pastebin.com
creatureevent.h
-[Diff] creatureevent.h - Pastebin.com
creatureevent.cpp
-[Diff] creatureevent.cpp - Pastebin.com
game.h
-[Diff] game.h - Pastebin.com
game.cpp
-[Diff] game.cpp - Pastebin.com
/creaturescripts/creaturescrips.xml
-[Diff] creaturescripts.xml - Pastebin.com
/creaturescripts/extendedopcode.lua
-[Lua] extendedopcode.lua - Pastebin.com
Creditos edubart
Bem com essas informações podemos abrir mais o leque de possibilidades e apenas com uma função opcodes daria para fazermos "pog" em funções do cliente?
Postem oque vcs acha, e oque conseguem fazer!