[mIRC Scripting] ADDON ANTI NICK FLOOD

Richieste per scripts, codici, software e quant'altro saranno pubblicate in questa sezione del forum. Hai una richiesta? Pubblicala qui!
Rispondi
Avatar utente
YodAlex
Messaggi: 43
Iscritto il: 25/04/2022, 13:29

Ho questa addon (kick se si cambia nick 3 volte in 30 secondi):

Codice: Seleziona tutto

on @*:NICK:{
  if ($newnick == $me) && ($newnick !ison == #`Chandra_Area51) { halt }
  inc %nnnn. [ $+ [ $wildsite ] ] | .timer 1 30 unset %nnnn. [ $+ [ $wildsite ] ] 
  if (%nnnn. [ $+ [ $wildsite ] ] >= 3) { 
    set %ch.n 0 
    :kicknew
    inc %ch.n 
    set %chchch $comchan($newnick,%ch.n)
    if (%chchch == $null) { goto end }
    if ($me !isop %chchch) { goto kicknew } 
    if ($newnick isop %chchch) || ($newnick isvo %chchch) { goto kicknew }
    if (%chchch != $null) { ban -u180 %chchch $newnick 2 | kick %chchch $newnick Nick Flood | goto kicknew }
    goto kicknew 
    halt
    :end
    unset %ch.n %chchch
  }
}
Ovviamente ha effetto in tutti i canali dove sono livello @.
Se volessi che avesse effetto solo nel canale #CHANNEL (anche se sono in altri canali) ?
Grazie
"E' meglio tacere e dare l'impressione di essere scemi , piuttosto che aprire la bocca e togliere ogni dubbio."
Avatar utente
Dragone2
Amministratore
Messaggi: 150
Iscritto il: 30/07/2014, 18:35
Località: Italia
Contatta:

Ciao, come ti dissi, se usassi David-Bot, in particolare, lo script "protezione-chan.mrc" avresti già molte delle cose che chiedi configurate.

In particolare, stai chiedendo di re-implementare la gestione del Nick Flood presente su David-Bot.

Te la riporto qua:

Codice: Seleziona tutto

on *:NICK:{
  var %i = 1
  while (%i <= $comchan($newnick,0)) {
    if ($gettok(%protections.nick. [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ],1,44) == 1) {
      if ($newnick !isop $comchan($newnick,%i)) && ($newnick !ishop $comchan($newnick,%i)) && ($newnick != %ownernick. [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ]) && ($newnick != %proprietario. [ $+ [ $network ] ]) && ($istok(%protections.exception. [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ],$newnick,32) == $false) {
        var %maxnick $gettok($gettok(%protections.nick. [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ],2,44),1,58)
        var %time $gettok($gettok(%protections.nick. [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ],2,44),2,58)
        var %doinc inc -u $+ %time $chr(37) $+ nickflood. [ $+ [ $address($newnick,2) ] ] [ $+ . ] [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ]
        %doinc
        if (%nickflood. [ $+ [ $address($newnick,2) ] ] [ $+ . ] [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ] == %maxnick) {
          notice $newnick Smetti di cambiare nick o verrai bannato da $comchan($newnick,%i) $+ ! - %logo
        }
        if (%nickflood. [ $+ [ $address($newnick,2) ] ] [ $+ . ] [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ] > %maxnick) {
          kickclones $newnick $comchan($newnick,%i)
          ban -ku300 $comchan($newnick,%i) $newnick 2 Nick Flood - %logo
          unset %nickflood. [ $+ [ $address($newnick,2) ] ] [ $+ . ] [ $+ [ $comchan($newnick,%i) ] ] [ $+ . ] [ $+ [ $network ] ]
        }
      }
    }
    inc %i
  }
}
In sostanza, il trucco sta nel recuperare il canale tramite $comchan() e vedere se su quel canale è attiva la protezione dal nick flood.

Nel tuo caso, potresti fare un controllo sulla variabile %chchch estendendo l'if:

Codice: Seleziona tutto

if (%chchch != $null) && (%chchch == #MioCanaleAbilitato) { ban -u180 %chchch $newnick 2 | kick %chchch $newnick Nick Flood | goto end }
N.B.: visto che sarà vero solo per il tuo canale abilitato, ha senso fare direttamente: "goto end", in modo da interrompere il ciclo realizzato con i goto.
Immagine
Rispondi