Petit probleme de variable

crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 2 octobre 2005 - 1 oct. 2005 à 15:10
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 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...

Vous pouvez m'aider ?

14 réponses

vivekyo Messages postés 20 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 2 décembre 2006
1 oct. 2005 à 16:11
Les deux marches si je me trompe pas :
set [ %vote $+ [ $nick ] ] 1
set %vote $+ [ $nick ] 1

Laquelle est la meilleure ?
0
Zova Messages postés 150 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 24 août 2010 2
1 oct. 2005 à 16:21
Tout simplement fait ceci :
set %vote $+ $nick 1
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
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à)

<hr color="#d3d3d3">Cordialement, Sorn_Drixer (Admin CodeS-SourceS)

<!--
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
1 oct. 2005 à 19:56
-1 pour sorn :)

Utiliser un fichier ini pour un simple vote... je pense pas.

Utilise une seule variable avec les nicks ayant déjà voté séparés par un token.

Ca suffit amplement


----------------------------
Signature des parents :
0

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

Posez votre question
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
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

<hr color="#d3d3d3">Cordialement, Sorn_Drixer (Admin CodeS-SourceS)

<!--
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
2 oct. 2005 à 12:54
Jtrouvais juste que c'était pas super niveau rapidité... je suppose qu'un read est plus long.

Puis il ne faut pas prendre de mauvaises habitudes :D.

De plus pour un débutant... gérer l'ident, l'host etc... Ca commence à faire beaucoup pour le débutant, pour un simple vote ^^



Enfin bon :) à lui de voir, mais en effet, le ini lui permet de faire évoluer son script plus facilement.


---------------------------------
Signature des parents :
0
crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Derniè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.

(oui je suis bien un débutant ! )
0
crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 2 octobre 2005
2 oct. 2005 à 13:31
J'oubliai dans mon post précédent de vous dire que c'est juste le if qui a un problème, car autrement tout marche...

Merci d'avance pour votre aide
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
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)

<hr color="#d3d3d3">Cordialement, Sorn_Drixer (Admin CodeS-SourceS)

<!--
0
crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 2 octobre 2005
2 oct. 2005 à 15:41
Je teste ca de suite...
C'est vrai que c'est pas logique !

Merci beaucoup
0
crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Derniè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.
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
2 oct. 2005 à 17:08
Essaie comme ca :



on *:TEXT:!vote*:%vchan:{
if $readini(votant.ini,USER,$nick) { msg %vchan Vote refusé. Vous avez déjà voté $nick }
else {
writeini votant.ini USER $nick $nick


inc %r $+ $mid($1-,2,1))

msg %vchan test : $readini(votant.ini,USER,$nick)
notice $nick Merci d'avoir voté !
halt
}
}


<hr color="#d3d3d3">Cordialement, Sorn_Drixer (Admin CodeS-SourceS)

<!--
0
crash71 Messages postés 6 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 2 octobre 2005
2 oct. 2005 à 17:42
Ca ne passe toujours pas...
Le $readini(votant.ini,USER,$nick) ne donne toujours rien... :(
La condition n'est jamais réalisée...
0
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
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)

<hr color="#d3d3d3">Cordialement, Sorn_Drixer (Admin CodeS-SourceS)

<!--
0
Rejoignez-nous