Char Maker

BananaFight
em Clients
  • 1
  • 2

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gênero: Masculino

 

Esse Mod faz com que seja possível criar novos char na sua acc usando apenas o client.



OBS: Ele usa Opcode, e com isso só é possível criar char com um personagem online, Porem o sistema é foi totalmente feito para funcionar com um personagem off, então a menos que você consiga editar as source do server, só será possível criar novos personagens na conta com um char logado, Pois os opcodes só funcionam com um char logado.



 

Nome: Char MakerDescrição: Criado de charAutor: Eduardo Vicente (Banana Fight)Website: www.xtibia.com

 




newchar.png





Client Side



Client_Entergame/Entergame.lua



Procure por:



 

 if modules.game_things.isLoaded() thenprotocolLogin:login(G.host, G.port, G.account, G.password)

 



e embaixo adicione:



 

accountName = G.account

 



Client_Entergame/Characterlist.lua



procure por :



 

-- public functions[function CharacterList.init()connect(g_game, { onLoginError = onGameLoginError })connect(g_game, { onUpdateNeeded = onGameUpdateNeeded })connect(g_game, { onConnectionError = onGameConnectionError })connect(g_game, { onGameStart = CharacterList.destroyLoadBox })connect(g_game, { onLoginWait = onLoginWait })connect(g_game, { onGameEnd = CharacterList.showAgain })if G.characters thenCharacterList.create(G.characters, G.characterAccount)endend

 



E substitua por :



 

-- public functions[function CharacterList.init()connect(g_game, { onLoginError = onGameLoginError })connect(g_game, { onUpdateNeeded = onGameUpdateNeeded })connect(g_game, { onConnectionError = onGameConnectionError })connect(g_game, { onGameStart = CharacterList.destroyLoadBox })connect(g_game, { onLoginWait = onLoginWait })connect(g_game, { onGameEnd = CharacterList.showAgain })if G.characters thenCharacterList.create(G.characters, G.characterAccount)endnewChar = g_ui.displayUI('newchar')newChar:hide()endfunction sendAll()local msg = newChar:getChildById('msg')local name = newChar:getChildById('name'):getText()local sex = newChar:getChildById('sex'):getText()local voc = newChar:getChildById('vocation'):getText()local protocol = g_game.getProtocolGame()local sendSexlocal sendVocif sex == "male" thensendSex = 0elsesendSex = 1endif voc == "Sorcerer" thensendVoc = 1elseif voc == "Druid" thensendVoc = 2elseif voc == "Paladin" thensendVoc = 3elsesendVoc = 4endprotocol:sendExtendedOpcode(152, string.format("%s,%s,%d,%d", accountName, name, sendVoc, sendSex))msg:setColor("green")msg:setText("Character "..name.." Created")end

 



Agora Crie um arquivo com o nome newchar.lua, e adiciona isso dentro :



 

MainWindowid: characterCreator!text: tr('New Char')size: 210 250@onEnter: sendAll()Labelid: labelNametext: Choose your name:color: whitetext-auto-resize: trueanchors.top: parent.topanchors.left: parent.leftmargin-top: 2TextEditid: nameanchors.left: parent.leftanchors.right: parent.rightanchors.top: prev.bottommargin-top: 5Labelid: labelSextext: Chose your sextext-auto-resize: truecolor: whiteanchors.left: parent.leftanchors.top: name.bottommargin-top: 10ComboBoxid: sexanchors.left: parent.leftanchors.top: labelSex.bottommargin-top: 5width: 75options:- Male- FemaleLabelid: labelVocationtext: Chose your vocationtext-auto-resize: truecolor: whiteanchors.left: parent.leftanchors.top: sex.bottommargin-top: 10ComboBoxid: vocationanchors.left: parent.leftanchors.top: labelVocation.bottommargin-top: 5width: 100options:- Knight- Paladin- Sorcerer- DruidLabelid: msgtext-auto-resize: trueanchors.left: parent.leftanchors.top: vocation.bottommargin-top: 20Buttonid: creatChartext: Creat Charactercolor: whiteanchors.left: parent.leftanchors.bottom: parent.bottom@onClick: sendAll()Buttonid: canceltext: Cancelcolor: whiteanchors.left: creatChar.rightanchors.right: parent.rightanchors.bottom: parent.bottommargin-left: 10@onClick: newChar:hide()

 



E no chartacterlist.otui, lá no final você apaga os 2 botões de "cancel" e "ok" e substituto por estes :



 

 Buttonid: newChartext: New Charwidth: 64anchors.left: parent.leftanchors.bottom: parent.bottom@onClick: newChar:show()Buttonid: buttonOk!text: tr('Ok')width: 64anchors.left: newChar.rightanchors.right: buttonCancel.leftanchors.bottom: parent.bottommargin-right: 10margin-left: 10@onClick: CharacterList.doLogin()Buttonid: buttonCancel!text: tr('Cancel')width: 64anchors.right: parent.rightanchors.bottom: parent.bottom@onClick: CharacterList.hide(true)

 



Server Side



Data/Creaturescritps/scripts

crie um arquivo chamado exetendedopcode.lua, e adicione isso dentro :



 

local QUERY = "INSERT INTO `players` VALUES (NULL, '%s', 0, 1, %d, 1, %d, 150, 150, 0, 0, 0, 0, 0, 221, 0, 0, 50, 50, 0, 0, 1, 95, 127, 7, 0, 400, %d, 0, 0, 1, 0, 0, 0, '', 0, 0, 0, 151200000, 2, 100, 100, 100, 100, 100, 0, 0, 0, 0, 0, '');"NEW_ACCOUNT_CHAR = 152function onExtendedOpcode(cid, opcode, buffer)if opcode == NEW_ACCOUNT_CHAR thenlocal info = string.explode(buffer, ",")for a = 1, #info doif tonumber(info[a]) theninfo[a] = tonumber(info[a])endenddb.executeQuery(string.format(QUERY, info[2], getAccountIdByAccount(info[1]), info[3], info[4]))endreturn trueend

 



E dentro do creaturescripts.xml adicione :


<event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>




O sistema ainda não esta 100% completo, falta a parte que envia uma mensagem de erro quando o char não é criado, Porem eu não irei atualizar esse sistema pelo fato de só funcionar com char online.

AlexandreKG

Estudante de TI
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 30/10/11Posts: 1153Gênero: Masculino

Caraca que legal hein!

 

Parabéns, obrigado por compartilhar.

StyloMaldoso

a good son makes the house...;p
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 25/01/12Posts: 1593

Caraca que interessante, daría pra faze no modo Gambiarra para o PDA? :)

Project Pokémon Mysterion OpenSoures 2016.

Em breve, mais informações!

 

23vfcht.png

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gênero: Masculino

@StyloMaldoso, você poderia fazer de um modo que quando clicasse em New Char, ele executasse uma talkactions com as infos que foram escolhidas.

 

 

@All, Pessoal, sei que estou um pouco ausente do fórum, e por isso quando eu trazer algo para o fórum irei tentar trazer algo que não foi visto ainda para mostrar as incríveis possibilidades que o OtClient nos oferece.

 

E obrigado pelo apoio de todos vocês.

Alexclusive

Um bom Veterano...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/12Posts: 2399Gênero: MasculinoChar no Tibia: Nuncative

Muito bom Edu. Como já falaram, sempre trazendo coisas boas!

Parabéns!

 

CURTA O FACEBOOK DO Ekz.

graphic_design.png  Seja um incentivador de pessoas. O mundo já tem críticos demais.  hardware_19.png

 

 

 

Faelzdanil

PokeShow World Online
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/05/11Posts: 391

E dentro do creaturescripts.lua adicione :

 

<event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>

 

 

Corrigindo que é na creaturescripts.xml !

lsr2nFa.jpg

 

dQ6yAey.png

Pm9TjMM.png

 

 

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gênero: Masculino

Pronto, corrigido, e desculpem pelo erro.

manoelneto

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/03/13Posts: 99

Boa Banana, estava sentindo falta desses seus posts, eu nunca tinha imaginado que poderia ter algo assim no Otc, sua ideia é muito boa.

 

Andei pensando em fazer uma janela de Guild, que nem tem naqueles MMORPGS mostrando membro, level e outras coisas, difícil é saber como proceder e_e

Att Manoel;

2rm9y0y.jpg

Lost Worl of the Middle Kingdom, em breve!

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gênero: Masculino

Pessoal pesso desculpas, mais tinha esquecido de uma parte então para que não aja bugs arrume em, Entergame.lua

 

Procure por:

 

  if modules.game_things.isLoaded() then
	protocolLogin:login(G.host, G.port, G.account, G.password)

 

e embaixo adicione:

 

accountName = G.account

planetc

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 07/05/09Posts: 67Char no Tibia: Christopher Prado

tem como postar os arquivos

Client_Entergame/Entergame.lua

Client_Entergame/Characterlist.lua

?

pois nao estou conseguindo :S fiz certinho mas n ta adiantando. vlw!

Pokemon K-Blue

Se junte a equipe!

Clique Aqui

 

15rms8j.png

xS0NYx

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 31/07/11Posts: 59

O que precisa editar nas sources pra colocar pra criar char off?

3145288

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/02/08Posts: 82

vc teria que criar um socket no cliente para conectar no servidor no inicio da aplicação (ao abrir o cliente), ao contrário do mod, que conecta no servidor ao logar o char.

 

Um package no servidor também, para receber os bits enviados do cliente em tempo constante e, executar a função de forma interna (ou até mesmo por scripts) se manjar um teco de programação

elvenstrike

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 16/07/13Posts: 51Char no Tibia: kawasaki the ninja

Parabéns cara isso vai ajudar muito no meu projeto de narutibia.

 

rep+

GODMedieval

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/09/13Posts: 11

Nossa cara muito massa isso ae, realmente esse "OTClient" tá revolucionando o mundo dos Ots e a cada dia tá me surpreendendo, não só a mim né, tem mias um monte de gente que tenho certeza que tá gostando muito dele !

 

Obrigado por compartilhar, Muito Obrigado!

  • 1
  • 2