Livre d'or en hashtables, mes premieres

Contenu du snippet

ce livre d'or permet de poster un message, d'en voir un au hasard ou un bien précis, et de rechercher le message d'une personne

je n'ai fait ca que pour tester les hashtables, je peux y apporter des améliorations si vous me donnez des idées

Source / Exemple :


on *:connect: {                  ;à la connexion
  if (!%table) {                 ;si elle n'est pas créée
    hmake livre 100              ;on crée la table livre
    set %table ok                ;on dit qu'elle est créée
    hsave -o test livredor.txt   ;et on sauvegarde
  }
  else {                         ;sinon
    hload test livredor.txt      ;on la charge
  }
}

;ici, en fonction de la commande, on est redirigé vers une alias
on *:text:!livre*:#: {
  if ($2 == stats) notice $nick Il y a $hmatch(livre,nom*,0) message $+ $iif($hget(livre,total) > 1,s) posté $+ $iif($hget(livre,total) > 1,s) dans le livre d'or.
  elseif ($2 == post) post $nick $3-
  elseif ($2 == voir) voir $nick $3
  elseif ($2 == recherche) recherche $nick $3
else notice $nick Cette commande n'est pas reconnue
}

alias post {
  if (!$2) notice $1 Tu as oublié de préciser le message à poster.   ;s'il n'y a pas de message, on prévient
  else {
    hinc livre total                                ;on incrémente le total
    set %total $hget(livre,total)                   ;on le met dans une variable
    hadd livre nom $+ %total $1                     ;et on
    hadd livre message $+ %total $2-                ;enregistre
    hadd livre date $+ %total le $date à $time      ;les
    hadd livre $1 %total                            ;données
    hsave -o test livredor.txt                      ;puis on sauvegarde
    notice $1 Merci d'avoir posté un message dans le livre d'or. Pour le voir, tape !livre voir %total   ;on remercie
  }
}

alias voir {
  if (!$2) {   ;si on n'a pas d'idée précise de ce qu'on vaut voir
    set %hasard $rand(1, $hmatch(livre,nom*,0))   ;on nous donne un chiffre au hasard
    notice $1 Un message au hasard: $hget(livre,message $+ %hasard)                       ;qui permet de prendre
    notice $1 Il a été posté par $hget(livre,nom $+ %hasard) $hget(livre,date $+ %hasard) ;des données au hasard
  }
  else {  ;sinon
if ($2 > $hmatch(livre,nom*,0)) notice $1 Ce message n'existe pas
else {
    notice $1 Voici le message n° $+ $2 : $hget(livre,message $+ $2)             ;on donne le message que la personne
    notice $1 Il a été posté par $hget(livre,nom $+ $2) $hget(livre,date $+ $2)  ;a voulu voir en donnant le chiffre correspondant
  }
}
}

alias recherche {
if (!$2) notice $1 Tu as oublié de préciser la recherche à effectuer.  ;si il recherche rien, on lui donne rien
else {      ;sinon
notice $1 Il y a $hmatch(livre,* $+ $2 $+ *,0) résultat $+ $iif($hmatch(livre,* $+ $2 $+ *,0) > 1,s) sur la recherche: $2   ;on lui donne combien y'a de resultats
if ($hmatch(livre,* $+ $2 $+ *,0) != 0) {
notice $1 Voici le résultat le plus proche: $hmatch(livre,* $+ $2 $+ *,1)    ;puis on lui detaille le plus precis
notice $1 Son message: $hget(livre,message $+ $hmatch(livre,* $+ $2 $+ *,0)) ;vraiment détaillé
notice $1 Message posté $hget(livre,date $+ $hmatch(livre,* $+ $2 $+ *,0))   ;meme la date
}
}
}

Conclusion :


pour bien lire les commentaires allignés, voir le code avec une police uniforme (tous les caracteres de la meme taille)

soyez indulgents, c'est la premiere foi que je me sers des hashtables, et ca me plait plutot assez... je compte bien approfondir tout ca.

dossier à mettre dans les remotes
pour voir un message au hasard, taper !livre voir
pour en voir un rpecis, taper !livre voir <nombre>
pour rechercher, taper !livre recherche <recherche du pseudo>
pour poster, taper !livre post <message>

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.