SYSTEME DE HIGHLIGHTS PERSOS A CONFIGURÉ DAN UNE LISTE

cs_Raziell Messages postés 119 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 30 juin 2005 - 5 juin 2004 à 17:32
cs_NeO47 Messages postés 33 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 5 août 2004 - 23 juin 2004 à 13:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23431-systeme-de-highlights-persos-a-configure-dan-une-liste

cs_NeO47 Messages postés 33 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 5 août 2004
23 juin 2004 à 13:59
JuJuLoL Tu Sait Lire ??? "Rien de bien compliquer juste pour montrer un peu l'utilisation des fichiers txt." :)
cs_JuJuLoL Messages postés 56 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 20 novembre 2004
23 juin 2004 à 13:53
moi j'dis : le script est pas terrible, mon H.L moi il tient en 4 lignes :s




---------------------------------------------
#ADeSiGNer : libertygeneration.net:7000
http://skyern.free.fr/design/tchat.php
www.adesigner.new.fr
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
7 juin 2004 à 12:23
oui mais c'est lent ça en plus il pourra pas en mettre une infinité :
set line too long ....;
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
7 juin 2004 à 09:34
Sinon il y a un autre moyen de faire sans utiliser un fichier txt
Tu peux utiliser des tokens . Lorsque tu cliques sur ajouter tu fais /set %variable $addtok(%variable,$did(id),44) et aprés quand tu veux ajouter dans ta liste tu fais un alias style
alias liste {
var %i = 1
while (%i <= $numtok(%variable,44) ) {
.did -a $dname Iddelaliste $gettok(%variable,%i,44) }
inc %i
}
}
voila aprés pour supprimer et modifier il faut utiliser $remtok et $reptok mais sinon c'est bien codé ça mérite un 8/10 bv et bonne continuation a toi
cs_NeO47 Messages postés 33 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 5 août 2004
6 juin 2004 à 16:53
Et bien je vais esayer de prendre tout ca en compte les htables je ne connait pas du tout j'en ai seulement entendu parler mais bon je vais essayer de trouver un tuto afin de poster une source meilleure.
Merci pour vos commentaires :) ++
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
6 juin 2004 à 14:21
c'est bon a savoir
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
6 juin 2004 à 14:19
Oui effectivement pour le coup un $ifmatch aurait suffit, ça allège le code mais ça n'augmente pas la rapidité comparé à une méthode avec variables (contexte).
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
6 juin 2004 à 13:29
Hades53 avec les hashtable il est vraiment tranquil ... il pourra faire entre 3000 et 6000 requetes par seconde donc bon ...

ceci dit j'avais jamais pensé a utiliser une fenetre comme buffer... ça doit etre intéréssant.

et petite remarque , je ne suis pas très convaincu par ton optimisation. Certe tu utilises des variables locales ce qui est plus rapide que les hastables mais elles ne sont pas utiles ici . Avec $ifmatch tu pourrais t'en sortir plus facilement ,comme ce que jai fais plus haut. Comme ça moins de processus donc un théorie un code plus rapide.
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
6 juin 2004 à 12:43
Quelques bogues (* /did: insufficient parameters (line 29, script3.mrc), doublons, highlight de * = préviens à chaque fois, évaluation des variables et identifieurs).

Mais la pire chose, c'est:
on *:text:*:#:{
    if %hlperso == on { 
    %d = 1
    while (%d <= $lines(hls.txt)) {  
        If ($read(hls.txt,%d) iswm $1- ) { 
        echo -a   4¬Highlight System:¬ 2 [ $time ] 12 $nick  2A Dit 10 $read(hls.txt,%d)  2sur 10 $chan              
        }

        inc %d
    }
    }
}


Mettre un code super lent sur cet évènement c'est vraiment horrible.
À chaque fois que quelqu'un parle sur un salon: accès disque. Je n'ose pas imaginer ce que ça doit donner si il y a 50 mots configurés et si tu es sur 6 salons où on y parle beaucoup.

