Table in der MYSQL:
CREATE TABLE IF NOT EXISTS `fahrzeuge` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`spieler` varchar(24) NOT NULL,
`model` int(4) NOT NULL,
`xPos` float NOT NULL,
`yPos` float NOT NULL,
`zPos` float NOT NULL,
`angle` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Im Grunde heißt es fürs Script erstmal nur: "Nutze nicht deine stock Funktionen zum auslesen von Werten (zumindest nicht in dieser Situation)
Ich würde das so machen (mit Strickenkid, ka ob du BlueG benutzt)
stock LoadPlayerVehicle(playerid)
{
new query[128],playername[24];
GetPlayerName(playerid,playername,sizeof(playername);
format(query,sizeof(query),"SELECT * FROM `fahrzeuge` WHERE `besitzer` = 's'",playername);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() == 0) return 1; // keine Fahrzeuge da
new data[64];
while(mysql_fetch_row(data))
{
new field[12 /*erhöhen wenn mehr Attribute in der MYSQL Table stehen*/][32];
spliter(data, field, '|');
// in field[0] steht nun das erste Attribut aus der MYSQL, das brauchen wir nicht, da es die Identifikation des Tupels ist
// in field[1] steht der Spielername. Den brauchen wir auch nicht, da wir ihn schon kennen
// alle weiteren Fields sind Parameter des Autos und werden benötigt. Diese liegen hier erstmal als String vor, müssen also wenn sie als Integer benötigt werden gecastet werden (strval(field[]) oder wenn als Float( floatstr(field[])
// nach obigem Tabellenansatz ergibt sich folgendes:
new veh = CreateVehicle(strval(field[2]),floatstr(field[3]),floatstr(field[4]),floatstr(field[5]),floatstr(field[6]).....);
// mit veh kannst du jetzt weiterarbeiten und z.B. auch das Nummernschild setzen, den besitzer setzen (mit nem Array fbesitzer[MAX_VEHICLES])
}
}
edit: die spliter Funktion:
stock spliter(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc))
{
if(strsrc[i] == delimiter || i == strlen(strsrc))
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
edit2: Du kannst natürlich auch erstmal alle Attribute in dein Array speichern:
SpielerVehInfo[playerid][pvBesitzer] = playername
SpielerVehInfo[playerid][pvModel] = floatstr(field[2]);
SpielerVehInfo[playerid][pvPosX] = floatstr(field[3]);
SpielerVehInfo[playerid][pvPosY] = floatstr(field[4]);
SpielerVehInfo[playerid][pvPosZ] = floatstr(field[5]);
SpielerVehInfo[playerid][pvPosA] = floatstr(field[6]);