Detaljan opis problema: Pozdrav svima. Skinuo sam Dynamic Vehicle Ownership skriptu; http://balkan-samp.com/forum/index.php?topic=25812.0 i prebacio je u moj gamemode. Obrisao sam sve nepotrebno i skripta radi kako treba. Takodje sam napravio tabelu u bazi i sve bi trebalo valjati. Kada spawnujem vozilo, kupim i izadjem sa servera, proverim u Databazi i sve je lepo sacuvano. Tu su koordinate vozila i sve ostalo. Medjutim, kada opet pokrenem server deo gde program treba Loadovati skriptu ne radi. Debug sam deo koji loaduje i mysql_tquery mi vraca 0, takodje 0 za rows i fields, a kada u phpMyAdmin rucno unesem SELECT * FROM `privateveh` WHERE `vID` < 50 on vraca dva reda, kao sto i treba.
Dio skripte: Evo cele te funkcije: https://pastebin.com/6mnb09T1 Znaci neki je problem u mysql_tquery.. Ali zanimljivo je to sto mi radi u delu gde cuva vozila, a koristi se isti mysql_tquery.. Probao sam da debug sve zivo, cak mi na "SELECT 1" on vraca 0. Ako neko zna da mi pomogne bio bih mu zahvalan jer evo vec 2 dana mucim glavu ??? Verzija MySQL koju koristim je R40.
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Probaj koristiti mysql_query umjesto tquery, jer (t)hread radi asinkrono sto ce ti naravno prikazati 0 ako zatražiš rezultat iste milisekunde, pozovi callback ili radi sinkroni query
Iskoristi sve parametre, tquery koristi kada insertas u bazu tada ti ne treba callback a kada citas iz baze ako oces asinkrono onda iskoristi sve parametre
[pawn](MySQL:handle, const query[], const callback[] = "", const format[] = "", {Float,_}:...)[/pawn]
mysql_query(Database, "SELECT * FROM `privateveh` WHERE `vID` < 50 ORDER BY vID");
Ovo nije pomoglo, jos uvek ne ocitava ni jedno vozilo iz baze. A nisam te skapirao za callback? Kako to da pozovem? Mozes li da pojasnis parametre u tvom kodu?
Sry prilicno sam nov u Pawn, prvi put da radim gamemode, jos ga radim od nule..
Citat: ShomyTKD poslato Januar 20, 2018, 01:31:15 PRE PODNE
mysql_query(Database, "SELECT * FROM `privateveh` WHERE `vID` < 50 ORDER BY vID");
Ovo nije pomoglo, jos uvek ne ocitava ni jedno vozilo iz baze. A nisam te skapirao za callback? Kako to da pozovem? Mozes li da pojasnis parametre u tvom kodu?
Sry prilicno sam nov u Pawn, prvi put da radim gamemode, jos ga radim od nule..
https://github.com/pBlueG/SA-MP-MySQL/blob/master/example_scripts/login_system-cache.pwn
Jel meni treba deo kod OnPlayerConnect() ?
[pawn]new query[103];
mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", Player[playerid][Name]);
mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);[/pawn]
Da, koristi thread
Citat: ShomyTKD poslato Januar 20, 2018, 01:57:42 PRE PODNE
Jel meni treba deo kod OnPlayerConnect() ?
[pawn]new query[103];
mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", Player[playerid][Name]);
mysql_tquery(g_SQL, query, "OnPlayerDataLoaded", "dd", playerid, g_MysqlRaceCheck[playerid]);[/pawn]
Nemoj samo kopirati, to sto sam ti poslao je primjer samo, ne treba ti varijabla mysqlRaceCheck, radi sa razumijevanjem a ne samo copy paste napamet
Ako ne znas sto je to thread, ovdje mozes pronaci objasnjenje
https://en.m.wikipedia.org/wiki/Thread_(computing)
Nisam te bas najbolje shvatio, ali evo, nekog napretka ima. Evo sta sam uradio. Prvo sam onaj stock promenio u public, sada izgleda ovako:
https://pastebin.com/fNecJz3u
Na vrh fajla sam dodao forward public LoadPVehicles();
I u OnGameModeInit() sam dodao sledece:
[pawn]new Query[1024];
mysql_format(Database, Query, sizeof(Query), "SELECT * FROM `privateveh` WHERE `vID` < 2 ORDER BY vID");
mysql_tquery(Database, Query, "LoadPVehicles");[/pawn]
E sad, kada pokrenem server, pocne da se spamuje nesto i nikako da stane, kao da je zaglavljen u while loop. Evo kako izgleda server.log:
https://pastebin.com/FR6WyZCB I bukvalno samo spamuje ove poslednje linije u fajlu. While loop mi je sumnjiv, ali ne znam sta je problem..
@Ino42O
Zato jer ovo nije python, koristi ovako
while (condition) {
// Kod ovdje
}
Znaci nisi otvorio block koda za while petlju {}
Sredio sam sve to nekako. Sad imam problem sa setovanjem vlasnika vozila u bazi. Kako da dodjem do ID igraca u bazi i da ga povezem sa vozilom, tako da se zna kome pripada vozilo? Treba li u bazi da se pravi strani kljuc (foreign key)?
U skripti lik koristi mysql_real_escape_string ali toga nema u R40 MySQL.
Napravis kolonu owner_id u tablici vozila, i to neka ti bude referenca na igracev id iz tablice igraca, posle povezes te informacije i mozes dobiti ime igraca i sve ostalo
Ma idi.. Ovo me zajebava nemas pojma.. Taman popravim jednu stvar, drugi error se pojavi.. Napravicu ispocetka, a ne ovako da editujem skriptu pa sta bude. Hvala u svakom slucaju!