On Notice dans une boucle if (pour popup)

PeGaZe33000 Messages postés 5 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 3 janvier 2009 - 1 janv. 2009 à 23:03
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 3 janv. 2009 à 19:56
Bonsoir tout le monde et meilleurs vœux pour l'année 2009 :)

Je me permet de vous proposer cette question parce que ça fait maintenant 10 jours que je bloque sur une "co**erie" pour terminer la création d'un menu de mon script.

Je vous expose le problème.
J'aimerai avoir un menu dépendant de la réservation du pseudo ou pas (sous serveur Anope).
En clair, c'est une commande pour la création du salon:
<li>Si le pseudo est enregistré, le script lance la séquence de création de salon</li><li>Si le pseudo n'est pas enregistré, le script lance en premier une séquence d'enregistrement du pseudo.</li>Dit comme ça, ça à l'air tout con mais personnellement je bloque sur la lecture des "on notice" dans la boucle if.

Voici la base du script sur laquelle je bloque :
$iif(($server == adresse_serveur),Création de son salon ( $chan )): {
  var %pseudoreza = 0
  if ($me isop $chan) {
    /msg ChanServ register $chan $$?="Entrez le mot de passe de $chan " $$?="Entrez la description de $chan "
    On *:NOTICE:*ChanServ*Vous devez d'abord vous identifier avec NickServ*:$chan {
      var %pseudoreza = 1
    }
    if (%pseudoreza != 1) {
Séquence_création_salon
    }
    if (%pseudoreza = 1) {
Séquence_réservation_pseudo
    }
    else {
      /echo -at ATTENTION ! Vous devez être opérateur sur $chan pour pouvoir le créer
    }
  }
}

J'ai essayé différentes méthodes et ce codage est le dernier que j'ai tenté ... sans succès :(

Si vous pouviez m'aider à débloquer cette stupidité, je vous en serai reconnaissant :)

D'avance merci à tous et encore une fois, bonne année à vous :)

6 réponses

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
2 janv. 2009 à 17:16
Déjà tu as oublié un : puis les événements ne se mettent pas dans une structure conditionnelle. Ce sont des triggers statiques.
Mets ton événement NOTICE plus loin, en début de ligne, et joue avec des variables. Par exemple :
$iif(($server = = adresse_serveur),Création de son salon ( $chan )): {
  var %pseudoreza = 0
  if ($me isop $chan) {
    set %active $true
    /msg ChanServ register $chan $$? ="Entrez le mot de passe de $chan " $$?= "Entrez la description de $chan "
    unset %active
    if (%pseudoreza ! = 1) {
Séquence_création_salon
    }
    if (%pseudoreza = 1) {
Séquence_réservation_pseudo
    }
    else {
      /echo -at ATTENTION ! Vous devez être opérateur sur $chan pour pouvoir le créer
    }
  }
}

On *:NOTICE:*ChanServ*Vous devez d'abord vous identifier avec NickServ*:$chan:{

   if (%active) var %pseudoreza = 1
}

Du moins un truc dans le genre...

Cordialement, uaip.
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
2 janv. 2009 à 17:17
Oups, le var %pseudoreza devientset %pseudoreza

Cordialement, uaip.
0
PeGaZe33000 Messages postés 5 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 3 janvier 2009
2 janv. 2009 à 19:10
Salut uaip

Déjà merci pour ces infos :)

J'ai tenté ton code, qui malheureusement ne fonctionne pas non plus.
<ol><li>si je mets le "on notice" en dehors de ma commande "$iif", ça me crée une nouvelle ligne dans mon menu.</li><li>Si je mets le "on notice" en fin de commande "$iif", ça ne fonctionne pas non plus (aucune détection de cette commande)</li></ol>voici le code modifié tel qu'il est indiqué dans le point 2 :

$iif(($server == adresse_serveur),Création de son salon ( $chan )): {
  set %pseudoreza 0
  if ($me isop $chan) {
    set %active $true
    /msg ChanServ register $chan $$?="Entrez le mot de passe de $chan " $$?="Entrez la description de $chan "
    unset %active
    /echo -a %pseudoreza
    if (%pseudoreza != 1) {
      Sequence_création_salon
    }
    if (%pseudoreza = 1) {
      Sequence_réservation_pseudo
    }
    else {
      /echo -at ATTENTION ! Vous devez être opérateur sur $chan pour pouvoir le créer
    }
  }
  On *:NOTICE:*ChanServ*Vous devez d'abord vous identifier avec NickServ*:$chan: {
    if (%active) set %pseudoreza = 1
  }
}
Pourriez vous encore une fois m'aider pour que cette "débilité" fonctionne ?

Merci d'avance pour vos réponses :)
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
2 janv. 2009 à 20:59
"Déjà tu as oublié un : puis les événements ne se mettent pas dans une structure conditionnelle. Ce sont des triggers statiques.
"
En clair, un événement ne se met dans aucun bloc. Donc normal que ton point 2 ne marche pas.

Pour ton point 1, si tu mets l'événement NOTICE dans un fichier popup normal que ça te créé une nouvelle ligne
Les événements se mettent dans les remotes (Alt+R).
Je pense que ça devrait marcher.

Cordialement, uaip.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PeGaZe33000 Messages postés 5 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 3 janvier 2009
3 janv. 2009 à 18:19
Bonjour ici :)
J'en suis toujours avec cette "bétise" et malgré ton aide uaip, ça ne fonctionne toujours pas.
En effet, les évènements mis dans "remote" ne changent pas la valeur de ma variable %pseudoreza et donc j'ai toujours la séquence de création de salon qui se lance même si le pseudo n'est pas enregistré.

Voici donc mon code actuel :

En popup:

$iif(($server == adresse_serveur),Création de son salon ( $chan )): {
  set %pseudoreza 0
  if ($me isop $chan) {
    set %active $true
    /msg ChanServ register $chan $$?="Entrez le mot de passe de $chan " $$?="Entrez la description de $chan "
    unset %active
    /echo -a %pseudoreza
    if (%pseudoreza == 0) {
      /sequence_creation_salon
    }
    if (%pseudoreza == 1) {
      /sequence_identification_pseudo
    }
    if (%pseudoreza == 2) {
      /sequence_reza_pseudo
    }
  }
  else {
    /echo -at ATTENTION ! Vous devez être opérateur sur $chan pour pouvoir le créer
  }
  /echo -a %pseudoreza
}
 En Remote :

On *:NOTICE:*Vous*devez*vous*identifier*avec*NickServ*:#: {
  if (%active) set %pseudoreza 1
}

On *:NOTICE:Vous*devez*enregistrer*votre*pseudo:#: {
  if (%active) set %pseudoreza 2
}

Si vous pouviez m'aider pour que je puisse terminer ce menu, ce serai sympa de votre part :)

D'avance merci à tous :)
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
3 janv. 2009 à 19:56
on ne peut mettre qu'un seul type d'événement par remote. Tu as mis 2 événements NOTICE, le 2ème ne marchera donc pas.
Regroupe comme ceci :
On *:notice::#:{
    if (!%active) return
    if (Vous devez vous identifier avec NickServ isin $1-) set %pseudoreza 1
    elseif (Vous devez enregistrer votre pseudo isin $1-) set %pseudoreza 2
}
Il y a de meilleurs moyens pour comparer des chaines, comme par exemple $istok(), mais ils utilisent plus de ressources.

Cordialement, uaip.
0
Rejoignez-nous