Script apprends v2 en hash tables

Contenu du snippet

voila ce script fonctione de la fascon suivante:

.:02·27·10:. «@Adamaru» !def lol
.:02·27·11:. «@Mokoto» La definition de lol est: Laughing out loud
.:02·27·12:. «@Mokoto» La definition de lol est: mdr quoi

pour lui faire apprendre des definition:

!apprends MOT Defintion de votre choix

!nb-def pour le nombre de definition
!randdef definition aléatoire
!def-num X (x est un numero)
!ap_info def (donne le nom, le channel et la date dun ajout de definition)

et surtout le plus important: /Wap
pour ouvrir le dialog de config

perso je conseil:

General ON (si on le mé a off ca desactive tout)
!apprends ON
!auto oubli ON
!Oubli OFF
!Nb-def ON

si vous avez deja ma V1 de cet addon faites : /apcvt2
cela convertira vos def actueles en hash tables pour la V2 (ouais j'ai penssé a tout loool)

n'oubliez pas d'editer la variable %admin a la ligne 70

Source / Exemple :


dialog wbsapprend {
  title "Script Apprends V2.0 By Adamaru"
  size -1 -1 194 97
  option dbu
  box "Chans", 1, 2 2 190 24
  edit "", 2, 5 10 182 10, autohs
  box "Modes", 3, 3 27 47 55
  check "general", 4, 6 35 32 10
  check "!Apprends", 5, 6 43 36 10
  check "!Oubli", 6, 6 51 30 10
  check "Auto-Oubli", 7, 6 59 38 10
  check "!Nb-def", 8, 6 67 33 10
  box "Limites", 9, 51 27 140 22
  text "Autoriser un seul !def toutes les", 10, 55 36 77 8
  edit "", 11, 133 35 16 10
  text "Secondes", 12, 150 36 23 8
  button "Ok", 13, 154 83 37 12, ok
  box "Commande pour les reponces: (msg $chan)", 14, 51 49 140 33
  edit "", 15, 55 58 133 10, autohs
  text "Limiter a ", 16, 55 70 22 8
  edit "", 17, 78 69 14 10
  text "Definition par mots.", 18, 93 70 47 8
  button "Voir les def", 19, 115 83 37 12
  button "Creer page web", 20, 3 83 47 12
}

alias wap { dialog -m wbsapprend wbsapprend }
alias -l apadd { hadd -m wbs.apprends $1- }
alias -l aget { return $hget(wbs.apprends,$1-) }
on *:dialog:wbsapprend:*:*:{
  if ($devent == init) {
    if ($aget(chans)) { adid 2 $ifmatch }
    if ($aget(mflood)) { adid 11 $ifmatch }
    if ($aget(max)) { adid 17 $ifmatch }
    if ($aget(com)) { adid 15 $ifmatch }
    if ($aget(gen) == 1) { did -c $dname 4 }
    if ($aget(ap) == 1) { did -c $dname 5 }
    if ($aget(oubli) == 1) { did -c $dname 6 }
    if ($aget(auto_oubli) == 1) { did -c $dname 7 }
    if ($aget(nb-def) == 1) { did -c $dname 8 }
  }
  elseif ($devent == sclick) {
    if ($did == 13) {
      apadd chans $did(2)
      apadd gen $did(4).state
      apadd ap $did(5).state
      apadd oubli $did(6).state
      apadd auto_oubli $did(7).state
      apadd nb-def $did(8).state
      apadd mflood $did(11)
      apadd com $did(15)
      apadd max $did(17)
      hsave -o wbs.apprends $wbshdir $+ wbs.apprends.txt
    }
    elseif ($did == 19) { wbsopen wbs.ap.def }  
    elseif ($did == 20) { ap.makepage }
  }
}
on *:text:*:#:{
  if ($aget(gen) == 1) {
    if ($findtok($aget(chans),$chan,32) || $aget(chans) == $chr(35)) {
      wbs.ap.event $1-
    }
  }
}
on *:input:#:{
  if ($findtok($aget(chans),$chan,32) || $aget(chans) == $chr(35)) {
    .timer 1 1 wbs.ap.event $1-
  }
}  
alias -l wbs.ap.event {
  var %msg = $1- , %com = $iif($aget(com),$ifmatch,.msg botserv say $chan) , %admin = Adamaru , %nick = $iif($nick,$ifmatch,$me) , %k = 1 , %pass = WBS
  if ($+($left(%msg,1),$right(%msg,1)) == $str($chr(163),2)) { %msg = $mdecrypt($mid(%msg,2-,$calc($len(%msg) -2)),%pass) }
  if (%msg) { tokenize 32 %msg }
  if ($1 == !apprend) { wapprend $2- }
  elseif ($1 == !apprends) { wapprend $2- }
  elseif ($1 == !def) && ($2) { mdef $2- }
  elseif ($1 == !info_ap) { wbs.ap.info $2- }
  elseif ($1 == $chr(63)) && ($2) { mdef $2- }
  elseif ($1 == !nb-def) { 
    if ($2) {
      var %mot = $replace($strip($2-),$chr(32),$chr(95)) , %data = $hget(wbs.apprend.data,%mot)
      if (%data) {  
        if (%mot == %nick) {  $eval(%com,2) Tu as $numtok(%data,1) definition $+ $iif($numtok(%data,1) > 1,s) %nick $+ . }
        else { $eval(%com,2) " $+ %mot $+ " à $numtok(%data,1) definition $+ $iif($numtok(%data,1) > 1,s) $+ . }
      }
    }
    else { $eval(%com,2) Il y a $hget(Wbs.apprend.data,0).item Definitions dans la base de données.  }
  }  
  elseif ($1 == !oubli) {
    if ($2 == $nick) { 
      if ($aget(auto_oubli) == 1) { oubli $2- }
      else { $eval(%com,2) Je suis Désolée mais tu ne peu pa effacer ta definition toi meme $nick }
    }
    else {
      if ($nick == %admin || !$nick) { oubli $2- }
      else { $eval(%com,2) Désolé mais seul l'admin du script peu me faire oublier des definition. }
    }
  }
  elseif ($1 == !defnum) { 
    if ($2) {
      if ($hget(wbs.apprend.data,$2).item) { mdef $ifmatch } 
      else { $eval(%Com,2) Désolé $nick mais le nombre que tu a entré est trop grand, je ne conait que $hget(Wbs.apprend.data,0).item definition }
    }
    else { $eval(%com,2) non $nick $+ ,  tu doit metre un nombre apres le $1 : example: !defnum 1 }
  }
  elseif ($1 == !randdef) {
    var %def = $hget(Wbs.apprend.data,$rand(1,$hget(Wbs.apprend.data,0).item)).item
    if (%Def) { mdef $ifmatch }
    else { $eval(%com,2) Je suis désolé $nick $+ , mais je n'ai pa trouvé de definition aléatoire }
  }
}
alias -l wbs.ap.info {
  var %table = Wbs.apprend.data , %mot = $strip($1) , %mot = $replace($strip($1-),$chr(32),$chr(95)) , %item = $hget(%table,%mot) , %chans = $aget(chans) 
  var %com = $iif($aget(com),$eval($ifmatch,2),.msg botserv say $chan) , %nick = $iif($nick,$ifmatch,$me)
  if (!$nick) { 
    if (%item) {
      var %i 1 , %n = $numtok(%item,1) , %k 1
      while (%i <= %n) {
        var %Data = $gettok($gettok(%item,%i,1),2,165) , %ctime = $gettok(%data,2,32)
        if (%ctime) { 
          %com %i $+ $chr(93) $gettok(%data,1,32) $intime(%ctime) le $date(%ctime) à $time(%ctime) $gettok(%data,3,32)
          inc %k
        }        
        inc %i
      }
      if (%k == 0) { %com désolé mais il n'y a pas de traces de la persones ayant ajouté " $+ %mot $+ " à mes definition. }
    }
    else { $eval(%com,2) je ne conais pas la definition de %mot }
  }
  else { %com seul l'admin peu efectuer cette commande. }
}
alias wapprend {
  var %table = Wbs.apprend.data , %mot = $strip($1) , %def = $remove($replace($2-,$chr(32),$chr(160)),$chr(1),$chr(165)) , %item = $hget(%table,%mot) , %chans = $aget(chans) 
  var %com = $iif($aget(com),$eval($ifmatch,2),.msg botserv say $chan) , %nick = $iif($nick,$ifmatch,$me)
  if ($aget(ap) == 1) {
    if ($findtok(%chans,$chan,32) || %chans == $chr(35)) {
      if (%mot) {
        if (%def) {
          if ($calc(942 - $len(La definition de " $+ %mot $+ " est: %item %def %nick $ctime $chan)) <= 0) { %com Je suis désolée %nick mais la taille totale des caracteres autorisée pour cette definition a étée depassé: utilise une definition avec moin de letres. | return }
          if (%item) {
            var %tmp = $ifmatch , %nick = $iif($nick,$ifmatch,$me)
            if (!$findtok($strip(%tmp),$strip(%def),1)) {
              var %max = $aget(max) , %actd = $numtok($hget(%table,%mot),1)
              if (%actd <= %max) {
                hadd -m %table %mot %item $+ $chr(1) $+ %def $+ $chr(165) $+ %nick $ctime $chan $+ $chr(165)
                hsave -o %table $wbshdir $+ %table $+ .txt
                if ($aget(last.def. $+ $chan) == %item) { hdel %table last.def. $+ $chan }
                $eval(%com,2) c'est bon %nick j'ai bien retenue la $calc($numtok(%item,1) +1) $+ eme definition de %mot $+ .
              }
              else { $eval(%com,2) Desolé %nick mais le nombre maximum de defintion pour %mot  a été atteind, %actd definition onts étées enregistrées }
            }
            else { $eval(%com,2) Desolé %nick mais je connais deja cette definition de %mot $+ . }
          }
          else { 
            hadd -m %table %mot %def $+ $chr(165) $+ %nick $ctime $chan $+ $chr(165)
            wbssave %table
            $eval(%com,2) c'est bon %nick j'ai bien retenue la definition de %mot $+ .
          }
        }
        else { $eval(%com,2) Tu ne m'a meme pas donné de defintion à appendre %nick $+ . }
      }
      else { $eval(%com,2) Donne moi deja un mot et une definition pour que je puisse apprendre qqch... }
    }
  }
  else { $eval(%com,2) je suis désolée mais l'admin a interdis cette commande à causes des abus }
}
alias mdef {
  var %table = Wbs.apprend.data , %mot = $strip($1) , %item = $hget(%table,%mot) , %chans = $aget(chans) , %nick = $iif($nick,$ifmatch,$me)
  if ($findtok(%chans,$chan,32) || %chans == $chr(35)) {
    var %Def = $hget(%table,%mot) , %com = $iif($aget(com),$eval($ifmatch,2),.msg botserv say $chan)
    if ($gettok($aget(last.def. $+ $chan),1,32) != %mot $+ $2) {
      if (!$aget(tflood)) {
        hadd -mu600 Wbs.apprends last.def. $+ $chan %mot $+ $2 $ctime
        if (%def) {  
          if ($2) { 
            var %def2 = $gettok($gettok(%def,$2,1),1,165)
            if (%Def2) { %com La definition de " $+ %mot $+ " est: %def2 }
            else { %com Je suis désolée %nick mais je ne connais pas la $2 $+ $iif($1 == 1,er,eme) definition de " $+ %mot $+ ". }
          }
          else {
            var %n = $numtok(%def,1) , %i 1
            while (%i <= %n) {
              var %def2 = $gettok($gettok(%def,%i,1),1,165)
              if (c !isincs $chan($chan).mode) { $eval(%com,2) La definition de " $+ %mot $+ " est: %def2 }
              else { %com La definition de " $+ %mot $+ " est: $strip(%def2) }
              inc %i
            }
          }
        }
        else { %com je ne connais pas la definition de " $+ %mot $+ " $+ . }
      }
      else { 
        %com Desolé %nick mais tu dois attendre $duration($iif($aget(mflood),$ifmatch,1)) et non pas $duration($calc($ctime - $gettok($aget(tflood),1,32))) $&
          entre chaque chaque !def sur le chan
      }
      hadd -mu [ $+ [ $iif($aget(mflood),$ifmatch,1) ] ] wbs.apprends tflood $ctime %nick
    }
    else { %com Desolé mais on m'a deja demandé cette definition %nick $+ , il y a $intime($gettok($aget(last.def. $+ $chan),2,32)) $+ . }  
  }
}
;################# debut pour la convertion ####################
alias apcvt2 {
  if (!%dossierdef) { wecho Impossible de trouver le fichier des def | halt }
  var %i = $apnum
  while (%i > 0) {
    var %def = $ini(%dossierdef,%i) , %n = $apget(%def,0) , %m 1
    while (%n >= %m) {
      aphadd Wbs.apprend.data %Def $apget(%def,%m)      
      inc %m 
    }
    dec %i
  }
}
alias -l apnum { return $ini(%DossierDef,0) }
alias -l apget { 
  if ($2 != 0) { return $readini(%DossierDef,n,$1,$2) }
  else { 
    var %i 1
    while ($readini(%DossierDef,n,$1,%i)) {
      inc %i
    }
    return $calc(%i -1)  
  }
  hsave -o Wbs.apprend.data $wbshdir $+ Wbs.apprend.data.txt
}
alias -l aphadd {
  var %table = $1 , %item = $2 , %val = $3-
  if (%table) && (%item) && (%val) {
    var %act = $hget(%table,%item) , %result = %act $chr(1) %val
    hadd -m %table %item %result
  }
}
;################# Fin de la convertion ####################

alias oubli {
  var %def = $strip($1) , %com = $iif($aget(com),$eval($ifmatch,2),.msg botserv say $chan) , %table = Wbs.apprend.data , %o = 1 , %data = $hget(%table,%def) , %n  = $numtok(%data,1) , %i 1
  if ($gettok(%data,2,32)) {
    if (!$2) {
      while (%i <= %n) {
        var %tmp = $gettok($gettok(%data,%i,1),2,32)
        if ($nick == %tmp) { inc %o }
        inc %i
      }
    }
    elseif ($gettok($gettok(%data,$2,1),2,32) == $nick) { var %o = %n }
  }
  if (!$nick || %o == %n) {
    if (%Def) {
      if ($hget(Wbs.apprend.data,%def)) {
        if (!$2)  { 
          hdel Wbs.apprend.data %def 
          %com definition de " $+ %Def $+ " effacée.
        }
        else {
          var %tmp = $hget(%table,%def)
          if ($numtok(%tmp,1) >= $2) {
            if ($deltok(%tmp,$2,1)) { hadd -m %table %def $v1 }
            else { hdel %table %def }
            %com la $2 $iif($2 == 1,er,eme) definition de " $+ %Def $+ " à étée effacée.
          }
          else { %com il n'y à pas de $2 $iif($2 == 1,er,eme) definition à " $+ %def $+ " il n"y en à que $numtok(%tmp,1) $+ . }
        }
        hdel %table last.def. $+ $chan
        wbssave %table
      }
      else { %com definition de " $+ %def $+ " inconue }
    }
    else { %com parametres insufusant }
  }
  else { %com vous n'avez pas access a cette commande }
}

dialog wbs.ap.def {
  title "Visioneur de definitions"
  size -1 -1 295 138
  option dbu
  list 1, 2 3 67 132, sort size
  text "Mot", 2, 71 4 10 8
  edit "", 3, 82 3 172 10, autohs
  list 4, 71 14 183 121, size hsbar
  button "Effacer", 5, 255 15 37 12
  button "Afficher", 6, 255 2 37 12
}

on *:dialog:wbs.ap.def:*:*:{
  if ($devent == init) {
    var %n = $hget(wbs.apprend.data,0).item , %i 1
    while (%i <= %n) {
      adid 1 $hget(wbs.apprend.data,%i).item
      inc %i
    }
  }
  elseif ($devent  == sclick) {
    if ($did == 1) {
      odid 3 1 $did(1).seltext
      rdid 4
      var %data = $replace($hget(wbs.apprend.data,$did(3)),$chr(160),$chr(32)) , %n = $numtok(%data,1) , %i 1
      while (%i <= %n) {
        adid 4 %Def $gettok(%data,%i,1)
        inc %i
      }
    }
    elseif ($did == 5) { 
      if ($?!="Etes vous sur de vouloir supprimer cette definition ?") { 
        hdel wbs.apprend.data $did(3) 
        did -d $dname 1 $did(1).sel
        rdid 4
        rdid 3
        hsave -o Wbs.apprend.data $wbshdir $+ Wbs.apprend.data.txt
      }
    }
    elseif ($did == 6) {
      rdid 4
      var %data = $replace($hget(wbs.apprend.data,$did(3)),$chr(160),$chr(32)) , %n = $numtok(%data,1) , %i 1
      while (%i <= %n) {
        adid 4 %Def $gettok(%data,%i,1)
        inc %i
      }
    }  
  }
}
;################# fin pour la convertion ####################

alias ap.makepage {
  var %file = wbs.apprends.html , %table = wbs.apprend.data , %n = $hget(%table,0).item , %i 1 , %com = .fwrite -n %file
  if ($fopen(%file)) { fclose %file }
  if ($exists(%file)) { .remove %file }
  write %file <BR>
  .fopen %file %file
  %com <title>Listes de Definition de $me $+ </title>
  %com <body bgcolor="#FFFFFF" text="#000000" background="back3.gif"
  %com <style type="text/css">
  %com .Style7 { color: #FFFFFF }
  %com a:link { color: #000000; }
  %com a:visited { color: #000000; }
  %com a:hover { color: #000000; }
  %com body,td,th { font-family: Tahoma; font-size: 12px; color: #000000; }
  %com a:active { color: #00FF00; }
  %com </Style>
  while (%i <= %n) {
    var %mot = $hget(%table,%i).item , %data = $hget(%table,%mot) , %o = $numtok(%data,1) , %m 1
    %com <HR><BR><TABLE WIDTH="100%" BORDER=2 CELLSPACING=2 CELLPADDING=2><TR ALIGN=LEFT VALIGN=TOP><TR><TH>N</TH><TH>Definition de " $+ %mot $+ " $chr(91) $+ %i $+ $chr(93) $+ </TH></TR>
    while (%m <= %o) {
      var %data2 = $gettok($gettok(%data,%m,1),1,165) , %def = $replace(%data2,$chr(160),$chr(32))
      if (%Def) {  
        %com <TR><TD> $+ %m $+ </TD><TD> $+ $replace(%data2,$chr(160),$chr(32)) $+ </TD></TR>
      }
      inc %m
    }
    %com </table>
    %com <BR><BR>
    inc %i
  }
  .fclose %file
  run %file
}

alias -l adid { did -a $dname $1- }
alias -l rdid { did -r $dname $1- }
alias -l odid { did -o $dname $1- }
alias -l wbsopen { dialog -m $1 $1 }
alias -l wbshdir { return $mircdir }
alias -l wecho { echo -a $1- }
alias -l wbssave { hsave -o $wbshdir $1 $1 $+ .txt }

Conclusion :


vous devez surement vous demander ce que fout cette ligne dans mon code:
alias -l wbshdir { return $mircdir }

et bien c'est tout simplement a cause du fait que ce script n'est pas fait pour fonctioner seul a la base, il est censsé accompagner un plus gros addon que j'ai fait ( j'ai bien tenté de le poster ici plusieurs fois mé bon sans success lol)

si vous trouvez des bugs/oubli de ma part prevenez moi ;)

A voir également

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.