Untitled Document
mIRC in Italiano - Script - Forum - Imposta come Home Page - Aggiungi ai Preferiti - Home - Chat
Utenti connessi: - Visitatori oggi: - Visitatori totali: - Pagine viste oggi:


NewsLetter


localmirc
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----

-
----
-
-
-
-
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----
-
----

----
Creare una IAL (CIUL)
###########################################
# #
# Guida su come creare una IAL (CIUL) personalizzata,e non usare quella di mIRC #
# CIUL (Complete Info User List) by smn #

# #
# Comandi: /who <chan|nick> <register> (il parametro register è opzionale) #
# /_hadd <hash> <item> <data> aggiunge un elemento ad una Hash Table (il parametro data è opzionale) #
# #
# Eventi On join Per registrare un nick #
# (se sono io a joinare, registra #
# l'intero canale) #
# On part Per eliminare un nick #
# On kick Per eliminare un nick #
# On quit Per eliminare un nick #
# On nick Per cambiare la registrazione di #
# un nick con il nuovo nick #
# #
# Identificatori: $_address(<chan>,<nick>,<cid>) Restituisce l'indirizzo 127.0.0.1 #
# $_fulladdress(<chan>,<nick>,<cid>) Restituisce tutto l'indirizzo nick!user@127.0.0.1 #
# $_realname(<chan>,<nick>,<cid>) Restituisce il realname This is my realname #
# $_ident(<chan>,<nick>,<cid>) Restituisce l'ident ~id #
# $_server(<chan>,<nick>,<cid>) Restituisce il server irc.smn.it #
# Identificatori Match: #
# $_mfulladdress(<chan>,<fulladdress>,<cid>,<N>) Restituisce l'Nesimo fulladdress trovato,N = 0 resituisce il totale dei nick #
# $_maddress(<chan>,<address>,<cid>,<N>) Restituisce l'Nesimo address trovato, N = 0 restituisce il totale dei nick trovati #
# $_mident(<chan>,<ident>,<cid>,<N>) Restituisce l'Nesimo ident trovato, N = 0 restituisce il totale dei nick trovati #
# $_mserver(<chan>,<server>,<cid>,<N>) Restituisce l'Nesimo server trovato,N = 0 restituisce il totale dei nick trovati #
# $_mrealname(<chan>,<realname>,<cid>,<N>) Restituisce l'Nesimo realname trovato,N = 0 restituisce il totale dei nick trovati #
# #
# Raw usati: 352 Per registrare #
# 315 Per la conclusione di una registrazione #
# #
# P.S. Tutti gli identificatori match, lavorano con la seguente stringa <nick match>, e tutti hanno la proprietà .nick #
# Se la proprieta nick è specificata, il valore dell'identificatore match sarà quello del nick, se la proprietà non è specificata #
# restituirà come valore il match specificato #
# #
# Esempio #
# $_mfulladdress(#smn,*!*boo@*,1,1) Restituisce l'indirizzo del primo nick trovato avente la mask *!*boo@* nel suo fulladdress #
# $_mfulladdress(#smn,*!*boo@*,1,1).nick Restituisce il nick del primo nick trovato avente la mask *!*boo@* nel suo fulladdress #
# Cosi è anche per tutti gli altri IDENTIFICATORI MATCH #
# #
###########################################

alias _address return $gettok($gettok($hget($+($1,~,$3),$2),1,166),2,64)
alias _ident return $gettok($hget($+($1,~,$3),$2),2,166)
alias _realname return $gettok($hget($+($1,~,$3),$2),4,166)
alias _fulladdress return $gettok($hget($+($1,~,$3),$2),1,166)
alias _server return $gettok($hget($+($1,~,$3),$2),3,166)
alias _nick return $gettok($_fulladdress($1,$2,$3),1,33)
alias _hadd .hadd -sm $1-

alias _mfulladdress {

var %a = $+($1,~,$3),%g = $+($2,*),%i = 0,%t = $hget(%a,0).item,%tot,%tot1
;dichiaro la variabile %a per l'hash del canale,%g il wildcard match,%i è l'indicatore,%tot il numero totale di utenti nella hash del canale,%tot,%tot1

while (%i < %t) {
;entro nel ciclo

inc %i

if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),1,166)) && (!$4) { inc %tot }
;se il wildcard da trovare si trova negli indirizzi e il parametro $4 non esiste (uguale a 0),inc la var %tot che restituirà il totale dei

