Error en Cargado, MYSQL R39.
#1

Buenas, cuando un usuario se registra y se desconecta guardo los datos en la base de datos bien, pero cuando vuelves a ingresar al juego al colocar tu contraseсa haces spawn por San Fierro en el mar, con skin de CJ y los datos del jugador en la base de datos queda en 0, asн tengo cuando entras al servidor nuevamente.

Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
		case DIALOG_INGRESO:
		{
			if(response)
			{
				new query[520];
				mysql_format(MySQL,query,sizeof(query),"SELECT * FROM `cuentas` WHERE `Nombre`='%s' AND `Password`='%s'",NombreJugador(playerid),inputtext);
				mysql_pquery(MySQL, query, "IngresoJugador","d", playerid);
			}
			else
			{
				Kick(playerid);
			}
		}
	}
	return 1;
}

forward IngresoJugador(playerid);
public IngresoJugador(playerid)
{
	if(cache_get_row_count() == 0)
	{
		ShowPlayerDialog(playerid, DIALOG_INGRESO, DIALOG_STYLE_INPUT, "Ingreso", "ЎError!\n\nLa contraseсa no es correcta.", "Continuar", "Cancelar");
	}
	else
	{
		Informacion[playerid][pNivel]        = cache_get_row_int(0, 4, MySQL);
		Informacion[playerid][pSkin] 		 = cache_get_row_int(0, 5, MySQL);
		Informacion[playerid][pPosX]   		 = cache_get_row_float(0, 6, MySQL);
		Informacion[playerid][pPosY]     	 = cache_get_row_float(0, 7, MySQL);
		Informacion[playerid][pPosZ]    	 = cache_get_row_float(0, 8, MySQL);
		Informacion[playerid][pSexo]         = cache_get_row_int(0, 9, MySQL);
		Informacion[playerid][pVida]    	 = cache_get_row_float(0, 10, MySQL);
		Informacion[playerid][pChaleco] 	 = cache_get_row_float(0, 11, MySQL);
		Informacion[playerid][pFaccion]      = cache_get_row_int(0, 12, MySQL);
		Informacion[playerid][pRango]        = cache_get_row_int(0, 13, MySQL);
		Informacion[playerid][pTrabajo]      = cache_get_row_int(0, 14, MySQL);
		Informacion[playerid][pDinero]       = cache_get_row_int(0, 15, MySQL);
		Informacion[playerid][pInterior]     = cache_get_row_int(0, 16, MySQL);
		Informacion[playerid][pVirtualWord]  = cache_get_row_int(0, 17, MySQL);
		Informacion[playerid][pEdad]         = cache_get_row_int(0, 18, MySQL);
		Informacion[playerid][pRaza]         = cache_get_row_int(0, 19, MySQL);
		Informacion[playerid][pColorOjos]    = cache_get_row_int(0, 20, MySQL);
		Informacion[playerid][pColorCabello] = cache_get_row_int(0, 21, MySQL);
		Informacion[playerid][pRegistrado]   = cache_get_row_int(0, 22, MySQL);
		Informacion[playerid][pAngle]        = cache_get_row_int(0, 23, MySQL);
		SetPVarInt(playerid, "PuedeIngresar", 1);
		IngresarJugador(playerid);
	}
	return 1;
}

forward IngresarJugador(playerid);
public IngresarJugador(playerid)
{
	SetSpawnInfo(playerid, 0, Informacion[playerid][pSkin], Informacion[playerid][pPosX],Informacion[playerid][pPosY],Informacion[playerid][pPosZ], Informacion[playerid][pAngle], 0,0,0,0,0,0);
	SpawnPlayer(playerid);
	SetPlayerHealth(playerid,Informacion[playerid][pVida]);
	SetPlayerArmour(playerid,Informacion[playerid][pChaleco]);
	GivePlayerMoney(playerid,Informacion[playerid][pDinero]);
	SetPlayerVirtualWorld(playerid,Informacion[playerid][pVirtualWord]);
	SetPlayerInterior(playerid,Informacion[playerid][pInterior]);
	SetPlayerSkin(playerid,Informacion[playerid][pSkin]);
	SetPlayerScore(playerid, Informacion[playerid][pNivel]);
	return 1;
}

public OnPlayerSpawn(playerid)
{
    TextDrawShowForPlayer(playerid, Textdraw38);
	if(GetPVarInt(playerid, "PuedeIngresar") == 0)
	{
		Kick(playerid);
	}
	return 1;
}
Reply
#2

Aъn requiero la ayuda...
Reply
#3

Yo de mysql no se nada, pero revisa que tienes bien colocada la variable de cuentas en las public de OnPlayerDisconnect, y tengas en OnPlayerConnect la variable de conectado algo asi mas o menos debes revisar, yo soy algo noob xD
Reply
#4

Quote:
Originally Posted by wharlos
Посмотреть сообщение
Yo de mysql no se nada, pero revisa que tienes bien colocada la variable de cuentas en las public de OnPlayerDisconnect, y tengas en OnPlayerConnect la variable de conectado algo asi mas o menos debes revisar, yo soy algo noob xD
?

