Boleta 1 #1 Postado 22 Abril, 2007 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: 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: 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: 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 #2 Postado 22 Abril, 2007 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 #3 Postado 22 Abril, 2007 Bom tutorial... Mais sei lá, achei meio confuso 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 #4 Postado 22 Abril, 2007 Tchuouuuuuuuuuu!!! =DDD Very god a lot bagarai! x) Muito bom Boleta 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 #5 Postado 22 Abril, 2007 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 #6 Postado 24 Abril, 2007 owowwwwwwwwwwwwwww ta rox boleta...vlw me ajudo... soh uma sugestao... tu poderia falar on cria eventos: click e outros...faculitara melhor flw Compartilhar este post Link para o post Compartilhar em outros sites
Canhao Revenger 0 #7 Postado 2 Julho, 2007 mano n entendi direito mais msm assim vlw Compartilhar este post Link para o post Compartilhar em outros sites