pseudo dans un db
#16
Pourquoi tu utilises phenomFilter? Je vois pas l'intéret de cette procédure...

Ensuite, ta procédure accesssalon et complètement fausse: A chaque tour de boucle, tu fermes ton fichier, donc en fait tu ne lis que la 1ère ligne du fichier.
D'ou l'intérêt d'avoir une indentation claire. Corriges-moi ça, et ça ira ;-)
Répondre Avertir
#17
bonjour,
merci Merwin

je penser utiliser phenomFilter en croyant que sa aller prendre en compte les pseudo avec les caractère [ ] _- ' ect .. en ce qui concerne le souci de boucle je vois pas comment faire,j'ai bcp de mal à comprendre la lecture,écriture et la détection dans un fichier

[font=Times New Roman]cordialement [/font]
Répondre Avertir
#18
Je t'ai donné toutes les clés pour résoudre ton problème.

Code :
- Ouvrir le fichier (open)
- Tant que on est pas à la fin du fichier: (eof, Enf Of File)
  - Lire une ligne (gets)
  - Si la ligne = le pseudo (string equal) => Fermer fichier, return 1
- Fin de la boucle, on a atteint la fin du fichier
- Fermer fichier, return 0
Répondre Avertir
#19
merci je vais essayer de corriger ça en espérant que sa aille bien
Répondre Avertir
#20
ça devrais donner ceci ?

tcl
proc acceesalon {nick} {
   set fa [open "autorise_salon.db" r]
   while {![eof $fa]} {
      gets $fa get
      if {[string equal [string tolower $get] [string tolower $nick]]==1} {
       return 1
      }
   close $fa
}
return 0
}


Répondre Avertir
#21
Merwin a écrit :- Ouvrir le fichier (open)
- Tant que on est pas à la fin du fichier: (eof, Enf Of File)
- Lire une ligne (gets)
- Si la ligne = le pseudo (string equal) => Fermer fichier, return 1
- Fin de la boucle, on a atteint la fin du fichier
- Fermer fichier, return 0

Depuis le début de cette discussion, je me pose une question: Pourquoi ne pas lire le fichier une fois pour toute, lors de l'initialisation du tcl ou de la modification du fichier, et conserver la liste en mémoire. Et ensuite, juste chercher dans la liste ?
Répondre
#22
@CrazyCat:

Ca marche aussi avec [read] oui, mais vu qu'il était partit sur la méthode open j'ai continué sur sa voie! Personellement j'aurai utilisé read ;-)
ATTENTION: read c'est pratique, mais ne pas l'utiliser sur de gros fichiers, puisque tout le contenu est chargé en mémoire, ce qui n'est pas le cas avec open ;-)

@Fedora:

Oui, sauf que la, ton fichier n'est pas fermé, réfléchis: Tu fais 'return', du coup tu sors de ta fonction! Donc le close n'est jamais appellé, et ton fichier n'est pas fermé! Penses bien à appeller close avant chaque return.

ASTUCE: Il y a une option -nocase, à la fonction [string equal], qui te permet directement de faire une comparaison sans tenir comtpe des Maj/Min: [string equal -nocase "Merwin" "MeRWin"] => Renvoi 1 !
Répondre Avertir
#23
bonjour,