Код:
public OnPlayerConnect(playerid)
{
    new query[520],nombre[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nombre, sizeof(nombre));
	ResetVariables(playerid);
	CrearTextdraws(playerid);
	mysql_format(MySQL, query, sizeof(query), "SELECT * FROM `cuentas` WHERE `Nombre`='%s'", nombre);
	mysql_pquery(MySQL, query, "VerificarUsuario","d", playerid);
	//* Removes del Servidor *//
	/* ЎCancha de Idlewood! */
	RemoveBuildingForPlayer(playerid, 5551, 2140.5156, -1735.1406, 15.8906, 0.25);
	RemoveBuildingForPlayer(playerid, 5410, 2140.5156, -1735.1406, 15.8906, 0.25);
    /* ЎUrbanizaciуn Ayutamiento! */
	RemoveBuildingForPlayer(playerid, 4055, 1394.3594, -1620.6641, 32.1484, 0.25);
	RemoveBuildingForPlayer(playerid, 4220, 1370.6406, -1643.4453, 33.1797, 0.25);
	RemoveBuildingForPlayer(playerid, 647, 1378.8125, -1623.3828, 14.4609, 0.25);
	RemoveBuildingForPlayer(playerid, 620, 1379.2422, -1622.4531, 12.8672, 0.25);
	RemoveBuildingForPlayer(playerid, 647, 1375.6406, -1621.8672, 14.5859, 0.25);
	RemoveBuildingForPlayer(playerid, 647, 1382.0469, -1621.8672, 14.4844, 0.25);
	RemoveBuildingForPlayer(playerid, 4006, 1394.3594, -1620.6641, 32.1484, 0.25);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	TextDrawDestroy(Textdraw0[playerid]);
    TextDrawDestroy(Textdraw1[playerid]);
    TextDrawDestroy(Textdraw2[playerid]);
    TextDrawDestroy(Textdraw3[playerid]);
    TextDrawDestroy(Textdraw4[playerid]);
    TextDrawDestroy(Textdraw5[playerid]);
    TextDrawDestroy(Textdraw6[playerid]);
    TextDrawDestroy(Textdraw7[playerid]);
    TextDrawDestroy(Textdraw8[playerid]);
    TextDrawDestroy(Textdraw9[playerid]);
    TextDrawDestroy(Textdraw10[playerid]);
    TextDrawDestroy(Textdraw11[playerid]);
    TextDrawDestroy(Textdraw12[playerid]);
    TextDrawDestroy(Textdraw13[playerid]);
    TextDrawDestroy(Textdraw17[playerid]);
    TextDrawDestroy(Textdraw18[playerid]);
    TextDrawDestroy(Textdraw19[playerid]);
    TextDrawDestroy(Textdraw20[playerid]);
    TextDrawDestroy(Textdraw21[playerid]);
    TextDrawDestroy(Textdraw22[playerid]);
    TextDrawDestroy(Textdraw23[playerid]);
    TextDrawDestroy(Textdraw24[playerid]);
    TextDrawDestroy(Textdraw25[playerid]);
    TextDrawDestroy(Textdraw26[playerid]);
    TextDrawDestroy(Textdraw27[playerid]);
    TextDrawDestroy(Textdraw28[playerid]);
    TextDrawDestroy(Textdraw29[playerid]);
    TextDrawDestroy(Textdraw30[playerid]);
    TextDrawDestroy(Textdraw31[playerid]);
    TextDrawDestroy(Textdraw32[playerid]);
    TextDrawDestroy(Textdraw33[playerid]);
    TextDrawDestroy(Textdraw34[playerid]);
    TextDrawDestroy(Textdraw35[playerid]);
    TextDrawDestroy(Textdraw36[playerid]);
    TextDrawDestroy(Textdraw37[playerid]);
    GuardarJugador(playerid);
	return 1;
}
Reply
#5

cache_get_row_int inicia desde el cero por si las moscas, intenta hacer un debug de la consulta que envias y de los valores que toman algunas variables. Tambien verifica si no hay errores en el mysql_log

mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
Reply
#6

Quote:
Originally Posted by _Zume
Посмотреть сообщение
cache_get_row_int inicia desde el cero por si las moscas, intenta hacer un debug de la consulta que envias y de los valores que toman algunas variables. Tambien verifica si no hay errores en el mysql_log

mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
El lo quiere hecho, no entenderб nada de lo que le dijiste
Reply
#7

Quote:
Originally Posted by _Zume
Посмотреть сообщение
cache_get_row_int inicia desde el cero por si las moscas, intenta hacer un debug de la consulta que envias y de los valores que toman algunas variables. Tambien verifica si no hay errores en el mysql_log

mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
El mysql_log me dio aviso;

[13:18:46] [WARNING] CMySQLResult::GetRowData - invalid row ('0') or field index ('23')
[13:18:46] [ERROR] cache_get_row_int - invalid datatype

їa que se podrнa deber eso?
Reply
#8

que estбs iniciando desde el index incorrecto a recolectar los datos.

