Problema con variables - mIRC scripting

R

Hola,
Tengo un problema con variables dinámicas.
Lo que quiero hacer es lo siguiente: alguien escribe una frase y que el resto de personas del canal puedan votar esa frase, pero sin que puedan votar varias veces. Para esto, escribo (es un fragmento, pero suficiente como para resolver mi duda):

on *:text:.rechazo:#canal: {
if ([ %voto $+ $nick ] == $null) {
inc %rechazo
notice #canal %rechazo contra!
inc %voto $+ $nick
}

(nota: en otra parte del script tengo el unset %voto*)
He observado que inc %voto $+ $nick funciona, pero lo que no quiere funcionar [por más que intente y busque (llevo 3 días buscando, intentado y preguntando) no consigo hacerlo funcionar!!], repito, lo que no quiere funcionar es la condición del if, lo de if (%voto $+ $nick == $null)
He intentado poniendo:
if (%voto $+ $nick == $null)
if (%voto $+ [ $nick ] == $null)
if ([ % $+ voto $+ $nick ] == $null
if (%voto [ $+ [ $nick ]]) == $null)
if ([ %voto [ $+ [ $nick ]]] == $null)
if ([ %voto [$+ [ $nick ]]] == $null)

y 100 más... anda que he tenido tiempo en 3 dias de probar :))

También he intentado asignar %voto $+ $nick a una variable %p
y poner como condicional "la variable cuyo nombre es el valor de %p", me explico, que lo que devuelva la variable %p, ése sea el nombre de la variable que quiero comparar. He probado con:
var %p voto $+ $nick
if (% [%p] == $null)
ó if (%[%p] == $null) ó if (%%p == $null) ó if ([ % $+ %p] == $null) .................................. :D

Y NADA funciona, ya ni se qué más probar... :wtf:

Explico otra vez lo que quiero hacer en un ejemplo, para que no queden dudas:
Pepe escribe una frase, y los demás la votan. A Juan no le gusta y la vota negativamente escribiendo .rechazo
Ahora es cuando salta el código: como la variable %votoJuan no existe, por lo tanto devuelve $null, se cumple que == $null, y realiza los comandos entre llaves: incrementa %rechazo en 1, avisa que ha habido una persona en contra, y crea e incrementa la variable %votoJuan 1.
Por si acaso a Juan le da por votar varias veces, como %votoJuan ya vale 1, no se cumplirá la condición del if (será distinta de $null), luego no pasará nada.

Espero haberme explicado. ¿Cómo consigo que el if evalúe la condición que puse en cursiva? O de otra manera, ¿cómo se pone corréctamente la condicion, de forma que compare correctamente la variable %votoNick, siendo Nick el nick de la persona que vota?

Muchas gracias de antemano.

Lecherito

Como tu problema son las variables te haré un ejemplo que croe que te podrá ayudar:

alias pruebavar {
  var %p = asdf
  var %voto [ $+ [ %p ] ] tengocosas
  if (!%voto [ $+ [ %p ] ]) { echo -a no tengo nada }
  else { echo -a tengo cosas }
}

Mira, ahí asigno a una variable %p un valor "asdf" y luego pruebo a ver si la variable %voto [ $+ [ %p ] ] tiene algo o no, para comprobar el funcionamiento quitar la linea donde le doy un valor a la variable %voto [ $+ [ %p ] ].

Nota:

Los condicionales if, para más comodidad y para leerlos algo mejor puedes ponerlos de la siguiente manera, negando la obviedad:

if (%p) { asd f} ;Si la variable %p existe entonces haz asdf

Y para negarlo... if (!%p) { fdsa } ; Si la variable %p NO existe entonces haz fdsa

Espero que te haya servido de ayuda, lo acabo de probar yo con mIRC ^^

Nota2: Fijate que uno de tus errores de por que no te funcionaba es por que las variables dinamicas como las llamas tu van de la forma:

var %voto [ $+ [ asdf ] ] <--- Fijate en los espacios que hay en los corchetes del final, que es lo que tú no ponías.

1
R

Sí, tienes razón... Me di cuenta una ora más tarde, cuando me dio por seleccionar un ejemplo que veía.. :D y vi el espacio...:palm: es que hasta me dan ganas de reír por la tontería por la que estuve tanto tiempo...

Gracias por responderme ;)

Usuarios habituales