Ir para conteúdo
Entre para seguir isso  
Boleta

Usando Dialogs

Recommended Posts

Boleta    1
Boleta

Olá a todos.

 

Às vezes navego pelo mIRC e vejo que 99,9% dos programadores de mIRC Scripting não sabem usar dialogs.

Pensando nisso, resolvi criar um pequeno tutorial de como usar dialogs. Pra quem já possúi algum conhecimento de mS, será bastante simples.

 

Bem, vamos lá.

 

Criando o design do dialogo

 

Bom, se formos criar o dialogo por meio de códigos, saiba que é realmente muito chato e trabalhoso. Então, pra evitar esse trabalho, existe um programa que se chama Dialog Studio, onde a maioria dos que criam dialogos, usam-no. Ele foi feito por um cara chamado dohcan, então, todos os créditos à ele.

Ele é bem simples de se usar. Você pode encontra-lo clicando aqui. Aqui vai uma SS dele:

 

04222007111724ug5.jpg

http://img294.imageshack.us/img294/3041/04...07111724ug5.jpg

 

Não precisa nem aprender a mexer. É só baixar e abrir, que você verá que é muito simples de se usar.

 

1º Passo: Faça um design parecido com esse:

04222007112117tc6.jpg

http://img409.imageshack.us/img409/8698/04...07112117tc6.jpg

 

O código para o dialogo é esse:

 

dialog protdialog {
 title "Proteções do Bot"
 size -1 -1 164 72
 option dbu
 box "Proteções", 1, 2 2 77 68
 check "Anti $snicks", 2, 7 12 50 10
 check "Anti Take-Over", 3, 7 22 50 10
 check "Anti-Flood", 4, 7 32 50 10
 check "Anti Ban", 5, 7 42 50 10
 check "Anti Kick", 6, 7 52 50 10
 list 7, 84 10 77 50, size
 text "Canais", 8, 85 1 25 8
 button "Add", 9, 86 61 29 9
 button "Remove", 10, 129 61 30 9
}

 

Usando o Dialog

 

Para usar os dialogs, usamos eventos. Os eventos, como muitos já conhecem, são chamadas à blocos de códigos, que são executados quando o usuário clica em um botão, edita um texto, abre o dialogo, etc.

Os eventos mais conhecidos, são: Init, SClick e Edit.

Estes, respectivamente, são chamados quando o usuário abre o dialog, clica em alguma coisa ou edita algum texto (de uma editbox, chamada também de textbox).

 

Para usa-los, é simples. Aqui vai a sintaxe de cada um:

 

;--- Evento Init ----
on *:dialog:[nome_do_dialogo]:Init:0: {
; codigos
}

;--- Evento SClick ----
on *:dialog:[nome_do_dialogo]:SClick:[objeto]: {
; codigos
}

;--- Evento Edit ---
on *:dialog:[nome_do_dialogo]:edit:objeto: {
; codigos
}

 

Como usa-los?

Bem, antes temos de saber identificar os parâmetros. Aqui vão:

