PawnPlus MySQLŠta je to PawnPlus MySQL?
S' ozbirom na to da ste naučili da koristite dinamične stringove u PP-u, vreme je da naučite i kako da te dinamične stringove pišete, odnosno čitate u MySQL-u koristeći ovaj inklud. Ovaj inklud na neki način predstavlja PawnPlus ''dodatke'' za sami MySQL plugin kreiran od strane pBlueG-a. Kreator ovog inkluda jeste Adrian Graber, poznatiji i kao AGraber.
Kako ga instalirati?
Instaliranje ovog inkluda se obavlja na jedan vrlo lak način. Ako ste korisnik sampctl-a (a verujem da više od pola vas ovde ni ne zna šta je sampctl) instaliraćete ga sasampctl package install AGraber/pawn-plus-mysql
A ukoliko isti ne koristite jednostavno idite ovde (https://github.com/AGraber/pawn-plus-mysql) i skinite ga i ubacite u vaš include folder.
Kada to završite, u mod ga inkludate sa#include <pp-mysql>
i sada ste spremni za korišćenje istog (ukoliko naravno već imate inkludan PawnPlus i MySQL u modu).
Kako ga koristiti?
Kao što svi znamo, mysql pomoću pquery-a i tquery-a selektuje/briše/dodaje/apdejtuje podatke u tabelama. E sad, ta dva query-a imaju svoj dodatak ''_s'' pomoću kojeg ''prihvataju'' PP dinamične stringove (naprimer: mysql_tquery_s). Takođe, novi ''član'' dolazi u ''porodicu'' ovih native-a, a to je mysql_aquery_s, koji poziva task koji će biti uspešan ako je i sam query uspešan, odnosno neuspešan ako postoji greška za vreme izvršenja query-a.
E sad, pre nego što i pređemo na primere, postoji jedna važna stvar. Po defaultu, mysql_aquery_s će da ''piggybackuje'' mysql_tquery ako je on korišćen. Vi ovo možete da sprečite i da koristite mysql_tquery tako što ćete vrednost parametra ''parallel'' staviti na true, ili na drugi način tako što ćete MYSQL_ASYNC_DEFAULT_PARALLEL definisati na željenu vrednost.
Sad konačno i primeri.
Primer kako biste koristili PP stringove u native-ima:
[pawn]public OnPlayerTookAllCandies(playerid) {
mysql_tquery_s(DatabaseHandle,
@ ("UPDATE player SET took_candies = UNIX_TIMESTAMP() WHERE id = ") % GetPlayerDBID(playerid));
}[/pawn]
U slučaju task-based asinhronih query-a, recimo da želite da učitate igrača iz baze:
[pawn]LoadPlayerData(playerid) {
await mysql_aquery_s(DatabaseHandle,
@ ("SELECT * FROM player WHERE id = ") % GetPlayerDBID(playerid), .parallel = false);
// Posle ovoga možete da koristite cache funkcije, kao recimo ova dole
cache_get_value_name_float(0, "health", PlayerHealth[playerid]);
// Ostali kodovi
}[/pawn]
Primetili ste statement ''await'' u kodu i nije vam jasno šta on znači, zar ne? :D
E pa on je u sastavu PawnPlus-a i koristi se kako bi se ''pauziralo'' izvršenje skripte i sačekalo (sama reč kaže - await) izvršenje ovog taska.
Taj keyword je alias native-a ''task_await''.
Kraj tutorijala
Došli smo do kraja tutorijala, nadam se da ćete naučiti kako se koristi PawnPlus MySQL, a ako vam nešto nije jasno ili vas interesuje možete mi pisati na PM, da pogledate AGraberov i Illidanov github, a možete i da otvorite include pomoću vašeg IDE i pročitate ga.
Postoji mali problem u ovome, forum me malo zajebava.
Umesto et (majmunče po naški) znaka u kodu on mi stavlja ovo member 1996, zamenite samo to ako koristite i dobićete kod koji sam hteo da napišem....
Nah... Moze posluzit'