06.12.2016, 19:43
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?
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"); } } }