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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : AIDERE : AIDE par Nico26000
Cliquez pour lire la suite par Nico26000 RE : AIDERE : AIDE par WorldDMT
Cliquez pour lire la suite par WorldDMT AIDEAIDE par Nico26000
Cliquez pour lire la suite par Nico26000
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|