Ejemplo, supongamos que tu estructura MySQL es asн:

0 | 1 | 2 | 3 | 4

ID | Nombre | Skin | Nivel | PosX

ID es el 0, y asн que PosX es el 4. Ahora si tъ haces esto:

new Nivel = cache_get_row_int(0, 4, conexion);

PosX imagino que tiene tageado el Float, y la funciуn no puede sacarlo.. Entonces iniciaste del index incorrecto, porque me parece tambiйn que accediste al 23 y sуlo hay 22.

Por tanto serнa asн:

new Nivel = cache_get_row_int(0, 3, conexion);


Podrias utilizar estas funciones:

PHP код:
stock Float:cache_get_field_float(rowfield_name[], conexion 0)
{
    new 
str[16];
    
      
cache_get_field_content(rowfield_namestrconexion);
       return 
floatstr(str);
}
stock cache_get_field_int(rowfield_name[], conexion 0)
{
    new 
str[12];
    
      
cache_get_field_content(rowfield_namestrconexion);
       return 
strval(str);

a decir verdad la diferencia no es mucha en tйrminos de velocidad, de hecho es nula.

PHP код:
new Nivel cache_get_field_int(0"Nivel"); 
Reply
#9

Quote:
Originally Posted by _Zume
Посмотреть сообщение
que estбs iniciando desde el index incorrecto a recolectar los datos.

Ejemplo, supongamos que tu estructura MySQL es asн:

0 | 1 | 2 | 3 | 4

ID | Nombre | Skin | Nivel | PosX

ID es el 0, y asн que PosX es el 4. Ahora si tъ haces esto:

new Nivel = cache_get_row_int(0, 4, conexion);

PosX imagino que tiene tageado el Float, y la funciуn no puede sacarlo.. Entonces iniciaste del index incorrecto, porque me parece tambiйn que accediste al 23 y sуlo hay 22.

Por tanto serнa asн:

new Nivel = cache_get_row_int(0, 3, conexion);


Podrias utilizar estas funciones:

PHP код:
stock Float:cache_get_field_float(rowfield_name[], conexion 0)
{
    new 
str[16];
    
      
cache_get_field_content(rowfield_namestrconexion);
       return 
floatstr(str);
}
stock cache_get_field_int(rowfield_name[], conexion 0)
{
    new 
str[12];
    
      
cache_get_field_content(rowfield_namestrconexion);
       return 
strval(str);

a decir verdad la diferencia no es mucha en tйrminos de velocidad, de hecho es nula.

PHP код:
new Nivel cache_get_field_int(0"Nivel"); 
Entiendo, es que segъn yo lo tengo bien organizado el cargado segъn la estructura de mi base de datos, mirad;



segъn el cargado que tengo, lo veo bien

Код:
		Informacion[playerid][pNivel]        = cache_get_row_int(0, 4, MySQL);
		Informacion[playerid][pSkin] 		 = cache_get_row_int(0, 5, MySQL);
		Informacion[playerid][pPosX]   		 = cache_get_row_float(0, 6, MySQL);
		Informacion[playerid][pPosY]     	 = cache_get_row_float(0, 7, MySQL);
		Informacion[playerid][pPosZ]    	 = cache_get_row_float(0, 8, MySQL);
		Informacion[playerid][pSexo]         = cache_get_row_int(0, 9, MySQL);
		Informacion[playerid][pVida]    	 = cache_get_row_float(0, 10, MySQL);
		Informacion[playerid][pChaleco] 	 = cache_get_row_float(0, 11, MySQL);
		Informacion[playerid][pFaccion]      = cache_get_row_int(0, 12, MySQL);
		Informacion[playerid][pRango]        = cache_get_row_int(0, 13, MySQL);
		Informacion[playerid][pTrabajo]      = cache_get_row_int(0, 14, MySQL);
		Informacion[playerid][pDinero]       = cache_get_row_int(0, 15, MySQL);
		Informacion[playerid][pInterior]     = cache_get_row_int(0, 16, MySQL);
		Informacion[playerid][pVirtualWord]  = cache_get_row_int(0, 17, MySQL);
		Informacion[playerid][pEdad]         = cache_get_row_int(0, 18, MySQL);
		Informacion[playerid][pRaza]         = cache_get_row_int(0, 19, MySQL);
		Informacion[playerid][pColorOjos]    = cache_get_row_int(0, 20, MySQL);
		Informacion[playerid][pColorCabello] = cache_get_row_int(0, 21, MySQL);
		Informacion[playerid][pRegistrado]   = cache_get_row_int(0, 22, MySQL);
		Informacion[playerid][pAngle]        = cache_get_row_int(0, 23, MySQL);
		SetPVarInt(playerid, "PuedeIngresar", 1);
		IngresarJugador(playerid);
Reply
#10

La funciуn que utilizas, inicia desde el 0. En la estructura del PHPMyAdmin te dice que "Nivel" es # 4 pero al obtener los datos con la funciуn es # 3 ya que en cierta forma son obtenidos por "array' s", los datos son capturados en uno y con la funciуn nada mбs accedes a ellos.

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)