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