Save & restore modes

Contenu du snippet

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

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.

Du même auteur (cs_Blad3)