begin process at 2012 02 12 04:34:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > [TUTO] [BOT] GESTION D'UNE LISTE D'ACCESS (COMMENTÉ)

[TUTO] [BOT] GESTION D'UNE LISTE D'ACCESS (COMMENTÉ)


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Débutant Date de création :21/12/2004 Date de mise à jour :16/04/2005 16:23:16 Vu :9 575

Auteur : MaX_62

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cette source est un tutorial sur les hash tables et les identifieurs. La source est un système de gestion d'access pour bot.

Source

  • alias axx { dialog $+(-,$iif($dialog(access),v,m)) access access }
  • ;Rien de compliqué, un alias pour ouvrir le dialog : si le dialog n'est pas deja ouvert, on l'ouvre.
  • on *:START:{
  • hmake access
  • $iif($exists(access),hload,hsave) access access
  • }
  • ;Au démarrage du script, on crée la table. On cherche si le fichier "access" (qui contient la table) existe. Si il existe, on charge la table "access" (avec /hload). Sinon, on sauvegarde la table (vide) dans le fichier "access"
  • ;Il faut noter que les hash tables sont stockées pendant que le script est ouvert, et elles se détruisent lorsqu celui ci est arrêté. De ce fait, il est nécessaire de sauvegarder/charger les hash table au démarrage du script.
  • dialog access {
  • title "Gestion d'access"
  • size -1 -1 97 91
  • option dbu
  • text "Liste des access :", 1, 4 3 45 8
  • list 2, 4 13 57 61, size
  • button "Ajouter", 3, 63 21 30 12
  • button "Effacer", 4, 63 36 30 12
  • button "Réinitialiser", 5, 63 51 30 12
  • button "Fermer", 6, 8 76 37 12, cancel
  • button "Aide", 7, 53 76 37 12
  • }
  • dialog add.axx {
  • title "Ajouter un access"
  • size -1 -1 80 41
  • option dbu
  • text "Pseudo :", 1, 4 3 23 8
  • edit "", 2, 28 2 49 10, autohs
  • text "Niveau :", 3, 4 16 22 8
  • edit "", 4, 26 15 38 10
  • button "Ajouter", 5, 6 28 31 9, ok cancel
  • button "Fermer", 6, 43 28 31 9, cancel
  • }
  • dialog help.axx {
  • title "Aide - Gestion d'access"
  • size -1 -1 131 73
  • option dbu
  • text "Ce dialog est conçu principalement pour les bots, il sert a gérer une liste d'access. Vous pouvez vous servir de l'access d'un pseudo pour limiter certaines commandes de votre bot a certains pseudos. Pour obtenir le niveau d'access d'un pseudo servez vous de $access(pseudo) : celui ci vous retournera le niveau d'access du pseudo ou 0 si le pseudo est absent de la liste.", 1, 3 3 124 54
  • button "Fermer", 2, 46 59 37 12, cancel
  • }
  • ;Voici les 3 dialogs, le premier (access) sert a gérer la liste des access, le second (add.axx) sert a ajouter un access, et le dernier (help.axx) est un dialog d'aide.
  • on *:dialog:*:*:*:{
  • if ($dname == access) {
  • if ($devent == init) { list.axx }
  • ;Au démarrage du dialog, on liste les access (voir alias plus bas)
  • elseif ($devent == sclick) {
  • if ($did == 3) { dialog $+(-,$iif($dialog(add.axx),v,m)) add.axx add.axx }
  • ;Quand on clique sur le bouton "ajouter", le dialog "add.axx" est ouvert (seulement s'il n'est pas déjà ouvert).
  • elseif ($did == 4) {
  • if ($did(access,2).seltext) {
  • hdel access $gettok($did(access,2).seltext,1,32)
  • hsave access access
  • list.axx
  • }
  • ;Quand on clique sur "Effacer", on supprime l'item sélectionné (avec /hdel), ensuite on sauvegarde la hash table et on refait la liste.
  • else { echo -a Veuillez sélectionner un pseudo }
  • }
  • elseif ($did == 5) {
  • hdel -w access *
  • list.axx
  • }
  • ;Lors du click sur "Réinitialiser", on efface tous les items de la table "access" (avec /hdel -w *)
  • elseif ($did == 7) { dialog $+(-,$iif($dialog(help.axx),v,m)) help.axx help.axx }
  • ;Lors du click sur "Aide", on ouvre le dialog "help.axx" (seulement si celui ci n'est pas déjà ouvert)
  • }
  • }
  • elseif ($dname == add.axx) {
  • if ($devent == sclick) {
  • if ($did == 5) {
  • if ($chr(32) !isin $+($did(2),$did(4))) {
  • hadd access $$did(add.axx,2) $$did(add.axx,4)
  • hsave access access
  • list.axx
  • }
  • ;On vérifie que les edits 2 et 4 sont remplis (double $), et si ceux ci ne s'ont formés que d'un seul mot (vérification du $chr(32))
  • ;Si ces conditions sont vérifiées, on ajoute l'item portant le nom du pseudo, sa valeur étant le niveau d'access précisé (/hadd TABLE ITEM VALEUR), et on sauvegarde la table ACCESS
  • ;Ensuite, on liste les access.
  • else { echo -a Paramètres invalides }
  • }
  • }
  • }
  • }
  • alias list.axx {
  • did -r access 2
  • var %a 1
  • while ($hget(access,%a).item) { did -a access 2 $ifmatch : $hget(access,%a).data) | inc %a }
  • }
  • ;A chaque fois qu'une modification est apportée on appelle cet alias, expliquons le :
  • ;On supprime toutes les lignes de la liste ayant l'id 2 (avec /did -r)
  • ;Ensuite, c'est une boucle : on définit une variable %a.
  • ;Tant que cette variable est inférieure au nombre d'items (donc de pseudos) de la table ACCESS, on ajoute une ligne a la list contenant le pseudo donc l'item ($hget(access,%a).item) et le niveau donc la valeur de l'item ($hget(access,%a).data)
  • ;Ensuite on incrémente %a, ce qui signifie qu'on lui ajoute 1.
  • alias access { return $iif($hget(access,$1),$hget(access,$1),0) }
  • ;Dernière chose indispensable, l'identifieur $access qui permettra d'obtenir immédiatement le niveau d'access d'un pseudo quelconque.
  • ;Un identifieur se présente comme un alias (alias access { })
  • ;D'abord, on cherche dans la table ACCESS si $1 (donc le pseudo spécifié avec $access(pseudo)) possède une valeur dans la table (avec $hget(access,$1))
  • ;Si il est présent, l'identifieur retourne la valeur de l'access du pseudo (la valeur de l'item $1) (avec /return $hget(access,$1))
  • ;Si il n'est pas présent, il n'est pas dans la liste d'access, ce qui signifie que son niveau d'access est égal a 0. (on retourne donc 0 avec /return 0)
alias axx { dialog $+(-,$iif($dialog(access),v,m)) access access }

;Rien de compliqué, un alias pour ouvrir le dialog : si le dialog n'est pas deja ouvert, on l'ouvre.

on *:START:{
  hmake access
  $iif($exists(access),hload,hsave) access access
}

;Au démarrage du script, on crée la table. On cherche si le fichier "access" (qui contient la table) existe. Si il existe, on charge la table "access" (avec /hload). Sinon, on sauvegarde la table (vide) dans le fichier "access"
;Il faut noter que les hash tables sont stockées pendant que le script est ouvert, et elles se détruisent lorsqu celui ci est arrêté. De ce fait, il est nécessaire de sauvegarder/charger les hash table au démarrage du script.

dialog access {
  title "Gestion d'access"
  size -1 -1 97 91
  option dbu
  text "Liste des access :", 1, 4 3 45 8
  list 2, 4 13 57 61, size
  button "Ajouter", 3, 63 21 30 12
  button "Effacer", 4, 63 36 30 12
  button "Réinitialiser", 5, 63 51 30 12
  button "Fermer", 6, 8 76 37 12, cancel
  button "Aide", 7, 53 76 37 12
}

dialog add.axx {
  title "Ajouter un access"
  size -1 -1 80 41
  option dbu
  text "Pseudo :", 1, 4 3 23 8
  edit "", 2, 28 2 49 10, autohs
  text "Niveau :", 3, 4 16 22 8
  edit "", 4, 26 15 38 10
  button "Ajouter", 5, 6 28 31 9, ok cancel
  button "Fermer", 6, 43 28 31 9, cancel
}

dialog help.axx {
  title "Aide - Gestion d'access"
  size -1 -1 131 73
  option dbu
  text "Ce dialog est conçu principalement pour les bots, il sert a gérer une liste d'access. Vous pouvez vous servir de l'access d'un pseudo pour limiter certaines commandes de votre bot a certains pseudos. Pour obtenir le niveau d'access d'un pseudo servez vous de $access(pseudo) : celui ci vous retournera le niveau d'access du pseudo ou 0 si le pseudo est absent de la liste.", 1, 3 3 124 54
  button "Fermer", 2, 46 59 37 12, cancel
}

;Voici les 3 dialogs, le premier (access) sert a gérer la liste des access, le second (add.axx) sert a ajouter un access, et le dernier (help.axx) est un dialog d'aide.

on *:dialog:*:*:*:{
  if ($dname == access) {
    if ($devent == init) { list.axx }
    ;Au démarrage du dialog, on liste les access (voir alias plus bas)  
    elseif ($devent == sclick) {
      if ($did == 3) { dialog $+(-,$iif($dialog(add.axx),v,m)) add.axx add.axx }
      ;Quand on clique sur le bouton "ajouter", le dialog "add.axx" est ouvert (seulement s'il n'est pas déjà ouvert).
      elseif ($did == 4) { 
        if ($did(access,2).seltext) { 
          hdel access $gettok($did(access,2).seltext,1,32) 
          hsave access access 
          list.axx
        }
        ;Quand on clique sur "Effacer", on supprime l'item sélectionné (avec /hdel), ensuite on sauvegarde la hash table et on refait la liste.
        else { echo -a Veuillez sélectionner un pseudo }
      }
      elseif ($did == 5) { 
        hdel -w access *
        list.axx
      }
      ;Lors du click sur "Réinitialiser", on efface tous les items de la table "access" (avec /hdel -w *) 
      elseif ($did == 7) { dialog $+(-,$iif($dialog(help.axx),v,m)) help.axx help.axx  }
      ;Lors du click sur "Aide", on ouvre le dialog "help.axx" (seulement si celui ci n'est pas déjà ouvert) 
    }
  }
  elseif ($dname == add.axx) {
    if ($devent == sclick) {
      if ($did == 5) {
        if ($chr(32) !isin $+($did(2),$did(4))) { 
          hadd access $$did(add.axx,2) $$did(add.axx,4)
          hsave access access
          list.axx
        }
        ;On vérifie que les edits 2 et 4 sont remplis (double $), et si ceux ci ne s'ont formés que d'un seul mot (vérification du $chr(32))
        ;Si ces conditions sont vérifiées, on ajoute l'item portant le nom du pseudo, sa valeur étant le niveau d'access précisé (/hadd TABLE ITEM VALEUR), et on sauvegarde la table ACCESS
        ;Ensuite, on liste les access.
        else { echo -a Paramètres invalides }
      }
    }
  }
}

alias list.axx {
  did -r access 2
  var %a 1
  while ($hget(access,%a).item) { did -a access 2 $ifmatch : $hget(access,%a).data) | inc %a } 
}

;A chaque fois qu'une modification est apportée on appelle cet alias, expliquons le :
;On supprime toutes les lignes de la liste ayant l'id 2 (avec /did -r)
;Ensuite, c'est une boucle : on définit une variable %a. 
;Tant que cette variable est inférieure au nombre d'items (donc de pseudos) de la table ACCESS, on ajoute une ligne a la list contenant le pseudo donc l'item ($hget(access,%a).item) et le niveau donc la valeur de l'item ($hget(access,%a).data)
;Ensuite on incrémente %a, ce qui signifie qu'on lui ajoute 1.


alias access { return $iif($hget(access,$1),$hget(access,$1),0) }

;Dernière chose indispensable, l'identifieur $access qui permettra d'obtenir immédiatement le niveau d'access d'un pseudo quelconque.
;Un identifieur se présente comme un alias (alias access { })
;D'abord, on cherche dans la table ACCESS si $1 (donc le pseudo spécifié avec $access(pseudo)) possède une valeur dans la table (avec $hget(access,$1))
;Si il est présent, l'identifieur retourne la valeur de l'access du pseudo (la valeur de l'item $1) (avec /return $hget(access,$1))
;Si il n'est pas présent, il n'est pas dans la liste d'access, ce qui signifie que son niveau d'access est égal a 0. (on retourne donc 0 avec /return 0)

 Conclusion

Au départ c'est un tutorial, mais vous pouvez aussi vous en servir pour votre bot en utilisant

if ($access(nick) >= la-valeur-que-vous-voulez) {... }

Voilà, j'espère que ça vous a servi :)


 Historique

16 avril 2005 16:20:44 :
- Optimisation du code...
16 avril 2005 16:23:16 :
- Modification d'un ;commentaire

 Sources du même auteur

SOLVEUR DE SUDOKU
Source avec une capture DERNIERS CODES SUR CODES-SOURCES
PETIT EFFET DE TEXTE
BARRE DE TEXTE DEFILANT
Source avec Zip Source avec une capture FKEYS (F1-12, CONTROL + F1-12, SHIFT + F1-12)

 Sources de la même categorie

TOUT SAVOIR SUR L'ECRITURE EN COULEUR par SaD_AnG3L
Source avec Zip Source avec une capture [TUTORIAL] LECTEUR MP3 EN DIALOG par fjxokt
Source avec une capture "RESIZE" SANS DLL par IceTempest
MINI TUTO SUR L'OPTIMISATION par tofu
Source avec Zip TUTORIAL PICWIN, APPROFONDISSEMENT par KiNdErMaXi

Commentaires et avis

Commentaire de wims le 21/12/2004 14:54:32

mwa qui n'avait ocune connaissance des htable c vrai que je comprend mieu maintant comment elle marche et puis c pas trop mal commencter


wims

Commentaire de doob666 le 29/05/2007 19:12:22

Juste une petite chose...on ne peux pas ajouter un access sans avoir le bot chez soit...

Commentaire de Em3r1c4 le 27/09/2008 05:01:06

ton code rock, jai appris bcp depuis! Merci :)

Commentaire de Em3r1c4 le 08/01/2009 19:01:41 10/10

Tres Hot se tuto, mais il devrais avoir un evenement on *:LOAD: pour ajouté les hash tables, car a la premiere utilisation il ne les trouve pas, jai dut tapé //exit -nr pour redemarer le bot.

mais bon, merci :) Pratique 10/10

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,100 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales