Bonjour à tous!
Voici ma 2ème sources ici, à mettre sur un bot, qui consite à sauvegarde les modes d'un channel et des users et le topic. Je m'explique :
$save : Le bots sauvegarde les modes du salon actuel (genre +CmNuD) et des users (Ceux qui sont @, + ou reg) et le topic
Dans le cas d'un massdevoice, mass deop, tapez : $reop et tous les utilisateurs qui étaient @ regagnent leur @, de même pour les voices.
Dans le cas d'un changement de mode, tapez : $restore et le bots remet les modes sauvegardé auparavant.
Dans le cas d'un changement de topic, tapez: $restore et le bots remettra l'ancien topic ;)
Le script utilise le system de level de mIRC, et peut etre facilement modifiable! Ce script est également coupé a un autre script, PUSHMODE, que je vais publier après celui là (ce dernier n'étant pas de moi et requiert quelques explications)
PS: vous pouvez trouver le script pushmode @
http://www.ircfr.com/code.aspx?ID=42124
Sans plus attendre, voici la source :
Source / Exemple :
on *:LOAD:{
set %command.save $chr(36) $+ save
set %command.reop $chr(36) $+ reop
set %command.restore $chr(36) $+ restore
}
on *:text:*:#:{
if ($ulevel >= 5) && ($1 == %command.save) {
remini -n save.ini $chan
set %topic. [ $+ [ $chan ] ] $chan($chan).topic
writeini -n mode.ini $chan mode $gettok($chan($chan).mode,1,32)
save $chan
.notice $nick Done. Tried to save everything on $chan
}
if ($ulevel >= 5) && ($1 == %command.restore) {
restore $chan
.timer.restore. $+ $chan $+ .1 1 1 mode $chan -klimnpstrDdcCNu
if (k isincs $gettok($chan($chan).mode,1,32)) { .mode $chan -k $chan($chan).key }
.timer.restore. $+ $chan $+ .2 1 2 mode $chan $readini(mode.ini,$chan,mode)
.timer.restore. $+ $chan $+ .3 1 3 topic $chan
.timer.restore. $+ $chan $+ .4 1 4 topic $chan %topic. [ $+ [ $chan ] ]
}
if ($ulevel >= 5) && ($1 == %command.reop) {
restore $chan
}
}
alias save {
var %x = 1
while (%x <= $nick($1,0)) {
set %nick $nick($1,%x)
if (%nick isop $1) {
writeini -n save.ini $1 $address(%nick,1) +o
}
if (%nick isvoice $1) {
writeini -n save.ini $1 $address(%nick,1) +v
}
if (%nick isvoice $1) && (%nick isop $1) {
writeini -n save.ini $1 $address(%nick,1) +ov
}
inc %x
}
}
alias restore {
var %x = 1
while (%x <= $nick($1,0)) {
set %nick $nick($1,%x)
if ($readini(save.ini,$1,$address(%nick,1)) == +o) {
pushmode $1 +o %nick
}
if ($readini(save.ini,$1,$address(%nick,1)) == +v) {
pushmode $1 +v %nick
}
if ($readini(save.ini,$1,$address(%nick,1)) == +ov) {
pushmode $1 +o %nick
pushmode $1 +v %nick
}
inc %x
}
}
Conclusion :
Comme vous avez pu le voir, ce script fait appel à un alias appelé 'pushmode' qui consiste a mettre des modes à la suite les uns des autres pour les exécuter 6 par 6 si possible. Pour cela, merci d'aller jeter un coup d'oeil à cette source ;)
Cordialement, Quentin
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.