Action quand il ne reste qu'un voice

Résolu
Signaler
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007
-
Messages postés
38
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
8 novembre 2010
-
Bonjour,

Je voudrais que mon bot voit quand il ne reste qu'un seul voice sur le salon et qu'il lui dise.
Ca peut sembler idiot à première vue mais je compte en faire une utilisation spécifique.

J'ai pensé à:

if ($vnick == 1 } /msg $chan blahblah

Mais ça ne marche pas, j'ai évidemment essayé diverses choses mais rien ne veut marcher et je pense que c'est ça qui s'en rapproche le plus.

Camanche

25 réponses

Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Erreur :



on *:devoice:*: if ($calc(
$nick($chan,0) - (
$nick($chan,0,r) +
$nick($chan,0,o))
)
== 1) { msg # blabla }
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Utilise $nick($chan,0,N)



on *:voice:*: if ($nick($chan,0,r) == 1) { msg $chan blabla }



ça réagit si le gars n'a aucun mode sur le chan ( reg ), donc si le
gars est op il compte pas.



Si tu veux vraimment faire avec les voices
tu fais :




on *:voice:#chan: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 1) { msg #chan blabla }









Après je pense que tu peux mettre ton truc sur d'autres events comme on *:part , ...









Voila, j'espère que ça marchera bien :)





Autremment, pour corriger ton code, $vnick renvoie le nick
voicé/devoicé dans un on *:voice/devoice donc ton truc veut dire si son
pseudo est "1" :D, pour avoir le nombre de personnes sur un chan (voice
ou non, etc .. ) on est obligé de faire une boucle.


De plus, tu t'es trompé, tu as mis un } au lieu d'une )ne )
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

J'ai essayé

on *:voice:#chan: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 1) { msg #chan blabla }

mais ça ne marche pas. Oui, c'est bien ça que je veux, que les voice. Tu pourrais m'expliquer un peu stp.

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Autremment, $nick($chan,0,a) renvoie le nombre total d'users sur $chan
et $nick($chan,0,v) le nombre total de voices sur le chan.



Donc moi je fais la différence entre les deux : calc($nick($chan,0,a) - $nick($chan,0,v))

et ça devrait me donner le nombre de personnes non-voices même si elle sont déja ops :)




on *:voice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 1) { msg #chan blabla }



Moi ça marche :)
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

Bah si je comprends bien, ça ne devrait pas.
Admettons on est 11 sur $chan et je veux qu'il fasse /msg blah blah qu'au dernier voice. Donc ça ferait:
($nick($chan,0,a) =11
$nick($chan,0,v) =1

Donc ça ferait on *:voice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 11)} et non 1

Donc si je fais un truc dans ce genre-là, ce que je devrais mettre c'est:
on *:voice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,o) - $nick($chan,0,"normal") ) == 1) { msg #chan blabla }

C'est ça? Enfin "normal" je devrais le remplacer par quelle lettre?

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Mais non, car $nick($chan,0,v) renvoie les voices même s'ils sont ops ..



Le code que tu as fait n'a aucun sens ...



Imaginons, il y a 10 ops tous voices et un non op non voice sur un $chan,



$nick($chan,0,a) va renvoyer 11


$nick($chan,0,v) va renvoyer 10 donc



11 -10 donne 1



C'est en tout cas ce que je pensais que tu cherchais :/
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

En fait j'ai fait ça

on *:voice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,o) - $nick($chan,0r) ) == 1) { msg #chan blabla }

On se comprend mal je pense fyltum, en clair je voudrais ça (admettons le bot est op):

@Opérateur (exemple moi)
@MonBot
@Peu importe le nombre d'opérateurs
+Voice1
+Voice2
+VoiceN
User1
User2
UserN

Et je voudrais que mon bot détecte quand il ne reste plus qu'un seul voice:

@Opérateur (exemple moi)
@MonBot
@Peu importe le nombre d'opérateurs
+Voice1
Voice2 devenu user
VoiceN devenu user
User1
User2
UserN

Et à ce moment-là, le bot dit /msg # Voice1 tu es le dernier voice :)

Avec des couleurs c'est plus joli lol.

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Ah ouais ok :)

je comprends, dsl c'est de ma faute j'ai mal lu ton truc :)



on *:voice:*: if ($calc($nick($chan,0,a) - ($nick(
$chan
,0,o) + $nick(
$chan
,0,r))) == 1) { msg #chan blabla }
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

et tu rajoutes on *:devoice:*:{
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

Je ne comprends plus très bien là,

enfin j'ai essayé de comprendre et finalement j'en suis arrivé à:

on *:devoice:*: if ($calc($nick($chan,0,a) - ($nick($chan,0,o) - $nick($chan,0,r))) == 1) { msg #chan blabla }

mais ça ne fait rien du tout. Je suis perdu....

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Mon code ne marche pas ?
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

Ok, on approche :)
Donc j'ai fait ce que tu m'as dit:

on *:voice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 1) { msg # blabla }

Mais le problème, c'est que je voudrais l'inverse. Là, ça me marque le message quand je voice le dernier usager.
Moi, je voudrais qu'il me marque le message que quand il ne reste qu'un seul voice, c'est à dire quand tous les autres ont été dévoicés.

Donc j'ai essayé:

on *:devoice:*: if ($calc($nick($chan,0,a) - $nick($chan,0,v) ) == 1) { msg # blabla }

Mais là, ça ne me fait plus rien du tout.

On pourrait se voir sur un serveur fyltum?

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Hum ouais c'est bizard, tu es sûr que le premier ne marche pas ?

Autremment tu peux venir sur Voila ( irc.voila.fr:6667 ) sur #kinder,
je serais pas là jusqu'à mercredi (à partir de 15 h) mais tu pourras
demander à Kinder_Maxi si tu as le temps :)

C'est vrai que ça seras plus facile :)
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Euh tu n'as qu'a tester :



on *:devoice:*: if ($calc($nick($chan,0,r) +
$nick($chan,0,o) -
$nick($chan,0))
== 1) { msg # blabla }
Messages postés
149
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2007

Ca marche fyltum, merci :)

Sinon je suis sur #kinder mais je ne te vois pas. J'y retournerais pour te remercier.

Camanche
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Ah enfin :D

Ouais ok pas de problème et si tu as besoin d'aide n'hésite pas :)
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

Par contre il faudrait voir si tu as des personnes halfop parce qu'il faut rajouter $nick($chan,0,h) en premier :)
Messages postés
38
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
8 novembre 2010

on *:devoice:*: if ($calc(
$nick($chan,0) - (






$nick($chan,0,r) +


$nick($chan,0,o))



)








1) { msg # blabla }



Ok Mais comment dire un message non pas au salon mais au seul voice qui reste ?
j ai essayer -> msg # $vnick blabla ( a la place de msg # blabla )

Mais sa me mes le message a celui que je viens de devoicé et je ne vois pas ce que je pourrais mettre si quelqu un pourrais m aidez ? Svp Merci d'avance
Messages postés
407
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005

msg $vnick blabla
A priori
Messages postés
38
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
8 novembre 2010

Bah ouais c est ce que j ai pensé aussi mais dans la phrase sa dit a ce qui viens d etre devoicé et non a celui qui reste voicé ... J suis perdu :/

[15:43:03]  • [DEVOICE] • Tu viens de dévoicer TruC.
[15:43:03] <@Moi> TruC tu es le dernier voice donc voila c bien pour toi :o)

Hors c lui qui viens d etre devoice qui est dans la phrase et non celui qui reste voice :/