[nome_do_dialogo] -> É o nome atribuido ao dialogo. Para encontralo, localize a linha do código do dialogo: dialog [nome] { . Onde está nome, será o nome do dialogo.

[objeto] -> É o ID do objeto no dialog. Cada dialogo possui um grupo de objetos (botões, editboxes, listas, etc), e cada um deles possui um número (ID) diferente. Quando você montou seu dialogo e copiou o código, você deve ter reparado que os objetos estão criados assim: [nome_do_objeto] [iD], [parametros] . Onde se encontra [iD], é o ID do objeto.

 

 

Adicionando códigos

 

Essa é a parte mais difícil. Porém, vocês verão que é bem simples.

Bem, já sabemos como montar os eventos, como montar o dialogo... E agora tio boleta, que que agente fazemos?

Bom, para ensinar a usar, vou tomar de exemplo aquele dialogo de proteções que eu postei uma SS lá em cima.

 

1º Passo

Atribua o nome protdialog ao seu dialogo (já fizemos isso).

Crie um evento Init para o ele:

on *:dialog:protdialog:init:0:{

}

 

Dentro disso, adicione o seguinte código:

if (%pAntiSNicks == 1) { did -c $dname 2 } 
if (%pAntiTOver == 1) { did -c $dname 3 }
if (%pAntiFlood == 1) { did -c $dname 4 }
if (%pAntiBan == 1) { did -c $dname 5 }
if (%pAntiKick == 1) { did -c $dname 6 }

 

O código acima irá mudar o estado das CheckBoxes que adicionamos no dialogo. Elas irão dizer se as proteções representadas pelo dialogo estão ativadas ou não. Para isso, usei um variavel para cada proteção, onde armazeno os valores da checkbox. Caso esse valor seja 1, ele marca a checkbox.

 

PS: $dname retorna o nome do dialogo, para não termos que escrever protdialog várias vezes.

 

2º Passo

Crie um evento click:

on *:dialog:protdialog:sclick:*: {

}

Note que usei * como objeto. Isso significa que ele irá chamar o evento toda vez que algum objeto for clicado no dialogo.

 

Dentro disso, adicione:

if ($did == 2) { %pAntiSNicks = $did($dname, 2).state }
if ($did == 3) { %pAntiTOver = $did($dname, 3).state }
if ($did == 4) { %pAntiFlood = $did($dname, 4).state }
if ($did == 5) { %pAntiBan = $did($dname, 5).state }
if ($did == 6) { %pAntiKick = $did($dname, 6).state }

 

O código acima fará com que as variaveis assumam o valor marcado pelo usuário, nas checkboxes. Note que user $did para verificar o ID do objeto que está sendo clicado, e que usei $did($dname, ID).state para pegar os valores da checkbox. Estes, retornarão 0 quando desmarcada, e 1 quando marcada.

 

 

3º Passo

 

Agora já temos o sistema de marcar as checkboxes pronto. As proteções eu não vou postar aqui. Quem quiser faze-las, fique a vontade, pois esta aula é apenas representativa.

 

Agora, vamos mexer na lista de canais. Estes serão os canais onde iremos aplicar nossas proteções. Vamos lá:

 

Crie outro evento clique, para manipularmos o botão de Adicionar canais:

on *:dialog:protdialog:sclick:9: {

}

 

Dentro dele, adicione:

%vChannel = $$?="Adicione o nome do canal"
if (%vChannel != $null) {
%vChannel = $iif($left(%vChannel,1) == $chr(35),%vChannel,$chr(35) $+ %vChannel)
if (!$findtok(%dList,%vChannel,44)) {
%dList = $addtok(%dList,%vChannel,44)
}
}

 

Acima, usei uma variavel (%dList) para armazenar a lista de canais. Nela, usei Tokens, que é um grupo de funções onde manipulamos textos, com separadores. Não vou abordar como se usa tokens aqui, só vou mostrar onde eles vão fazer o que.

 

Na primera linha, eu crio uma caixa de mensagem onde o usuário digita o canal à adicionar.

Na segunda linha, verifico se o usuário inseriu algum valor na caixa de mensagem.

Na terceira linha, eu verifico se o primeiro caracter da esquerda, presente no canal digitado pelo usuário é igual ao caracter da tabela ASCII de número 35 (#). Caso não for, ele adiciona o caracter à variavel.

Na quarta linha, eu uso o token $findtok para verificar se o canal já está presente na lista.

Caso todas as condições estabelecidas forem aceitas, a quinta linha de código adiciona o canal na lista, com o método $addtok.

 

 

4º Passo

 

Agora que já criamos o código para adicionar um canal, vamos criar um código para remover o canal selecionado na lista.

Crie um evento click para o botão com ID = 10:

on *:dialog:protdialog:sclick:10: {

}

 

Dentro dele, adicione o seguinte código:

%vSel = $did($dname,7).seltext
if (%vSel != $null) {
%dList = $remtok(%dList,$%vSel,44)
}

 

Este código é bem simples. Nele, pegamos o valor selecionado na lista e verificamos se este valor não é nulo. (1ª e 2ª linhas)

Na terceira linha, removemos o canal com o método $remtok.

 

 

5º Passo

 

Legal tio boleta. E agora, como fazemos para transferir os canais da variável para a lista?

Esse também é bem simples. Montei uma função para atualizar listas. Aqui vai ela:

 

alias atualisalista {
 %vListAdd = 1 
 did -r $1 $2
 while (%vListAdd <= $numtok($3,44)) {
did -a $dname $2 $gettok($3,%vListAdd,44)
inc %vListAdd
 }
}

 

Para usarmos, temos a seguinte sintaxe: //atualisalista Dialogo Objeto Variavel

Então, o que faremos? Iremos ao evento Init e aos eventos dos dois botões (Add e Remove) e adicionaremos no fim de cada código:

//atualisalista protdialog 7 %dList

 

E está pronto! O resultado final ficará mais ou menos assim:

04222007122548ib0.jpg

http://img150.imageshack.us/img150/7034/04...07122548ib0.jpg

 

 

PS: Não liguem para o CheckBox "Em todos" que está presente nas screenshots, pois não foi necessário usa-lo.

 

 

Bom, espero que tenham gostado. Qualquer dúvida, estou ao dispor.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites
!Jã!    0
!Jã!

Uia xD

 

Ótimo tuto, uma pena q eu n saiba fazer nem metade do que tem aí sHUASAUSHas

Mas gostei fih ^^

 

 

Parabéns pela paciência ASHUASHuashsa

 

Abraços,

!Jã!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ninja X    0
Ninja X

Bom tutorial...

 

Mais sei lá, achei meio confuso wacko.gif

 

Eu consegui entender só algumas coisas, mais acho que para iniciantes, eles vão achar meio confuso.

 

<~Lekz~>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Archangel    0
Archangel

Tchuouuuuuuuuuu!!! =DDD

Very god a lot bagarai! x)

 

Muito bom Boleta biggrin.gif

Bem explicado, demostrado..

 

 

APROVADO

 

É bom ver que estais crescendo no mIRC Scripting ^^

Continue assim!

 

Lembrando que esse tutorial é para aqueles que ja tem uma noção de mIRC Scripting.

Os iniciantes não irão intender muito bem...

 

 

Abraço a todos.

 

 

 

 

 

 

Your,

Vampire~

Compartilhar este post


Link para o post
Compartilhar em outros sites
SainT Hugo    0
SainT Hugo

Cara apesar de não entender nem metade do que tem ae ahueauehaue admiro seu trabalho, lembro de quando usei seu ip changer pra 7.6 ainda =]

 

Parabens, você realmente manja.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
T l l S    0
T l l S

owowwwwwwwwwwwwwww

 

ta rox boleta...vlw me ajudo...

 

soh uma sugestao...

 

tu poderia falar on cria eventos:

click e outros...faculitara melhor

 

flw biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
Canhao Revenger    0
Canhao Revenger

mano n entendi direito

mais msm assim vlw biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×