Salut
C'est un adon de statistique chan et chatteurs.
Donc vous aurez :
- Les statistiques de chaque chan donc totaux d'événements
- Les statistiques de chaque chatteurs
- Top chatteurs dans chaque chan
- Le top chan selon ne nombre d'événements, le plus visité, ou le plus bavard
- la possibilité d'envoyer les infos statistiques des événements du chan, ou les tops chatteurs, sur le chan
Bref ça peut ne pas être très utile pour certain et utile pour d'autres, mais mon but est de scripter et apprendre et avoir des avis.
J'utilise dans ce code des aliases qui peuvent être utilisé par plusieurs événements au lieu de faire plusieurs répétitions
J'utilise aussi les identifieur, $*, $regsubex, $event et les hash tables
Vous allez surement me parlé de $ialchan dans ban/unban, que c'est sans who #
c'est juste parce que si le chan a trop de chatteurs ça sera lourd et pour attendre la réponse ça sera moche
NB: cet addon ne doit pas etre installé dans un bot join/part si non a chaque join part vous perdez les données
a vous de voir le reste.
Source / Exemple :
; Le menu
menu status,nicklist,menubar {
-
Wstatistique V1.0
.Configurer:wstatinfo
.Désinstaller:dstatinfo
-
}
; Dialog - Le dialog
dialog wstatch {
title Statistique des chans
size -1 -1 367 349
option pixels
tab Stat général, 1, 4 112 360 240
tab Stat Chan, 2
tab Stat chatteurs, 3
list 4, 160 141 200 200, tab 1 size
combo 5, 12 168 110 70, tab 1 drop sort
button envoyer sur le chan, 6, 12 218 110 20, tab 1
text Statistique generales des chans, 7, 10 143 147 15, tab 1
text Le top des chans, 8, 11 143 100 15, tab 2
radio par nombre d'evenements, 9, 12 163 140 17, tab 2
radio par nombre de visites, 10, 12 180 140 17, tab 2
radio par le plus parlé, 11, 12 197 140 17, tab 2
text Les chans sont classés par ordre croissant selon l'option sélectionné, 12, 13 248 147 45, tab 2
list 13, 160 141 200 200, tab 2 size
text Statistique des chatteurs, 14, 10 143 125 15, tab 3
combo 15, 12 168 110 70, tab 3 drop sort
radio Top des chatteurs, 16, 10 198 120 17, tab 3
button envoyer sur le chan, 17, 12 218 110 20, tab 3
radio Evenement des chatteurs, 18, 10 256 150 17, tab 3
combo 19, 12 276 110 70, tab 3 drop sort
list 20, 160 141 200 200, tab 3 size
icon 21, 0 0 365 111, statistique.gif, 0 noborder
}
; Dialog - les evenements du dialog
on *:dialog:wstatch:*:*:{
if ($devent == init) {
didtok $dname 5,15 32 $hget(chan,chan)
did -c $dname 5,9,15,16 1
nicklist
did -c $dname 19 1
winfoch
wtopchi
wtopn
}
if ($devent == sclick) {
if ($did == 5) winfoch
elseif ($did == 6) wenvoi
elseif ($istok(9.10.11,$did,46) wtopch
elseif ($did == 15) {
did -r $dname 19
loadbuf -o $dname 19 $did(15).seltext
did -c $dname 19 1
$iif($did(16).state,wtopn,wlist)
}
elseif ($did == 16) wtopn
elseif ($did == 17) wenvoi
elseif ($did == 18) wlist
elseif ($did == 19) && ($did(18).state) wlist
}
}
; Dialog - Alias - alias pour l'ouverture du dialog
alias wstatinfo dialog $iif($dialog(wstatch),-v,-m wstatch) wstatch
; Dialog - Alias - alias pour envoyer les resultats vers le chan
alias wenvoi {
var %id $iif(($did(16).state) && ($did == 17),20,$iif(($did == 6),4))
if (%id) {
tokenize 149 $iif(%id == 4,Statistique des evenements de $+($chr(3),7,$chr(44),0,$did(5).seltext,$chr(3)),$reptok($wd(%id,1),$wildtok($wd(%id,1),#*,1,32),$+($chr(3),7,$chr(44),0,$wildtok($wd(%id,1),#*,1,32),$chr(3)),1,32)) $+($chr(3),12,$chr(44),0,$wd(%id,2) $wd(%id,3),$chr(3)) ? $iif(%id == 4,$iif($hget($did(5).seltext,evenement),ce chan a $+(eut,$chr(3),4,$chr(44),0) $ifmatch $+($chr(3),12,$chr(44),0,evenement),ce chan n'a eut),$iif($did(%id).lines > 13,Les TOP 10 sont,Le resultat)) $+ $regsubex($str(x,$did(%id).lines),/x/g,$iif($wd(%id,\n) != $chr(45),$iif((\n > 3) && (\n < 24),$chr(44) $+($chr(3),14,$chr(44),0,$wd(%id,\n),$chr(3),4,$chr(44),0))))
msg $iif(%id == 4,$did(wstatch,5).seltext,$did(wstatch,15).seltext) $+ 12,0 $*
}
}
alias wd return $did(wstatch,$1,$2)wd return $did(wstatch,$1,$2)
; Dialog - Alias - ces 4 alias permettent de remplir les lists du dialog pour voir les resultats des données demandé
; pour les info du chan
alias winfoch {
if ($did(5)) {
didtok -ra wstatch 4 149 $+(info chan $did(5).seltext,?,$hget($did(5).seltext,debut),?,au $date à $time)
var %event text notice action join part voice devoice op deop kick ban unban
didtok wstatch 4 149 $regsubex($str(x,$wildtok(%event,*,0,32)),/x/g,$iif($hget($did(5).seltext,$gettok(%event,\n,32)),$gettok(%event,\n,32) $ifmatch) $+ $chr(149))
if ($did(4).lines < 4) did -a wstatch 4 Aucun evenement!!
}
else did -ra $dname 4 La liste des chans est vide!!
}
;_________________________fin winfoch_______________________________
; pour la liste des top chan
alias wtopchi {
did -ra wstatch 13 top chan $did(9)
didtok wstatch 13 32 $wch(9)
if ($did(13).lines < 2) did -a wstatch 13 Aucun resultat trouvé!!
}
alias wtopch {
did -ra wstatch 13 top chan $did($v1)
didtok wstatch 13 32 $wch($v1)
if ($did(13).lines < 2) did -a wstatch 13 Aucun resultat trouvé!!
}
alias wch {
var %ch $hget(chan,chan),%i $wildtok(%ch,*,0,32),%final
if ($1 == 9) var %v evenement
elseif ($1 == 10) var %v join
elseif ($1 == 11) var %v text
tokenize 32 %ch
while (%i) var %r %r $iif($hget( $eval($ $+ %i,2),$eval(%v,2)),$ifmatch $eval($ $+ %i,2)) $+ $chr(149),%i %i - 1
%final = $sorttok(%r,149,nr)
return $regsubex($str(x,$wildtok(%final,*,0,32)),/x/g,$gettok($gettok(%final,\n,149),2,32) $+ $chr(32))
}
;_________________________fin wtopch_______________________________
; pour les info d'evenement sur chaque pseudo
alias wlist {
if ($did(19)) {
didtok -ra wstatch 20 149 $+(info evenement de $did(19).seltext,?,sur le chan $did(15).seltext,?,$hget($did(15).seltext,debut),?,au $date à $time)
var %event join part voice devoice op deop kick ban unban
didtok wstatch 20 149 $regsubex($str(x,9),/x/g,$wread($gettok(%event,\n,32)) $iif($wread($gettok(%event,\n,32)) > 1,$gettok(%event,\n,32) $+ s,$iif($wread($gettok(%event,\n,32)),$gettok(%event,\n,32))) $+ $chr(149))
if ($did(20).lines < 5) did -a wstatch 20 Aucun resultat trouvé!!
}
else did -ra $dname 20 La liste des chatteurs est vide!!
}
alias wread return $iif($hget($did(19).seltext $+ $did(15).seltext,$1),$ifmatch)
;__________________________fin wlist_______________________________
; pour la liste des top des chatteurs dans chaque chan
alias wtopn {
if ($did(15)) {
didtok -ra wstatch 20 149 $+(les Top chatteurs sur $did(15).seltext,?,$hget($did(15).seltext,debut),?,au $date à $time)
wnk
if ($did(20).lines < 4) did -a wstatch 20 Aucun resultat trouvé!!
if $exists(xx.txt) {
.remove xx.txt
.remove xy.txt
}
}
else did -ra $dname 20 La liste des chans est vide!!
}
alias wnk {
var %i $lines($did(15).seltext),%n 1,%ii
while (%i) {
if ($hget($did(15).seltext,$read($did(15).seltext,%i))) {
write xx.txt $read($did(15).seltext,%i) avec $ifmatch $iif($ifmatch > 1,mots,mot)
}
dec %i
}
if $exists(xx.txt) { filter -tu 3 32 xx.txt xy.txt }
else return
%ii = $lines(xx.txt)
while (%ii) {
did -a wstatch 20 $chr(45)
did -a wstatch 20 $iif(%n == 1,%n $+ er,%n $+ e) - $read(xy.txt,%ii)
dec %ii
inc %n
}
}
;__________________________fin wtopn_______________________________
; Evenement - Alias - ici on verifie si l'evenement me conserne
alias edata {
if ($knick == $me) || (($event == part) && ($nick == $me)) {
var %sup $remtok($hget(chan,chan),#,1,32)
hadd -m chan chan %sup
hfree #
remove #
}
else sdata
}
; Evenement - Alias - ici on ajoute les données selon l'evenement effectué
alias sdata {
var %val $calc($hget(#,$event) + 1),%vale $calc($hget(#,evenement) + 1)
hadd -m # $event %val
hadd -m # evenement %vale
cnick
nchan
}
; Evenement - Alias - ici on ajoute les données pour les infos des chatteurs selon l'evenement effectué
alias cnick {
var %valn
if ($istok(join part,$event,32)) {
%valn = $calc($hget($nick $+ #,$event) + 1)
hadd -m $nick $+ # $event %valn
}
elseif ($event == kick) {
%valn = $calc($hget($knick $+ #,$event) + 1)
hadd -m $knick $+ # $event %valn
}
elseif ($istok(op deop,$event,32)) {
%valn = $calc($hget($opnick $+ #,$event) + 1)
hadd -m $opnick $+ # $event %valn
}
elseif ($istok(voice devoice,$event,32)) {
%valn = $calc($hget($vnick $+ #,$event) + 1)
hadd -m $vnick $+ # $event %valn
}
elseif ($istok(ban unban,$event,32)) {
var %i $ialchan($banmask,#,0).nick,%valn
while (%i) {
%valn = $calc($hget($ialchan($banmask,#,%i).nick $+ #,$event) + 1)
hadd -m $ialchan($banmask,#,%i).nick $+ # $event %valn
dec %i
}
}
}
; Evenement - Alias - cette alias verifie si le pseudo existe dans la liste avant de l'ajouter
alias nchan {
if $exists(#) {
var %i $lines(#)
if ($nick != ChanServ) {
while (%i) {
if ($nick == $read(#,%i)) {
var %r 1
if (%r) return
}
dec %i
}
write # $nick
}
}
else write # $nick
}
; Evenement - Alias - cette alias efface les hash tables qu'on a ajouté
alias remh {
hfree chan
tokenize 32 $hget(chan,chan)
hfree $*
var %i 3
while (%i) {
var %l $lines($eval($ $+ $eval(%i,2),2))
while (%l) {
hfree $read($eval($ $+ $eval(%i,2),2),$eval(%l,2)) $+ $eval($ $+ $eval(%i,2),2)
dec %l
}
dec %i
}
remove $*
}
; Evenement - les evenements
on *:join:#:{
if ($nick == $me) {
hadd -m chan chan $hget(chan,chan) #
hadd -m # debut du $date à $time
}
else sdata
}
on *:text:*:#:{
var %token $calc($gettok($hget(#,$nick),2,32) + $wildtok($strip($1-),*,0,32))
hadd -m # $nick %token
sdata
}
on *:part:#:edata
on *:kick:#:edata
on *:ban:#:sdata
on *:unban:#:sdata
on *:op:#:sdata
on *:deop:#:sdata
on *:voice:#:sdata
on *:devoice:#:sdata
on *:invite:#:sdata
on *:notice:*:#:sdata
on *:action:*:#:sdata
on me:*:quit:remh
on *:disconnect:remh
on *:load:return $input(WorldDMT - Statistique V1.0 a été bien installé.,o,WorldDMT - Wstat V1.0)
alias dstatinfo {
tokenize 32 $hget(chan,chan)
.remove $*
var %x $input($str($chr(1),4) Desinstallation terminé. $chr(10) Merci d'avoir bien utilisé WorldDMT - Statistique V1.0.,oi,WorldDMT - Wstat V1.0)
.unload -rs $scriptdirwstatchan
}
Conclusion :
Téléchargez le zip, loadez le fichier "wstatchan" qui se trouve dans le dossier WorldDMT
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.