Ir para conteúdo

Featured Replies

Postado

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 por shanden4502 (veja o histórico de edições)

Postado

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo