dalvorsn 268 Postado Julho 7, 2018 Share Postado Julho 7, 2018 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 More sharing options...
BananaFight 196 Postado Julho 25, 2018 Share Postado Julho 25, 2018 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 More sharing options...
Togumelo 3 Postado Setembro 30, 2018 Share Postado Setembro 30, 2018 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 More sharing options...
Marshmello 270 Postado Fevereiro 20, 2019 Share Postado Fevereiro 20, 2019 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 More sharing options...
Posts Recomendados