crash71
Messages postés6Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention 2 octobre 2005
-
1 oct. 2005 à 15:10
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 2011
-
3 oct. 2005 à 07:12
Voila j'ai un petit probleme, je suis sous mirc et j'aimerai faire une variable avec un nick dans une remote... Enfin je m'explique, prenons un exemple :
Je veux faire un vote sur un channel
Une fois que le pseudo 'Machin' a voté, la variable associer a lui meme passe à 1 :
set %vote$nick 1
ceci doit donner pour le pseudo 'Machin'
%voteMachin = 1
Mais le probleme c'est que $nick n'est pas reconnu dans la variable par mirc donc ne change pas...
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 20118 1 oct. 2005 à 19:13
Bonjour,
+1 pour la solution de Zova, les crochets d'évaluation (on peut
également utiliser $eval) sont valable pour la lecture de la variable,
pour l'écriture, c'est inutile.
Pour ce genre de système, laisse moi te donner un petit conseil perso :
oublie les variables ! C'est pas vraiment fait pour ca, privilégie
plutôt un système de fichier INI. (voir aide concernant /writeini,
$readini : à partir de ca, tu pourras faire pas mal de chose déjà)
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 20118 2 oct. 2005 à 09:49
S333 : niveau évolutivité, c'est pas très pratique. Avec un
fichier ini, on pourra stocker facilement le pseudo, l'ident, et l'host
de la personne afin d'éviter au maximum les votes multiples. On pourra
égalment gérer plusieurs votes simultanément.
Pour un débutant, la structure d'un ini est beaucoup plus compréhensible qui plus est
crash71
Messages postés6Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention 2 octobre 2005 2 oct. 2005 à 13:29
J'ai tenu compte de vos remarques et j'en suis arrivé a faire ceci :
on *:text:!*:%vchan: {
if ($nick == $readini(votant.ini,host,$nick)) {
writeini votant.ini host $nick
inc %r $+ $mid($1-,2,1))
notice $nick Merci d'avoir voté !
halt
}
}
else {
msg %vchan 7Vote refusé. Vous avez déjà voté4 $nick 7!
alt
}
Mirc ne me retourne aucune erreur mais j'ai aucun fichier de créé...
Au bout de trois heures de recherche, je vous sollicite un peu pour essayer de m'aider.
Je vous remerci beaucoup déjà d'avoir pris du tps pour me répondre.
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 20118 2 oct. 2005 à 13:44
Un peu de logique voyons
Ta condition s'éxécute SEULEMENT SI $nick est présent dans la section
"host" de ton fichier votant.ini, et si c'est le cas, tu écris dans
le fichier. Mais ... si le fichier n'existe pas au départ, tu
auras du mal à rendre vrai ta condition, il te faut donc faire un
/writeini avant ta condition (ou alors prévoir un else après celle-ci)
crash71
Messages postés6Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention 2 octobre 2005 2 oct. 2005 à 16:22
Encore un petit problème, bien que maintenant le votant.ini marche :
on *:text:!*:%vchan: {
if ($readini(votant.ini,USER,$nick) = = 1 ) {
msg %vchan 7Vote refusé. Vous avez déjà voté4 $nick 7!
halt
}
else {
writeini votant.ini USER $nick 1
inc %r $+ $mid($1-,2,1))
msg %vchan test : $readini(votant.ini,USER,$nick)
notice $nick Merci d'avoir voté !
halt
}
}
J'ai encore un petit probleme avec la variable $nick dans le
if ($readini(votant.ini,USER,$nick) == 1 ) {
Il ne le change toujours pas par le pseudo de la personne...
msg %vchan test : $readini(votant.ini,USER,$nick) ce test me renvoi ceci : 'test '
En clair rien...
Pourtant le ini se forme très bien...
J'ai remarqué en essayant de mettre une contante a la place du $nick, ca marche...
mais je veux que le pseudo passe a 1 quand il a voté...
Mais je reste toujours bloqué a cette variable... Quelqu'un aurait une solution pour que celle ci se change ?
pour info la condition if est toujours fausse car il n'arrive pas a récupéré le pseudo = 1 dans le ini.
J'espère que je suis clair dans mon explication, et je vous remerci d'avance pour les réponses que vous allez m'apporter.
cs_SornDrixer
Messages postés2084Date d'inscriptionjeudi 12 décembre 2002StatutMembreDernière intervention30 janvier 20118 3 oct. 2005 à 07:12
La 1ère fois, l'événement va être renvoyé sur le ELSE (vu que la
condition ne sera pas vrai), et à ce moment un /writeini ce produit,
donc ton votant.ini devrait bel et bien exister. Il faut debugger ton
code, essaie de placer des echo par-ci par-là afin de voir jusqu'où le
code s'éxécute, etc .. (n'hésite pas à afficher non plus tes
identifieurs comme $nick, $mid(), afin de voir si ceux-ci sont bien
retourés correctement)