*-*, falta tutoriais desse tipo aqui no ékixtibia, usuário reputado, perfeito conteudo *-*
- Fórum
- OTServ
- Tutoriais
- Tutoriais de Clients
- OtClient - Tutorial Básico #1
OtClient - Tutorial Básico #1
Por BananaFight, 24 de fev. de 2013 em Tutoriais de Clients
info
Grupo: Banidos
Registrado: 11/01/13
Posts: 576
Reputação: +109
Char no Tibia: Darashia del Shee

info
Grupo: Infante
Registrado: 27/08/11
Posts: 1.9k
Reputação: +85
Gênero: Masculino
Char no Tibia: Bruno Maciel

Muito Bom Tutorial !!
Bem organizado explicado e detalhado ;D
Muito Bom Mesmo ^^
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar.
levei 1 semana pra descobrir isso na marra ¬¬
achu q o CODE do xtibia eh uma bota ms ;x sera q com 'quote' a indenizaçao fica correta? '--'
anchors.left: Label1.left
vlw pela dica!
uma duvida, sabes como mover uma janela? ja tentei todas as 'funçoes' q eu achei e nd ate agora... -ex: setPosition(pos)-
e otimo tutorial, na espera dos proximos ^^
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Slicer, como assim mover uma janela ?
@Edit: Quando abrir a janela, aparecer em um determinado lugar, Se for isso, eu ainda não conheço nem um modo de fazer isso, pois acho que elas aparecem no meio da tela por padrão, Mais você pode tentar usar no lugar de MainWindow tente com MiniWindow ( Essa janela é aquelas que grudam nos panels, skill, inventory etc) porem pode acontecer alguns bugs pois elas tem um modo diferente de se configurar, outra hora estarei ensinando a usar elas.
Editado Fevereiro 24 por BananaFight
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

sim mas para a minha barra de skills da pxg usar miniWindow n eh muito bom... -foi o 1* q eu tentei ^^-
eh tb achu q eh padrao aquilo, mas enxe o saco kkk -e a pxg conseguiu fazer elas aparecerem no canto mas blz-
vlw ae...
info
Grupo: Conde
Registrado: 20/10/10
Posts: 911
Reputação: +217
Char no Tibia: Felipe Pessoa

não duvido da veracidade do conteúdo mais antes de fazer tutoriais do tipo, você deveria explicar o que é OtClient, pra que serve e qual a vantagem...
Não tenho a minima ideia do que seja.
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Logo mais estarei mostrando o que o OtClient é e o que ele pode fazer.
Bem legal o tutorial.
MainWIndow, Bottom etc!
MainWindow e Button? Cuidado com as letras maiúsculas e minúsculas.
Acho que uma imagem para ajudar na explicação dos anchors seria uma boa ideia. O pessoal costuma ter dificuldade em entendê-los.
Nesse item; Passo 3 conhecendo as janelas;
Ficaria bem legal colocar algumas imagens, mostrando o que é um MiniWindow, um Button, um Label, etc.
Editado Março 15 por Baxnie
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Passou despercebido mais ja foi corrigido. Obrigado por reportar Baxnie.
Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar.levei 1 semana pra descobrir isso na marra ¬¬
achu q o CODE do xtibia eh uma bota ms ;x sera q com 'quote' a indenizaçao fica correta? '--'
anchors.left: Label1.left
vlw pela dica!
uma duvida, sabes como mover uma janela? ja tentei todas as 'funçoes' q eu achei e nd ate agora... -ex: setPosition(pos)-
e otimo tutorial, na espera dos proximos ^^
local mw = g_ui.createWidget('MiniWindow')
mw:move(0, 0)
E quanto a aparecer no canto é só setar o parent
-- root mw:setParent(modules.game_interface.getRootPanel()) -- right mw:setParent(modules.game_interface.getRightPanel()) --left mw:setParent(modules.game_interface.getLeftPanel()) --etc
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

@dalv
eh usando o modules.game_interface.getRootPanel() a janela foi pro canto '--' vlw ae mano xD
To dano uma estudada nos códigos do que já ta feito e talz, mas ainda n entendi como ele chama os arquivos...por exemplo a cdbar
onde diabos ela e puxada pro cliente ler? > < e se eu criar alguma nova janela onde devo declarar ela pro cliente ler ela também? xD
to a 2 horas lendo os arquivos e não achei nada =/
@Tópico
Tuto muito bom, rep++ xD
Tutorial simples Facil , de entender Muito bom
parabéns vai ajuda muitas pessoas que querem aprender algumas funções.







