Detectar parбmetros usados, de una manera mejor
#8

Quote:
Originally Posted by Kevln
Посмотреть сообщение
Prueba esto:
pawn Код:
main()
{
    Parametros_Locos(20, 50);
}

stock Parametros_Locos(valor_1 = 0, valor_2 = 0, valor_3 = 0)
{
    new parametros_usados;
    valor_1 = (valor_1 >= 1) ? parametros_usados ++ : 0;
    valor_2 = (valor_2 >= 1) ? parametros_usados ++ : 0;
    valor_3 = (valor_3 >= 1) ? parametros_usados ++ : 0;

    printf("%d %d %d", valor_1, valor_2, parametros_usados);
    return 1;
}
Imprime:


No creo que quisieras que esos valores sean inutilizables. Aunque lo podrias usar despues de usar sus valores. Pero bueno, no veo el punto en hacer eso, podrias utilizar condiciones, tiene mas sentido.
Veamos, yo no sй para donde te has saltado tu, pero lo que colocas no es lo que intento. Bбsicamente estoy contando los parбmetros que estoy usando, para ello uso

Код:
// 3 parametros opcionales (valor defecto 0)

stock Parametros_Locos(playerid, valor=0,valor2=0,valor3=0)
{
	new parametros_usados; // valor de la variable 0

       // luego checkeo que el valor del primer parametro de la funcion sea igual o mayor a 1
       // en caso de ser asi, le suma a la variable "parametro_usados", asi sucesivamente por todos los parametros
	valor = (valor >= 1) ? parametros_usados ++ : 0;
	valor2 = (valor2 >= 1) ? parametros_usados ++ : 0;
	valor3 = (valor3 >= 1) ? parametros_usados ++ : 0;
	
        // luego checkeo el valor que tenga la variable parametro_usado, eso determinara cuantos parбmetros use 
	if(parametros_usados == 1)
	{
		SendClientMessage(playerid, -1, "usaste 1 parametro");
	}
	else if(parametros_usados == 2)
	{
		SendClientMessage(playerid, -1, "Usastes 2 parametros");
	}
	else if(parametros_usados == 3)
	{
		SendClientMessage(playerid, -1, "Usastes 3 parametros");
	}
	else
	{
		SendClientMessage(playerid, -1, "no usaste ningun parametro");
	}

	return -1;
}
Que funciona perfectamente.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 2 Guest(s)