MySQL guardando raro
#1

Los queries estбn funcionando de 10.
Tengo un select, que cuando el usuario registra, por algъn motivo en pInfo[playerid][pSexo] o en la columna de pSexo de MySQL, lo guarda como M!asculino (cuando en el cуdigo estб escrito claramente "Masculino"). Ahora viene lo mбs raro, tengo una variable que es pInfo[playerid][pEdad] que en MySQL se guarda bien el int, pero como antes no pasaba hice un comando para ver si estaba guardando mal el juego, la cosa que cuando ejecuto el comando para que imprima en consola pEdad, imprime "!sculino". Es muy raro.

Las lineas de cуdigo que pueden dar problemas:

Код:
case DIALOG_SEXO:
        {
            if (response == 1)
            {
                new string[10] = "Masculino";
				format(pInfo[playerid][pSexo], sizeof(string), "%s", string);

            }

            else
			{
       			new string[10] = "Femenino";
				format(pInfo[playerid][pSexo], sizeof(string), "%s", string);
            }
            
            new str[90+1];
			format(str, sizeof(str), "%s{FFFFFF}Ingresa la edad de tu personaje (tenй en cuenta que el personaje cumplirб aсos IC)", str);
			ShowPlayerDialog(playerid, DIALOG_EDAD, DIALOG_STYLE_INPUT, "{CC2538}REGISTRO:{FFFFFF}EDAD", str, "Aceptar", "Cancelar");
           
        }
        
        case DIALOG_EDAD:
        {
            if(strval(inputtext) < 18 || strval(inputtext) > 78) return ShowPlayerDialog(playerid, DIALOG_EDAD, DIALOG_STYLE_INPUT, "{CC2538}REGISTRO:{FFFFFF}EDAD", "{CC2538}ЎATENCIУN!\n{FFFFFF} La edad mнnima es 18 y la mбxima 78.","Aceptar","");
			if(strval(inputtext) > 18 || strval(inputtext) < 90)
			{
			    pInfo[playerid][pEdad]= strval(inputtext);
			}
        
            new query[221];
            mysql_format(g_SQL, query, sizeof query, "INSERT INTO `jugadores` (`username`, `password`, `salt`, `pSexo`, `pEdad`) VALUES ('%e', '%s', '%e', '%s', '%i')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt],pInfo[playerid][pSexo], pInfo[playerid][pEdad]);
            mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
        }
El comando:

Код:
CMD:edad(playerid, params[])
{
	new string[60];
	format(string, sizeof(string), "%s", pInfo[playerid][pEdad]);
	SendClientMessage(playerid, -1, string);
	return 1;
}
Si pongo /edad, a pesar que en la tabla de MySQL en pEdad figura, supongamos 33, imprime "!asculino". No entiendo el error

Edito: Olvidense del comando, estoy viendo que imprime un string, no sй igual por quй sale masculino. Sуlo me importa que el guardado sale mal
Edit 2: Con el sexo femenino pasa lo mismo en el 2 caracter (el real, no contando desde 0)
Edit 3: Como me pudrн de no encontrar el error puse para que en lugar de guardar un string guarde un int (1=hombre 2=mujer) y cuando tenga que imprimir, uso un if, pero si alguien me puede resolver la duda para ver donde estaba el error, lo agradezco, porque realmente me intriga.
Reply
#2

Arregle un poco tu cуdigo. Esos strings que tenнas en sexo era totalmente innecesario
Код:
case DIALOG_SEXO:
{
    if (response) { format(pInfo[playerid][pSexo], sizeof(string), "Femenino"); }
    else { format(pInfo[playerid][pSexo], sizeof(string), "Masculino", string); }

    ShowPlayerDialog(playerid, DIALOG_EDAD, DIALOG_STYLE_INPUT, "{CC2538}REGISTRO:{FFFFFF}EDAD", "{FFFFFF}Ingresa la edad de tu personaje (tenй en cuenta que el personaje cumplirб aсos IC)", "Aceptar", "Cancelar");

}
case DIALOG_EDAD:
{
    new Query[221];
    if(response)
    {
        if ( strval(inputtext) >= 18 && strval(inputtext) <= 78 )
        {
	    mysql_format(g_SQL, Query, sizeof Query, "INSERT INTO `jugadores` (`username`, `password`, `salt`, `pSexo`, `pEdad`) VALUES ('%e', '%s', '%e', '%s', '%i')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt],pInfo[playerid][pSexo], pInfo[playerid][pEdad]);
            mysql_tquery(g_SQL, Query, "OnPlayerRegister", "d", playerid);
        }
        else { ShowPlayerDialog(playerid, DIALOG_EDAD, DIALOG_STYLE_INPUT, "{CC2538}REGISTRO:{FFFFFF}EDAD", "{CC2538}ЎATENCIУN!\n{FFFFFF} La edad mнnima es 18 y la mбxima 78.","Aceptar",""); }
    }
}
Con lo del comando "/Edad" te digo que esta mal, simplemente colocaste "%s" en vez de "%d"
te explico un poco: "%s" = Muestra cualquier cadena de texto "%d" = Muestra un numero entero
Код:
CMD:edad(playerid, params[])
{
	new string[10];
	format(string, sizeof(string), "EDAD: %d", pInfo[playerid][pEdad]);
	SendClientMessage(playerid, -1, string);
	return 1;
}
No te vayas a acostumbrar, no siempre estamos de buen humor para arreglar el cуdigo de otras personas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)