info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino
OtClient - Tutorial Básico #1
Bom galera, hoje eu vou ensinar vocês a como editar mod/Modules, e também como posiciona-los na janela.
Passo 1 entendendo os arquivos
Dentro da maioria das pasta no OtClient existirão 3 arquivos com as seguintes extensões:
Cada uma dessas extensões executam um papel EXTREMAMENTE importante dentro do mod/module que você pretende criar, Mais será explicado mais para a frente, Nessa aula vamos mexer apenas no arquivo ".otui".
Passo 2 Indentação
Uma das coisas mais importante dentro dos arquivos ".otui" é a indentação, pois se você errar um espaçamento qualquer você pode estar 'bugando' todo o funcionamento da sua mod/module.
Vou ensinar a vocês o modo certo de indentar seus códigos para que não tenham erros.
Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar. A indentação deve ser feita com apenas 2 espaços, e sempre seguindo a ordem do item que você ta criando.
Exemplo:
Como o Botão 'Button1' vai ficar dentro da janela ' tutorialWindow', ele tem que ficar a uma distancia de 2 espaços da janela 'MainWindow', Caso eu quebre esse espaçamento provavelmente poderei ter bugs na hora de abrir esse mod/module dentro do client. Outra coisa para tomar cuidado é quando for dar linha para adicionar outra janela, nessa linha em que separa uma janela não pode conter nem um espaço e nenhum comando.
Exemplo:
Certo
Errado
Vocês não conseguem ver a diferença, mais tente selecionar os dois códigos que vão entender melhor, o que eu falei.
Agora a organização e edição de cada janela dentro do arquivo '.otui' deve seguir o mesmo principio de 2 espaços de distancia.
Exemplo:
Certo
Errado
E também esta Errado desta forma
Como o botão vai aparecer dentro da janela 'MainWindow' ele tem que ficar a 2 espaçamento dela pois se eu deixar os 2 na mesma posição é como se eu estivesse dizendo ao script que são duas janelas separadas e o botton vai aparecer por conta própria quando eu executar o mod/module.
Passo 3 conhecendo as janelas
Existem diversos modos de se criar uma janela onde vai aparecer vários botoes textos e etc, Mais sempre vai ter uma janela que será a matriz de todos, onde todos deverão aparecer, que no nosso exemplo é :
Esse código é nossa janela principal, É nela que vai aparecer tudo que queremos mostrar com no script, Agora vou mostrar o que cada função que tem dentro de MainWindow faz.
Não precisamos usar necessariamente size para mostrar o tamanho ou largura da janela, podemos utilizar por exemplo :
Esses 2 códigos podem ser utilizados no lugar de size e farão exatamente a mesma coisa.
Caso você tenha editado ou criado algum mod/modules para testar esses códigos que mostrei acima, percebeu que na janela não aparece nome e nem nada do gênero e é isso que irei mostrar agora.
!text: tr('Texto') - Essa função adiciona o texto na janela em que você adicionar esta linhaicon: img.png - Esta função pega a sua imagem e usa ela de icone para a janela ( neste caso a imagem tem que estar na mesma pasta que o arquivo '.otui', e isso só irá funcionar dependendo do tipo da janela matriz, veremos em outros tutoriais.)Com esses dois Código você consegue personalizar a janela onde irão aparecer os botoes, textos etc que você pretende fazer.
Exemplo:
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueAgora vamos começar a criar botoes, escrever textos e etc.
Vamos começar adicionando uma Label que vai mostrar o texto 'Olá Xtibia'.
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftmargin-top: 5margin-left: 5Como vocês podem ver apareceram algumas funções novas, que são elas :
Com essas funões nós determinamos onde cada item da nossa janela vai ficar.
Entendendo as novas funções
Com a linha 'anchors.top:' estamos dizendo que a posição do meu item vai ser definida para cima, agora adicionando 'parent.top' estamos dizendo que a posição do meu item deve se Colada com começo da Janela, e isso segue para left, right, bottom também.
agora se no lugar de 'parent.top' eu usar 'prev.top' eu estou dizendo que meu item vai ficar colado com a parte de cima do item que tem encima, Confuso eu sei mais vou dar um exemplo:
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftAli no script acima eu estou mandando a Label1 ficar colada com a borda de cima da janela principal, e a esquerda, Já na Label2, eu estou mando ela ficar colada com a Label1 ( pois a label1 que esta encima ) e também ficar colada com a borda da janela principal.
Isso se aplica a todos os lados, se eu usar prev.left, eu vou estar dizendo que a label2 tem que ficar exatamente do lado esquerdo da label1.
As funções 'margin-top: 5' vão fazer com que meu item fique com a distancia de 5 pixel ( Não tenho certeza se são pixels ) do item que esta acima
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Nesse Exemplo eu fiz a label2 ficar a 5 pixel abaixo da Label1, e isso é a mesma coisa se eu ultilizar left, right, bottom eu vou pegar uma distancia do que estiver do lado do meu item ou embaixo etc.
Mais agora nós não precisamos nos prender a ficar somente com parent, e prev na hora de criar um item. podemos utilizar o id de um item como referencia de onde deve ficar meu item, como no exemplo :
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: parent.topanchors.left: Label1.leftNesse Exemplo eu fiz com que a Label3 ficasse a esquerda da Label1, e grudada a margem da janela principal, mais eu também poderia fazer ela ficar embaixo da Label1, e grudada ao lado direito da margem da janela principal.
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.topanchors.right: parent.rightMais caso você for testar isso vai perceber que o Label2 vai ficar encima do Label1 e ao invés do Label3 ficar embaixo do Label1 ele vai ficar do lado, Para corrigir esses pequenos erros você pode juntar códigos como no exemplo :
MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.bottomanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.bottomanchors.right: parent.rightPelo Simples fato de eu ter trocado top por bottom agora o script sabe que a Label2 tem que ficar no fim da Label1 e o mesmo para a Label3, e por isso usamos margin, para deixa uma distancia entre cada item, e para ficar mais organizado.
Bom acho que é isso, Caso eu lembre de algo relevante estarei editando e adicionando mais coisas, Espero que gostem e quais quer DUVIDAS relacionadas AO TÓPICO é só fazer um comentário aqui embaixo que estarei respondendo.
@Edit, Infelizmente o Xtibia Quebrou a indentação, mais lembre-se é sempre 2 espaços.
Editado Agosto 7 por Bennyyw