SA-MP Forums Archive
Accesing element at negative index -1 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Accesing element at negative index -1 (/showthread.php?tid=623868)



Accesing element at negative index -1 - matias770 - 06.12.2016

Buenas, hoy estaba haciendo un sistema de Muebles cosa que nunca habнa hecho antes, todo perfecto carga los datos que necesito desde la base MySQL y puedo poner como yo quiera las cosas, el problema radica al guardar un objeto que acabo de editar.

Usando Crashdetect y unos cuantos print termine dбndome cuenta que el error radica en 'GuardarMuebles(i)', dado que sacando eso del cуdigo todo va perfecto, no puedo entender en que momento la variable toma un valor negativo o que salga de mi MAX_MUEBLES, їquй me falta/me salte?

Код:
#define MAX_MUEBLES         30

enum InfoMuebles
{
	mmID,
	mCasaID,
	mModelo,
	Float:mMuebleX,
	Float:mMuebleY,
	Float:mMuebleZ,
	Float:mMuebleRX,
	Float:mMuebleRY,
	Float:mMuebleRZ,
	mMuebleINT,
	mMuebleVW
}
new Mueble[MAX_MUEBLES][InfoMuebles];

GuardarMueble(idx)
{
    new sql[512];
    format(sql, sizeof(sql), "UPDATE `muebles` SET `id_mueble`='%d',`casa`='%d',`modelo`='%d',`x`='%f',`y`='%f',`z`='%f',`xx`='%f',`yy`='%f',`zz`='%f',`interior`='%d',`virtualworld`='%d' WHERE `id`='%d'",
	Mueble[idx][mCasaID],
	Mueble[idx][mModelo],
	Mueble[idx][mMuebleX],
	Mueble[idx][mMuebleY],
	Mueble[idx][mMuebleZ],
	Mueble[idx][mMuebleRX],
	Mueble[idx][mMuebleRY],
	Mueble[idx][mMuebleRZ],
	Mueble[idx][mMuebleINT],
	Mueble[idx][mMuebleVW],
	Mueble[idx][mmID]);
	mysql_query(database, sql, false);
	return 1;
}
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
	if(EditandoMueble[playerid] == 1)
	{
	    new casa = EstaEnCasa[playerid];
		if(response == EDIT_RESPONSE_FINAL)
		{
		    if(PlayerToPoint(playerid, 50.0, CasaInfo[casa][cxx], CasaInfo[casa][cyy], CasaInfo[casa][czz]))
			{
				for(new i = 0; i < sizeof(Mueble); i++)
				{
					if(PlayerToPoint(playerid, 7.0, Mueble[i][mMuebleX], Mueble[i][mMuebleY], Mueble[i][mMuebleZ]))
					{
						EditandoMueble[playerid] = 0;
						new mensaje[128];
						format(mensaje, sizeof(mensaje), "* Has editado el objeto.");
						SendClientMessage(playerid, CELESTE, mensaje);
						Mueble[i][mMuebleX] = x; Mueble[i][mMuebleY] = y; Mueble[i][mMuebleZ] = z;
						Mueble[i][mMuebleRX] = rx; Mueble[i][mMuebleRY] = ry; Mueble[i][mMuebleRZ] = rz;
						GuardarMueble(i); // Acб
						return 1;
					}
				}
			}
			SendClientMessage(playerid, ROJO_OSCURO, "Debes estar dentro de la casa para terminar de editar el objeto");
		}
	}
}



Respuesta: Accesing element at negative index -1 - Tirael - 08.12.2016

pawn Код:
format(sql, sizeof(sql), "UPDATE `muebles` SET `id_mueble`='%d',`casa`='%d',`modelo`='%d',`x`='%f',`y`='%f',`z`='%f',`xx`='%f',`yy`='%f',`zz`='%f',`interior`='%d',`virtualworld`='%d' WHERE `id`='%d'",
    Mueble[idx][mCasaID],
    Mueble[idx][mModelo],
    Mueble[idx][mMuebleX],
    Mueble[idx][mMuebleY],
    Mueble[idx][mMuebleZ],
    Mueble[idx][mMuebleRX],
    Mueble[idx][mMuebleRY],
    Mueble[idx][mMuebleRZ],
    Mueble[idx][mMuebleINT],
    Mueble[idx][mMuebleVW],
    Mueble[idx][mmID]);
Segъn el format estбs guardando 12 variables pero solo indicas 11 ademas que guardas mal las variables.

Код:
Si te fijas:

`id_mueble`='%d', serнa Mueble[idx][mCasaID],
`casa`='%d', serнa Mueble[idx][mModelo],  
`modelo`='%d', serнa Mueble[idx][mModelo] pero lo guardas como	Mueble[idx][mMuebleX]



Respuesta: Accesing element at negative index -1 - matias770 - 08.12.2016

Ya lo arregle, me fije en eso en su momento tambiйn, aunque no afectaba en el error que puse aunque si es necesario para que funcione bien.

SOLUCIONADO


Respuesta: Accesing element at negative index -1 - Tirael - 09.12.2016

De nada...