Probleme vote kick

Résolu
Signaler
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005
-
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005
-
Salut, il y a peu de temps j'ai codé un vote kick, c'est un défi que je
me suis donné, mais le probleme c'est que ca ne marche pas bien
.. voire même pas du tout si vous pouviez m'aider voila le code :

on 1:text:!oui:%chan.vote:{

if (%vote.on == oui) {

inc %vote.oui 1

.notice $nick Merci de votre vote :)

.guser 5 $nick 2

}

}

on 1:text:!non:%chan.vote:{

if (%vote.on == oui) {

inc %vote.non 1

.notice $nick Merci de votre vote :)

.guser 5 $nick 2

}

}



on *:input:*:{

if ($1 == .vote && $2 ison $chan && $2 && $me ishop $chan) {

set %chan.vote $chan

set %temps 60

unset %vote.oui

unset %vote.non

set %nick.vote $2

enable #niark

msg %chan.vote 4Votre attention s'il vous plait
$chan ! 10Un 7vote démocratique 10va decider si %nick.vote va se
faire 7kicker par moi :)

msg %chan.vote 10Si vous voulez que %nick.vote soit
7kicker 10taper 7!oui 10sinon taper 7!non 10résultats dans 7Une
minute !

set %vote.on oui

.timerkick 1 60 /sentence

.timer1 1 60 .disable #niark

.timer1 1 60 .rlevel 5

}

}

#niark on

on 5:text:!oui:%chan.vote:{

.notice $nick Tu as deja voté :) | halt

}

on 5:text:!non:%chan.vote:{

.notice $nick Tu as deja voté :) | halt

}

#niark end

alias sentence {

if ($calc(%vote.oui + %vote.non != $null)

if (%vote.oui > %vote.non) {

msg %chan.vote 4ATTENTION !!

kick %chan.vote %nick.vote 10Vous etes le 4Maillon faible10 aurevoir !

}

elseif (%vote.oui < %vote.non) {

msg %chan.vote 10Tu l'as echapé belle7 %nick.vote :)

}

elseif (%vote.oui = %vote.non) {

msg %chan.vote 10Les votes sont nuls :) 7Ca sera pour la prochaine fois :)

}

}

}

C'est sûrement mal codé ++

10 réponses

Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

A mon avis, c'est à recoder en beaucoup plus simple. C'est juste la'architecture du script qui va pas :)

Alors :

if ($1 == .vote && $2 ison $chan && $2 && $me ishop $chan)

devient :



if ((($1 == .vote) && ( $2 ison $chan ) && ($2))) {

if (($me ishop $chan) || ($me isop $chan)) {



Je fais des script plus long, mais ça me semble plus clair ^^ (au
passage tu avais oublié si tu étais op...) Il serait plus facile de
lancer le vote à partir du popups Channel...



.timerkick 1 60 /sentence ----> .timerkick 1 %temps sentence

.timer1 1 60 .disable #niark -----> .timer 1 %temps .disable #niark

.timer1 1 60 .rlevel 5 -----> disparait ;)



Au lieu de mettre des levels aux nick, mets tous les votant dans une
variable %votant et tu pourras les retrouver grace à $findtok

Un conseil aussi, sur le principe du vote kick... imgaine qu'il n'y ait
qu'un seul votant pour le oui, le gars sera kické... à ta place je
ferais un pourcentage avec le nombre de personnes sur le channel :/



Si t'as besoin d'une aide plus précise avec ton script modifié, hésite pas.

-------------------------------------------------------
Signature des parents :
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

Note : tu as commencé avec des variables, donc je continue avec

if ($calc(%vote.oui + %vote.non != $null)tu as oublié de fermer la parenthèse, et le !$null ne sert à rien, ainsi que le { en fin de ligne> if ($calc(%vote.oui + %vote.non)) {
...
}

pour ton on *:text (qui est toujours dans le groupe #niark)
on *:TEXT:*:#:{
if ($chan != %chan.vote) return if (($1 !oui) || ($1 !non)) {
if (%vote. [ $+ [ $nick ] ]) { .notice $nick déjà voté | return }
inc %vote. [ $+ [ $remove($1,!) ] ]
.notice $nick merci pr ton vote
}
}

essaye déjà ça, ça devrait marcher un peu mieux
le code n'est cependant pas très optimisé :)
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005

euh j'ai remplacé :
on 5:text:!oui:%chan.vote:{
.notice $nick Tu as deja voté :) | halt
}
on 5:text:!non:%chan.vote:{
.notice $nick Tu as deja voté :) | halt
}
par :
on *:TEXT:*:#:{
if ($chan != %chan.vote) return
if (($1 !oui) || ($1 !non)) {
if (%vote. [ $+ [ $nick ] ]) { .notice $nick déjà voté | return }
inc %vote. [ $+ [ $remove($1,!) ] ]
.notice $nick merci pr ton vote
}
}
et j'ai fait l'autre modification mais ca ne marche toujours pas :(
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

ça fait rien du tout ?
mets quelques "echo" bidons pour savoir par où le script passe, pour mieux isoler le problème
exemple :

on *:input:*:{
echo -a passage1
if ($1 == .vote && $2 ison $chan && $2 && $me ishop $chan) {
echo -a passage2
...

ce code est bien dans un nouveau fichier, isolé des autres ?
ton ON INPUT peut être stoppé par un autre remote sinon :x
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

le problème avec %votant c'est que tu ne sais pas combien de personnes vont voter. Si il y en a beaucoup, cette variable ne pourra pas contenir toute la liste
tu devrais aussi choisir un autre nom que %temps pour ta variable, ce nom est trop commun

ma méthode utilise beaucoup plus de variables certes, mais il n'y aura pas de problèmes de longueur de liste :)
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005

J'ai choisi la reponse aceptée pour S333 mais vous m'avez tout les deux bien aidé merci les gars (ou peut être des filles ? :p)
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

Lol, c'est pas important qui tu prends ^^ Mais il faut que tu
comprennes le code que tu as à la fin. Mais c'est vrai que la variable
%votant peut être remplie... au pire tu mets dans un fichier txt :/

Mais l'idée d'arkanis aurait crée un nombre considérable de variables :/



Fait ce que tu préfères ;)


----------------------------------------------------
Signature des parents :
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005

J'ai gardé ma solution de /guser ^^
C'est celle qui marchait le mieux :pp merci quand même
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

perso j'aurait fait en hash tables mais je ne sais pas si il aurait compris ...
si tu veux voir comment ça peut marcher, pour un code à peu près similaire, tu peux toujours regarder ma source sur le sondage "illimité" :)
Messages postés
26
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
1 septembre 2005

Ok les hash tables je compte bien me lancer dedans je vois que c'est à la mode et ça à l'air d'être pas mal fiable parce que les variables c'est simple mais c'est pas top top :)