-
Hellósztok...
Van egy mysql táblám amiben ezek szerepelnek : tulaj,kocsiid,kocsinev,kocsiszin,rendszam,X,Y,Z,Angle
És itt a nem mûködõ képes kód:
public VehicleSpawn(playerid)
{
new name[MAX_PLAYER_NAME];
new vehicleid,kocsicolor,Float:Xpos,Float:Ypos,Float:Zpos,Float:AnglePos;
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),\"SELECT kocsiid,kocsiszin,X,Y,Z,Angle FROM autok WHERE tulaj = \'%s\'\",name);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(line);
sscanf(line,\"p<|>ddffff\",vehicleid,kocsicolor,Xpos,Ypos,Zpos,AnglePos);
CreateVehicle(vehicleid,Xpos,Ypos,Zpos,AnglePos,kocsicolor,kocsicolor,-1);
printf(\"Kocsi ID: %d\",vehicleid);
mysql_free_result();
return 1;
}
Nemtudom miért nem jó már mindent próbáltam de nem teszi le a kocsit a helyre meg néztem azt is hogy mit ir ki kocsiid nek és 2-õt ha pedig a tábla elején van a kocsiid akkor 1 szval a ki olvasással van a gond....
Így is próbáltam már:
public VehicleSpawn(playerid)
{
new name[MAX_PLAYER_NAME];
new vehicleid,kocsicolor,Float:Xpos,Float:Ypos,Float:Zpos,Float:AnglePos;
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),\"SELECT * FROM autok WHERE tulaj = \'%s\'\",name);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(line);
sscanf(line,\"p<|>{s[20]}dd{s[35]s[35]}ffff\",vehicleid,kocsicolor,Xpos,Ypos,Zpos,AnglePos);
CreateVehicle(vehicleid,Xpos,Ypos,Zpos,AnglePos,kocsicolor,kocsicolor,-1);
printf(\"Kocsi ID: %d\",vehicleid);
mysql_free_result();
return 1;
}
De így sem jó!
-
Meg kell nézni milyen adattal tér vissza mysql kérés után.
[pawn]public VehicleSpawn(playerid)
{
new name[MAX_PLAYER_NAME];
new vehicleid,kocsicolor,Float:Xpos,Float:Ypos,Float:Zpos,Float:AnglePos;
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),\"SELECT kocsiid,kocsiszin,X,Y,Z,Angle FROM autok WHERE tulaj = \'%s\'\",name);
mysql_query(query);
mysql_store_result();
mysql_fetch_row(line);
print(\"-> \");
print(line);
print(\"<- \");
sscanf(line,\"p<|>ddffff\",vehicleid,kocsicolor,Xpos,Ypos,Zpos,AnglePos);
CreateVehicle(vehicleid,Xpos,Ypos,Zpos,AnglePos,kocsicolor,kocsicolor,-1);
printf(\"Kocsi ID: %d\",vehicleid);
mysql_free_result();
return 1;
}[/pawn]
-
Megvan a hiba az hogy nem az autok táblát olvassa hanem szerintem a felhasznalok táblát mert ezt adja amit irt zoleszka:

Csak akkor mit csináljak ??
-
Vagy azon a néven nincs mentve adat amelyiken felmentél.
Így is tegyél egy próbát:
public VehicleSpawn(playerid)
{
new name[MAX_PLAYER_NAME];
new vehicleid,kocsicolor,Float:Xpos,Float:Ypos,Float:Zpos,Float:AnglePos;
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),\"SELECT kocsiid,kocsiszin,X,Y,Z,Angle FROM autok WHERE tulaj = \'%s\' LIMIT 1\",name);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() > 0)
{
mysql_fetch_row(line);
mysql_free_result();
sscanf(line,\"p<|>ddffff\",vehicleid,kocsicolor,Xpos,Ypos,Zpos,AnglePos);
CreateVehicle(vehicleid,Xpos,Ypos,Zpos,AnglePos,kocsicolor,kocsicolor,-1);
printf(\"Kocsi ID: %d\",vehicleid);
} else {
printf(\"Ezen a néven nincs elmentve jármû: %s\", name);
mysql_free_result();
}
return 1;
}
Ui.:
Közben arra gondoltam hogy a játékos neved tartalmazhat olyan karaktert ami zavarhatja a mysql-t.
Építsd be a kódba a GetPlayerName alá:
[pawn]mysql_real_escape_string(name, name);[/pawn]
-
Megpróbáltam mind a 2-õ variációt és még mindig semmi nem jó
Az elsõ amit írtál azon ugyan úgy lefut szóval nem írja ki hogy : Ezen a néven nincs elmentve jármû:
Beraktam ezt is : mysql_real_escape_string(name, name);
De semmi nem jó :S
-
Kellene ennek az adat táblának \"autok\" a szerkezeti felépítése, legalább egy adat sorral.
Edit:
Letudnám gyártani nem nagy dolog, csak az kellene amit te használsz.
-
Inkább mutatok képet :

-
Létrehoztam az adat táblát és a kód mûködik.
Tábla:
--
-- Tábla szerkezet: `autok`
--
CREATE TABLE IF NOT EXISTS `autok` (
`tulaj` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
`kocsiid` int(3) NOT NULL,
`kocsinev` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
`kocsiszin` int(3) NOT NULL,
`rendszam` varchar(20) COLLATE utf8_hungarian_ci NOT NULL,
`X` float NOT NULL,
`Y` float NOT NULL,
`Z` float NOT NULL,
`Angle` float NOT NULL,
UNIQUE KEY `tulaj` (`tulaj`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci;
--
-- A tábla adatainak kiíratása `autok`
--
INSERT INTO `autok` (`tulaj`, `kocsiid`, `kocsinev`, `kocsiszin`, `rendszam`, `X`, `Y`, `Z`, `Angle`) VALUES
(\'Zsolesszka\', 550, \'Sunrise\', 2, \'asd\', 2148.75, 1397.25, 10.8125, 145.916);
Kód:
[pawn]CMD:spawnvehicle(playerid)
{
VehicleSpawn(playerid);
return 1;
}
forward VehicleSpawn(playerid);
public VehicleSpawn(playerid)
{
new
name[MAX_PLAYER_NAME];
new
vehicleid,
kocsicolor,
Float:Xpos,
Float:Ypos,
Float:Zpos,
Float:AnglePos;
GetPlayerName(playerid,name,sizeof(name));
new
query[256];
format(query, sizeof(query), \"SELECT kocsiid,kocsiszin,X,Y,Z,Angle FROM autok WHERE tulaj = \'%s\' LIMIT 1\", name);
mysql_query(query);
mysql_store_result();
if(mysql_num_rows() > 0)
{
mysql_fetch_row(query);
mysql_free_result();
print(query);
sscanf(query,\"p<|>ddffff\",vehicleid,kocsicolor,Xpos,Ypos,Zpos,AnglePos);
CreateVehicle(vehicleid, Xpos, Ypos, Zpos, AnglePos, kocsicolor, kocsicolor, -1);
printf(\"Kocsi ID: %d\",vehicleid);
} else {
printf(\"Ezen a néven nincs elmentve jármû: %s\", name);
mysql_free_result();
}
return 1;
}[/pawn]
-
Köszi ha hazajöttem kipróbálom.. :)
UI: nem jó :S Azt írja ki ennél : print(query); hogy <null> és kocs ID nek pedig 0-át
De nem spawnolja le még mindig
-
Mivel a code tagek is frankón mûködnek mi lenne ha manuálisan javítanád?
WHERE tulaj = '%s\' LIMIT 1\", name);[/quote]
WHERE tulaj = \'%s\' LIMIT 1\", name);
-
Mivel a code tagek is frankón mûködnek mi lenne ha manuálisan javítanád?
WHERE tulaj = '%s\' LIMIT 1\", name);
WHERE tulaj = \'%s\' LIMIT 1\", name);

[/quote]
Annyira azért nem vagyok hülye hozzá hogy azt ne vegyem észre és azt javítottam még mielõtt bemásoltam volna :D
Más ötlet ?
-
Nekem nincs más ötletem, mint láthatod nálam mûködik, ezt egy képpel is igazoltam, az hogy te nem tudsz importálni egy sql táblát saját mysql szerverre az már legyen a te gondod. :D
-
De be tettem XD ugyan ugy ahogy te csináltad és müködnie kellene ha te mondod....
Ezt csinálja :

valamiért keveri a táblákat....
-
Lehet,valami bezavar,próbáld meg berakni egy FS-be és úgy,ha úgy sem jó,akkor lehet a plugin a rossz!
Gondolom BlueG pluginját használod,ha igen frisssítsd!
-
Adnál linket Amelyiket te használod :D
UI :
Rájöttem arra hogy ha ezt kieveszem :
format(query,sizeof(query),\"INSERT INTO `felhasznalok` (`id`,`name`,`jelszo`) VALUES (0,\'%s\',\'%s\')\",name,jelszo);
Szval a regisztráció mentést és igy nincs abban a táblában semmi..
Akkor betölti a kocsit normálisan...
Viszont ha már van a táblában valami akkor nemjó és arra jutottam hogy lehet hogy az a baj hogy mind a kettõ helyen szerepel a nevem és az elsõ táblát olvassa mert az van neki hamarabb és azokat az adatokat olvassa ki... (De ez csak egy ötlet lehetséges ez ?? )
-
http://forum.sa-mp.com/showthread.php?t=56564
-
Szerintem a pawn kódod lehet hibás nem hiszem én hogy a mysql keverné az adattáblákat.
Lehet valahol nem szerepel egy mysql_free_result utasítás ami felszabadítaná amit kell neki és emiatt lesz az amit tapasztalsz.
Annyi biztos hogy a hiba nem ebben a kódban van amit ide kiírtál ( public VehicleSpawn(playerid) ).
-
Megoldottam sikerült igen nem a VehicleSpawnban volt a hiba :)
Zárok kössz...