Parler à x personnes sur x chan sur une seule fenetre

Contenu du snippet

Bonjour : )
Alors pour marquez ma venu parmis vous je dépose un code : ). C'est ma premiere source que je dépose alors me linchez pas hin... :x
Pour ce qui est du code. En faite comme je m'innicie tout juste à l'utilisation des fenetres... Quand on est sur plusieurs chans, et que l'on parle à x personnes, c'est assez embetant de devoir absolument jongler entre les chans pour repondre tout ca. Alors tout à l'heure j'ai scripter un pti add-on qui en faite crée une fenetre "@ALL" avec une nicklist. Dans cette fenetre, vous recevez tout ce qu'une personne dit quelque soit le chan ou elle le dit du moment que vous l'avez ajouté (menu nicklist\fenetre-All\ajouter) ou du moment qu'elle vous a HL une fois. Ensuite vous pouvez directement dans cette fenetre taper du texte. pour parler à quelqu'un, il vous suffit d'une fois taper le pseudo de la personne comme premier mot de ce que vous dites et ca enverra automatiquement votre message sur le salon ou il vous a HL pour la derniere fois. Pour changer de personne ou de chan, il suffit de taper de nouvo un pseudo kom premier mot de votre texte. Automatiquement ca gere les renick, les parts (en changeant alors le chan de reference comme le premier chan commun entre vous), les quits en vous disant qu'il a quit et en le supprimant de la liste. normalement ca devrai gerer les kicks aussi en faisant ke si une personne est kické et vous n'avez pas de chan communs pendant 30s il est automatiquement enlevé, MAIS cette partie là ne marche pas, mon $comchan refuse categoriquement de passer bizar... Voila c'est un premier code sans prétentions qui je sais devra etre arranger/optimiser pour etre optimal. Toutefois il me semble pas avoir deja vu une source comme celle ci, donc si c'est bien le cas, elle a le merite d'innover (je vous ai epargné mes gestionnaires de pv etc... lol) : ))))
Désolé d'avoir été aussi long sur les explications mais bon je voyai pas trop comment expliquer autrement :x
Essayez le, et hésiter pas à me dire vos remarques\suggestions en les esperants au maximum constructives :x

Source / Exemple :


;----------------FENETRE VOIR ALL-----------------
on 1:LOAD: { 
  echo -a 4 Chargement de Fenetre @ALL By ISoKA. Add-On pour pouvoir parler à plusieurs personnes sur plusieurs chans 
  set %coulecriall $$?"Veuillez rentrer votre code couleur d'écriture : )" 
  set %policeall $$?"Veuillez rentrer la taille de la police d'écriture : )" 
  echo -a %coulecriall Ceci sera votre couleur d'écriture : )
  echo -a 4 Vous aurez une taille de police de %policeall . Pour changer ces valeurs, il vous suffit d'aller dans le menu de configuration de cet Add-On
  echo -a 4 Il est possible que cet Add-On posséde certains Bugs. Même probable... :x pour toute remarque constructive n'hésitez pas à me contacter : )
}
dialog Voir-All {
  title "Voir-All"
  size -1 -1 71 138
  option dbu
  box "Configurations", 1, 7 7 57 108
  button "Close", 2, 19 118 34 12
  edit "", 3, 14 28 43 10
  text "Couleur ecriture", 4, 13 17 47 8, center
  button "Aj.", 7, 11 97 21 12
  button "Supp.", 8, 40 97 21 12
  text "Ignore-List", 9, 17 68 37 8, center
  combo 10, 10 82 52 50, drop
  text "Taille Police", 11, 18 41 36 8, center
  edit "", 12, 14 53 43 10
}

on *:dialog:Voir-all:init:*:{
  echo -a 4 Ouverture panneau de configuration Fenetre @ALL | var %i 1
  did -r voir-all 10
  while ($lines(ignoreall.txt) >= %i) {
    did -a voir-all 10 $read(ignoreall.txt,%i)
    inc %i
  }
}

