mIRC Scripting

DekkeR

Power Member
Ora vamos lá ver se há aqui alguém entendido na matéria :P

A minha ideia é fazer aparecer uma caixa de diálogo e identificar o nick quando aparece a mensagem: "Nick registado e protegido! Se e' seu escreva /NickServ IDENTIFY password. Tem cerca de um minuto para o fazer ou mudar de nick"

Fazer aparecer a caixa já eu fiz, o problema é mesmo identificar o nick porque ele não reconhece o que eu escrevi na caixa de texto.

Código:
dialog a.id {
  title "Password Window"
  size -1 -1 330 110

  text "Escreva a password do seu nick:",01,13 20 300 40, center
  edit "",02, 13 40 300 20, autohs %nickpass

  button "Ok",03,60 70 80 22,ok
  button "Cancel",04,190 70 80 22,cancel
}

on *:dialog:a.id:sclick:03:{ nickserv identify %nickpass }

No manual de ajuda está isto:
Variables
If you specify a %variable name in a dialog item definition, the %variable will be set with the contents of that item when the dialog is closed.

edit "", 2, 10 10 100 20, autohs %result

Ora.. foi isso que eu fiz aqui:
edit "",02, 13 40 300 20, autohs %nickpass

O problema está na atribuição da variável %nickpass, porque depois de eu fechar a janela aparece a mensagem "-NickServ- Sintaxe: IDENTIFY password - /NickServ HELP IDENTIFY para ajuda."

Será que há alguém que perceba disto aqui no meio dos programadores todos ? ;)
 
Exprimenta estas alterações:
na dialog:
edit "",02, 13 40 300 20

e dpz:
on *:dialog:a.id:sclick:03:{ set %nickpass $did(2) | nickserv identify %nickpass }
 
ident.mrc

dentro do file
Código:
ON 1:LOAD:{
//ECHO Adddn carreregado

}
alias pass dialog -m pass pass
dialog pass {
  title "  Auto-Identify"
  size -1 -1 228 227
  box "sobre:",1,4 3 219 84
  text "Auto-Identify with NickServ. If the server you connect use the Bot NickServ, and you want to auto identify ( /msg nickserv identify pass ",2,8 17 219 218
  text "Password:",3,4 97 70 20
  edit "",4,55 94 168 20,pass
  box "Setup:",5,64 116 94 64
  radio "Ligado",6,80 128 70 25
  radio "Desligado",7,80 153 70 25
  button "Guardar",99,120 188 105 33,ok
  button " Cancelar ",100,6 188 105 33 , cancel
}
on *:dialog:pass:*:*:{
  if $devent == sclick {
    if $did == 6 { set %tentpassetup on }
    if $did == 7 { set %tentpassetup off }
    if $did == 99 { set %tentpass $did(4) } 
  }
  if $devent == init {
    .did -o pass 4 4 %tentpass
    if %tentpassetup == on { did -c pass 6 }
    if %tentpassetup == off { did -u pass 6 
      did -c pass 7 
    }
  }
}
on 1:connect:{
  if %tentpassetup == on  goto start 
  else halt 
  :start
 
ou entao
Código:
on 1:load:echo *** 10,1(0Auto Identify10)
menu channel {
  autoid:autoid
}
alias autoid dialog -m autoid autoid
dialog autoid {
  title "autoid"
  size 206 117 122 297
  box "autoid", 1, 1 0 120 295
  box "", 2, 6 15 110 80
  text "nick:", 3, 10 30 25 15
  text "pass:", 4, 10 55 25 15
  edit "", 5, 40 25 70 22, autohs
  edit "", 6, 40 50 70 22, autohs
  button "adicionar nick!", 7, 40 75 70 15
  box "", 8, 6 95 110 195
  list 9, 10 105 100 92, size
  button "del nick!", 10, 10 250 100 15
  edit "", 11, 10 200 100 22, autohs, center, read
  edit "", 12, 10 225 100 22, autohs, center, read
  check "on/off", 13, 35 270 60 15
  button "&OK", 14, 0 0 0 0, ok, hide
}
on *:dialog:autoid:init:*: { 
  if (%autoidl == on) { did -c autoid 13 }
  didtok autoid 9 32 %nick.ident 
}
on *:dialog:autoid:*:*: {
  if ($did == 7) { set %nick.ident %nick.ident $did(5) | set %pass.ident %pass.ident $did(6) | did -r autoid 9,5,6 | didtok autoid 9 32 %nick.ident }
  if ($did == 9) {
    /set %num.pass $findtok(%nick.ident,$did(9,$did(9).sel).text,1,32) 
    did -ra autoid 11 $gettok(%nick.ident,%num.pass,32)
    did -ra autoid 12 $gettok(%pass.ident,%num.pass,32)
  }
  if ($did == 10) {
    /set %num.pass $findtok(%nick.ident,$did(9,$did(9).sel).text,1,32) 
    set %nick.ident $deltok(%nick.ident,%num.pass,32)
    set %pass.ident $deltok(%pass.ident,%num.pass,32)
    did -r autoid 9
    didtok autoid 9 32 %nick.ident
  }
  if ($did == 13) { 
    if (%autoidl == on) { set %autoidl off | halt }
    if (%autoidl == off) { set %autoidl on | halt }
  }
}
on *:NOTICE:*Este nick esta registrado e protegido*:?:if (%autoidl == on) { if ($nick == nickserv) { set %num.pass $findtok(%nick.ident,$me,1,32) | /.msg NickServ IDENTIFY $gettok(%pass.ident,%num.pass,32) } }
on *:NOTICE:*This nick is owned by some*:?:if (%autoidl == on) { if ($nick == nickserv) { set %num.pass $findtok(%nick.ident,$me,1,32) | /.msg NickServ IDENTIFY $gettok(%pass.ident,%num.pass,32) } }
on *:NOTICE:*This nickname is*:?:if (%autoidl == on) { if ($nick == nickserv) { set %num.pass $findtok(%nick.ident,$me,1,32) | /.msg NickServ IDENTIFY $gettok(%pass.ident,%num.pass,32) } }
 
A alteração do turbulence chegou perfeitamente. Apenas adicionei 'pass' no final do edit para o texto da caixa aparecer escondido ;)

