Postado Fevereiro 26, 2021 4 anos eu uso tfs 1.2 estou a dias quebrando cabeça com o opcodes, queria enviar uma função no cliente executar ela, já vi diversos topicos, mas ainda sim não rola, eu não quero que façam nada somente me ajudem a entender eu percebi que na lib /data/lib/core/player.lua há isso.. function Player.sendExtendedOpcode(self, opcode, buffer) if not self:isUsingOtClient() then return false end local networkMessage = NetworkMessage() networkMessage:addByte(0x32) networkMessage:addByte(opcode) networkMessage:addString(buffer) networkMessage:sendToPlayer(self) networkMessage:delete() retu eu tenho q usar a função Player.sendExtendedOpcode, para enviar um opcode pro cliente correto? mas como eu posso fazer isso? ela precisa estar dentro do creaturescripts junto com a onExtendedOpcode? ou não necessariamente ? eu estou tentando algo como: Player.sendExtendedOpcode(115, getWorldLight()) esta errado? eu quero enviar a função getWorldLight para o cliente pra receber eu uso ProtocolGame.registerExtendedOpcode(115, (TESTE) e coloco em init, até ai ok e em terminate ProtocolGame.unregisterExtendedOpcode(115) e também na module eu coloco: function TESTE(getWorldLight()) local protocolGame = g_game.getProtocolGame() if protocolGame then if getWorldLight <= 160 then Image:setVisible(true) else Image:hide() end end eu simplesmente quero utilizar a função getWorldLight para ele ativar ou desativar uma imagem no cliente, estou a dias tentando, minha ultima opção pra tentar entender como usar esse opcodes foi recorrer aqui ;// Editado Fevereiro 26, 2021 4 anos por shanden4502 (veja o histórico de edições)
Postado Fevereiro 28, 2021 4 anos Vou te dar um exemplo de como é na versão 8.6 (otx ou tfs mais antiga), que é o que eu uso. data/creaturescripts/creaturescripts.xml: <event type="extendedopcode" name="ExtendedOpcode" event="script" value="opcode.lua"/> data/creaturescripts/scripts/opcodes.lua: function onExtendedOpcode(cid, opcode, buffer) --> Recebe os extendedopcodes enviados pelo client. if opcode == 80 and buffer == "apple" then --> O buffer é a informação que foi enviada do client pro server side. doPlayerFeed(cid, 50) elseif opcode == 80 and buffer == "cake" then doPlayerFeed(cid, 150) elseif opcode == 80 and buffer == "coconut" then doPlayerFeed(cid, 50) doSendPlayerExtendedOpcode(cid, 82, texto) --> Envia informação pro client, mas a informação tem que do tipo string. --> Até tem como enviar outros tipos, mas tem que fazer todo um rolê no client e na pasta data. end return true end Como a doSendPlayerExtendedOpcode é uma função, você pode usar ela em qualquer .LUA, seja de dentro da creaturescripts ou em actions, movements, spells, etc. E no caso nos modules, o que você disse ter feito ta certo, exceto na function TESTE. Teria que ser algo assim: function TESTE(protocol, code, buffer) local protocolGame = g_game.getProtocolGame() if protocolGame then if buffer == "160" then Image:setVisible(true) else Image:hide() end end end Não faço idéia do quanto isso tudo muda de tfs 0.4 pra 1.2, mas acho que deve te dar uma luz.
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.