Ir para conteúdo

[Encerrado] Opcodes?


Pokeultion

Posts Recomendados

Primeira coisa que tu deveria fazer é melhorar esse uso do opcode, isso de dar split com algum caracter é pessimo e fica muito porco o codigo, tu pode fazer diversas implementações e da ate pra jogar o codigo lua comprimido numa string e enviar como opcode(lembrando que o popString de server é bem porco e não aceita caracter não representavel, então pra isso tu precisa dar um base64 encode nelas antes).

 

Quanto a duvida em si, eu geralmente faço da seguinte, eu envio um opcode para o servidor fazendo a requisição da informação, e ele me volta outro opcode com as infos, quando eu recebo esse opcode, eu populo os elementos da interface e ai sim dou o show, lembrando que não é só show, tu tem que dar show() focus() e raise() para que a janela fique acima de qualquer outra que esteja aberta

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Como melhorar seu código:

 

1° Estabelecer oque vai ser feito,

Você quer criar uma janela que quando abre mostra informações das tasks, essas informações vem do servidor, são jogadas na janela e depois mostra a janela.

 

2° Estabelecer ordem dos evento

 

1° Criar Designe da janela

2° Criar evento de requisição das informações no cliente

3° Criar evento que recebe a requisição no servidor, trata ela e devolve o que foi pedido para o cliente

4° Organizar as informações recebidas pelo servidor na janela do cliente

5° Mostrar as informações

 

Código meramente demonstrativo, agora no creaturescripts do opcode você recebe um upcode com o código 254 que envia as informações para o cliente usando o opcode 255.

 


taskWindow = nil
marketPanel = nil
shopTabBar = nil
taskButton = nil

-- Recebe as informações e mostra a tela
ProtocolGame.registerExtendedOpcode(255, function(protocol, opcode, buffer)
   local param = buffer:split('@')
   print(param[1])
   print(param[2])

   taskWindow:recursiveGetChildById('labelPoke'):setText(param[1])
   --taskWindow:recursiveGetChildById('labelPoke'):setImageSource('/game_tasks/pokes/'..param[1])
   
   if (#param > 0) then
       show()
   end
end)

function init()
  connect(g_game, { onGameEnd = onGameEnd })  

  taskWindow = g_ui.displayUI('tasks')
  taskWindow:hide()

  taskButton = modules.client_topmenu.addRightGameButton('taskButton', tr('Tasks'), '/images/topbuttons/emerald_shop', toggle)
  taskButton:setWidth(36)

  shopTabBar = taskWindow:getChildById('shopTabBar')
  shopTabBar:setContentWidget(taskWindow:getChildById('shopTabContent'))

  marketPanel = g_ui.loadUI('market')
  shopTabBar:addTab('Market', marketPanel, '/images/game/shop/market')
end

function terminate()
  disconnect(g_game, { onGameEnd = onGameEnd })

  ProtocolGame.unRegisterExtendedOpcode(255) -- Talvez não seja essa exatamente a função
  taskWindow:destroy()
  taskButton:destroy()
end

function onGameEnd()
  if taskWindow:isVisible() then
    taskWindow:hide()
  end
end

function show()
  taskWindow:show()
  taskWindow:raise()
  taskWindow:focus()

  addEvent(function() g_effects.fadeIn(taskWindow, 250) end)
end

function hide()
  addEvent(function() g_effects.fadeOut(taskWindow, 250) end)
  scheduleEvent(function() taskWindow:hide() end, 250)
end

function toggle()
  if taskWindow:isVisible() then
    hide()
  else
    ProtocolGame.sendExtendedOpcode(254, "sendTasksInfo")
  end
end

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Alguém poderia me ensinar ou passar algum tutorial que ensine passo-a-passo como enviar uma informação nova pro client usando opcode com TFS 1.3? Quero enviar o attack speed do player mas não faço idéia como se usa isso.

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
A questão neste suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...