En optimisé ton code donnerait ça:
/Codeon *:text:*:#:{
if %hlperso == on {
var %l = $lines(hls.txt) , %cnt
%d = 1
while (%d <= %l) {
%cnt = $read(hls.txt,n,%d)
If (%cnt iswm $1- ) {
echo -a 4¬Highlight System:¬ 2 [ $time ] 12 $nick 2A Dit 10 %cnt 2sur 10 $chan
}

inc %d
}
}
}/Code

Celui-ci aussi n’est pas à mettre dans un tel endroit, faut jamais exécuter des actions sur des fichiers lors des évènements aussi fréquents que ‘on text’, utilise comme le suggère Kerrigan un système de hash table, ou mieux : à la place d’ajouter et supprimer des lignes dans un fichier texte, ajoute les dans une fenêtre cachée (/window –h) en utilisant les fonctions associées (/aline, /dline, /iline, $line) tu arriveras à obtenir un bon contrôle, si tu procèdes ainsi ton code sera beaucoup plus rapide.
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
6 juin 2004 à 00:54
ben il peut toujours le faire en file handling pour que ça rame moins
ou alors un vilain systeme hashtable pour etre encore plus rapide ...

on crée une htable higlihts ou le nom de chaque ligne sera du style n1,n2,...

avec un event texte du genre :

on *:text:*:#:{
if (%hlperso = on) {
var %d = 1
if (!$hget(highlight).size) { loadhtxt }
while ($hget(highlight,n $+ %d)) {
If ($ifmatch iswm $1- ) {
echo -a $nick a dit $ifmatch sur $chan
}
inc %d
}
}
}


on peut toujours garder le fichier texte comme buffer en créant la htable avec la syntaxe suivante :

loadhtxt {
if ($hget(highlight).size) { hfree highliht }
var %d = 1
while ($read(hls.txt,%d)){
hadd -m highlight $+(n,%d) $ifmatch
inc %d
}
}

par contre il ne faut pas que "0" "$false" ou "$null" soit dans le fichier texte sinon la boucle va s'arreter.

par contre a chaque modification du fichier texte il faudra "uploader" la table highlight.

wala tit sysreme highlight compatible avec le tiens peut etre plus rapide mais faudra faire les tests. je te met 7/10
cs_Naza Messages postés 179 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 23 juin 2005 1
5 juin 2004 à 23:06
Ca aurait été mal codé je t'aurais dit "Y'a déjà ça dans le mIRC.."
Mais c'est pas mal sauf que si on en met beaucoup ça risque de ramer un peu à force de chercher toutes les lignes du fichier txt.
Bonne continuation. 7/10
cs_NeO47 Messages postés 33 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 5 août 2004
5 juin 2004 à 21:45
Oui c'est sur c'est simple c'est juste pour montrer l'utilisation des fichiers texte comme je l'ai dit dans le titre car quand je voit les derniers codes: par exemple un auto join ajouté recemment avec un nombre limité avec 20 salons... Ca me fait sortir les yeux de la tete lool.
Doncvoila mon objectif été d'aider certaines personnes afin qu'elles nous poste des sources meilleures que les precedentes
Kerrigan Messages postés 708 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 17 mars 2005
5 juin 2004 à 21:24
c'est simple et deja vu certe ... mais c'est bien codé
cs_NeO47 Messages postés 33 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 5 août 2004
5 juin 2004 à 18:53
Oups oui dslé je modifie ca dessuite!
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
5 juin 2004 à 18:16
Très basique, mais peut également servir de base pour montrer comment utiliser une liste afin d'y entrer des données sans limite.

Pour corriger le bug que t'a signalé Raziell, avant de /loadbuf, vérifie que le fichier existe bien avec $exists(hls.txt)
cs_Raziell Messages postés 119 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 30 juin 2005 1
5 juin 2004 à 17:32
Tu dit : "Rien de bien compliquer juste pour montrer un peu l'utilisation des fichiers txt."

Moi j'te dit :


-
* /loadbuf: Impossible d'ouvrir 'C:\unzipped\mircfr\mircfr\hls.txt' (ligne 17, script37.ini)
-

Donc voila :)
Sinon c'est bien mais c'est de la revu ...
Rejoignez-nous