if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),1,166)) { inc %tot1 }
;se il wildcard da trovare si trova negli indirizzi, incrementa la var %tot1. Questo passo serve se il parametro $4 è specificato

if ($4) && (%tot1 == $4) { var %f = $hget(%a,%i).item $gettok($hget(%a,$hget(%a,%i).item),1,166) | return $gettok(%f,$iif(($prop),1,2-),32) }
;se $4 esiste (non è uguale a 0) e %tot1 (il N numero da cercare tra il totale trovati con il match %g) è uguale a $4 (il N che abbiamo specificato)
;creo la var %f uguale al <nick> <match> e ritorna come valore l'inidirizzo,se la proprietà .nick è specificata, restituisce come valore il nick dell'utente

}
return %tot
;questo restituisce il valore degli utenti totali trovato con il wildcard match (%g) nel caso il parametro $4 sia uguale a 0
}

;gli altri alias per la ricerca funzionano allo stesso modo, cambia solo l'uso dei token

alias _maddress {
var %a = $+($1,~,$3),%g = $+($2,*),%i = 0,%t = $hget(%a,0).item,%tot,%tot1
while (%i < %t) {
inc %i
if (%g iswm $gettok($gettok($hget(%a,$hget(%a,%i).item),1,166),2,64)) && (!$4) { inc %tot }
if (%g iswm $gettok($gettok($hget(%a,$hget(%a,%i).item),1,166),2,64)) { inc %tot1 }
if ($4) && (%tot1 == $4) { var %f = $hget(%a,%i).item $gettok($gettok($hget(%a,$hget(%a,%i).item),1,166),2,64) | return $gettok(%f,$iif(($prop),1,2-),32) }
}
return %tot
}
alias _mident {
var %a = $+($1,~,$3),%g = $+($2,*),%i = 0,%t = $hget(%a,0).item,%tot,%tot1
while (%i < %t) {
inc %i
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),2,166)) && (!$4) { inc %tot }
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),2,166)) { inc %tot1 }
if ($4) && (%tot1 == $4) { var %f = $hget(%a,%i).item $gettok($hget(%a,$hget(%a,%i).item),2,166) | return $gettok(%f,$iif(($prop),1,2-),32) }
}
return %tot
}
alias _mserver {
var %a = $+($1,~,$3),%g = $+($2,*),%i = 0,%t = $hget(%a,0).item,%tot,%tot1
while (%i < %t) {
inc %i
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),3,166)) && (!$4) { inc %tot }
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),3,166)) { inc %tot1 }
if ($4) && (%tot1 == $4) { var %f = $hget(%a,%i).item $gettok($hget(%a,$hget(%a,%i).item),3,166) | return $gettok(%f,$iif(($prop),1,2-),32) }
}
return %tot
}
alias _mrealname {
var %a = $+($1,~,$3),%g = $+($2,*),%i = 0,%t = $hget(%a,0).item,%tot,%tot1
while (%i < %t) {
inc %i
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),4-,166)) && (!$4) { inc %tot }
if (%g iswm $gettok($hget(%a,$hget(%a,%i).item),4-,166)) { inc %tot1 }
if ($4) && (%tot1 == $4) { var %f = $hget(%a,%i).item $gettok($hget(%a,$hget(%a,%i).item),4-,166) | return $gettok(%f,$iif(($prop),1,2-),32) }
}
return %tot
}