on *:dialog:Voir-all:sclick:7:{
  var %pseudpourignall $$?"Pseudo à ignorer"
  write ignoreall.txt %pseudpourignall
  if ($hget(ignoreall,0).data) {
    var %taillehashignall $lines(ignoreall.txt) | hadd ignoreall [ %taillehashignall ] [ %pseudpourignall ] 
  }
  did -r Voir-all 10 
  var %i 1
  while ($lines(ignoreall.txt) >= %i) {
    did -a voir-all 10 $read(ignoreall.txt,%i)
    inc %i
  }
}
on *:dialog:Voir-all:sclick:8:{
  var %pseudpourdesignall $did(voir-all,10).seltext
  if ($read(ignoreall.txt,w,$+(%pseudpourdesignall))) { write $+(-dl,$readn) ignoreall.txt }
  hfree ignoreall
  if ($isfile(ignoreall.txt)) {
    var %nbinignoall $lines(ignoreall.txt) | hmake ignoreall 50 | var %comptajouignoreall 1
    while (%nbinignoall >= %comptajouignoreall) {
      hadd ignoreall %comptajouignoreall $read(ignoreall.txt,%comptajoubasefin) | inc %comptajouignoreall
    }
  }
  did -r Voir-all 10 
  var %i 1
  while ($lines(ignoreall.txt) >= %i) {
    did -a voir-all 10 $read(ignoreall.txt,%i)
    inc %i
  }
}
on *:dialog:Voir-all:sclick:2:{
  if (!%coulecriall) && (!$did(3)) { echo -a 4 veuillez préciser une couleur d'écriture : ) | halt }
  if ($did(3)) { set %coulecriall $did(3) | echo -a %coulecriall Voici vos couleurs d'écriture :) }
  if (!%policeall) && (!$did(12)) { echo -a 4 Veuillez préciser une taille pour la police de la fenetre @ALL | halt }
  if ($did(12)) {
    if ($did(12) !isnum) { echo -a 4 La taille de la police doit etre désignée par un nombre : ) | halt }
    else { set %policeall $did(12) | echo -a 4 La taille de la police de la fenetre sera de %policeall }
  }
  dialog -x Voir-All Voir-All | echo -a 4 Fermeture panneau configurations Fenetre @ALL
}

alias ouverturefentreall {
  if (!$window(@ALL)) { window -abCefmnkl18S @ALL 1 1 640 480 Arial %policeall | unset %listepersonnevoir | .enable #voirall 
    if ($isfile(ignoreall.txt)) {
      var %nbinignoall $lines(ignoreall.txt) | hmake ignoreall 50 | var %comptajouignoreall 1
      while (%nbinignoall >= %comptajouignoreall) {
        hadd ignoreall %comptajouignoreall $read(ignoreall.txt,%comptajouignoreall) | inc %comptajouignoreall
      }
    }
  }
}
alias fermeturefenetreall {
  if ($window(@ALL)) { close -@ @all }
  unset %chanpourrepondre* | hfree ignoreall 
  .disable #voirall
}
#voirall on
on *:text:*:#:{ 
  if (!$hmatch(ignoreall,$gettok($nick,1,124),0).data) {
    if ($me isin $1-) && ($fline(@ALL,$nick,1,1)) { echo -t @ALL ( $+ $nick $+ ) $1-  | set %chanpourrepondre $+ $gettok($nick,1,124) $chan }
    elseif ($me isin $1-)  && (!$fline(@ALL,$nick,1,1)) { aline -inl @ALL $nick | echo -t @ALL ( $+ $nick $+ ) $1- | set %chanpourrepondre $+ $gettok($nick,1,124) $chan }
    elseif ($fline(@ALL,$nick,1,1)) { echo -t @ALL ( $+ $nick $+ ) $1- }
  }
}
on *:action:*:#:{
  if (!$hmatch(ignoreall,$gettok($nick,1,124),0).data) {
    if ($me isin $1-) && ($fline(@ALL,$nick,1,1)) { echo -t @ALL $nick 6 $1-  | set %chanpourrepondre $+ $gettok($nick,1,124) $chan }
    elseif ($me isin $1-)  && (!$fline(@ALL,$nick,1,1)) {  aline -inl @ALL $nick | echo -t @ALL  $nick  6 $1- | set %chanpourrepondre $+ $gettok($nick,1,124) $chan }
    elseif ($fline(@ALL,$nick,1,1)) { echo -t @ALL $nick 6 $1- }
  }
}
on ^*:nick:{
  if ($fline(@ALL,$nick,1,1)) { rline -inl @all $fline(@ALL,$nick,1,1) $newnick }
}
on ^*:part:#:{
  if ($fline(@ALL,$nick,1,1)) && (!$comchan($nick,1)) { .timer 1 3 supprimerpersonneall $nick }
  elseif ($fline(@ALL,$nick,1,1)) && ($chan == %chanpourrepondre $+ $gettok($nick,1,124)) { set %chanpourrepondre $+ $gettok($nick,1,124) $comchan($nick,1) }
}
on ^*:quit:{
  if ($fline(@ALL,$nick,1,1)) { .timer 1 3 supprimerpersonneall $nick }
}
on *:kick:#:{
  if ($fline(@ALL,$knick,1,1)) { .timer $+ [ $gettok($knick,1,124) ] 1 30 supprimerpersonneall $knick }
  if ($fline(@ALL,$knick,1,1)) && ($comchan($knick,0) != 0) { set %chanpourrepondre $+ $gettok($knick,1,124) $comchan($knick,1) }
}
on ^*:join:#:{
  if (timer $+ gettok($nick,1,124)) { .timer $+ gettok($nick,1,124) off | set %chanpourrepondre $+ $gettok($nick,1,124) $chan }
}
on *:close:@ALL:{ fermeturefenetreall  }

on 1:INPUT:@ALL:{
  echo -t @ALL ( $+ $me $+ ) %coulecriall $1-
  var %nbpseudodansfenetreall $line(@ALL,0,1)
  if ( [ % $+ [ chanpourrepondre $+ [ $gettok($1,1,124) ] ] ] ) { msg [ % $+ [ chanpourrepondre $+ [ $gettok($1,1,124) ] ] ] %coulecriall $1- | set %chanrepondreall [ % $+ [ chanpourrepondre $+ [ $gettok($1,1,124) ] ] ] }
  else { msg %chanrepondreall %coulecriall $1- }
}
#voirall end
menu channel {
  -
  Fenetre-All
  .Lancer:ouverturefentreall
  .Fermer:fermeturefenetreall
  .Configuration:dialog -m Voir-All Voir-All
  -
}

menu nicklist,@ALL {
  -
  Fenetre-All
  .Ajouter:{  aline -inl @ALL $$1 | set %chanpourrepondre $+ $gettok($$1,1,124) $chan }
  .Supprimer:{ unset %chanpourrepondre $+ $gettok($$1,1,124) | dline -inl @all $fline(@ALL,$$1,1,1) }
  -
}

alias supprimerpersonneall {
  if (!$address($1,1)) { echo -t @ALL 4Vous n'avez plus de salons communs avec $1 | unset %chanpourrepondre $+ $gettok($1,1,124) | dline -inl @all $fline(@ALL,$1,1,1)  }
}

on ^1:HOTLINK:*(*)*:@ALL*:{
  set %pseudoaqueryall $remove($strip($gettok($hotline,2,32)),$chr(41),$chr(40))
}
on 1:HOTLINK:*(*)*:@ALL*:query %pseudoaqueryall

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.