Accueil > > > [TUTO] [BOT] GESTION D'UNE LISTE D'ACCESS (COMMENTÉ)
[TUTO] [BOT] GESTION D'UNE LISTE D'ACCESS (COMMENTÉ)
Information sur la source
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
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|