Autojoin htable multiserver

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 617 fois - Téléchargée 15 fois

Contenu du snippet

Petit autojoin en htable multiserver.

Le server, le salon et la clef ce mettent automatiquement selon là ou est démarrer le dialog.

-Utilisation de htable
-Utilisation de Gettok, reptok, wildtok, remtok

Source / Exemple :


menu channel {
  Auto-Join:dialog -m autoj autoj
}
on *:disconnect:{
  .hsave -o autoj autojoin.dou
}
on *:start:{
  hmake autoj 1000
  hload autoj autojoin.dou
}
ON 1:LOAD:{ hmake autoj 1000 } 
on *:exit:{
  hsave -o autoj autojoin.dou
}
on *:connect: { 
  autojoin
}
dialog autoj {
  title "Auto-Join Salon"
  size -1 -1 184 185
  option dbu
  list 1, 64 12 61 113, size vsbar
  list 2, 6 12 58 113, size vsbar
  list 3, 124 12 58 113, size vsbar
  edit "", 4, 64 128 50 10, autohs center
  edit "", 5, 6 128 50 10, autohs
  edit "", 6, 124 128 50 10, autohs
  button "Ajouter", 7, 13 147 37 12
  button "Supprimer", 8, 131 147 37 12
  button "Fermer", 9, 72 166 37 12
  button "Modifier", 13, 74 147 37 12
  text "Salon", 10, 79 2 25 8, center
  text "Server", 11, 17 3 25 8, center
  text "Clef", 12, 139 2 25 8, center
}

on *:dialog:autoj:*:*:{
  if $devent == init {
    var %i = 1
    var %w = $gettok($hget(autoj,aj),0,47)
    while %i <= %w {
      did -a $dname 1 $gettok($gettok($hget(autoj,aj),%i,47),1,126)
      did -a $dname 2 $gettok($gettok($hget(autoj,aj),%i,47),2,126)
      did -a $dname 3 $gettok($gettok($hget(autoj,aj),%i,47),3,126)
      inc %i
    }
    did -a $dname 4 $active
    did -a $dname 5 $server
    did -a $dname 6 $chan($active).mode.key
  }
  if $devent == sclick {
    if $did == 1 { did -c $dname 2 $did(1).sel | did -c $dname 3 $did(1).sel }
    if $did == 2 { did -c $dname 1 $did(2).sel | did -c $dname 3 $did(2).sel }
    if $did == 3 { did -c $dname 1 $did(3).sel | did -c $dname 2 $did(3).sel }
    if $did == 7 { 
      $iif($did(4) && $did(5),hadd -m autoj aj $+($hget(autoj,aj),/,$did(4),~,$did(5),~,$did(6)),echo -a Vous n'avez pas spécifier de server ou de salon.)
      did -a $dname 1 $did(4)
      did -a $dname 2 $did(5)
      did -a $dname 3 $did(6)
    }
    if $did == 8 { 
      $iif($wildtok($hget(autoj,aj),$did(1).seltext $+ ~ $+ $did(2).seltext $+ *,0,47),hadd -m autoj aj $remtok($hget(autoj,aj),$wildtok($hget(autoj,aj),$did(1).seltext $+ ~ $+ $did(2).seltext $+ *,1,47),1,47),echo -a Veuillez selectionner un salon et son server attitré.)
      did -r $dname 1,2,3
      var %i = 1
      var %w = $gettok($hget(autoj,aj),0,47)
      while %i <= %w {
        did -a $dname 1 $gettok($gettok($hget(autoj,aj),%i,47),1,126)
        did -a $dname 2 $gettok($gettok($hget(autoj,aj),%i,47),2,126)
        did -a $dname 3 $gettok($gettok($hget(autoj,aj),%i,47),3,126)
        inc %i
      }
    }
    if $did == 9 { dialog -x $dname $dname }
    if $did == 13 { 
      $iif($wildtok($hget(autoj,aj),$+($did(1).seltext,~,$did(2).seltext,~,$did(3).seltext,*),0,47),hadd -m autoj aj $reptok($hget(autoj,aj),$wildtok($hget(autoj,aj),$did(1).seltext $+ ~ $+ $did(2).seltext $+ ~ $+ $did(3).seltext $+ *,1,47),$+($did(4),~,$did(5),~,$did(6)),1,47),echo -a Veuillez selectionner un salon et son server attitré.)
      did -r $dname 1,2,3
      var %i = 1
      var %w = $gettok($hget(autoj,aj),0,47)
      while %i <= %w {
        did -a $dname 1 $gettok($gettok($hget(autoj,aj),%i,47),1,126)
        did -a $dname 2 $gettok($gettok($hget(autoj,aj),%i,47),2,126)
        did -a $dname 3 $gettok($gettok($hget(autoj,aj),%i,47),3,126)
        inc %i
      }
    }
  }
}

alias autojoin {
  var %i $gettok($hget(autoj,aj),0,47)
  while %i > 0 {
    var %autojoin $gettok($gettok($hget(autoj,aj),%i,47),2,126)
    if $server == %autojoin {
      join $gettok($gettok($hget(autoj,aj),%i,47),1,126) $gettok($gettok($hget(autoj,aj),%i,47),3,126)
    }
    dec %i
  }
}

Conclusion :


Si vous remarquer des bugs, amélioration ou optimisation, veuillez m'en faire part.

Je met se code en initié car je pense que les htables et les tokens ne sont pas à porté des débutant.

A voir également

Ajouter un commentaire

Commentaires

bakry29
Messages postés
3
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
21 décembre 2015
-
probleme avec le on*:start: => * /hload: no such table 'autoj'
doob666
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011
-
Mise à jour effectuées. Merci de ta remarque =)
ToukiCestMoi
Messages postés
1
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
20 décembre 2010
-
Il y a quelque chose que je ne comprend pas...
Tu utilises une htable pour stocker tes données du des autojoins. C'est bien, les htables.

Cependant tu utilises une htable d'une capacité de 1000 items hors, tu n'en utilises qu'un seul... L'item "aj" si tu utilises une htable pour un seul item, autant faire un %set.

Tu devrais utiliser la puissance des htables différemment. N'hésite pas à créer de nouvelles lignes pour chaque serveur.

C'est juste un conseil, après tu en fais ce que tu veux :)
Bonne continuation

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.