30.12.2010, 18:40
Resulta que tengo un GM que funciona mediante MySQL, al poner /crearcasa, se crea y funciona correctamente, pero se pierden cuando reinicio el servidor. En cambio, las HQ sн que se guardan.
Cuando pongo /crearcasa funciona todo perfectamente, pero si miro en la DB, estбn los valores a 0. Pero si relleno esos valores manualmente, la casa sн que funciona al reiniciar. Les pongo el cуdigo de /crearcasa, /crearhq, Loadproperty, Saveproperty, LoadHeadQuarters y SaveHeadQuarters. Tambiйn el tramo de cуdigo de la DB:
Cuando pongo /crearcasa funciona todo perfectamente, pero si miro en la DB, estбn los valores a 0. Pero si relleno esos valores manualmente, la casa sн que funciona al reiniciar. Les pongo el cуdigo de /crearcasa, /crearhq, Loadproperty, Saveproperty, LoadHeadQuarters y SaveHeadQuarters. Tambiйn el tramo de cуdigo de la DB:
Код:
if(strcmp(cmd, "/crearcasa", true) == 0) { new sql[80], row[512], id; if(InfoJugador[playerid][pAdmin] < 6) { SendClientMessage(playerid, COLOR_LIGHTRED, "Insuficientes Permisos!"); return 1; } print("Conectando SQL"); samp_mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); samp_mysql_select_db(MYSQL_DB); print("Query 1"); format(sql, 80, "INSERT INTO casas (Owner) VALUES ('El Estado')"); samp_mysql_query(sql); print("Query 2"); format(sql, sizeof(sql), "SELECT COUNT(*) FROM casas"); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); id = strval(row); printf("Query Result: %d",id); print("Seteando Datos"); HouseInfo[id][hId] = id; HouseInfo[id][hLock] = 1; HouseInfo[id][hValue] = 30000; HouseInfo[id][hLevel] = 5; HouseInfo[id][hDinero] = 0; HouseInfo[id][hOwner] = 0; print("Seteando Armas"); HouseInfo[id][hGun][0] = 0; HouseInfo[id][hAmmo][0] = 0; HouseInfo[id][hGun][1] = 0; HouseInfo[id][hAmmo][1] = 0; HouseInfo[id][hGun][2] = 0; HouseInfo[id][hAmmo][2] = 0; print("Seteando Droga"); HouseInfo[id][hDroga] = 0; HouseInfo[id][hDroga2] = 0; print("Seteando Owner"); format(HouseInfo[id][hOwner], 24, "El Estado"); new Float:X[MAX_PLAYERS], Float:Y[MAX_PLAYERS], Float:Z[MAX_PLAYERS]; GetPlayerPos(playerid, X[playerid],Y[playerid],Z[playerid]); print("Seteando Coords"); HouseInfo[id][hEx] = X[playerid]; HouseInfo[id][hEy] = Y[playerid]; HouseInfo[id][hEz] = Z[playerid]; HouseInfo[id][hSx] = -794.9160; HouseInfo[id][hSy] = 489.9226; HouseInfo[id][hSz] = 1376.1953; HouseInfo[id][hInterior] = 1; print("Salvando Datos"); SaveProperty(idx); print("Creando Pickup"); HouseInfo[id][hPickup] = CreatePickup(1273, 23,X[playerid],Y[playerid],Z[playerid]); return 1; } //-----------------------------------HQ System-------------------------------------- if(strcmp(cmd, "/crearhq", true) == 0) { tmp = strtokex(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "USO: /crearhq [ID FACCION]"); return 1; } new faccionid = strval(tmp); new sql[80], row[512], id; if(InfoJugador[playerid][pAdmin] < 6) { SendClientMessage(playerid, COLOR_LIGHTRED, "Insuficientes Permisos!"); return 1; } samp_mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); samp_mysql_select_db(MYSQL_DB); format(sql, 80, "INSERT INTO headquarters (Nombre) VALUES ('HQ')"); samp_mysql_query(sql); format(sql, sizeof(sql), "SELECT COUNT(*) FROM headquarters"); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); id = strval(row); HeadQuarterInfo[id][hqFaccion] = faccionid; HeadQuarterInfo[id][hqLocked] = 0; HeadQuarterInfo[id][hqCajaFuerte] = 0; format(HeadQuarterInfo[id][hqName], 128, "HQ Numero %d", id); new Float:X[MAX_PLAYERS], Float:Y[MAX_PLAYERS], Float:Z[MAX_PLAYERS]; GetPlayerPos(playerid, X[playerid],Y[playerid],Z[playerid]); HeadQuarterInfo[id][hqEPos_x] = X[playerid]; HeadQuarterInfo[id][hqEPos_y] = Y[playerid]; HeadQuarterInfo[id][hqEPos_z] = Z[playerid]; HeadQuarterInfo[id][hqSPos_x] = 2169.7097; HeadQuarterInfo[id][hqSPos_y] = 1618.2808; HeadQuarterInfo[id][hqSPos_z] = 999.9766; HeadQuarterInfo[id][hqInterior] = 1; SaveHeadQuarter(id); HeadQuarterInfo[id][hqPickup] = CreatePickup(1273, 23,X[playerid],Y[playerid],Z[playerid]); return 1; }
Код:
LoadProperty() { samp_mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); samp_mysql_select_db(MYSQL_DB); new sql[80], row[512]; format(sql, sizeof(sql), "SELECT COUNT(*) FROM casas"); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); hcount = strval(row); for (new idx=1; idx<=hcount; idx++) { format(sql, sizeof(sql), "SELECT * FROM casas WHERE id=%d LIMIT 1", idx); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); split(row, arrCoords, '|'); HouseInfo[idx][hId] = strval(arrCoords[0]); HouseInfo[idx][hEx] = floatstr(arrCoords[1]); HouseInfo[idx][hEy] = floatstr(arrCoords[2]); HouseInfo[idx][hEz] = floatstr(arrCoords[3]); HouseInfo[idx][hSx] = floatstr(arrCoords[4]); HouseInfo[idx][hSy] = floatstr(arrCoords[5]); HouseInfo[idx][hSz] = floatstr(arrCoords[6]); HouseInfo[idx][hInterior] = strval(arrCoords[7]); HouseInfo[idx][hOwned] = strval(arrCoords[8]); format(HouseInfo[idx][hOwner],24,"%s", arrCoords[9]); HouseInfo[idx][hLevel] = strval(arrCoords[10]); HouseInfo[idx][hValue] = strval(arrCoords[11]); HouseInfo[idx][hLock] = strval(arrCoords[12]); HouseInfo[idx][hGun][0] = strval(arrCoords[13]); HouseInfo[idx][hAmmo][0] = strval(arrCoords[14]); HouseInfo[idx][hGun][1] = strval(arrCoords[15]); HouseInfo[idx][hAmmo][1] = strval(arrCoords[16]); HouseInfo[idx][hGun][2] = strval(arrCoords[17]); HouseInfo[idx][hAmmo][2] = strval(arrCoords[18]); HouseInfo[idx][hDroga] = strval(arrCoords[19]); HouseInfo[idx][hDroga2] = strval(arrCoords[20]); HouseInfo[idx][hDinero] = strval(arrCoords[21]); } return 1; } SaveProperty(idx) { new sql[1024]; format(sql, 1024, "UPDATE casas SET EX=%f,EY=%f,EZ=%f,SX=%f,SY=%f,SZ=%f,Interior=%d,Owned=%d,Owner='%s',Nivel= %d,Costo=%d,Locked=%d WHERE id=%d", HouseInfo[idx][hEx], HouseInfo[idx][hEy], HouseInfo[idx][hEz], HouseInfo[idx][hSx], HouseInfo[idx][hSy], HouseInfo[idx][hSz], HouseInfo[idx][hInterior], HouseInfo[idx][hOwned], HouseInfo[idx][hOwner], HouseInfo[idx][hLevel], HouseInfo[idx][hValue], HouseInfo[idx][hLock], HouseInfo[idx][hId]); samp_mysql_query(sql); return 1; }
Код:
LoadHeadQuarter() { samp_mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS); samp_mysql_select_db(MYSQL_DB); new sql[80], row[512]; format(sql, sizeof(sql), "SELECT COUNT(*) FROM headquarters"); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); hqcount = strval(row); for (new idx=0; idx<hqcount; idx++) { format(sql, sizeof(sql), "SELECT * FROM headquarters WHERE id=%d LIMIT 1", idx+1); samp_mysql_query(sql); samp_mysql_store_result(); samp_mysql_fetch_row(row); split(row, arrCoords, '|'); format(HeadQuarterInfo[idx][hqName], 128, "%s", arrCoords[1]); HeadQuarterInfo[idx][hqFaccion] = strval(arrCoords[2]); HeadQuarterInfo[idx][hqEPos_x] = floatstr(arrCoords[3]); HeadQuarterInfo[idx][hqEPos_y] = floatstr(arrCoords[4]); HeadQuarterInfo[idx][hqEPos_z] = floatstr(arrCoords[5]); HeadQuarterInfo[idx][hqSPos_x] = floatstr(arrCoords[6]); HeadQuarterInfo[idx][hqSPos_y] = floatstr(arrCoords[7]); HeadQuarterInfo[idx][hqSPos_z] = floatstr(arrCoords[8]); HeadQuarterInfo[idx][hqInterior] = strval(arrCoords[9]); HeadQuarterInfo[idx][hqLocked] = strval(arrCoords[10]); HeadQuarterInfo[idx][hqCajaFuerte] = strval(arrCoords[11]); printf("HQ de la Facciуn: %d | X: %f Y:%f Z:%f | Interior: %d | Cerradura: %d | CF: $%d", HeadQuarterInfo[idx][hqFaccion], HeadQuarterInfo[idx][hqEPos_x], HeadQuarterInfo[idx][hqEPos_y], HeadQuarterInfo[idx][hqEPos_z], HeadQuarterInfo[idx][hqInterior], HeadQuarterInfo[idx][hqLocked], HeadQuarterInfo[idx][hqCajaFuerte]); } printf("HQs Totales: %d",hqcount); return 1; } SaveHeadQuarter(i) { new sql[1024]; format(sql, sizeof(sql), "UPDATE headquarters SET Nombre='%s',Faccion=%d,EPos_X=%f,EPos_Y=%f,EPos_Z=%f,SPos_X=%f,SPos_Y=%f,SPos_Z=%f,Interior=%d,Locked=%d,CajaFuerte=%d WHERE id=%d LIMIT 1", HeadQuarterInfo[i][hqName], HeadQuarterInfo[i][hqFaccion], HeadQuarterInfo[i][hqEPos_x], HeadQuarterInfo[i][hqEPos_y], HeadQuarterInfo[i][hqEPos_z], HeadQuarterInfo[i][hqSPos_x], HeadQuarterInfo[i][hqSPos_y], HeadQuarterInfo[i][hqSPos_z], HeadQuarterInfo[i][hqInterior], HeadQuarterInfo[i][hqLocked], HeadQuarterInfo[i][hqCajaFuerte], i); samp_mysql_query(sql); return 1; }
Код:
Estructura de tabla para la tabla `casas` -- CREATE TABLE IF NOT EXISTS `casas` ( `id` int(11) NOT NULL auto_increment, `EX` float NOT NULL, `EY` float NOT NULL, `EZ` float NOT NULL, `SX` float NOT NULL, `SY` float NOT NULL, `SZ` float NOT NULL, `Interior` int(11) NOT NULL, `Owned` int(11) NOT NULL, `Owner` varchar(255) NOT NULL, `Nivel` int(11) NOT NULL, `Costo` int(11) NOT NULL, `Locked` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=107 ; -- -- Volcar la base de datos para la tabla `casas` -- INSERT INTO `casas` (`id`, `EX`, `EY`, `EZ`, `SX`, `SY`, `SZ`, `Interior`, `Owned`, `Owner`, `Nivel`, `Costo`, `Locked`) VALUES (1, -43.0591, -1846.39, 3.79557, 140.207, 1366.13, 1083.86, 5, 1, 'El Estado', 15, 750000, 1), (2, 1298.74, -799.712, 84.1406, 140.207, 1366.13, 1083.86, 5, 0, 'El Estado', 15, 950000, 1); -- -------------------------------------------------------- -- --
Код:
Estructura de tabla para la tabla `headquarters` -- CREATE TABLE IF NOT EXISTS `headquarters` ( `id` int(11) NOT NULL auto_increment, `Nombre` varchar(255) NOT NULL, `Faccion` int(11) NOT NULL, `EPos_X` float NOT NULL, `EPos_Y` float NOT NULL, `EPos_Z` float NOT NULL, `SPos_X` float NOT NULL, `SPos_Y` float NOT NULL, `SPos_Z` float NOT NULL, `Interior` int(11) NOT NULL, `Locked` int(11) NOT NULL, `CajaFuerte` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Volcar la base de datos para la tabla `headquarters` -- INSERT INTO `headquarters` (`id`, `Nombre`, `Faccion`, `EPos_X`, `EPos_Y`, `EPos_Z`, `SPos_X`, `SPos_Y`, `SPos_Z`, `Interior`, `Locked`, `CajaFuerte`) VALUES (1, 'HQ Numero 1', 12, 1123.64, -2036.82, 69.8866, 2324.29, -1149.36, 1050.71, 12, 0, 0), (2, 'HQ Numero 2', 23, 979.96, -676.8, 121.976, 225.995, 1021.44, 1084.02, 7, 0, 0); -- -------------------------------------------------------- -- --