Quizz Socket Multisalons

[Résolu]
Signaler
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006
-
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006
-
Salut,

Je suis actuelement en train de créé un quizz multi salons en socket,
Mais j'est un gros probléme: Si quelqu'un parle sur un autre salon, les timers change de nom se qui m'enpeche d'arreter le quizz avec la commande .stop
Voila le code:

alias question {
set %temp $read base.txt | set %question. [ $+ [ $1 ] ] $gettok(%temp,1,92) | set %reponse. [ $+ [ $1 ] ] $mid($gettok(%temp,2,92),2,999)
sockwrite -n Shiva PRIVMSG $1 : $+ %question. [ $+ [ $1 ] ]
.timerquest. $+ %lieu 1 10 question2 $1
}
aliasquestion2 {
sockwrite -n Shiva PRIVMSG $1 : $+ Il ne vous reste plus beaucoup de temps pour attaquer!
.timerquest. $+ %lieu 1 5 question3 $1
}


alias question3 {
sockwrite -n shiva PRIVMSG $1 : $+ Désolé, vous n'avez plus assez de temp pour repondre à cette question...La réponse était: %reponse. [ $+ [ $1 ] ]
.timerquest. $+ $1 1 5 question4 $1 | inc %noreponse. [ $+ [ $1 ] ] 1
.unset %reponse. [ $+ [ $1 ] ]
}


alias question4 {
if (%noreponse. [ $+ [ $1 ] ] == %max.no-reponse) { no-reponse $1 }
else {
sockwrite -n Shiva PRIVMSG $1 : $+ %nickquizz Revient dans 10 Secondes préparez vous!!
.timerquest. $+ $1 1 10 question $1
}
}


alias no-reponse {
fin-quizz $1
sockwrite -n Shiva PRIVMSG $1 : $+ Il y a eu %max.no-reponse reponse non trouver. Le quizz est suspendu...
}


alias fin-quizz {
.timerquest. [ $+ [ %$1 ] ] off
unset %noreponse. [ $+ [ $1 ] ]
}


alias toucher {
sockwrite -n Shiva PRIVMSG $1 : $+ Touché! La réponse est: %reponse. [ $+ [ $1 ] ] Continue $2
.timerquest. [ $+ [ $1 ] ] off
.timerquest. [ $+ [ $1 ] ] 1 5 question4 $1
unset %reponse. [ $+ [ $1 ] ]
}


On 1:SOCKREAD:Shiva:{
sockread %msg
aline -ph @Debug %msg
set %auteur-n $gettok(%msg,1,58)
set %auteur $gettok(%auteur-n,1,32)
set %lieu $gettok(%msg,3,32)
set %contenu $gettok(%msg,2,58) $gettok(%msg,3,58) $gettok(%msg,4,58) $gettok(%msg,5,58) $gettok(%msg,6,58) $gettok(%msg,7,58) $gettok(%msg,8,58) $gettok(%msg,9,58) $gettok(%msg,10,58)
;creation des variable de lieu auteur contenu etc
if ($gettok(%msg,2,32) == PING) { sockwrite -n Shiva pong $gettok(%msg,3,32) }
;gestion du ping elseif ($left(%lieu,1) $chr(35)) && (%contenu %reaction) && (%lancement.quizz. [ $+ [ %lieu ] ] != oui) {
sockwrite -n shiva privmsg %lieu : $+ nickquizz vient d'etre lancé, il attaque dans 10 Secondes, préparez-vous!
.timerinvoq. $+ %lieu 1 10 question %lieu
set %lancement.quizz. [ $+ [ %lieu ] ] oui
;commande de lancement du quizz
} elseif (%contenu VERSION) && (%lieu %nickquizz) {
sockwrite -n Shiva NOTICE %auteur VERSION Quizz Service 1.0 beta par Nightmar
;gestion des CTCP VERSION
}
elseif (%lancement.quizz. [ $+ [ %lieu ] ] == oui) && (%contenu == .stop) {
.set %lancement.quizz. [ $+ [ %lieu ] ] non
fin-quizz %lieu
sockwrite -n Shiva PRIVMSG %lieu : $+ Le quizz est terminé pour le moment...
;Gestion de la fin du quizz
}
else {
if (%contenu == %reponse. [ $+ [ %lieu ] ]) {
if (%reponse. [ $+ [ %lieu ] ] != $null) {
toucher %lieu %auteur
;gestion des bonnes reponse
}
}
}
}

merci d'avance

9 réponses

Messages postés
216
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
16 mars 2006

Ton problème vient du fait que tu utilises la variable %lieu dans tes aliases questionX (aliases qui s'executent au bout d'un certain temps) et que la variable %lieu change à chaque sockread.

Remplace dans tous tes aliases questionX :

.timerquest. $+ %lieu 1 10 .....
par
.timerquest. $+ $1 1 10 ....
Messages postés
840
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
1
je ne vois aucun event on text , c'est normal ?

si tu nous dit que
des que quelqu'un parle sur un autre salon, les timers change de nom, ce serai bien d'avoir cette partie du code
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

non la code est entier est marche, c'est normal qu'il n'y est aucun event etant donné que c'est du socket ....
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

Enfait les timers qui lance les commandes /question etc change de nom par exemple o lieu de doner timerquest.#kuizz 1 15 question #kuizz sava doner quelque chose come timerquest.#blabla 1 15 question #kuizz


Donc le quizz continu de poser des question meme si on tape .stop
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

personne ne voit ou est le probleme ?
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

La seul commande que jé pas mi c'est pour ouvrir le quizz: /sockopen Shiva <serveur>
Messages postés
2084
Date d'inscription
jeudi 12 décembre 2002
Statut
Modérateur
Dernière intervention
30 janvier 2011
8
Bonjour,



Et si tu utilisais /timers off pour carrément arrêter TOUT les timers actifs ?

Sinon, essaie /timerquest* off qui aura pour action d'arrêter tout les timers ayant un nom commencant par quest


<hr color="#d3d3d3">
Cordialement, Sorn_Drixer (Admin CodeS-SourceS)
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

Le probleme etant que le quizz est sencer géré plusieur salon, donc si quelque tape .stop sur salon, le quizz ne doit s'arreter que sur se salon precisement
Messages postés
108
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
18 novembre 2006

Merci beaucoup