Fiquei foi sem perceber por que razão é que ele não guardou a variável como deve ser :confused:

Thanks aos 2 ;)
 
credo eu ja n mexo em mirc scripting ha muito tempo...

mas acho q faço isso em 3 linhas :P

on *:notice:*:*:*: {
if ($nick == NickServ && $1- == *identifique-se*) { nickserv identify $?*="Enfia a password" }
}

alguem quer testar isso ?
 
g00f3r, pensas que eu não tentei isso ? :P

Não se pode usar inputs em events.. o gajo avisa logo: " $?: cannot use in an event "
 
DekkeR disse:
g00f3r, pensas que eu não tentei isso ? :P

Não se pode usar inputs em events.. o gajo avisa logo: " $?: cannot use in an event "


de certeza? eu pudia jurar q tinha feito uma cena assim qd andava pelo irc.. vou ver se encontro qq coisa nos meus backups! ehe
 
g00f3r disse:
on *:notice:*:*:*: {
if ($nick == NickServ && $1- == *identifique-se*) { nickserv identify $pass }
}
alias pass {
return $?="Enfia a password"
}
Chamando numa função tb nao?
(Existe sp a hipotese de se fazer um timer e chamar 1 ms depois o alias.. mas tb ja nao programo mirc scripting ha tanto tempo..)
 
Mas porquê meter timers a chamar aliases e tal ? Uma dialog box fica melhor e é mais personalizável :p

Já agora faço aqui um pequeno apelo aos scripters da TZ .. se alguém se quiser juntar à equipa do Folding para melhorar o script, é só dizer ;)

Cumps
 
DekkeR disse:
Mas porquê meter timers a chamar aliases e tal ? Uma dialog box fica melhor e é mais personalizável :p

Já agora faço aqui um pequeno apelo aos scripters da TZ .. se alguém se quiser juntar à equipa do Folding para melhorar o script, é só dizer ;)

Cumps

scripts para o mirc? txii esse tempo ja la vai :D pelo menos para mim :p
 
Acho que me lembro de te ver no #mircscripts (era este o canal? o canal de ajuda..) da PTnet Turbulence.. há pelo menos... 4 anos? talvez mais
 
txii mirc scripting ao tempo
que não toco nisso deixo aqui o meu autoidentify pa quem quiser ver:

alias autoid { dialog -m autoid autoid }
dialog autoid {
title "Auto Identify"
size -1 -1 102 45
option dbu
box "", 1, 0 -1 101 32
button "Cancel", 2, 75 33 25 11, cancel
button "Ok", 3, 49 33 25 11, ok
text "Nick:", 4, 3 6 14 8
text "Password:", 5, 3 19 26 8
edit "", 6, 29 5 70 10
edit "", 7, 29 18 70 10, pass
box "", 8, 0 30 48 14
}
alias setpass { dialog -m setpass setpass }
dialog setpass {
title "Password Resquest"
size -1 -1 96 27
option dbu
edit "", 1, 1 3 94 10, pass
button "Set", 2, 42 14 26 11, ok
button "Cancel", 3, 69 14 26 11, cancel
}
on *:dialog:setpass:sclick:*:{
nickserv identify $did(1)
}
on *:dialog:autoid:sclick:*:{
if ($did == 3) {
set %nick $did(6)
set %password $encode($did(7),m)
}
}
on *:dialog:autoid:init:*:{
did -a autoid 6 %nick
did -a autoid 7 %password
}
on *:notice:*registado e protegido*:*:{
if ($nick == nickserv) && ($me isin %nick) {
nickserv identify $decode(%password,m)
}
else {
setpass
}
}
on *:notice:*password incorrecta*:*:{
if ($nick == nickserv) {
setpass
}
}
 
Se bem me lembro. =P se calhar o k falta no teu codigo original é a / ou seja:


on *:dialog:a.id:sclick:03:{ /nickserv identify %nickpass }

Não tenho a certeza mas pode ser k tenha sido esse o problema
 
Back
Topo