Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

WORLDDMT - STATISTIQUE V 1.0


Information sur la source

Catégorie :AddOns Classé sous : WorldDMT, Statistique, addon Niveau : Initié Date de création : 26/11/2008 Date de mise à jour : 27/11/2008 17:13:44 Vu / téléchargé: 694 / 31

Note :
Aucune note

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
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

  • ; 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
  • }
; 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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

27 novembre 2008 12:29:13 :
mise a jour des com. ajout de l'alias remh
27 novembre 2008 17:13:44 :
modification sur remh

Commentaires et avis

signaler à un administrateur
Commentaire de uaip le 26/11/2008 18:47:49

Salut,
Ca a l'air sympa. Juste quelques petites fautes ^^ (dans ton screen):
"Statistiques généralES des chans"
"Le top des chanS"
"pas nombre d'événementS"
"selon l'option sélectionnéE"

Sinon j'ai regardé le code en speed, je vois pas d'absurdité (pour le moment je n'ai pas trop le temps de regarder en détail).
J'ai simplement une remarque :
ligne 153 : alias wread return $iif($hget($did(19).seltext $+ $did(15).seltext,$1),$ifmatch)
Et si le $hget() ne retourne rien, $wread ne retournera rien ? Or ça peut poser des problèmes, par exemple dans le $regsubex qui l'appelle (entre autres) :
ligne 148 : $regsubex($str(x,9),/x/g,$wread($gettok(%event,\n,32))
Non ?

signaler à un administrateur
Commentaire de WorldDMT le 26/11/2008 19:00:16

salut
non puisque j'ai mis une condition au debut

if ($did(19).seltext)

c'est ça nn?

signaler à un administrateur
Commentaire de uaip le 26/11/2008 19:19:30

Ce n'est aps parce-que le $did(19).seltext est vrai que le $hget() l'est aussi.

signaler à un administrateur
Commentaire de WorldDMT le 26/11/2008 19:22:38

je comprend mais si tu aurra le temp de regarde le code verra encore plus :)

signaler à un administrateur
Commentaire de uaip le 26/11/2008 19:26:22

Okay mais alors pourquoi ne pas faire directement :

alias wread return $hget($did(19).seltext $+ $did(15).seltext,$1)

?

signaler à un administrateur
Commentaire de WorldDMT le 26/11/2008 19:28:46

et si la liste des chan est vide?

signaler à un administrateur
Commentaire de wims le 26/11/2008 19:54:26

Ne surtout pas utiliser ce code, il effacera tout vos hash table lors d'un quit ou un disconnect.., modifie vite ca WorldDMT, je commenterai le code plus tard.

signaler à un administrateur
Commentaire de WorldDMT le 26/11/2008 20:00:23

lol non bro pas pour la hash table parceque dans levenement on part qi c'est $me ça del les info du chan

donc si tu par si on te kick ect..

signaler à un administrateur
Commentaire de wims le 26/11/2008 22:44:29

Hein ?

# on me:*:quit:hfree -w *
# on *:disconnect:hfree -w *

Si je me deconnecte de nimporte quel server, ces lignes disent que tu effaces toutes les hash table, donc ne dis pas non, ce genre de chose devrait pas arriver mais c'est pas vraiment de ta fautes, supprime ton code en attendant de poster la correction, ou poste la immediatement. J'sais pas si tu realise que en testant ton code, qqun peut perdre des heures de travail.
Et ton code n'est pas d'un niveau initie parce que tu utilises $regsubex et $* (ca a l'air d'etre une justification pour toi)

signaler à un administrateur
Commentaire de wims le 27/11/2008 01:35:27

Au niveau du code :

Ligne 55 (sur le site), tu peut utiliser $istok, idem pour les id 6 et 17 ou tu fait la même action

pour remplacer l'alias nicklist en une ligne, regarde la command /loabuf avec le switch -o

Tu n'a pas blaguer avec la ligne 90 ^^

ligne 102 103 104, pourquoi 3 did -a au lieu d'un ?
même genre de truc ligne 117, doit y'avoir moyen d'utiliser que didtok normalement
(si c'est pour la clarté du code, ok oubli ces remarques)

ligne 221 et le meme genre sur d'autre ligne, tu as bu, dsl :p la syntaxe n'est pas valide

#  tokenize 32 $hget(chan,chan)
# .remove $*

ceci est pire que le fait de delete toute les hash table, il y a possibilité d'attaque, si un *noob* utilise ton code, qqun qui sait qu'il l'utilise peut simplement lui faire ajouter un repertoire/fichier.etx dans la table, et il sera delete.Corrige ça au plus vite également.

Sinon c'est plutot bien coder, ça change, par contre je n'en aurais pas l'utilité.

signaler à un administrateur
Commentaire de tofu le 27/11/2008 09:02:28

J'ai cherché pendant plusieurs minutes dans le code avant de m'apercevoir que le graphique était un gif et non une picture windows qui aurait réellement tracé le graph d'activité du salon :(

signaler à un administrateur
Commentaire de WorldDMT le 27/11/2008 10:19:25

salut
"Si je me deconnecte de nimporte quel server, ces lignes disent que tu effaces toutes les hash table"

oui j'ai pas dis le contraire car si je me deconnecte il y aura des evenement qui ne seront pas enregistrer alors ça donnera un resulta completement faux
pareil quand tu quitte
au cas d'exit c'est automatiquement effacé c'est juste pour avoir des donnée plus préci

"Ligne 55 (sur le site), tu peut utiliser $istok, idem pour les id 6 et 17 ou tu fait la même action"

j'ai pas compris ce que tu voulais dire par là explique moi stp

"pour remplacer l'alias nicklist en une ligne, regarde la command /loabuf avec le switch -o"

oui t'a raison j'ai pourtant je connais tres bien /loadbuf et j'ai dejà utilisé dans d'autre codes :p j'avais la tete un peux loin :) merci

"Tu n'a pas blaguer avec la ligne 90 ^^" c'est mal fait?? ou cmt?? :/

"ligne 102 103 104, pourquoi 3 did -a au lieu d'un ?" oui c'est juste je vais changer aussi :) pas grave tu sais meme si tu reflechi a tout apres 300 ligne tu a tjr besoin d'une aytre personne qui te donne des remarque c'est normal :)

"ligne 221 et le meme genre sur d'autre ligne, tu as bu, dsl :p la syntaxe n'est pas valide"

wé ^^ peut etre bref j'avais testé rapidement comme ça

alias r {
   if ($event == (join || part)) {
      echo -s ok pour $event dans #
   }
}
on *:join:#:r
on *:part:#:r

ça a donne un resultat alors j'ai directement mis mais d'apres ta remarque j'ai testé autrement et je ne sais pas cmt ça avait donné ce resultat :p

mais bon ça va etre changer aussi merci

"#  tokenize 32 $hget(chan,chan)
# .remove $*

ceci est pire que le fait de delete toute les hash table,"

non ici tu te trompe mon ami le $hget() devien comme ça

tokenize 32 #chan1 #chan2 #chan3 pour prendre les nom des fichier ou la liste des nicks sont inclu

donc remove $* efface les fichier pas la hastable

regarde la ligne 249 la creation des fichier dont on parle

pour tofu
non c'est juste une gif fixe :)mais pk pas dans la version suivante wé pk pas
merci a vous tous j'attend encore d'autre coms avant de changer une fois le code
@+




signaler à un administrateur
Commentaire de WorldDMT le 27/11/2008 10:44:02

pour la ligne 221
juste une precision esque ça peut bien etre

if ($event isin join part) ??

puisqu'il n'y a pas 2 event qui se resemblent
c'est possible dans ce cas nn?

merci

signaler à un administrateur
Commentaire de wims le 27/11/2008 10:51:47

Mdr, et tu dis ca comme si c'etais normal "oui je j'efface toutes vos hash table et alors" ?

Il faut bien que tu comprenne qu'effacer toutes les hash tables n'est pas acceptable, tu doit pas repondre a cote, tu doit faire en sorte de pas ecrire ces lignes, c'est ton code qui est mal foutu, tu doit effacer uniquement les tables que tu as cree, pas les autres, t'es en plein reve, tant que tu fais ca, j'demande a l'admin qui voit ca d'effacer ta source.

Idem pour le remove $*, je sais tres bien ce que tu cherches a faire...
Je n'ai pas dis que ca ne marchais pas ni que ca effacais les hash table..., c'est juste inacceptable, relis mon commentaire, ton code permet plus ou moins d'effacer nimporte quel fichier, il suffit de faire ajouter la ou il faut (ds la table, ds le bon item) les fichiers (sans espace ok, mais quand meme inacceptable =)).Idem, ton code devrait etre efface tant qu'il y a ces lignes.

La ligne 55, tu fait if ($did == N) || ($did == N1) || (...)
tu peux remplacer ca par if ($istok(N.N1.N2...,$did,46)
et pour les id 6 et 17 tu fait exactement la meme command donc tu peux faire pareil

La ligne 90, je peux pas te dire si c'est mal fait, mais je trouve ca super bourrin, beaucoup trop, et illisible, mais c'est ton code, c'est toi qui gere.

signaler à un administrateur
Commentaire de wims le 27/11/2008 10:53:38

Encore une fois $istok serait plus propre :

if ($istok(join part,$event,32))

mais ton isin marchera parfaitement comme tu l'as dis

signaler à un administrateur
Commentaire de WorldDMT le 27/11/2008 11:04:07

ok merci bro je verrai ça je change dejà la source @+ ^^

signaler à un administrateur
Commentaire de WorldDMT le 27/11/2008 12:42:00

la source a jour

ajout de l'alias remh

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Help :) [ par jujuquatre ] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~JuJuQuArTrE s^ s^ s^ JuJu_BoT WWW.ut2004.fr.st~~~~~~~~~~~~~~~~~~~~~~~~~~~~Ben voila J'ai commencer un addon de auto-mode ( addon get + queue = ban du serv [ par Illuvatar ] Est ce kkun soré faire un code du style 1 get + 1 queue = ban du fserv ?Merci d'avance [/purple] Noldor, blood is on your hands. You're banned, a tear Addon Recuperation de gline et suppression auto [ par motherboy ] Bonjour,Ne connaissant pas trop le language de script mirc, j'viens par ce forum demander a un extreme codeur mirc de bien vouloir m'aider.En gros je Bot qui fait des statistique d'un chan [ par Elnath ] Bonjour, j'aimerais savoir si quelqu'un pourrais me faire, ou me trouver un bot qui permet de faire des statistique d'un chan ( nombre moyen de person +o directement sur le canal [ par rompell ] Salut :)Je cherche depuis 2 jours un addon pour faire +o ou simplement op, deop, voice... directement sur le canal. Style on dis DEOP sur le canal et et le multicolor ????? [ par duchemolle ] Bonjours a tous ! je suis un nouveau membre et nb dans le scripting .Et j aimerais si possible que quelqu'un fasse une ecriture alternée multicouleure bot ou addon badchan [ par HAAGEN ] Bonjour je voudrais savoir si il existe un addon badchan a rajouté a mon cservice ou un bot en mirc et non eggdrop ' je m'explique le robot fait un wh Script couleur : répétition lors de message !?? [ par folo ] Salut à vous tous !Voilà je suis sur INVISION et il s'avère que j'ai installé un bel addon de couleur comme vous ne les aimez pas ... je sais (ça c'es Aide [ par Marsupiot ] Bonjour &#224; tous, Je sais qu'il existe un addon qui fait que quand vous etes admin ou ircop vous pouvez changer les pseudos des users. Il fut un t Demande addon mirc " cservice" [ par HAAGEN ] Bonjour je voudrais savoir si il existe un addon pour cservice "Mirc" je m'explique pour que mon bot d&#233;op automatiquement les op&#233;s au bout d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,905 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.