Ir para conteúdo

Tela de Login para poketibia.


Drk Shadow

Posts Recomendados

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 !!

Editado por Pokemonultimatetwo
Link para o comentário
Compartilhar em outros sites

Boa man mt legal mais me mostra o print de como ficou e tbm o spoiler bugo ali :D

 

Imagem

1239413_431976433585904_489460702_n.jpg

 

@Tópico

 

Mt bom amigo vou testar aki se pegar REP + xD

 

@edit

 

Não esta funcionando

Editado por DarkHeel
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...