Notice-mémo sender

Contenu du snippet

Voila un petit dialog permettant d'envoyer une notice ou un mémo à n'importe quel pseudo. Limité à 307 caractères comme c'est le cas sur tous les serveurs je crois ;) Vous pouvez choisir d'envoyer la notice ou le mémo à une personne du salon actif ou d'entrer le pseudo manuellement.

Source / Exemple :


dialog BS.Nm {
  title "Sender de notices et mémos (BSmax)"
  size -1 -1 208 91
  option dbu
  combo 1, 48 4 60 50, size drop
  text "", 2, 2 4 38 8
  text "Ou entre le pseudo manuellement", 3, 111 3 48 14, center
  edit "", 4, 162 4 43 10, autohs limit 30
  button "Rafraichir liste", 5, 57 16 39 10, flat
  edit "", 6, 3 28 201 39, multi vsbar limit 307
  edit "Caractères restants :", 7, 112 18 92 10, read
  radio "Notice", 8, 3 69 27 10
  radio "Mémo", 9, 3 79 27 10
  box "", 10, 31 66 176 24
  button "Effacer", 11, 33 71 36 17, flat
  button "Fermer", 12, 168 71 36 17, flat ok
  button "Envoyer", 13, 71 71 96 17, default flat
  text "", 14, 2 17 53 8, disable
}
on *:dialog:BS.Nm:*:*:{
  if ($devent == init) {
    BS.Nm-Nick
    did -c $dname 8
    did -ra $dname 2 Notice pour :
    did -ra $dname 7 Caractères restants : 307
    did -ra $dname 14 [Aucun Pseudo]
  }
  elseif ($devent == close) { unset %BS.Nm-Nk }
  elseif ($devent == edit) {
    if ($did == 4) { set %BS.Nm-Nk $remove($did($did).text,@,+,$chr(37)) | did -ra $dname 14 %BS.Nm-Nk }
    elseif ($did == 6) {
      if $did($dname,6,1) { var %e1 $replace($did($dname,6,1).text,$chr(32),$chr(160)) }
      if $did($dname,6,2) { var %e2 $replace($did($dname,6,2).text,$chr(32),$chr(160)) }
      if $did($dname,6,3) { var %e3 $replace($did($dname,6,3).text,$chr(32),$chr(160)) }
      if $did($dname,6,4) { var %e4 $replace($did($dname,6,4).text,$chr(32),$chr(160)) }
      if $did($dname,6,5) { var %e5 $replace($did($dname,6,5).text,$chr(32),$chr(160)) }
      if $did($dname,6,6) { var %e6 $replace($did($dname,6,6).text,$chr(32),$chr(160)) }
      if $did($dname,6,7) { var %e7 $replace($did($dname,6,7).text,$chr(32),$chr(160)) }
      if $did($dname,6,8) { var %e8 $replace($did($dname,6,8).text,$chr(32),$chr(160)) }
      if $did($dname,6,9) { var %e9 $replace($did($dname,6,9).text,$chr(32),$chr(160)) }
      var %e %e1 $+ %e2 $+ %e3 $+ %e4 $+ %e5 $+ %e6 $+ %e7 $+ %e8 $+ %e9
      did -ra $dname 7 Caractères restants : $calc(307 - $len(%e))
    }
  }
  elseif ($devent == sclick) {
    if ($did == 8) { did -ra $dname 2 Notice pour : | did -u $dname 9 }
    elseif ($did == 9) { did -ra $dname 2 Mémo pour : | did -u $dname 8 }
    elseif ($did == 1) { set %BS.Nm-Nk $remove($did(1).seltext,@,+,$chr(37)) | did -ra $dname 14 %BS.Nm-Nk }
    elseif ($did == 5) { BS.Nm-Nick }
    elseif ($did == 11) { did -ra $dname 6 | did -ra $dname 7 Caractères restants : 307 }
    elseif ($did == 13) {
      var %x 1
      while (%x <= $did(6).lines) { set %BS.Nm-Msg %BS.Nm-Msg $did($dname,6,%x).text | inc %x }
      if (!%BS.Nm-Nk) { var %u $input(Tu dois préciser un pseudo !,2564,Erreur) | halt }
      if (!%BS.Nm-Msg) { var %u $input(Tu n'as pas écrit de message !,2564,Erreur) | halt }
      if ($did(8).state) { notice %BS.Nm-Nk %BS.Nm-Msg }
      elseif ($did(9).state) { .msg memoserv send %BS.Nm-Nk %BS.Nm-Msg }
      unset %BS.Nm-Msg
      dialog -k $dname $dname
    }
  }
}
on *:ACTIVE:#:{ if ($dialog(BS.Nm)) { BS.Nm-Nick } }
alias BS.Nm-Nick {
  var %dn BS.Nm
  if $dialog(%dn) {
    var %a $nick($active,0)
    var %b 1
    did -r %dn 1
    while (%b <= %a) {
      if ($nick($active,%b) isop $active) { did -a %dn 1 @ $+ $nick($active,%b) }
      elseif ($nick($active,%b) ishop $active) { did -a %dn 1 % $+ $nick($active,%b) }
      elseif ($nick($active,%b) isvo $active) { did -a %dn 1 + $+ $nick($active,%b) }
      else { did -a %dn 1 $nick($active,%b) }
      inc %b
    }
  }
}
alias Nm { if (!$dialog(BS.Nm)) { dialog -m BS.Nm BS.Nm } }
menu * {
Notice-Mémo Sender:nm
}

Conclusion :


Copiez/collez ce code dans vos remote (ALT+R)
Pour lancer, tapez /nm ou dans les menus ;)
Pour le compteur de caractères restants j'ai essayé avec while et tout mais j'ai pas réussi :/ si quelqu'un a une idée pour faire mieux...

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.