Étant donné qu' il n' existe pas beaucoup de scripts en perl pour Xchat ( 3 apparemment ),
je mets le miens en ligne ...
Il existe déjà un script Away, mais qui utilise l' ancienne lib IRC, alors que ce script utilise
la lib Xchat ...
Voila ...
+
Source / Exemple :
#!/bin/perl -w
Xchat::register("Script perso", "1.0", "redefinition de /away + anti-kick");
# On met un hook sur la commande "away" et un sur l' evenement "you kicked"
Xchat::hook_command("away", cmd_away);
Xchat::hook_print("You Kicked", cmd_kicked);
my ($hmsg, $hnot);
# Lorsque l' on tape "away" ...
sub cmd_away{
my $name;
# Si l' on est pas encore away, alors
if((Xchat::get_info(away)) eq ""){
# on recupere le nick de l' utilisateur
$name = Xchat::get_info(nick);
# on envoie la commande "/nick pseudo[away]"
Xchat::command("nick ".$name."[away]");
# on mets l' utilisateur en mode away
Xchat::command("away");
# on met un hook sur les message des chan et sur les notices ...
$hmsg = Xchat::hook_server("PRIVMSG", cmd_msg);
$hnot = Xchat::hook_server("NOTICE", cmd_not);
}else{
# Sinon ... on recupere le pseudo de l' utilisateur
$name = Xchat::get_info(nick);
# On suprimme le "[away]" a la fin
# on change le nick et on se remet en ligne
Xchat::command("nick ".substr($name, 0, length($name)-6));
Xchat::command("back");
# on supprime les hooks sur les messages recus sur les chans
Xchat::unhook($hmsg);
Xchat::unhook($hnot);
}
return Xchat::EAT_NONE;
}
# lorsque l' on est kické
sub cmd_kicked{
# On affiche la phrase tu as été kické de "nom du chan"
Xchat::print("Tu as été kické !!!! de $_[0][1]\r\nReconnection...");
# on se reconnecte au chan immediatement
Xchat::command("join ".$_[0][1]);
# on envoie une notice a celui qui nous a kické pour lui dire qu' on est pas content :p
Xchat::command("notice ".$_[0][2]." Plus jamais tu me kick toi ... :@");
return Xchat::EAT_NONE;
}
# lorsque l' on est away et que qqun envoie un message sur le chan ...
sub cmd_msg{
my ($netw, $serv);
# Si le message comprends les 4 premieres lettres du pseudo ( pour moi "gero" a changer en fonction du votre ...)
# et que ce n' est pas vous qui avez envoyé le msg
if(($_[1][3] =~ m/gero/i)&&(!($_[0][0] =~ m/Xchat::get_info(nick)/))){
$netw = Xchat::get_info(network);
$serv = Xchat::get_info(server);
# si le message n' est pas un message en PV, alors on affiche le message dans l' onglet general du serveur
if($_[0][2] ne Xchat::get_info(nick)){
Xchat::print("Chan:$_[0][2]::$_[0][0]::$_[1][3]\r\n", $netw, $serv);
}
}
# On retourne toutes les infos pour que l' evenement suive son cours...
return Xchat::EAT_NONE;
}
#lorsque l' on est away et que l' on recois une notice, on l' affiche egalement dans l'onglet general du serveur
sub cmd_not{
my ($netw, $serv);
$netw = Xchat::get_info(network);
$serv = Xchat::get_info(server);
Xchat::print("NOTICE::Chan:$_[0][2]::$_[0][0]::$_[1][3]\r\n", $netw, $serv);
return Xchat::EAT_NONE;
}
# Au demarrage du script, on indique que le script est chagé.
Xchat::print("Script perl chargé !");
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.