Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AUTO JOIN MULTI SERVEUR EN HASH TABLE


Information sur la source

Catégorie :AddOns Classé sous : autojoin, hashtable, multiserver Niveau : Débutant Date de création : 08/06/2007 Date de mise à jour : 28/06/2007 15:27:38 Vu : 2 657

Note :
Aucune note

Commentaire sur cette source (26)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voila tout est dit dans le titre c'est un auto join ou l'on peut entrer un nombre infinis de salon (selon la limite imposer par le server) sur un nombre infinis de server et tous ça en hash table. j'attend vos commentaire pour le faire évoluer et pour recenser les bug que je n'aurais pas vu (normalement il n'y en as pas )
 

Source

  • dialog ajoin {
  • title "Auto - join"
  • size -1 -1 247 238
  • option pixels
  • text "Entrer un Salon à joindre", 1, 6 4 235 16
  • edit "", 2, 6 27 235 20
  • text "Entre un server (ex : Voila , EpiKnet , ...)", 3, 6 53 235 16
  • edit "", 4, 6 75 235 21
  • button "Ajouter", 5, 6 103 116 25
  • button "Effacer", 6, 125 103 116 25
  • button "Effacer tout les autojoins d'un server", 7, 5 131 235 25
  • button "Liste server spécifier", 8, 6 160 116 25
  • button "Tout effacer", 9, 125 160 116 25
  • button "Liste server et Salon complète.", 10, 6 188 235 25
  • check "Activer/désactiver", 11, 6 218 114 20
  • button "Etat de l'autojoin (on/off)", 12, 115 218 126 20
  • }
  • on 1:dialog:ajoin:init:*:{
  • if %ajoin == 1 { did -c 11 }
  • menu * {
  • Auto-join:autoj
  • }
  • alias autoj { dialog -m ajoin ajoin }
  • on 1:dialog:ajoin:edit:*:{
  • if ($did == 2) set %achan $did(ajoin,2)
  • if ($did == 4) set %aserv $did(ajoin,4)
  • }
  • on 1:dialog:ajoin:sclick:*:{
  • if ($did == 5) ajoin -a %aserv %achan
  • if ($did == 6) ajoin -r %aserv %achan
  • if ($did == 7) ajoin -c %aserv
  • if ($did == 8) ajoin -g %aserv
  • if ($did == 9) ajoin -d
  • if ($did == 10) ajoin -Mg
  • if ($did == 11) {
  • if ($did(ajoin,11).state == 1) { ajoin 1 }
  • else { ajoin 0 }
  • }
  • if ($did == 12) ajoin
  • }
  • ------------------------------------------
  • alias ajoin {
  • if ($regex($1,/^-a$/i) == 1) {
  • if ($regex($2,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de server spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($2,/[A-Z0-9]/i) == 1) {
  • noop $regsub($2,,,%ane)
  • }
  • if ($regex($3-,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de salon spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($3-,/[A-Z0-9]/i) == 1) {
  • var %spc = $calc($regex($3-,/\s/gi) + 1)
  • if ($regex($3-,/[&%#]\S+/xig) != %spc) {
  • echo -a Les salons doivent avoir ce prefixe : #
  • return
  • }
  • }
  • if ($regex($3-,/[&%#]\S+/xig) == %spc) {
  • if ($numtok($hget(Ajoin,$2),32) == 0) {
  • hadd -m Ajoin $2 $3-
  • noop $regsub($3-,/\s/g,$chr(44),%lmnop)
  • echo -a Ajouter %lmnop sur $2
  • unset %lmnop
  • return
  • }
  • elseif ($numtok($hget(Ajoin,$2),32) > 0) {
  • var %xzs = 1
  • var %chsjsh = $hget(Ajoin,$2)
  • while (%xzs <= $numtok($hget(Ajoin,$2),32)) {
  • hadd -m Ajoin $2 %chsjsh $+ $chr(32) $+ $3-
  • inc %xzs
  • noop $regsub($3-,/\s/g,$chr(44),%lmnop)
  • echo -a Ajouter %lmnop sur $2
  • unset %lmnop
  • return
  • }
  • }
  • }
  • }
  • if ($regex($1,/^-c$/i) == 1) {
  • if ($regex($2,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de server spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 1) {
  • echo -a Entrez un server
  • return
  • }
  • if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 0) {
  • var %exa = $iif($hfind(Ajoin,$2),1,0)
  • if (%exa) {
  • noop $regsub($2,,,%rne)
  • hdel Ajoin %rne
  • echo -a $2 a été effacer de la Database
  • }
  • elseif (!%exa) {
  • echo -a $2 Nexiste pas dans la Database
  • return
  • }
  • }
  • }
  • if ($regex($1,/^-g$/i) == 1) {
  • if ($regex($2,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de server spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 1) {
  • echo -a Entrez un server
  • return
  • }
  • if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 0) {
  • var %exa = $iif($hfind(Ajoin,$2),1,0)
  • if (%exa) {
  • echo -a Salon de $2 :
  • noop $regsub($hget(Ajoin,$hfind(Ajoin,$2)),/\s/g,$chr(44),%j)
  • echo -a %j
  • }
  • elseif (!%exa) {
  • echo -a $2 n'est pas dans la Database
  • }
  • }
  • }
  • if ($regex($1,/^-r$/i) == 1) {
  • if ($regex($2,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de server spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($3,/[A-Z0-9]/i) == 0) {
  • echo -a Pas de salon spécifier. Veuillez entrer un server et un salon.
  • return
  • }
  • if ($regex($4-,/[A-Z0-9]/i) == 1) {
  • echo -a Entrer un salon et un server
  • return
  • }
  • if ($regex($3,/[&%#]\S+/xig) == 0) {
  • echo -a Les salons doivent avoir comme préfixe : #
  • return
  • }
  • if ($regex($3,/[&%#]\S+/xig) == 1) && ($regex($4-,/[A-Z0-9]/i) == 0) {
  • var %find2 = $deltok($hget(Ajoin,$2),$findtok($hget(Ajoin,$2),$3,1,32),32)
  • hadd -m Ajoin $2 %find2
  • echo -a $3 a été effacer de $2
  • }
  • }
  • if ($regex($1,/^-d$/i) == 1) {
  • if ($regex($2-,/[A-Z0-9]/i) == 0) {
  • hfree Ajoin
  • echo -a La database a bien été effacer
  • }
  • }
  • if ($regex($1,/^-Mg$/i) == 1) {
  • if ($regex($2-,/[A-Z0-9]/i) == 0) {
  • var %a = 1
  • echo -a Listage de tout les salons et les server...
  • echo -a $chr(160)
  • while (%a <= $hget(Ajoin,0).item) {
  • linesep
  • echo -a $hget(Ajoin,$ifmatch).item : $replace($hget(Ajoin,$hget(Ajoin,$ifmatch).item),$chr(32),$chr(44))
  • linesep
  • inc %a
  • }
  • linesep
  • echo -a Fin du Listage
  • linesep
  • }
  • }
  • if ($regex($1,/^1$/i) == 1) {
  • if ($regex($2-,/[A-Z0-9]/i) == 0) {
  • set %ajoin 1
  • echo -a L'autojoin à été mis sur On
  • }
  • }
  • if ($regex($1,/^0$/i) == 1) {
  • if ($regex($2-,/[A-Z0-9]/i) == 0) {
  • set %ajoin 0
  • echo -a L'auto-join a été mis sur Off
  • }
  • }
  • if ($regex($1-,/[A-z0-9]/ig) == 0) {
  • if (!%ajoin) {
  • echo -a S'il vous plait démarrer ou arreter l'auto-join
  • return
  • }
  • elseif (%ajoin) {
  • echo -a L'auto-join est  $+ $iif(%ajoin == 1,Activer,Désactiver)
  • }
  • }
  • }
  • on *:connect:if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))
  • on *:start:{
  • hmake -s Ajoin 1000
  • if ($isfile(Ajoin.dat)) { hload Ajoin Ajoin.dat }
  • }
  • on *:exit:hsave -o Ajoin Ajoin.dat
  • on *:unload:unset %ane %rne %j %ajoin %lmnop
dialog ajoin {
  title "Auto - join"
  size -1 -1 247 238
  option pixels
  text "Entrer un Salon à joindre", 1, 6 4 235 16
  edit "", 2, 6 27 235 20
  text "Entre un server (ex : Voila , EpiKnet , ...)", 3, 6 53 235 16
  edit "", 4, 6 75 235 21
  button "Ajouter", 5, 6 103 116 25
  button "Effacer", 6, 125 103 116 25
  button "Effacer tout les autojoins d'un server", 7, 5 131 235 25
  button "Liste server spécifier", 8, 6 160 116 25
  button "Tout effacer", 9, 125 160 116 25
  button "Liste server et Salon complète.", 10, 6 188 235 25
  check "Activer/désactiver", 11, 6 218 114 20
  button "Etat de l'autojoin (on/off)", 12, 115 218 126 20
}
on 1:dialog:ajoin:init:*:{
if %ajoin == 1 { did -c 11 }
menu * {
  Auto-join:autoj 
}
alias autoj { dialog -m ajoin ajoin }
on 1:dialog:ajoin:edit:*:{
  if ($did == 2) set %achan $did(ajoin,2)
  if ($did == 4) set %aserv $did(ajoin,4)
}
on 1:dialog:ajoin:sclick:*:{
  if ($did == 5) ajoin -a %aserv %achan
  if ($did == 6) ajoin -r %aserv %achan
  if ($did == 7) ajoin -c %aserv
  if ($did == 8) ajoin -g %aserv
  if ($did == 9) ajoin -d
  if ($did == 10) ajoin -Mg
  if ($did == 11) {
    if ($did(ajoin,11).state == 1) { ajoin 1 }
    else { ajoin 0 }
  }
  if ($did == 12) ajoin
}

------------------------------------------
alias ajoin {
  if ($regex($1,/^-a$/i) == 1) {
    if ($regex($2,/[A-Z0-9]/i) == 0) { 
      echo -a Pas de server spécifier. Veuillez entrer un server et un salon. 
      return
    }
    if ($regex($2,/[A-Z0-9]/i) == 1) {
      noop $regsub($2,,,%ane)
    }
    if ($regex($3-,/[A-Z0-9]/i) == 0) {
      echo -a Pas de salon spécifier. Veuillez entrer un server et un salon. 
      return
    }
    if ($regex($3-,/[A-Z0-9]/i) == 1) {
      var %spc = $calc($regex($3-,/\s/gi) + 1)
      if ($regex($3-,/[&%#]\S+/xig) != %spc) {
        echo -a Les salons doivent avoir ce prefixe : #
        return
      }
    }
    if ($regex($3-,/[&%#]\S+/xig) == %spc) {
      if ($numtok($hget(Ajoin,$2),32) == 0) {
        hadd -m Ajoin $2 $3-
        noop $regsub($3-,/\s/g,$chr(44),%lmnop)
        echo -a Ajouter %lmnop sur $2
        unset %lmnop
        return
      }
      elseif ($numtok($hget(Ajoin,$2),32) > 0) { 
        var %xzs = 1
        var %chsjsh = $hget(Ajoin,$2)
        while (%xzs <= $numtok($hget(Ajoin,$2),32)) {
          hadd -m Ajoin $2 %chsjsh $+ $chr(32) $+ $3-
          inc %xzs
          noop $regsub($3-,/\s/g,$chr(44),%lmnop)
          echo -a Ajouter %lmnop sur $2
          unset %lmnop
          return
        }
      }
    }
  }
  if ($regex($1,/^-c$/i) == 1) {
    if ($regex($2,/[A-Z0-9]/i) == 0) { 
      echo -a  Pas de server spécifier. Veuillez entrer un server et un salon.  
      return
    }
    if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 1) {
      echo -a Entrez un server 
      return
    }
    if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 0) { 
      var %exa = $iif($hfind(Ajoin,$2),1,0)
      if (%exa) {      
        noop $regsub($2,,,%rne)
        hdel Ajoin %rne     
        echo -a  $2 a été effacer de la Database 
      }  
      elseif (!%exa) {
        echo -a $2 Nexiste pas dans la Database
        return
      }          
    }
  }
  if ($regex($1,/^-g$/i) == 1) {
    if ($regex($2,/[A-Z0-9]/i) == 0) {
      echo -a Pas de server spécifier. Veuillez entrer un server et un salon. 
      return
    }
    if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 1) {
      echo -a Entrez un server
      return
    }
    if ($regex($2,/[A-Z0-9]/i) == 1) && ($regex($3-,/[A-Z0-9]/i) == 0) {
      var %exa = $iif($hfind(Ajoin,$2),1,0)
      if (%exa) {   
        echo -a Salon de $2 :
        noop $regsub($hget(Ajoin,$hfind(Ajoin,$2)),/\s/g,$chr(44),%j)
        echo -a %j
      }
      elseif (!%exa) {
        echo -a $2 n'est pas dans la Database
      }
    }
  }
  if ($regex($1,/^-r$/i) == 1) {
    if ($regex($2,/[A-Z0-9]/i) == 0) {
      echo -a Pas de server spécifier. Veuillez entrer un server et un salon. 
      return
    }
    if ($regex($3,/[A-Z0-9]/i) == 0) {
      echo -a Pas de salon spécifier. Veuillez entrer un server et un salon.  
      return
    } 
    if ($regex($4-,/[A-Z0-9]/i) == 1) {
      echo -a Entrer un salon et un server   
      return
    } 
    if ($regex($3,/[&%#]\S+/xig) == 0) {
      echo -a Les salons doivent avoir comme préfixe : #    
      return
    }
    if ($regex($3,/[&%#]\S+/xig) == 1) && ($regex($4-,/[A-Z0-9]/i) == 0) {
      var %find2 = $deltok($hget(Ajoin,$2),$findtok($hget(Ajoin,$2),$3,1,32),32) 
      hadd -m Ajoin $2 %find2
      echo -a $3 a été effacer de $2
    }
  }
  if ($regex($1,/^-d$/i) == 1) {
    if ($regex($2-,/[A-Z0-9]/i) == 0) {
      hfree Ajoin
      echo -a La database a bien été effacer
    }
  }
  if ($regex($1,/^-Mg$/i) == 1) {
    if ($regex($2-,/[A-Z0-9]/i) == 0) {
      var %a = 1
      echo -a Listage de tout les salons et les server...
      echo -a $chr(160) 
      while (%a <= $hget(Ajoin,0).item) {
        linesep        
        echo -a $hget(Ajoin,$ifmatch).item : $replace($hget(Ajoin,$hget(Ajoin,$ifmatch).item),$chr(32),$chr(44)) 
        linesep       
        inc %a
      }
      linesep
      echo -a Fin du Listage
      linesep
    }
  }
  if ($regex($1,/^1$/i) == 1) {
    if ($regex($2-,/[A-Z0-9]/i) == 0) {
      set %ajoin 1
      echo -a L'autojoin à été mis sur On
    }
  }
  if ($regex($1,/^0$/i) == 1) {
    if ($regex($2-,/[A-Z0-9]/i) == 0) {
      set %ajoin 0
      echo -a L'auto-join a été mis sur Off
    }
  }
  if ($regex($1-,/[A-z0-9]/ig) == 0) {
    if (!%ajoin) {
      echo -a S'il vous plait démarrer ou arreter l'auto-join
      return
    }
    elseif (%ajoin) {
      echo -a L'auto-join est  $+ $iif(%ajoin == 1,Activer,Désactiver)    
    }
  }
}

on *:connect:if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))
on *:start:{
  hmake -s Ajoin 1000
  if ($isfile(Ajoin.dat)) { hload Ajoin Ajoin.dat }
}
on *:exit:hsave -o Ajoin Ajoin.dat 
on *:unload:unset %ane %rne %j %ajoin %lmnop

Conclusion

enjoy =)
 

Historique

08 juin 2007 16:55:43 :
amélioration à la suite des conseil d'RCA ArKanis
08 juin 2007 17:52:33 :
amélioration suite aux conseils de RCA ArKanis et de Wims
09 juin 2007 13:51:22 :
3 ème mise à jour sur les conseils de wims
09 juin 2007 15:16:23 :
voila voila encore un petite amélioration =) merci a wims
09 juin 2007 15:17:18 :
un oublis
28 juin 2007 15:27:38 :
screenshot

Commentaires et avis

signaler à un administrateur
Commentaire de RCA ArKanis le 08/06/2007 16:25:05

pourquoi tu mets des ! devant des commandes ?
tu utilises des variables globales, mais t'aurais plutôt dû n'utiliser que des Hash Tables

if (%exa == $true) devient : if (%exa)
(vu que c'est booléen)


les halt sont-ils indispensables ?

ligne 154 :
      var %find = $findtok($hget(Ajoin,$2),$3,1,32)
      var %find2 = $deltok($hget(Ajoin,$2),%find,32)    
devient (vu que tu n'utilises qu'une fois %find) :
      var %find2 = $deltok($hget(Ajoin,$2),$findtok($hget(Ajoin,$2),$3,1,32),32)

sinon, si tu as par exemple :
var %a = 1
var %b = 2
mets plutôt ça : var %a = 1, %b = 2


J'ai pas testé sinon, j'ai pas vraiment le temps :(

signaler à un administrateur
Commentaire de doob666 le 08/06/2007 16:49:32

les ! devant les commandes c'est une vieille habitude de mes début, le mec avec qui j'ai appris faisait toujours ça et je les met (quand je fais pas gaffe lol) j'ai changé les  if(%exa == $true) en (if (%exa) et les if (%exa == false) en if (!%exa) j'ai remplaçé la ligne que tu m'as dit
voila je repost cette source après les modifications. Merci bien RCA ArKanis. si tu vois d'autres choses signale les moi =)

signaler à un administrateur
Commentaire de RCA ArKanis le 08/06/2007 16:56:30

c'est pareil avec $null (booléen)
regroupe tes events ON DIALOG :
on 1:dialog:ajoin:*:*:{
  if ($devent == init) {
    if (%ajoin == on) did -c 11
  }
  elseif ($devent == sclick) {
    if($did == 4) set %aserv $did(ajoin,4)
    elseif ($did == 5) ...
}

tu devrais plutôt utiliser les chiffres 1 et 0 au lieu de "on" et "off", vu que c'est booléen (encore une fois :D)
=> if (%ajoin) ...

enlève aussi les / devant d (lignes du début)

utilise elseif au lieu de halt

c'est déjà ça, non pas pour commencer, mais pour la suite :)

signaler à un administrateur
Commentaire de wims le 08/06/2007 17:02:16

Ce code n'est pas d'un niveau initié mais c'est pas très important.

Tu dis que le code n'est pas bugué mais d'entre, je vois ça :

# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ /d ajoin }
# }

Il manque surement l'alias /d
Tu devrais regroupé tes event on dialog et ne pas mettre les {} lorsque une seul commande est faite dans un bloc
Tu n'utilise pas elseif ou /else pour optimiser
if (%var == $null)     if (%var != $false)
>>                     >>
if (!%var)             if (%var)

(marche pour $null $false et 0)

mettre le ! pour les /commandes est inutile je pense étant donné que le code est censé etre ajouté sur un mirc qui fonctionne (
!echo -a -  >> /help /linesep

Ce genre de code est présent a gogo sur le site, étant donné que le tient n'apporte rien de mieux que les autres, et qu'il est moins bien codé, c'est un peu inutile de l'avoir posté, essaye quand même de corriger.

signaler à un administrateur
Commentaire de wims le 08/06/2007 17:17:44

Ok j'étais resté trop longtemp sur la page avant les commentaires :)
Il n'empêche que tu devrais le prendre en compte

Le point d'exclamation en début de command est utilisé pour ne pas effectue la commande en tant qu'alias ( souvent utilisé pour debug, si qqun a un alias personnalisé "/echo" et qu'il veux effectue la commande de mirc /echo )
Du genre :
alias echo echo -a > $1-
alias ok echo ok
alias ok1 !echo -a $1-

:)

signaler à un administrateur
Commentaire de doob666 le 08/06/2007 18:01:46

ok pour les ! je ne savais pas il ne me l'avais pas dit
j'ai refait pour l'alias (enfin j'ai remis pour ceux qui n'on pas l'alias /d ça allait plus vite :x)
j'ai regroupé mes on dialog.
Si vous voyez d'autres choses dites les moi.
Pour répondre a Wims j'ai mis cet addons car je n'en ai pas trouver en hash tables et que ça va plus vite que les autres. j'ai aussi mis ce code pour pouvoir progresser et améliorer mon code.

signaler à un administrateur
Commentaire de wims le 08/06/2007 18:20:45

Oué, plein d'autre chose si tu veux :
-Quand ta un bloc de commande avec une seul commande du genre ici :
on *:exit:{ hsave -o Ajoin Ajoin.dat }
-Les {} ne sont pas nécéssaire et ralentisse l'execution d'un script (je ne te cache pas que pour ton addon, gagner 1 miliseconde n'a aucun interet, c'est juste a titre indicatif et un habitude a prendre)
-Il y a tjs cette chose bizarre :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
-Utilise /noop au lieu d'echo -q
-Unset plusieur var d'un coup : unset %var1 %var2
-Utilise /return plutot que halt
-Tu n'a pas changer le echo -a - en /linesep (plus propre)
-ça :

# on *:connect:{
# if (%ajoin == 1) {
# var %nexists $iif($hget(Ajoin,$server),true,false)
# if ($regex(%nexists,/^false$/i) == 1) {
# halt
# }
# elseif ($regex(%nexists,/^true$/i) == 1) {
# join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
# }
# }
# }

C'est plus qu'horrible :]
Tu peux optimiser :

on *:connect:if (%ajoin && $hget(Ajoin,$server)) join $replace($v2,$chr(32),$chr(44))

(on passe de 11 ligne a une ligne.)

-Tu abuses trop des regex alors que c'est inutile
-Tu as modifier ce que t'a dis ArKanis a propos du stockage bouléen dans les var mais j'vois encore des on/off et des $true/$false alors que tout devrais etre 0 ou 1

t'as du boulot :)

signaler à un administrateur
Commentaire de doob666 le 08/06/2007 18:40:07

pour le /noop ça fait :
noop $regsub($3-,/\s/g,$chr(44),%lmnop)
ou on met juste "/noop" ????

signaler à un administrateur
Commentaire de doob666 le 08/06/2007 18:42:02

et pour les regex je veux bien les remplacer mais.... comment?

signaler à un administrateur
Commentaire de wims le 08/06/2007 19:02:31

Oui pour le noop et pour les regex, oué j'sais pas c'est juste que sur le on connect il étais vraiment inutile, en regardant les autres, c'est vrai que tu peux les laissé :)

signaler à un administrateur
Commentaire de doob666 le 08/06/2007 19:09:05

ok merci bien Wims, je fait ça tout de suite =)

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 09:38:34

Bon j'ai essayer de remplacer tout es on/off par des 1/0, les echo -q par les noop, ça :
# on 1:dialog:ajoin:sclick:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
par ça :  
# on 1:dialog:ajoin:init{
# if %ajoin == on { did -c 11 }
# menu * {
# Auto-join:{ autoj }
# }
j'ai optimiser un peu mais....ça ne marche plus....j'ai du foirer quelque part... je recherche le pourquoi du comment et je repost tout ça très vite.

signaler à un administrateur
Commentaire de wims le 09/06/2007 11:39:03

La commande /noop est apparus a la version 6.17.
Utilise on *:dialog:ajoin:init:*:{

Dans l'editeur de script mirc, vérifie que tu n'est pas un probleme d'accolade avec les boutons {}

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 13:17:38

j'ai la comande /noop (v6.2)
ok pour l'init
et pour les accolads c'est ce que j'ai regarder en premier

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 13:27:34

* /if: 'join' unknown operator <<<=  voila ce que j'ai quand je met ça : " on *:connect:if (%ajoin && $hget(Ajoin,$server)) join $replace($v2,$chr(32),$chr(44)) "

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 13:44:35

on *:connect:{
  if (%ajoin && $hget(Ajoin,$server)) {
    join $replace($v2,$chr(32),$chr(44))
  }
}
j'ai essayer ça...et ça m'as donner : * /join: insufficient parameters

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 13:49:22

ça y est j'ai trouver un truc qui marche :
on *:connect:{
  if (%ajoin) {
    join $replace($hget(Ajoin,$server),$chr(32),$chr(44))
  }
}

signaler à un administrateur
Commentaire de wims le 09/06/2007 14:31:23

Ouais, $hget n'a jamais supporté qu'on lui supprime des parenthèses, surement parce qu'il doit allé cherché l'information dans la ram, il faut normalement tjs mettre les parenthèses pour que le if sois logique mais j'ai une habitude d'en enlevé le plus possible : if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 15:19:24

voila j'ai suivis tout ce que vous m'avez dit merci bien RCA ArKanis et Wims. Si vous voyez d'autre chose n'hésitez pas à me le dire. Autant sur le point de l'optimisation du code que sur l'améioration de celui ci.

signaler à un administrateur
Commentaire de wims le 09/06/2007 15:48:47

Il y a encore des {} inutile
Tu peux simplifier certain if en les regroupant avec des &&
Mettre des identifieurs dans les while c'est plus lent, passe par des variable
Tu utilise plusieur variable plein de fois dans l'alias ajoin, plutot que de les déclaré a chaque fois, met un /var %a ,%b %c avec ou non les valeur qui leur corresponde ( $null si elle sont utilisé pour les regsub ) ca t'evitera des /unset
Il y a tjs un pb de {} car tu ne referme pas la { du init

Tes evenement on dialog doivent etre regroupés comme ça :

on *:dialog:ajoin:*:*:{
if ($devent == init && %ajoin) did -c $dname 11
elseif ($devent == edit && $did isin 2.4) set $+(%,$iif($did == 2,achan,aserv)) $did($did)
elseif ($devent == sclick) {
if ($did isnum 5-12) {
var %t = $+(-a.-r.-c.-g.-d.-Mg.,$did(11).state)
ajoin $token(%t,$calc($did - 5),46) %aserv %achan
  }
}
}

Je pense que ça peux etre bon, mais je donne des parametre en trop pour certain click, le mieux serait de les ignoré dans l'alias mais j'ai remarqué quelque incohérence, pour le parametre -c, tu donne deux parametre ( -c et %aserv ) et tu vérifie des truc dans $3-,
Dailleur dans ton alias, TOUTES les conditions que tu fait
tu les répète avec une négation, alors que il suffit de mettre un else, ya vraiment plein de chose a amélioré :x

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 15:52:54

bon ben je me remet à la tâche. tant que tu y est tu n'as pas d'autres choses :x

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 16:12:05

if (%ajoin) && ($hget(Ajoin,$server)) join $replace($v2,$chr(44),$chr(32))<<<<= ne marche toujours pas :(

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 16:13:27

if ($devent == init && %ajoin) did -c $dname 11 <== me donne ==> /if: 'did' unknown operator

signaler à un administrateur
Commentaire de wims le 09/06/2007 16:33:37

Utilise mirc 6.21 :/ mais je viens de testé ton code, le dialog est mal agencé, le mieux serais de faire deux list, une pour les server classé par network, l'autre pour les salons avec les pass pour les salon si il y a ( tu n'en tient pas compte non plus ) ton code ne permet pas de s'autoconnect au server que l'on a rentré, p-e une option aussi pour choisir le nick a utilisé pour le server.

J'men rend compte que ya pas reelement d'autojoin bien complet ici .

signaler à un administrateur
Commentaire de doob666 le 09/06/2007 17:25:36

hum alors là ça change totalement le truc c'est un dialog de connexion complet avec autojoin que tu demande ... hum je vais aire travailler mes neurones xD
pour les chan pass je n'ai pas mis l'option car on en croise peu et que si le pass change il ne sert plus à rien il faut totalement enlever le salon du server enregistrer et remettre le nouveau chan pass. mais bon ça peu toujours se faire avec un peu de patience (je suis disponible que les week end en général)

signaler à un administrateur
Commentaire de lebaronrouge le 10/06/2007 20:03:39

Si ce code vient a être finalisé en dialog d'auto join multiserver/salons avec choix des salons et auth auto selon les chans et les serv la j'adopte  ca m'évitera de finir le mien qui traine et dont le courage me manque pour le finir ^^'

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

probleme de hashtables [ par kishkaya ] ben j'ai cherché dans l'aide mais j'ai pas trouvéje crés un systeme de log de membres avec une hashtablej'ai deux problemes : if ($hget(log) != lo modification de hashtable des que quelqu'un quit un salon [ par kishkaya ] Voila j'ai essayé plein de syntax mais ca a rien donnéj'aimerai que l'on supprime l'insertion $gettok($nick,1,124) de la hashtable 'authen' quand $nic Afficher le contenu d'une hashtable [ par kishkaya ] voila le contenu d'une hashtable est sous cette forme :$nick|logincela est geré par un bot et j'aimerai rajouter une fenetre, une windows dans ce bot screen autojoin [ par dunmer ] &nbsp;Salut &#224; tous , precedemment j'ai post&#233; une soure qui &#233;tait un autojoin , j'ai suivi vos conseils et ameliorer le dialog et je vou hashtable et pixel [ par ranny ] Bonsoir tout le monde,Voila j'ai 2 petites questions.1/ Comment intervertir les valeurs d'une variable $hget.Par exemple comment donner la valeur de $ probleme d'autojoin forcer sur un salon [ par ptit_chat10 ] Bonjour a tous Est ce qu'une personne sais comment retirer sur le script frisson V5 l'autojoin forcé sur le salon frisson ? est ce qu'une personne po Niubot Orange [ par AmelieLyon ] bonjour je souhaiterai savoir comment faire pour que quand je joint un salon avec leur nouveau "bot" sur orange il me op automatiquement? en regarda


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,796 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.