mysql_query("CREATE TABLE IF NOT EXISTS `Users` (`ID` INTEGER PRIMARY KEY, `Name` VARCHAR(1024) NOT NULL DEFAULT '', `Password` VARCHAR(1024) NOT NULL DEFAULT '', `IP` VARCHAR(1024) NOT NULL DEFAULT '', `Kills` INT NOT NULL DEFAULT '0', `Deaths` INT NOT NULL DEFAULT '0', `Money` INT NOT NULL DEFAULT '0', \
`Score` INT NOT NULL DEFAULT '0', `Skin` INT NOT NULL DEFAULT '0', `Admin` INT NOT NULL DEFAULT '0', `Health` FLOAT NOT NULL DEFAULT '0.0', `Armor` FLOAT NOT NULL DEFAULT '0.0', `Interior` INT NOT NULL DEFAULT '0', `VirtualWorld` INT NOT NULL DEFAULT '0', `AutoSpawn` INT NOT NULL DEFAULT '0',\
`AutoLogin` INT NOT NULL DEFAULT '0', `Kick` INT NOT NULL DEFAULT '0', `Ban` INT NOT NULL DEFAULT '0', `Mute` INT NOT NULL DEFAULT '0', `MuteTime` INT NOT NULL DEFAULT '0', `BanTime` INT NOT NULL DEFAULT '0')");
// Errormsg
mysql_query("CREATE TABLE IF NOT EXISTS `Vehicle` (`ID` INTEGER PRIMARY KEY, `VehicleID` INT NOT NULL DEFAULT '0', `Model` INT NOT NULL DEFAULT '0', `Color1` INT NOT NULL DEFAULT '0', `Color2` INT NOT NULL DEFAULT '0', `Health` FLOAT NOT NULL DEFAULT '0.0', `Plate` VARCHAR(1024) NOT NULL DEFAULT '', \
`x` FLOAT NOT NULL DEFAULT '0.0', `y` FLOAT NOT NULL DEFAULT '0.0', `z` FLOAT NOT NULL DEFAULT '0.0', `Respawn` INT NOT NULL DEFAULT '0', `Angle` FLOAT NOT NULL DEFAULT '0.0')");
for(new i; i < MAX_VEHICLES; i++)
{
new query[200];
format(query, sizeof(query), "SELECT Model FROM `Vehicle` WHERE VehicleID = %d", i);
mysql_query(query);
mysql_store_result();
new row = mysql_num_rows();
if(row)
{
/*
vStats[i][vSQLIB] = row;
vStats[i][vX] = mysql_
vStats[i][vY] = fetch_float("y");
vStats[i][vZ] = fetch_float("z");
vStats[i][vColor1] = fetch_int("Color1");
vStats[i][vColor2] = fetch_int("Color2");
vStats[i][vHealth] = fetch_float("Health");
vStats[i][vModel] = fetch_int("Model");
vStats[i][vRespawn] = fetch_int("Respawn");
vStats[i][vZr] = fetch_float("Angle");
fetch_string("Plate", vStats[i][vPlate], 20);
vStats[i][vID] = CreateVehicle(vStats[i][vModel], vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vZr], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vRespawn]);
SetVehicleHealth(vStats[i][vID], vStats[i][vHealth]);
SetVehicleNumberPlate(vStats[i][vID], vStats[i][vPlate]);*/
}
}
newGM.pwn(389) : error 075: input line too long (after substitutions) newGM.pwn(390) : error 037: invalid string (possibly non-terminated string) newGM.pwn(390) : error 017: undefined symbol "CREATE" newGM.pwn(390) : error 017: undefined symbol "IF" newGM.pwn(390) : fatal error 107: too many error messages on one line
|
Use Zeex's compiler patches or split your query up differently. The split up query as you have it will still end up being one huge string on 1 line.
|
mysql_store_result();
new row = mysql_num_rows();
for(new i=1; i < MAX_VEHICLES; i++)
{
new Cache:tempo;
new query[200];
format(query, sizeof(query), "SELECT ID FROM `Vehicle` WHERE VehicleID = %d", i);
tempo = mysql_query(MySQL, query);
new row = cache_num_rows();
if(row > 0)
{
cache_get_value_int(0, "ID", vStats[i][vSQLIB]);
cache_get_value_float(0, "x", vStats[i][vX]);
cache_get_value_float(0, "y", vStats[i][vY]);
cache_get_value_float(0, "z", vStats[i][vZ]);
cache_get_value_int(0, "Color1", vStats[i][vColor1]);
cache_get_value_int(0, "Color2", vStats[i][vColor2]);
cache_get_value_float(0, "Health", vStats[i][vHealth]);
cache_get_value_int(0, "Model", vStats[i][vModel]);
cache_get_value_int(0, "Respawn", vStats[i][vRespawn]);
cache_get_value_float(0, "Angle", vStats[i][vZr]);
cache_get_value(0, "Plate", vStats[i][vPlate], 20);
vStats[i][vID] = CreateVehicle(vStats[i][vModel], vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vZr], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vRespawn]);
SetVehicleHealth(vStats[i][vID], vStats[i][vHealth]);
SetVehicleNumberPlate(vStats[i][vID], vStats[i][vPlate]);
printf("- Vйhicule ID %i created | Stats :", vStats[i][vID]);
printf("- x: %f | y: %f | z: %f | Model: %i\nColor 1 & 2: %i & %i | Plate: %s", vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vModel], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vPlate]);
}
cache_delete(tempo);
}
|
The query selects only "ID" column and you try to retrieve data from other columns (that are not selected) which will result in errors. There are few things that I'd suggest to use them differently:
- 1 query that selects all rows instead of loop + query over and over again. - threaded queries over non-threaded queries. - creating variables out of loops. - not storing in-game vehicle ID in database. |
new Cache:tempo,
row,
query[200];
for(new i=1; i < MAX_VEHICLES; i++)
{
format(query, sizeof(query), "SELECT * FROM `Vehicle` WHERE VehicleID = %d", i);
tempo = mysql_query(MySQL, query);
row = cache_num_rows();
if(row > 0)
{
cache_get_value_int(0, "ID", vStats[i][vSQLIB]);
cache_get_value_float(0, "x", vStats[i][vX]);
cache_get_value_float(0, "y", vStats[i][vY]);
cache_get_value_float(0, "z", vStats[i][vZ]);
cache_get_value_int(0, "Color1", vStats[i][vColor1]);
cache_get_value_int(0, "Color2", vStats[i][vColor2]);
cache_get_value_float(0, "Health", vStats[i][vHealth]);
cache_get_value_int(0, "Model", vStats[i][vModel]);
cache_get_value_int(0, "Respawn", vStats[i][vRespawn]);
cache_get_value_float(0, "Angle", vStats[i][vZr]);
cache_get_value(0, "Plate", vStats[i][vPlate], 20);
vStats[i][vID] = CreateVehicle(vStats[i][vModel], vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vZr], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vRespawn]);
SetVehicleHealth(vStats[i][vID], vStats[i][vHealth]);
SetVehicleNumberPlate(vStats[i][vID], vStats[i][vPlate]);
printf("- Vйhicule ID %i crйй | Stats :", vStats[i][vID]);
printf("- x: %f | y: %f | z: %f | Model: %i\nColor 1 & 2: %i & %i | Plate: %s", vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vModel], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vPlate]);
}
cache_delete(tempo);
}
// load all vehicles:
mysql_tquery(MySQL, "SELECT * FROM Vehicle ORDER BY ID", "OnVehiclesLoad", "");
forward OnVehiclesLoad();
public OnVehiclesLoad()
{
for (new i, j = cache_num_rows(); i != j; i++)
{
cache_get_value_int(i, "ID", vStats[i][vSQLIB]);
cache_get_value_float(i, "x", vStats[i][vX]);
cache_get_value_float(i, "y", vStats[i][vY]);
cache_get_value_float(i, "z", vStats[i][vZ]);
cache_get_value_int(i, "Color1", vStats[i][vColor1]);
cache_get_value_int(i, "Color2", vStats[i][vColor2]);
cache_get_value_float(i, "Health", vStats[i][vHealth]);
cache_get_value_int(i, "Model", vStats[i][vModel]);
cache_get_value_int(i, "Respawn", vStats[i][vRespawn]);
cache_get_value_float(i, "Angle", vStats[i][vZr]);
cache_get_value(i, "Plate", vStats[i][vPlate], 20);
vStats[i][vID] = CreateVehicle(vStats[i][vModel], vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vZr], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vRespawn]);
SetVehicleHealth(vStats[i][vID], vStats[i][vHealth]);
SetVehicleNumberPlate(vStats[i][vID], vStats[i][vPlate]);
printf("- Vйhicule ID %i crйй | Stats :", vStats[i][vID]);
printf("- x: %f | y: %f | z: %f | Model: %i\nColor 1 & 2: %i & %i | Plate: %s", vStats[i][vX], vStats[i][vY], vStats[i][vZ], vStats[i][vModel], vStats[i][vColor1], vStats[i][vColor2], vStats[i][vPlate]);
}
}
|
Does it load the data now?
About the rest: - "VehicleID" is the in-game vehicle ID, isn't it? All you need is the unique sql ID ("ID" column). - By threaded queries, I mean mysql_tquery + public function. - A single query: |
new query[800];
format(query, sizeof(query), "INSERT INTO `users` (`Name`, `ЁPassword`, `IP`, `Kills`, `Deaths`, `Money`, `Score`, `Skin`, `Admin`) VALUES ('%s', '%s', '%s', %i, %i, %i, %i, %i, %i)",
GetName(playerid), pAccount[playerid][pPassword], ip, pAccount[playerid][pKills], pAccount[playerid][pDeath], pAccount[playerid][pMoney], pAccount[playerid][pScore], pAccount[playerid][pSkin], pAccount[playerid][pAdmin]);
mysql_query(MySQL, query);
format(query, sizeof(query), "INSERT INTO `users` (`Health`, `Armor`, `Interior`, `VirtualWorld`, `AutoSpawn`, `AutoLogin`) VALUES (%f, %f, %i, %i, %i, %i)",
pAccount[playerid][pHealth], pAccount[playerid][pArmor], pAccount[playerid][pInterior], pAccount[playerid][pVirtualWorld], pAccount[playerid][pAutoSpawn], pAccount[playerid][pAutoLogin]);
mysql_query(MySQL, query);
format(query, sizeof(query), "INSERT INTO `users` (`Kick`, `Ban`, `Mute`, `MuteTime`, `BanTime`) VALUES (%i, %i, %i, %i, %i)", pAccount[playerid][pKick], pAccount[playerid][pBan], pAccount[playerid][pMute], pAccount[playerid][pMuteTime], pAccount[playerid][pBanTime]);
mysql_query(MySQL, query);