Jump to content
×
×
  • Create New...

poketibia Tela de Login para poketibia.


Recommended Posts

Bom, eu criei o topico mostrando meu client, e decidi postar a tela de login.



va em modules/client_entergame/



Abra o seu Entergame.lua, apague tudo que esta la e coloque isso no lugar:




EnterGame = { }



-- private variables

local loadBox

local enterGame

local motdWindow

local motdButton

local enterGameButton

local protocolBox

local protocolLogin

local motdEnabled = true


-- private functions

local function onError(protocol, message, errorCode)

if loadBox then

loadBox:destroy()

loadBox = nil

end


if not errorCode then

EnterGame.clearAccountFields()

end


local errorBox = displayErrorBox(tr('Login Error'), message)

connect(errorBox, { onOk = EnterGame.show })

end


local function onMotd(protocol, motd)

if(motd) then

G.motdNumber = tonumber(motd:sub(0, motd:find("\n")))

G.motdMessage = motd:sub(motd:find("\n") + 1, #motd)

if motdEnabled then

motdButton:show()

end

end

end


function TesteWave.openWebsite()

os.execute("start http://www.google.com")

end


function TesteWave.donate()

os.execute("start http://www.google.com")

end


local function onCharacterList(protocol, characters, account, otui)

-- Try add server to the server list

ServerList.add(G.host, G.port, g_game.getProtocolVersion())


if enterGame:getChildById('rememberPasswordBox'):isChecked() then

local account = g_crypt.encrypt(G.account)

local password = g_crypt.encrypt(G.password)


g_settings.set('account', account)

g_settings.set('password', password)


ServerList.setServerAccount(G.host, account)

ServerList.setServerPassword(G.host, password)


g_settings.set('autologin', enterGame:getChildById('autoLoginBox'):isChecked())

else

-- reset server list account/password

ServerList.setServerAccount(G.host, '')

ServerList.setServerPassword(G.host, '')


EnterGame.clearAccountFields()

end


loadBox:destroy()

loadBox = nil


CharacterList.create(characters, account, otui)

CharacterList.show()


if motdEnabled then

local lastMotdNumber = g_settings.getNumber("motd")

if G.motdNumber and G.motdNumber ~= lastMotdNumber then

g_settings.set("motd", motdNumber)

motdWindow = displayInfoBox(tr('Message of the day'), G.motdMessage)

connect(motdWindow, { onOk = function() CharacterList.show() motdWindow = nil end })

CharacterList.hide()

end

end

end


local function onChangeProtocol(combobox, option)

local clients = g_game.getSupportedClients(option)

protocolBox:setTooltip("Supports Client" .. (#clients > 1 and "s" or "") .. ": " .. table.tostring(clients))

end


local function onUpdateNeeded(protocol, signature)

loadBox:destroy()

loadBox = nil


if EnterGame.updateFunc then

local continueFunc = EnterGame.show

local cancelFunc = EnterGame.show

EnterGame.updateFunc(signature, continueFunc, cancelFunc)

else

local errorBox = displayErrorBox(tr('Update needed'), tr('Your client needs update, try redownloading it.'))

connect(errorBox, { onOk = EnterGame.show })

end

end


-- public functions

function EnterGame.init()

enterGame = g_ui.displayUI('entergame')

enterGameButton = modules.client_topmenu.addLeftButton('enterGameButton', tr('Login') .. ' (Ctrl + G)', '/images/topbuttons/login', EnterGame.openWindow)

motdButton = modules.client_topmenu.addLeftButton('motdButton', tr('Message of the day'), '/images/topbuttons/motd', EnterGame.displayMotd)

motdButton:hide()

g_keyboard.bindKeyDown('Ctrl+G', EnterGame.openWindow)


if motdEnabled and G.motdNumber then

motdButton:show()

end


local account = g_settings.get('account')

local password = g_settings.get('password')

local autologin = g_settings.getBoolean('autologin')


EnterGame.setAccountName(account)

EnterGame.setPassword(password)


enterGame:getChildById('autoLoginBox'):setChecked(autologin)



enterGame:hide()


if g_app.isRunning() and not g_game.isOnline() then

enterGame:show()

end

end


function EnterGame.firstShow()

EnterGame.show()


local account = g_crypt.decrypt(g_settings.get('account'))

local password = g_crypt.decrypt(g_settings.get('password'))

local autologin = g_settings.getBoolean('autologin')

if #password > 0 and #account > 0 and autologin then

addEvent(function()

if not g_settings.getBoolean('autologin') then return end

EnterGame.doLogin()

end)

end

end


function EnterGame.terminate()

g_keyboard.unbindKeyDown('Ctrl+G')

enterGame:destroy()

enterGame = nil

enterGameButton:destroy()

enterGameButton = nil

protocolBox = nil

if motdWindow then

motdWindow:destroy()

motdWindow = nil

end

if motdButton then

motdButton:destroy()

motdButton = nil

end

if loadBox then

loadBox:destroy()

loadBox = nil

end

if protocolLogin then

protocolLogin:cancelLogin()

protocolLogin = nil

end

EnterGame = nil

end


function EnterGame.show()

if loadBox then return end

enterGame:show()

enterGame:raise()

enterGame:focus()

EnterGame.load()

end


function EnterGame.hide()

enterGame:hide()

end


function EnterGame.openWindow()

if g_game.isOnline() then

CharacterList.show()

elseif not g_game.isLogging() and not CharacterList.isVisible() then

EnterGame.show()

end

end


function EnterGame.setAccountName(account)

local account = g_crypt.decrypt(account)

enterGame:getChildById('accountNameTextEdit'):setText(account)

enterGame:getChildById('accountNameTextEdit'):setCursorPos(-1)

enterGame:getChildById('rememberPasswordBox'):setChecked(#account > 0)

end


function EnterGame.setPassword(password)

local password = g_crypt.decrypt(password)

enterGame:getChildById('accountPasswordTextEdit'):setText(password)

end


function EnterGame.clearAccountFields()

enterGame:getChildById('accountNameTextEdit'):clearText()

enterGame:getChildById('accountPasswordTextEdit'):clearText()

enterGame:getChildById('accountNameTextEdit'):focus()

g_settings.remove('account')

g_settings.remove('password')

end


function EnterGame.doLogin()

G.account = enterGame:getChildById('accountNameTextEdit'):getText()

G.password = enterGame:getChildById('accountPasswordTextEdit'):getText()

G.host = "127.0.0.1"

G.port = 7171

local protocolVersion = 854

local clientVersions = g_game.getSupportedClients(protocolVersion)

EnterGame.hide()


if g_game.isOnline() then

local errorBox = displayErrorBox(tr('Login Error'), tr('Cannot login while already in game.'))

connect(errorBox, { onOk = EnterGame.show })

return

end


g_settings.set('host', G.host)

g_settings.set('port', G.port)


protocolLogin = ProtocolLogin.create()

protocolLogin.onLoginError = onError

protocolLogin.onMotd = onMotd

protocolLogin.onCharacterList = onCharacterList

protocolLogin.onUpdateNeeded = onUpdateNeeded


loadBox = displayCancelBox(tr('Please wait'), tr('Connecting to login server...'))

connect(loadBox, { onCancel = function(msgbox)

loadBox = nil

protocolLogin:cancelLogin()

EnterGame.show()

end })


g_game.chooseRsa(G.host)

g_game.setProtocolVersion(protocolVersion)

if #clientVersions > 0 then

g_game.setClientVersion(clientVersions[#clientVersions])

end


if modules.game_things.isLoaded() then

protocolLogin:login(G.host, G.port, G.account, G.password)

else

loadBox:destroy()

loadBox = nil

EnterGame.show()

end

end


function EnterGame.displayMotd()

if not motdWindow then

motdWindow = displayInfoBox(tr('Message of the day'), G.motdMessage)

motdWindow.onOk = function() motdWindow = nil end

end

end


function EnterGame.setDefaultServer(host, port, protocol)

local accountTextEdit = enterGame:getChildById('accountNameTextEdit')

local passwordTextEdit = enterGame:getChildById('accountPasswordTextEdit')


end


function EnterGame.setUniqueServer(host, port, protocol, windowWidth, windowHeight)

local hostTextEdit = enterGame:getChildById('serverHostTextEdit')

hostTextEdit:setText(host)

hostTextEdit:setVisible(false)

hostTextEdit:setHeight(0)

local portTextEdit = enterGame:getChildById('serverPortTextEdit')

portTextEdit:setText(port)

portTextEdit:setVisible(false)

portTextEdit:setHeight(0)


protocolBox:setCurrentOption(protocol)

protocolBox:setVisible(false)

protocolBox:setHeight(0)


local serverLabel = enterGame:getChildById('serverLabel')

serverLabel:setVisible(false)

serverLabel:setHeight(0)

local portLabel = enterGame:getChildById('portLabel')

portLabel:setVisible(false)

portLabel:setHeight(0)

local protocolLabel = enterGame:getChildById('protocolLabel')

protocolLabel:setVisible(false)

protocolLabel:setHeight(0)


local serverListButton = enterGame:getChildById('serverListButton')

serverListButton:setVisible(false)

serverListButton:setHeight(0)

serverListButton:setWidth(0)


local rememberPasswordBox = enterGame:getChildById('rememberPasswordBox')

rememberPasswordBox:setMarginTop(-5)


if not windowWidth then windowWidth = 236 end

enterGame:setWidth(windowWidth)

if not windowHeight then windowHeight = 200 end

enterGame:setHeight(windowHeight)

end


function EnterGame.setServerInfo(message)

local label = enterGame:getChildById('serverInfoLabel')

label:setText(message)

end


function EnterGame.disableMotd()

motdEnabled = false

motdButton:hide()

end


filename = nil

loaded = false


function EnterGame.load()

local version = 854


local datPath, sprPath

if filename then

sprPath = resolvepath('/things/' .. filename)

else

sprPath = resolvepath('/things/Shinobi')

end


local errorMessage = ''

if not g_sprites.loadSpr(sprPath) then

--errorMessage = errorMessage .. tr("Please, re-start your game client or check on the website if the game is open.")

end


loaded = (errorMessage:len() == 0)


load_(wDir .. "/data/things/Shinobi.spr")


if errorMessage:len() > 0 then

local messageBox = displayErrorBox(tr('Error'), errorMessage)

addEvent(function() messageBox:raise() messageBox:focus() end)


disconnect(g_game, { onProtocolVersionChange = load })

g_game.setProtocolVersion(0)

connect(g_game, { onProtocolVersionChange = load })

end


end



Agora, abra o entergame.otmod, apague tambem tudo que esta la e coloque isso:



Module

name: client_entergame

description: Login Customizado

author: Pokemonultimatetwo

website: Xtibia.com


dependencies:

- client_topmenu


@onLoad: |

dofile 'entergame'

dofile 'characterlist'

EnterGame.init()

CharacterList.init()


@onUnload: |

EnterGame.terminate()

CharacterList.terminate()



agora, abra o entergame.otui, apaga e coloque isso la:



EnterGameWindow < MainWindow


EnterGameWindow

id: enterGame

image-source: /images/ui/pxg/pokedex

size: 302 187

@onEnter: EnterGame.doLogin()



MenuLabel

!text: tr('Account name')

anchors.bottom: parent.bottom

anchors.left: parent.left

text-auto-resize: true

margin-bottom: 135

margin-left: 35

anchors.horizontalCenter: parent.horizontalCenter


TextEdit

id: accountNameTextEdit

anchors.top: prev.bottom

margin-top: 2

margin-left: 37

width: 150

anchors.horizontalCenter: parent.horizontalCenter


MenuLabel

!text: tr('Password')

anchors.left: prev.left

anchors.top: prev.bottom

margin-top: 8

margin-left: 35

text-auto-resize: true

anchors.horizontalCenter: parent.horizontalCenter


PasswordTextEdit

id: accountPasswordTextEdit

anchors.top: prev.bottom

margin-top: 2

margin-left: 37

width: 150

anchors.horizontalCenter: parent.horizontalCenter


CheckBox

id: rememberPasswordBox

!text: tr('Remember password')

!tooltip: tr('Remember account and password when starts otclient')

anchors.top: prev.bottom

width: 200

margin-top: 10

margin-left: 63

@onCheckChange: self:getParent():getChildById('autoLoginBox'):setEnabled(self:isChecked())

anchors.horizontalCenter: parent.horizontalCenter


CheckBox

id: autoLoginBox

enabled: false

!text: tr('Entrada Automatica')

!tooltip: tr('Open charlist automatically when starting otclient')

anchors.top: prev.bottom

margin-top: 2

margin-left: 63

width: 200

anchors.horizontalCenter: parent.horizontalCenter


UIButton

image-source: /images/ui/pxg/enter-game

width: 105

height: 16

anchors.right: parent.right

anchors.top: parent.top

margin-top: 136

margin-left: 84

@onClick: EnterGame.doLogin()

anchors.horizontalCenter: parent.horizontalCenter


UIButton

image-source: /images/ui/pxg/enter-game

width: 105

height: 16

anchors.right: parent.right

anchors.top: parent.top

margin-top: 136

margin-left: 42

@onClick: TesteWave.openWebsite()

anchors.horizontalCenter: parent.horizontalCenter



agora, vamos as imagens:


va na pasta data/images/ui


la, crie uma nova pasta chamada pxg


coloque essa imagem la dentro:


m2c8.png




coloque tambem, esta:


j484.png




Bom, é isso ai.



OBS: Eu não consegui fazer o botão de Create ACC, está la só pra não ficar feio, caso alguem queira fazer fique a vontade.




Essa foi a minha primeira, com a pratica vem a perfeição, a proxima ficara muito melhor.


É isso ai, obrigado, qualquer coisa me avise !!

Edited by Pokemonultimatetwo
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


    Administrador |  Diretor |  Coordenador |  Moderador |  Suporter |  Estagiário |  Herói
  • Similar Content

    • By coriel
      Dobradores, o novo servidor Vaatu será aberto nessa quinta-feira, dia 10 de Junho de 2021 às 20:00 (Brazil Time).
       
       
      Jogo fã gratuito, baixe e comece a jogar agora mesmo: https://tibia-avatar.com/
      Nos siga no Instagram: http://instagram.com/otavatartibia
      Nos siga no Facebook: https://www.facebook.com/otavatartibia
      Entre em nosso Discord para conversar com outros jogadores: https://discord.gg/RKp3vcAQ5p

      Tibia Avatar based Massive Multiplayer Online Role Playing Game.
    • By Antaria Wars
      DATA DO LANÇAMENTO DIA 29/05/2021 AS 18:00 HORAS(BRL) --------------------------------------------------------------------------  BOSSES DA SOULWAR COM MECÂNICAS.  BOSSES DA GRAVE DANGER COM MECÂNICAS.  FEARSTER OF SOULS QUEST COM MECÂNICAS.  RASCOOHAN NOVA ILHA DO GLOBAL (AINDA SEM MECÂNICAS).  VERSÃO 12.66 COM TODAS ATUALIZAÇÕES ATUALMENTE.  ACESSOS DE TODAS QUESTS E BOSSES LIBERADOS.  RATES E DROPS BALANCEADOS.  SUPPLY STASH.  HIRELINGS.  BESTIARY & CHARMS (2X).  QUICKLOOTING.  RETRO OPEN PVP 100% COMPLETO.  WARSYSTEM PARA GUILDS.  EVENTOS DIÁRIOS E SEMANAIS DE BOSSES.  VOCAÇÕES BALANCEADAS PARA UM PVP MAIS COMPLETO.  STAFF 100% ATIVA.  GUILD POINTS.  UTAMO VITA ANTIGO COM USO DE ENERGY RING -------------------------------------------------------------------------- PARA QUE ESPERAR? ESTÁ NA HORA DE SE DIVERTIR SEM DORES DE CABEÇA E STRESS, CRIEM JÁ SUA CONTA E AGUARDEM O LANÇAMENTO. https://impact-global.online/?subtopic=accountmanagement  
    • By StardewMon
      Base Pokemasterx, estou editando para um novo projeto, espero que gostem!