Dialog pour les bot l et q de quakenet


Description

Salut,
C'est ma première source :)
Il s'agit d'un dialog pour Quakenet, qui regroupe les différentes cmds des Bot L et Q (il manque qq. cmds pour le Q comme banlist et pour changer les chanflags ainsi que des notices qu'envoient les bots, j'essayerai d'ajouter ça plus tard, je remercie au passage Amlette pour m'avoir prêté des flags sur un Q) ainsi que whois/whoami/chanlev.
J'ai fais ce script pour un pote, mais je le poste ici au cas où ça intéresserai qq1. (Il n'est pas totalement fini, je le mettrai a jour)
Je n'ai pas eu bcp le temps pour le tester et il a été fais petit à petit, il y a donc surement des bugs.
Il s'agit aussi de la première fois que j'utilise mdx et views :s et le dialog n'est pas hyper joli. Je suis donc preneur de tous conseils pour l'améliorer.
Tant au code, il pourrai être réduit en créant des alias, et il manque encore un contrôle d'erreur (si l'on ne spécifie pas de Channel, etc.).

J'attends donc vos commentaires mais surtout vos critiques, pour l'améliorer.

Source / Exemple :


on *:dialog:Qbot:init:*:{
  dll mdx.dll SetMircVersion $version
  dll mdx.dll MarkDialog $dname
  dll mdx.dll SetControlMDX 70 ListView report rowselect showsel single labeltip headerdrag flatsb grid > views.mdx
  did -i $dname 70 1 headerdims 105:1 52:2
  did -i $dname 70 1 headertext +c 0 Auth $+ $chr(9) $+ 0 Flags 

  qdid -ca 14 L | qdid -a 14 Q | qdid -ca 75 Auth | qdid -a 75 Nick | qdid -ra 12 $active | q76
  qdid -b 51,55,56,84,85,87,100,101,94,95,97,96
  if Q ison $active { Qqon } | else { Qlon }
}
On *:dialog:qbot:close:*: { unset %Qchanlev | unset %Qwhoami | .timer91 off | .disable #welcomeQ }

Menu channel { 
  Bot L/Q: dialog -m qbot qbot
}
alias Qbot { dialog -m Qbot qbot }

dialog Qbot {
  title "Panneau de contrôle des bots L et Q"
  size -1 -1 235 230
  option dbu

  Box "Général", 10, 5 1 225 20
  Text "Channel :", 11, 10 9 25 10
  Edit "", 12, 35 8 55 10, autohs
  Text "Bot :", 13, 100 9 15 10
  Combo 14, 115 8 20 10, drop
  button "Rafraichir", 15, 148 8 70 10

  Box "Topic et welcome", 20, 5 25 225 35
  Text "Topic :", 21, 7 35 30 10, right
  Text "Welcome :", 22, 7 45 30 10, right
  Edit "", 23, 40 34 170 10, autohs
  Edit "", 24, 40 45 157 10, autohs
  Button "Ok", 25, 213 34 13 10
  Button "Ok", 26, 213 45 13 10
  button "Del", 27, 200 45 13 10
  Tab "Modes", 30, 5 62 130 60
  Tab "Commandes", 31

  Check "+n", 40, 17 80 20 10, tab 30
  Check "+t", 41, 17 90 20 10, tab 30
  Check "+m", 42, 17 100 20 10, tab 30
  Check "+c", 43, 17 110 20 10, tab 30
  Check "+u", 44, 37 80 20 10, tab 30
  Check "+s", 45, 37 90 20 10, tab 30
  Check "+N", 46, 37 100 20 10, tab 30
  Check "+C", 47, 37 110 20 10, tab 30
  Check "+p", 48, 57 80 20 10, tab 30
  Check "+i", 49, 57 90 20 10, tab 30
  Check "+D", 50, 57 100 20 10, tab 30
  Check "+d", 51, 57 110 20 10, tab 30
  Check "+r", 52, 77 80 20 10, tab 30
  Check "+k", 53, 77 90 20 10, tab 30
  Check "+l", 54, 77 100 20 10, tab 30
  edit "", 55, 97 89 30 10, tab 30 autohs
  edit "", 56, 97 100 30 10, tab 30 autohs
  Button "Appliquer", 57, 82 110 40 10, tab 30

  Button "Se voicer", 60, 10 80 30 10, tab 31
  Button "Se oper", 61, 10 90 30 10, tab 31
  Button "S'inviter", 62, 10 100 30 10, tab 31
  Button "Clear chan", 63, 10 110 30 10, tab 31
  Button "Set invite", 64, 40 80 30 10, tab 31
  Button "Clear invite", 65, 40 90 30 10, tab 31
  Button "Deopall", 66, 40 100 30 10, tab 31
  Button "Unbanall", 67, 40 110 30 10, tab 31
  button "Recover", 68, 70 80 30 10, tab 31
  button "Chanflags", 92, 70 90 30 10, tab 31
  button "Q Version", 93, 70 100 30 10, tab 31
  button "Banlist", 94, 70 110 30 10, tab 31
  button "", 95, 100 80 30 10, tab 31
  button "", 96, 100 90 30 10, tab 31
  button "", 97, 100 100 30 10, tab 31
  button "Requestop", 98, 100 110 30 10, tab 31

  List 70, 140 65 90 130, extsel size
  Box "", 71, 5 125 130 70
  button "Chanlev", 72, 15 132 30 10
  button "Whoami", 73, 55 132 30 10
  button "Whois", 74, 95 132 30 10 
  combo 75, 10 145 40 10, drop
  combo 76, 55 145 70 10, drop edit
  check "Autovoice", 80, 10 158 35 10
  check "Autoop", 81, 10 168 35 10
  check "Master", 82, 50 158 35 10
  check "Owner", 83, 50 168 35 10
  check "Topic", 84, 90 158 35 10
  check "Ban", 85, 90 168 35 10
  check "", 86, 10 180 10 10
  edit "", 87, 20 180 30 10, right 
  button "+", 100, 51 179 7 7
  button "-", 101, 51 185 7 7
  button "Add/edit", 88, 60 180 30 10
  button "Del", 89, 95 180 30 10

  box "Status", 90, 5 200 225 25
  edit "", 91, 10 210 215 10, read center autohs
}

ON *:dialog:qbot:sclick:*:{ 

  if ( $did isnum 14 ) { if ( $did(qbot,14).seltext = Q ) Qqon | else { Qlon } }
  if ( $did isnum 15 ) { qdid -r 76 | q76
    if $me ison $did(qbot,12) {
      qdid -ra 23 $chan($did(qbot,12)).topic
      qdid -r 24 | .msg $did(qbot,14).seltext welcome $did(qbot,12)
  qmodes $chan($did(qbot,12)).mode } | else { Qerror Vous n'avez pas spécifié un channel valide. } }
  if ( $did = 25 ) { if $me isop $did(qbot,12) topic $did(qbot,12) $did(qbot,23) | else Qerror Vous n'êtes pas opérateur sur $did(qbot,12) $+ . }
  if ( $did = 26 )  .msg $did(qbot,14).seltext welcome $did(qbot,12) $did(qbot,24)
  if ( $did = 27 ) .msg $did(qbot,14).seltext welcome $did(qbot,12) remove
  if ( $did = 57 ) { if $me isop $did(qbot,12) qamodes | else { Qerror Vous n'êtes pas opérateur sur $did(qbot,12) $+ . } }
  if ( $did = 45 ) { if (($qstate(45)) qdid -ub 48 | else { qdid -e 48 } }
  if ( $did = 48 ) { if (($qstate(48)) qdid -ub 45 | else { qdid -e 45 } }
  if ( $did = 53 ) { if (($qstate(53)) qdid -e 55 | else { qdid -b 55 } }
  if ( $did = 54 ) { if (($qstate(54)) qdid -e 56 | else { qdid -b 56 } }
  if ( $did = 60 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext voice $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 61 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext op $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 62 ) { if $did(qbot,12) != $null ) .msg $did(qbot,14).seltext invite $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 63 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext clearchan $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 64 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext setinvite $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 65 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext clearinvite $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 66 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext deopall $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 67 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext unbanall $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 68 ) { if $did(qbot,12) != $null .msg $did(qbot,14).seltext recover $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }

  if ( $did = 70 && $did(qbot,70).seltext != $null ) { 
    if ( $left($left($gettok($did(qbot,70).seltext,6,32),-4),1) = $chr(35) ) {
    qdid -ra 12 $left($gettok($did(qbot,70).seltext,6,32),-4) | qdid -c 75 2 | Qbnick }
    else { qdid -rca 76 $left($gettok($did(qbot,70).seltext,6,32),-4) | qdid -c 75 1  }
    qdid -ra 87 $gettok($did(qbot,70).seltext,10,32) | qdid -u 80,81,82,83,84,85 
    if ( v isin $gettok($did(qbot,70).seltext,10,32) && a isin $gettok($did(qbot,70).seltext,10,32) || g isin $gettok($did(qbot,70).seltext,10,32) && v isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 80
    if ( a isin $gettok($did(qbot,70).seltext,10,32) && o isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 81
    if ( m isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 82
    if ( n isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 83
    if ( t isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 84
    if ( b isin $gettok($did(qbot,70).seltext,10,32) ) qdid -c 85 
  }
  if ( $did = 72 ) { set -u15 %Qchanlev 1 | .msg $did(qbot,14).seltext chanlev $did(qbot,12) | did -i $dname 70 1 headertext +c 0 Auth $+ $chr(9) $+ 0 Flags | qdid -r 70 } 
  if ( $did = 73 ) { set -u15 %Qwhoami 1 | set %Qnick $me | .msg $did(qbot,14).seltext whoami | did -i $dname 70 1 headertext +c 0 Channel $+ $chr(9) $+ 0 Flags | qdid -r 70 } 
  if ( $did = 74 ) { set -u15 %Qwhoami 1 | set %Qnick $qauth | .msg $did(qbot,14).seltext whois $qauth | did -i $dname 70 1 headertext +c 0 Channel $+ $chr(9) $+ 0 Flags | qdid -r 70 } 
  if ( $did = 76 ) { qdid -c 75 2 }
  if ( $did = 86 ) { if (($qstate(86)) { qdid -b 80,81,82,83,84,85 | qdid -e 87,100,101 } | else { qdid -e 80,81,82,83 | if $did(qbot,14).seltext = Q qdid -e 84,85 | qdid -b 87,100,101 } }
  if ( $did = 88 ) { if ( $did(qbot,76) != $null )  { if ($qstate(86)) { if ( $left($did(qbot,87),1) = $chr(43) ) msg $did(qbot,14).seltext chanlev $did(qbot,12) $qauth $did(qbot,87) 
      if ( $left($did(qbot,87),1) = $chr(45) ) msg $did(qbot,14).seltext chanlev $did(qbot,12) $qauth $did(qbot,87) | else { Qerror Vous devez préciser si vous voulez ajouter (+) ou retirer (-) des flags. } } 
  else { qcmodes } } }
  if ( $did = 89 ) { if ( $did(qbot,76) != $null ) .msg $did(qbot,14).seltext chanlev $did(qbot,12) $qauth - $+ $did(qbot,87) }
  if ( $did = 92 ) { if $did(qbot,12) != $null .msg Q chanflags $did(qbot,12) | else { Qerror Veillez spécifier un channel. } }
  if ( $did = 93 ) .msg Q version
  if ( $did = 98 ) { if ( $did(qbot,12) != $null ) { if $nick($did(qbot,12),0,o) = 0 .msg O requestop $did(qbot,12) | else { Qerror Il y a déjà des ops sur le channel. } } |  else { Qerror Veillez spécifier un channel. } }
  if ( $did = 100 && $did(qbot,87) != $null ) { if ( $left($did(qbot,87),1) == $chr(43) ) halt
    if ( $left($did(qbot,87),1) == $chr(45) ) qdid -ra 87 $chr(43) $+ $right($did(qbot,87),-1)
  else { qdid -ra 87 + $+ $did(qbot,87) } }
  if ( $did = 101 && $did(qbot,87) != $null ) { if ( $left($did(qbot,87),1) == $chr(43) ) qdid -ra 87 $chr(45) $+ $right($did(qbot,87),-1)
    if ( $left($did(qbot,87),1) == $chr(45) ) halt
  else { qdid -ra 87 $chr(45) $+ $did(qbot,87) } }

}
alias Qqon { qdid -c 14 2 | qdid -e 85,84,92 | qdid -b 64,65,68 }
alias Qlon { qdid -b 85,84,92 | qdid -e 64,65,68 }
alias qdid { did $1 qbot $2- }
alias qstate { return $did(qbot,$1,1).state }
alias qauth { if $did(qbot,75).seltext = auth { return $chr(35) $+ $did(qbot,76) }
  else { return $did(qbot,76) } 
}
alias Q91 { .timer91 1 6 qdid -r 91 }
alias Qerror { Qdid -ra 91 Erreur : $1- | Q91 }
alias Qbnick { if ( $left(%Qnick,1) = $chr(35) ) { qdid -cra 76 $right(%Qnick,-1) | qdid -c 75 1 }
  else { qdid -cra 76 %Qnick | qdid -c 75 2 }
  unset %qnick
}
alias Q76 {
  if $me ison $did(qbot,12) {
    var %cn = 1, %uc = $nick($did(qbot,12),0)
    while ( %cn <= %uc ) { qdid -a 76 $nick($did(qbot,12),%cn) | inc %cn }
  }
}
alias qmodes {
  if ( n isincs $1 ) { qdid -c 40 } | else { qdid -u 40 }
  if ( t isincs $1 ) { qdid -c 41 } | else { did -u 41 }
  if ( m isincs $1 ) { qdid -c 42 } | else { qdid -u 42 }
  if ( p isincs $1 ) { qdid -c 48 } | else { qdid -u 48 }
  if ( s isincs $1 ) { qdid -c 45 } | else { qdid -u 45 }
  if ( c isincs $1 ) { qdid -c 43 } | else { qdid -u 43 }
  if ( u isincs $1 ) { qdid -c 44 } | else { qdid -u 44 }
  if ( C isincs $1 ) { qdid -c 47 } | else { qdid -u 47 } 
  if ( k isincs $1 ) { qdid -c 53 | qdid -e 55 | if $3 = $null qdid -ra 55 $2 | else { qdid -ra 55 $3 } } | else { qdid -u 53,55 } 
  if ( l isincs $1 ) { qdid -c 54 | qdid -e 56 | qdid -ra 56 $2 } | else { qdid -u 54 }
  if ( r isincs $1 ) { qdid -c 52 } | else { qdid -u 52 }
  if ( D isincs $1 ) { qdid -c 50 } | else { qdid -u 50 }
  if ( d isincs $1 ) { qdid -c 51 } | else { qdid -u 51 }
  if ( N isincs $1 ) { qdid -c 46 } | else { qdid -u 46 }
  if ( i isincs $1 ) { qdid -c 49 } | else { qdid -u 49 }
}
alias qamodes {
  if ($qstate(40)) { set %qmodes1 +n } | else set %qmodes1 -n
  if ($qstate(41)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +t ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -t ] ]
  if ($qstate(42)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +m ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -m ] ]
  if ($qstate(48)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +p ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -p ] ]
  if ($qstate(45)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +s ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -s ] ]
  if ($qstate(43)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +c ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -c ] ]
  if ($qstate(44)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +u ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -u ] ]
  if ($qstate(47)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +C ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -C ] ]
  if ($qstate(52)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +r ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -r ] ]
  if ($qstate(50)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +D ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -D ] ]
  if ($qstate(46)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +N ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -N ] ]
  if ($qstate(49)) { set %qmodes1 [ %qmodes1 ] [ $+ [ +i ] ] } | else set %qmodes1 [ %qmodes1 ] [ $+ [ -i ] ]
  if ($qstate(53))  { set %qmodes2 +k $did(qbot,55) } | elseif ($did(qbot,55) != $null) { set %qmodes2 -k $did(qbot,55) }
  if ($qstate(54)) { set %qmodes3 +l $did(qbot,56) } | else { set %qmodes3 -l * | qdid -r 56 }
  mode $did(qbot,12) %qmodes1 | if ($did(qbot,55) != $null) { mode $did(qbot,12) %qmodes2 } | mode $did(qbot,12) %qmodes3
  unset %qmodes* | qdid -r 55 | qdid -ra 91 Done. | Q91
}
alias qcmodes {
  if ($qstate(80)) { set %qcmodes +vg } | else set %qcmodes -vg
  if ($qstate(81)) { set %qcmodes [ %qcmodes ] [ $+ [ +ao ] ] } | else set %qcmodes [ %qcmodes ] [ $+ [ -ao ] ]
  if ($qstate(82)) { set %qcmodes [ %qcmodes ] [ $+ [ +m ] ] } | else set %qcmodes [ %qcmodes ] [ $+ [ -m ] ]
  if ($qstate(83)) { set %qcmodes [ %qcmodes ] [ $+ [ +n ] ] } | else set %qcmodes [ %qcmodes ] [ $+ [ -n ] ]
  if ( $did(qbot,14).seltext = Q ) { if ($qstate(84)) { set %qcmodes [ %qcmodes ] [ $+ [ +t ] ] } | else set %qcmodes [ %qcmodes ] [ $+ [ -t ] ]
  if ($qstate(85)) { set %qcmodes [ %qcmodes ] [ $+ [ +b ] ] } | else set %qcmodes [ %qcmodes ] [ $+ [ -b ] ] }
  .msg $did(qbot,14).seltext chanlev $did(qbot,12) $qauth %qcmodes | unset %qcmodes
}

On ^*:NOTICE:*:*: { if ( $dialog(qbot) = qbot && $len($nick) = 1 ) {
    if ( $1- = Done. ) { qdid -ra 91 $1- | Q91 }
    elseif ( Current channel flags are isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( Version $+ $chr(58) isin $1- && Compiled $+ $chr(58) isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Valid flags are $+ $chr(58) agmnov ) { qdid -ra 91 Invalid flag specified. Valid flags are: agmnov | Q91 }
    elseif ( $1- = To deactivate Welcome message $+ $chr(58) /msg Q CHANFLAGS #channel -w ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = You don't have +m flag on that channel. ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = You're not the owner or a master of $did(qbot,12) $+ . ) { qdid -ra 91 $1- | Q91 }
    elseif ( Welcome message for channel $did(qbot,12) is $+ $chr(58) isin $1- ) { qdid -ra 24 $ [ $+ [ $calc($findtok($1-,is $+ $chr(58),1,32) + 1) ] ] [ $+ [ - ] ] | Q91 }
    elseif ( $1- = No welcome message is set for channel $did(qbot,12) ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Sorry, you do not have permission to view/change user flags on $did(qbot,12) $+ . ) { qdid -ra 91 $1- | Q91 }
    elseif ( Unknown user isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Can't find that channel! ) { qdid -ra 91 $1- | Q91 }
    elseif ( Unknown channel isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Can't find that channel! ) { qdid -ra 91 $1- | Q91 }
    elseif ( You are not known on this channel and can't use isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( You don't have enough access isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Im not on that channel. ) { qdid -ra 91 $1- | Q91 }
    elseif ( You don't have isin $1- && flag on that channel. isin $1- ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = Couldn't find that channel. ) { qdid -ra 91 $1- | Q91 }
    elseif ( $1- = No such channel registered! ) { qdid -ra 91 $1- | Q91 }

    elseif ( $1- = Current Welcome message is $+ $chr(58) && !%Qwelcome1 ) { set -u15 %Qwelcome1 1 }
    elseif ( $nick = Q && %Qwelcome1 ) { qdid -ra 24 $1- | unset %Qwelcome1 }

    elseif ( $1- = End of chanlev for $did(qbot,12) $+ . && %Qchanlev = 2 ) { unset %Qchanlev }
    elseif ( $1- = End of list. && %Qchanlev = 2 ) { unset %Qchanlev }
    elseif ( $1- = ----------------------------- && %Qchanlev = 1 ) { set -u15 %Qchanlev 2 }
    elseif ( $1- = Known users on $did(qbot,12) are $+ $chr(58) && %Qchanlev = 1 ) { set -u15 %Qchanlev 2 }
    elseif ( %Qchanlev = 2 && $nick = L ) { did -a qbot 70 $1 $+ $chr(9) $+ $2 } 
    elseif ( %Qchanlev = 2 && $nick = Q ) { did -a qbot 70 $1 $+ $chr(9) $+ $right($3,-1) } 

    elseif ( %Qwhoami = 2 && $1- = End of list. ) { unset %Qwhoami }
    elseif ( $1- = --------------------------------------- && %Qwhoami = 1 ) { set %Qwhoami 2 }
    elseif ( %Qwhoami = 2 && $nick = L ) { did -a qbot 70 $1 $+ $chr(9) $+ $2 }
    elseif ( Access level isin $1- && on channel isin $1- && $nick = Q ) { 
      if ( $right($6,1) = . ) { did -a qbot 70 $left($6,-1) $+ $chr(9) $+ $right($3,-1) }
    else { did -a qbot 70 $6 $+ $chr(9) $+ $right($3,-1) } }
    haltdef
} }

Codes Sources

A voir également

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.