;Raw per registrare i nick
raw 352:*:{
;creo la variabile %b, che sarà l'id della connessione di mIRC (solo se il who si fà sul canale), e la variabile %a che farà riferimento all'hash table dove registreremo tutti gli indirizzi

var %b = $window($2).cid,%a = $+($2,~,%b)

;a questo punto, se il parametro $2 è uguale a *, vuol dire che abbiamo fatto un who ad un nick,quindi se la variabile a lui riferita esiste, vuol dire che non dovrà essere registrato
;e di conseguenza se la variabile è on, visualizziamo la risposta del server

if ($2 == *) && (%who [ $+ [ $6 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] == on) { echo -a $6 - $6 $+ ! $+ $3 $+ @ $+ $4 - $5 - $6- | halt }

;se il parametro $2 è un canale e la variabile riferita al canale è on, allora visualizziamo i messaggi del server

if ($2 ischan) && if (%who [ $+ [ $2 [ $+ [ ~ [ $+ [ %b ] ] ] ] ] ] == on) { echo -a $2 - $6 $+ ! $+ $3 $+ @ $+ $4 - $5 - $6- | halt }

;se $2 è un canale, e non controlliamo la variabile, segeuendo una logica,solo questa seconda condizione andrà in funzione,per cui registriamo tutte le informazioni nel seguente modo
; _hadd (canale~cid) nick nick!user@host ¦ ident ¦ server ¦ realname (tutto nella hash tables)

if ($2 ischan) { _hadd %a $6 $6 $+ ! $+ $3 $+ @ $+ $4 ¦ $3 ¦ $5 ¦ $9- }

;altrimenti, sempre seguendo la logica delle condizioni, ci troveremo davanti ad un who su un nick, da registrare (es. on join)

else {

;eseguo un while per aggiungere il nick in tutte le hash dei canali (questo code è usato quando per caso il nick entra in + canali dove ci troviamo in rapida successione)

var %i = 0,%t = $comchan($6,0)
while (%i < %t) { inc %i | var %d = $window($comchan($6,%i)).cid,%c = $+($comchan($6,%i),~,%d) | _hadd %c $6 $6 $+ ! $+ $3 $+ @ $+ $4 ¦ $3 ¦ $5 ¦ $9- }
}

;fermo il raw

halt
}
raw 315:*:{

;creo le variabili per l'id,e il calcolo dei secondi (in millisecondi)

var %a = $window($2).cid,%ticks = %ticks [ $+ [ $2 [ $+ [ $cid ] ] ] ]

;se il parametro $2 è un canale, e la variabile a cui fa riferimento il canale è settata su on, allora visualizzo il messaggio di fine who e cancello la variabile

if ($2 ischan) && (%who [ $+ [ $2 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] == on) { echo -a $2- | unset %who [ $+ [ $2 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] | halt }

;se invece, il parametro $2 è un canale,ma la variabile non è settata su on (nella condizione non viene controllato,perchè nella condizione precedente in caso di variabile on, c'è halt), allora visualizzo la durata della registrazione della IAL del canale

if ($2 ischan) {
echo $2 -
echo $2 Lista Nick,Server,FullAddress,Address,Realname per $+($2,/,$scid(%a).server) Finita in $calc(($ticks - %ticks) / 1000) secs.
echo $2 -

;cancello la variabile per il calcolo dei secondi

unset %ticks [ $+ [ $2 [ $+ [ $cid ] ] ] ]

;fermo il raw

halt
}

;se il parametro $2 non è un canale, e la variabile a cui fà riferimento il nick è settata su on, allora visualizzo il messaggio e cancello la variabile

if ($2 !ischan) && (%who [ $+ [ $2 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] == on) { echo -a $2- | unset %who [ $+ [ $2 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] | halt }

;P.S. (avrete notato, che la condizione per controllare se il who è fatto ad un nick registrato non esiste,questo perchè nel nostro caso, il messaggio del server viene registrato, perchè non serve
;fermo il raw

halt
}

;Passiamo ora agli eventi

on *:KICK:#:{
scid $cid

;mi trovo la hash, e attribuisco alla variabile %c il nome della hash

var %c = $+($chan,~,$window($chan).cid)

;cancello il nick dalla hash (con il comando .hdel)

.hdel -s %c $knick

;fermo l'evento

halt
}

on *:JOIN:#:{

;controllo al join, se il nick che joina è il mio

if ($nick == $me) {

;con scid $cid, indico a mIRC che tutti i comandi eseguiti, saranno svolti solo per quell'id (cioè $cid)

scid $cid

;setto nella variabile il valore di $ticks

set %ticks [ $+ [ $chan [ $ticks [ $cid ] ] ] ] $ticks

;eseguo il comando who, con il parametro -register (ATTENZIONE, IL COMANDO WHO DI MIRC NON HA IL PARAMETRO REGISTER, BISOGNA MODIFICARE IL COMANDO!!!)

who $chan -register
}

;altrimenti, se il nick non è il mio

else {
scid $cid

;eseguo il who sul nick che entra, registrandolo

who $nick register
}
}


on *:PART:*:{

;mi trovo l'id del canale,e l'hash table

var %a = $window($chan).cid,%b = $+($chan,~,%a)

;indico che i comandi devono essere eseguiti solo per l'id $cid (l'id dell'evento)

scid $cid

;se il nick è mio, cancello la hash tables

if ($nick == $me) { .hfree %b }

;se il nick non è il mio, cancello il nick dalla hash tables

if ($nick != $me) { .hdel %b $nick }

halt
}

;Questo è il comando who modificato

alias who {

;se il parametro $2 è uguale a -register, allora esegue il who, registrando i nick (vedi i raw)

if ($2 == -register) { .raw who $1 | halt }

;se il parametro $2 non esiste, setta la variabile riferita al nick o al canale su on, ed esegue il who, e visualizza i messaggi (vedi i raw)

if (!$2) { set %who [ $+ [ $1 [ $+ [ ~ [ $+ [ $cid ] ] ] ] ] ] on | .raw who $1 | halt }
}

;Questi 2 eventi, li ho separati dagli altri, perke, a differenza degli altri, essi non hanno l'identificatore $chan, di conseguenza dovremo eseguire un ciclo e controllare i canalie, vediamo :P

on *:QUIT:{

;dico a mIRC di eseguire i comandi solo per quell'id
scid $cid

;creo le variabili, una sarà l'indice del ciclo, l'altra il num totale dei canali in comune con il nick ($nick)

var %i = 0,%t = $comchan($nick,0)

;entro nel ciclo

while (%i < %t) {

;incremento l'indice di 1 (se nn è specificato il valore di incrementazione, di default si incrementa di 1)

inc %i

;nella variabile %c inserisco l'id del canale

var %c = $window($comchan($nick,%i)).cid

;e poi cancello nella hash table il $nick

.hdel -s $+($comchan($nick,%i),~,%c) $nick
}

;fermo l'evento

halt
}

on *:NICK:{

;dico a mIRC di eseguire i comandi solo per quell'id

scid $cid

;creo le variabili, l'indice e il totale dei canali con il nick (in questo caso si usera $newnick, cioè il nuovo nick)

var %i = 0,%t = $comchan($newnick,0)

;entro nel ciclo

while (%i < %t) {

;incremento l'indice

inc %i

;creo la variabile %c con l'id del canale,%n avrà come valore tutte le informazioni del nick trovate nella hash table del canale

var %c = $window($comchan($newnick,%i)).cid,%n = $gettok($hget($+($comchan($newnick,%i),~,%c),$nick),2-,33)

;qui cancello il vecchio nick dalla hash table

.hdel -s $+($comchan($newnick,%i),~,%c) $nick

;e qui aggiorno le informazioni aggiungendo alla hash table del canale il nuovo nick, con tutte le informazioni che aveva con il nick precedente

_hadd $+($comchan($newnick,%i),~,%c) $newnick $newnick $+ ! $+ %n
}

;fermo l'evento

halt
-




  Ultime dal forum mIRC Scripting

Vai al forum
Ultimi script e addon inseriti
Diablo III (14624)
Fancazzista Scr... (18764)
Sensuality scri... (7622)
Grand Theft Aut... (5154)
Stealth Script ... (8382)
-SagittarioScri... (18835)
Paradise Script (13753)
Trivia Game 200... (11882)
Ircap Script 8.... (5191)
RawScript 2.0 (8481)


 

 



Cerca nel sito

Le ultime news:



Sondaggio
Cosa vorresti di nuovo?

Risultati | Archivi

Statistiche Download
Database:
283 Files
241 Mb
Scaricati:
2659868 Files
Totale: 5615348Mb

Upload
Hai realizzato uno Script? Una addon? Una tcl? Un articolo? Qualsiasi cosa? Mandacelo ora! Utilizza il form upload per inviarci il tuo materiale e se lo riteniamo idoneo lo vedrai pubblicato nel portale!
[ Upload ]

Chat
Inserisci il tuo nick:



| Contattaci | Pubblicità | Staff |
Il presente materiale è Copyright TuttoIRC.it 2005. Leggi il Disclaimer