LuckOake 400 Postado Março 31, 2013 Share Postado Março 31, 2013 Olá. Comecei a mexer no otclient e achei interessante o uso desses opcodes, mas ainda não consegui entender a parte do client de receber os dados. Como eu utilizo o registerExtendedOpcode? Link para o comentário Compartilhar em outros sites More sharing options...
0 Baxnie 7 Postado Março 31, 2013 Share Postado Março 31, 2013 (editado) Em modules/gamelib/protocolgame.lua existe essa função: function ProtocolGame.registerExtendedOpcode(opcode, callback) Um exemplo de como utiliza-la: local function test(protocol, opcode, buffer) print('received something from server!') end ProtocolGame.registerExtendedOpcode(100, test) Editado Março 31, 2013 por Baxnie Link para o comentário Compartilhar em outros sites More sharing options...
0 LuckOake 400 Postado Março 31, 2013 Autor Share Postado Março 31, 2013 Ou seja, com essa função, ao receber o OPCode 100 vai printar "received something from server!"? Link para o comentário Compartilhar em outros sites More sharing options...
0 rDs7008 47 Postado Março 31, 2013 Share Postado Março 31, 2013 Isso Link para o comentário Compartilhar em outros sites More sharing options...
0 BananaFight 196 Postado Março 31, 2013 Share Postado Março 31, 2013 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 elseif opcode == OPCODE_PRINT then print(buffer) else -- other opcodes can be ignored, and the server will just work fine... end end quando a função "onExtendedOpcode(cid, opcode, buffer)" for usada ele vai te que ter os 2 valores preenchidos opcode, buffer opcode, seria como o id da mensagem que você esta reçebendo/enviando, e buffer é o valor dessa mensagem como nesse exemplo : local function test(protocol, opcode, buffer) print('received something from server!') end ProtocolGame.registerExtendedOpcode(100, test) o valor do "ID" do opcode é 100, e "test" é a mensagem que estamos enviando, sendo assim quando o opcode numero 100 for usado ele vai retornar o que a função test esta armazenando. Link para o comentário Compartilhar em outros sites More sharing options...
0 dalvorsn 268 Postado Abril 1, 2013 Share Postado Abril 1, 2013 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 elseif opcode == OPCODE_PRINT then print(buffer) else -- other opcodes can be ignored, and the server will just work fine... end end quando a função "onExtendedOpcode(cid, opcode, buffer)" for usada ele vai te que ter os 2 valores preenchidos opcode, buffer opcode, seria como o id da mensagem que você esta reçebendo/enviando, e buffer é o valor dessa mensagem como nesse exemplo : local function test(protocol, opcode, buffer) print('received something from server!') end ProtocolGame.registerExtendedOpcode(100, test) o valor do "ID" do opcode é 100, e "test" é a mensagem que estamos enviando, sendo assim quando o opcode numero 100 for usado ele vai retornar o que a função test esta armazenando. Ele perguntou no cliente, a primeira parte que voce postou, é a callback do server, ela é chamada quando o server recebe algum opcode. E na segunda explicação, tem uma incoerência quanto ao uso da função de registrar os opcodes Os opcodes são registrados através da função ProtocolGame.registerExtendedOpcode(opcode, callback) Onde o primeiro parametro é o valor do opcode(numero referente, como no exemplo do baxnie era 100), e o segunda parametro que é a callback, que nada mais é que o nome da função que será chamada quando receber o opcode 100. Link para o comentário Compartilhar em outros sites More sharing options...
0 BananaFight 196 Postado Abril 1, 2013 Share Postado Abril 1, 2013 Bom, sobre a 1° parte era só um exemplo de uso. E na 2° parte eu só dei um exemplo simples de como registrar o valor do opcode que como no exemplo ele era chamado de "test". do mesmo modo que se eu tentar fazer print(test) ele me retorna "received something from server!", Agora quando eu registro o opcode 100, o que eu estou registrando é "received something from server!", então quando eu retornar o opcode 100 vou ter esse resultado "received something from server!" certo ? Link para o comentário Compartilhar em outros sites More sharing options...
0 dalvorsn 268 Postado Abril 1, 2013 Share Postado Abril 1, 2013 (editado) Bom, sobre a 1° parte era só um exemplo de uso. E na 2° parte eu só dei um exemplo simples de como registrar o valor do opcode que como no exemplo ele era chamado de "test". do mesmo modo que se eu tentar fazer print(test) ele me retorna "received something from server!", Agora quando eu registro o opcode 100, o que eu estou registrando é "received something from server!", então quando eu retornar o opcode 100 vou ter esse resultado "received something from server!" certo ? A função test não tem retorno, e printar apenas o nome dela, vai mostrar 'function: 0x00algo', e se printar print(test()) vai printar o print da função teste, e nil que é o retorno dela. A questão é que o modo que você falou, pode confundir as pessoas, pareceu que o nome da função é a mensagem a ser printada, e não é assim. Quando receber o opcode ele vai executar a função determinada, no caso do baxnie ali a função test, se fosse outra função qualquer, executaria também da mesma forma e não precisa ter uma mensagem, nem printar nada, pode ser apenas uma função para setar algo, definir alguma coisa. Editado Abril 1, 2013 por dalvorsn Link para o comentário Compartilhar em outros sites More sharing options...
0 BananaFight 196 Postado Abril 1, 2013 Share Postado Abril 1, 2013 Bom, mais foi isso que eu tentei me referir, ele vai executar o que estiver programado não necessariamente precisa ser uma mensagem. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LuckOake 400
Olá.
Comecei a mexer no otclient e achei interessante o uso desses opcodes, mas ainda não consegui entender a parte do client de receber os dados.
Como eu utilizo o registerExtendedOpcode?
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados