Save & restore modes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 307 fois - Téléchargée 18 fois

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

Ajouter un commentaire Commentaires
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

Ton pushmode a été supprimé, sûrement parce que tu n'as pas l'autorisation de l'auteur
Ca ne sert à rien de le redonner :)

Fais ton propre alias pushmode
Messages postés
3
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
8 avril 2007

Je pensais avoir posté le pushmode hier, bizarre, il n'apparait pas.

Le script pushmode est assez long, c'est notamment le système utiliser dans les eggdrops ;)
Je vais l'ajouter de ce pas, merci pour le commentaire
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

on peut avoir l'alias push mode ?

set %nick $nick($1,%x)
pourquoi /set ce nick ?! Utilise /var


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
}
devient =>
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

Essaye d'optimiser un peu

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)