Notice-mémo sender

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 423 fois - Téléchargée 27 fois

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

Ajouter un commentaire Commentaires
Messages postés
50
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
28 mars 2009

Merci pour la note et l'optimisation Kerrigan (et Chang-Fu) :)

SornDrixer > Pk pas, je le ferai peut-etre :)
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

elseif ($did == 6) {
var %itr = 1
while ($did($dname,6,%itr)) {
var %e = $calc(%e + $len($replace($ifmatch,$chr(32),$chr(160))))
inc %itr
}
did -ra $dname 7 Caractères restants : $calc(307 - %e)
}

vive les while
optimisation par Kerrigan et Chang-Fu

Sinon c bien codé et assez mignon, meme si fraudrait revoir la taille et la position des boutons.
pense a dialog studio

8/10
Messages postés
2084
Date d'inscription
jeudi 12 décembre 2002
Statut
Modérateur
Dernière intervention
30 janvier 2011
8
C'est bien codé, mais tu aurais dû proposer un raccourci direct depuis la nicklist pour sélectionner le pseudo, c'est plus pratique à mon avis.
Messages postés
47
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2004

pas mal à première vue,
je regarde ça et je te dis ce que je pense.

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.