Accesing element at negative index -1
#1

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");
		}
	}
}
Reply
#2

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]
Reply
#3

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
Reply
#4

De nada...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)