je rencontre toujours les même souci un coup il prend le pseudo un coup non un autre il fait plus rien . -_-"""
donc j'pense que faire un système comme sa sera mieux par flag ! parceque là sa m'gonfle un peut (rire)
merci de votre aide apporter


cordialement
Répondre Avertir
#24
hello

ne sachant vraiment pas coder et n'ayant pas bcp de temps pour ça ( à cause de mes enfants ) je voulais savoir si ce TCL était 'il toujours d' actualité ,car ce système me plais.le système par flag du genre X G ect .. j'ai pas trop confiance mais mettre les pseudos dans un fichier cela me rassure un peut plus.fedora à tu fini ce TCL ? peut tu le mettre en DLL sur le site ?

Ya t'il quelqu'un qui à ce genre de TCL svp?

merci beaucoup pour votre gentillesse et votre sympathie pour les partage de vos code .
Répondre Avertir
#25
bonjour,

désoler mais par manque de temps je n'est pas terminer ce tcl mais je t'encourage à le finir si il te convient en suivant les tutos sur les précédent poste :)


cordialement
Répondre Avertir
#26
Bonjour,

Âpres un cours moment de répit hier soir, j'ai reprit le TCL et j'ai tout de même fini par le terminer et y ajouter un système qui permet de mettre les salons qu'ont souhaite activer en mode restreint,seul les users qui seront dans la database "UserVip.db" pourront rentrer sur le salon.
donc comme je l'ai dit une commande permet d'activer ou non le salon en mode "restreint" ".protect on" pour activer ".protect off" pour désactiver.
julien23 je te l'ai fait parvenir par email .

ps: il prend aussi les users qui ont leur extensions pseudo|blabla


cordialement
Répondre Avertir
#27
Fedora pourais tu m'envoyé ton code pour que je voye comment tu a fait le systeme de gestion de lecture dans la database ?
Répondre
#28
bonjour,

voila je revient car je trouve vraiment pas la solution pour qui prenne le pseudo exact avec sont extension (pseudo|occuper) ou bien les pseudo avec des caractère [] ect .. en relisant les aides apportées j'y arrive vraiment pas.impossible de trouver les bonnes procédures pour détecter le ou les pseudos que ce soit ds un .txt ou .db . si quelqu'un aurais un modèle svp ou aurais la solution ça serais vraiment sympa parce que là je plante totalement .
tcl
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#                        Commencement du Script TCL                
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
 
#  //-//-//-//-//-//-//- Début De la Configuration -//-//-//-//-//-//-//
  
# Indiquer le salon ou sera reporter les logs salon et Autorisation
 
set phenom(salon) "#Arena"
 
# Indiquer ici le message de kick de la personne qui ne sera pas autoriser à entrer sur votre salon
 
set phenom(kickmsg) "Access Non Autoriser pour ce salon ! "
 
#  Céation des fichiers Manquant
 
set fichier(pseudo) "autorise_salon.db"
 
#   //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#          !!! NE CHANGEZ RIEN A PARTIR DE CETTE LIGNE !!!
#   //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
 
# Le Systeme de Procédure lors du Joins de la personne
 
bind join - "$::phenom(salon) *" phenomAutorisation
proc phenomAutorisation {nick uhost hand chan} {
global botnick phenom
   if {$nick == $::botnick} { return 0 }
   if {[acceesalon $nick]==0} {
      putserv "PRIVMSG $::phenom(salon) :\00314Autorisation \0034° \00314Refusé\00314 \0034°\0034"
      putserv "KICK $chan $nick : $::phenom(kickmsg)"
      return 1
   }
   putserv "PRIVMSG $::phenom(salon) :\00314Autorisation  \00303°\00314Accepté\00303° \00314pour le salon $::phenom(salon)"
   pushmode $chan +v $nick
   return 0
}
# Ne pas toucher Systeme Proc  !!
 
proc acceesalon {nick} {
   set access 0
   set fa [open "autorise_salon.db" r]
   while {![eof $fa]} {
      set get [gets $fa]
      if {[string equal [string tolower $get] [string tolower $nick]]==0} {
         set access 1
      }
   close $fa
   return $access
}
}



Cordialement
Répondre Avertir
#29
bonjour,

j'ai essayer comme ceci:

tcl
bind join - "#Salon *" SalonDeVip
proc SalonDeVip {nick host hand chan} {
global UserDb 
set UserDb [open UserVip.db r]
 while {![eof $UserDb]} {
set get [gets $UserDb]
if {[string first [string tolower $get]  [string tolower $nick]]} {
  pushmode $chan +o $nick
  return 1
  }
 close $UserDb
 return 0
 }
 }



mais il op tous les users :( et n'accepte pas les pseudos avec les caractère spéciaux [ ] ni les extensions. help please ..


Cordialement
Répondre Avertir
#30
tcl
if {[string first [string tolower $get]  [string tolower $nick]] != -1} {



Et j'ajouterais un close $UserDb avant le return 1, par précaution.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté