· 9 years ago · Nov 22, 2016, 08:28 AM
1zapis = dbConnect( "sqlite", "baza.db" )
2
3if zapis then
4 outputDebugString( "Connection with database was successfully established." )
5else
6 outputDebugString( "Connection with database couldn't be established." )
7 -- WYPADAÅOBY COS ZROBIĆ (PRZERWAĆ SKRYPT) BO JESLI NIE MA POLACZENIA Z BAZDA DANYCH TO POSYPIA SIE BÅĘDY , LEPIEJ ZAKONCZYĆ SKRYPT.
8end
9
10dbExec(zapis, "CREATE TABLE IF NOT EXISTS baza ( gracz INTEGER PRIMARY KEY AUTOINCREMENT,kasa FLOAT, skin FLOAT, " ) -- na upartego mogło by tak być ale niezabardzo
11-- kasa : OKRESLIÅEÅš TYP FLOAT POWINIEN BYĆ INTEGER SKIN TAK SAMO
12-- FLOAT REAL DOUBLE: liczby zmienno przecinkowe np 5.2541 12.54 2525.5252 (narazie nie bede pisał czym sie rózni np float od real)
13-- INTEGER : TO JEST : 1 2 5 10 2584 itd
14-- CHAR VARVHAR TEXT : TO POPORSTU TYPY TEKSTU (CIAG ZNAKÓW)
15
16-- PRIMRY KEY JEST SAMO W SOBIE UNIKATOWE WIEC INSTRUKCJA PONIZEJ NIE MA SENSU ALE STOSUJE SIE JESLI INNA KOLUMNA MA BYĆ UNIKATOWA
17dbExec(zapis, "CREATE UNIQUE INDEX IF NOT EXISTS IDX_gracz on baza(gracz)")
18
19function zapiswsztstk ()
20
21 local query = dbQuery(handler, "SELECT * FROM baza where kasa") -- << to jest zapytanie na pobranie danych z bazy danych
22 -- czyli takie zapytanie podczas ładowania gracza wchodzenia.
23
24end
25
26
27
28
29
30--- TERAZ JAK JA TO BYM ZROBIÅ
31--- PS PISZE Z PAMIECI MOGA BYC BÅEDY
32
33local gracz = {};
34local baza_polaczenie = nil
35
36
37local function zapisz_gracza(plr)
38 dbExec(baza_polaczenie,"update urzyszkodniki set kasa=?,skin=? where nazwagracza=?", plr.money, plr.skin, plr.name) --- te zmienne trzeba podstawić
39end
40
41
42
43function wczytaj_danegracza(q,plr)
44 local r = dbPoll(q,0);
45 plr.money, plr.skin, plr.id = r.kasa,r.skin,r.id; --- ta linia zmienne podstawić
46end
47addEventHandler("onPlayerLogin",root,function()
48--wczytywanie
49 dbQuery(wczytaj_danegracza,{source},baza_polaczenie,"select * from urzyszkodniki where nazwagracza=?",getPlayerName(source));
50
51-- zegar zapisu co 5min
52 gracz["zegar_zapiskonta"] = setTimer(function(plr)
53 zapisz_gracza(plr);
54 end,5 * 60 * 1000,0,source); -- co 5 min zapis
55
56end);
57addEventHandler("onPlayerQuit",root,function()
58 killTimer(gracz["zegar_zapiskonta"]); -- koniecznie trzeba posprzatac po sobie
59 zapisz_gracza(source);
60end);
61
62addEventHandler("onResourceStart",resourceRoot,function()
63 baza_polaczenie = dbConnect("sqlite","baza.db");
64
65 -- dla sqlite polaczenia sprawdzać nie trzeba , gdy pliku brak zostanie on utworzony czyli zawsze bedzie "true"
66
67 -- tworzenie tabel
68 dbExec(baza_polaczenie,"CREATE TABLE IF NOT EXISTS urzyszkodniki (id INTEGER PRIMARY KEY AUTOINCREMENT,nazwagracza VARCHAR(32), kasa INTEGER DEFAULT 0, skin INTEGER DEFAULT 299)");
69
70end);