Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2022-05-11, 21:13


jg2aviva1

Rusek :D






Wiek: 25
Na forum: 4134 dni
Posty: 445
Nick w MP: _Wolfenstei[N]^.^

Piwa: 1033

Respekt: 240
Respekt: 240Respekt: 240

Ostrzeżeń: 60%
Witam. Przepisa?em sw?j system pojazd?w pod zapis w bazie danych SQLite (wcze?niej mia?em zapis w pliku XML XD) i teraz mam pewien problem. Podczas u?ytkowania tego systemu, nie wiem kiedy, nie wiem od czego to zale?ne, ale przy kt?rym? restarcie skryptu, kupieniu pojazdu u cygana czy ruszeniu pojazdu (naprawd? nie mam poj?cia kiedy) potrafi? dublowa? si? pojazdy. Mo?e kto? rzuci?by okiem czy jest b??d gdzie? w tym kodzie? Stawiam zimne browary za pomoc :piwo: :piwo: :piwo:

baza dbConnect ("sqlite""przechowalnia.db")

if baza then
    outputDebugString ("* Baza danych przechowalni za?adowana pomy?lnie.")
else
    outputDebugString ("* Wyst?pi? problem z baz? danych przechowalni!")
end

local usuwanie dbQuery baza"CREATE TABLE IF NOT EXISTS POJAZDY ( id int, model int, owner TEXT, x FLOAT, y FLOAT, z FLOAT, rotx FLOAT, roty FLOAT, rotz FLOAT, color1 FLOAT, color2 FLOAT, color3 FLOAT, color4 FLOAT, color5 FLOAT, color6 FLOAT, paliwo FLOAT, opis_gielda TEXT, przebieg FLOAT, stan_swiatel int, stan_silnika TEXT, reczny TEXT, paintjob int, hr INTEGER, hg INTEGER, hb INTEGER, t0 FLOAT, t1 FLOAT, t2 FLOAT, t3 FLOAT, t4 FLOAT, t5 FLOAT, t6 FLOAT, t7 FLOAT, t8 FLOAT, t9 FLOAT, t10 FLOAT, t11 FLOAT, t12 FLOAT, t13 FLOAT, t14 FLOAT, t15 FLOAT, t16 FLOAT, instalacja_audio TEXT, radio_cb TEXT, rejestracja TEXT, h_zawieszenie FLOAT, h_predkosc FLOAT, h_hamulce FLOAT, h_przyspieszenie FLOAT, wariant FLOAT, naped TEXT, tune_sprezarka TEXT, tune_naped TEXT, tune_hamulce TEXT, tune_niskienadwozie TEXT, tune_wysokienadwozie TEXT, PRZECHO TEXT, stan_klocki TEXT, stan_poduszki TEXT)" )
dbFree (usuwanie)



function wyjebcos ()

    local bierz dbQuery (baza"SELECT * FROM POJAZDY")
    local wynik dbPoll (bierz, -1)
    for kv in ipairs (wynik) do
        if v["PRZECHO"] == 1 then return end
        local pojazd_stworzony createVehicle (v["model"], v["x"], v["y"], v["z"], v["rotx"], v["roty"], v["rotz"])
        local id v["id"]
        local wlasciciel v["owner"]
        local x v["x"]
        local y v["y"]
        local z v["z"]
        local rotx v["rotx"]
        local roty v["roty"]
        local rotz v["rotz"]
        local color1 v["color1"]
        local color2 v["color2"]
        local color3 v["color3"]
        local color4 v["color4"]
        local color5 v["color5"]
        local color6 v["color6"]
        local paliwo v["paliwo"]
        local przebieg v["przebieg"]
        local reczny v["reczny"]
        local t0 v["t0"]
        local t1 v["t1"]
        local t2 v["t2"]
        local t3 v["t3"]
        local t4 v["t4"]
        local t5 v["t5"]
        local t6 v["t6"]
        local t7 v["t7"]
        local t8 v["t8"]
        local t9 v["t9"]
        local t10 v["t10"]
        local t11 v["t11"]
        local t12 v["t12"]
        local t13 v["t13"]
        local t14 v["t14"]
        local t15 v["t15"]
        local t16 v["t16"]
        local opis_gielda v["opis_gielda"]
        local rejestracja v["rejestracja"]
        local hr v["hr"]
        local hg v["hg"]
        local hb v["hb"]
        local stan_swiatel v["stan_swiatel"]
        local stan_silnika v["stan_silnika"]
        local paintjob v["paintjob"]
        local zawieszenie v["h_zawieszenie"]
        local predkosc v["h_predkosc"]
        local hamulce v["h_hamulce"]
        local przyspieszenie v["h_przyspieszenie"]
        local wariant v["wariant"]
        local naped v["naped"]
        local tune_sprezarka v["tune-sprezarka"]
        local tune_naped v["tune-naped"]
        local tune_hamulce v["tune-hamulce"]
        local tune_niskienadwozie v["tune-niskienadwozie"]
        local tune_wysokienadwozie v["tune-wysokienadwozie"]
        local instalacja_audio v["instalacja_audio"]
        local radio_cb v["radio_cb"]
        local poduszki v["stan_poduszki"]
        local klocki v["stan_klocki"]




setVehicleHandling (pojazd_stworzony"suspensionLowerLimit"tonumber(zawieszenie))
      setVehicleHandling (pojazd_stworzony"engineAcceleration"tonumber(przyspieszenie))
      setVehicleHandling (pojazd_stworzony"brakeDeceleration"tonumber(hamulce))
      setVehicleHandling (pojazd_stworzony"maxVelocity"tonumber(predkosc))
      setVehicleHandling (pojazd_stworzony"driveType"naped)
      setElementData (pojazd_stworzony"tune:audio"tonumber(instalacja_audio))
      setElementData (pojazd_stworzony"tune:cb"tonumber(radio_cb))

      setVehicleVariant (pojazd_stworzonywariantwariant)
      addVehicleUpgrade (pojazd_stworzonyt0)
      addVehicleUpgrade (pojazd_stworzonyt1)
      addVehicleUpgrade (pojazd_stworzonyt2)
      addVehicleUpgrade (pojazd_stworzonyt3)
      addVehicleUpgrade (pojazd_stworzonyt4)
      addVehicleUpgrade (pojazd_stworzonyt5)
      addVehicleUpgrade (pojazd_stworzonyt6)
      addVehicleUpgrade (pojazd_stworzonyt7)
      addVehicleUpgrade (pojazd_stworzonyt8)
      addVehicleUpgrade (pojazd_stworzonyt9)
      addVehicleUpgrade (pojazd_stworzonyt10)
      addVehicleUpgrade (pojazd_stworzonyt11)
      addVehicleUpgrade (pojazd_stworzonyt12)
      addVehicleUpgrade (pojazd_stworzonyt13)
      addVehicleUpgrade (pojazd_stworzonyt14)
      addVehicleUpgrade (pojazd_stworzonyt15)
      addVehicleUpgrade (pojazd_stworzonyt16)
      setElementData (pojazd_stworzony"pojazd_airbag"poduszki)
      setElementData (pojazd_stworzony"pojazd_klocki"klocki)

      setElementData (pojazd_stworzony"tune:sprezarka"tonumber(tune_sprezarka))
      setElementData (pojazd_stworzony"tune:naped"tonumber(tune_naped))
      setElementData (pojazd_stworzony"tune:hamulce"tonumber(tune_hamulce))
      setElementData (pojazd_stworzony"tune:niskienadwozie"tonumber(tune_niskienadwozie))
      setElementData (pojazd_stworzony"tune:wysokienadwozie"tonumber(tune_wysokienadwozie))

      if reczny == "true" then
         setElementFrozen (pojazd_stworzonytrue)
         setVehicleDamageProof (pojazd_stworzonytrue)
      end
 
      if stan_silnika == "true" then
         setVehicleEngineState(pojazd_stworzonytrue)
      end


      setElementData (pojazd_stworzony"car_id"id)
      setElementData (pojazd_stworzony"pojazd_opis"opis_gielda)
      setElementData (pojazd_stworzony"car_owner"wlasciciel)
      setElementData (pojazd_stworzony"pojazd_paliwo"tonumber(paliwo))
      setElementData (pojazd_stworzony"pojazd_przebieg"przebieg)
      setVehiclePlateText (pojazd_stworzonytostring(rejestracja))
      setVehicleOverrideLights (pojazd_stworzonystan_swiatel)
      setVehicleHeadLightColor (pojazd_stworzonyhrhghb)
      setVehiclePaintjob (pojazd_stworzonypaintjob)

      setVehicleColor (pojazd_stworzonycolor1color2color3color4color5color6)







    end
dbFree(bierz)
outputDebugString("** Wczytywanie pojazd?w zako?czone")

end
addEventHandler ("onResourceStart"resourceRootwyjebcos)










function zapisz ()
    for kv in ipairs (getElementsByType("vehicle"), getRootElement()) do
        if getElementData (v"car_owner"then
            local id_auta getElementData (v"car_id")
            local samochod getElementModel (v)
                 local wlasciciel getElementData (v"car_owner")
                local xygetElementPosition (v)
                          local rotxrotyrotz getElementRotation (v)
                   local color1color2color3color4color5color6 getVehicleColor (v)
                   local paliwo getElementData (v"pojazd_paliwo")
                 local przebieg getElementData (v"pojazd_przebieg")
                 local reczny isElementFrozen (v)
                 local stan_swiatel getVehicleOverrideLights (v)
                 local stan_silnika tostring(getVehicleEngineState (v))
                 local opis_gielda getElementData (v"pojazd_opis") or ""

         --- TUNING
    
                 local paintjob getVehiclePaintjob (v) or 3
                 local rggetVehicleHeadLightColor (v)
         
                 sav = {}
       
                     for i=016 do
                       local upgrade getVehicleUpgradeOnSlot(vi)
                       sav[i] = upgrade or 0
                     end
                 local plate_text getVehiclePlateText (v) or tostring(wlasciciel)
                 local zawieszenie pobierzHandling (v"suspensionLowerLimit")
                 local predkosc_max pobierzHandling (v"maxVelocity")
                 local hamulce pobierzHandling (v"brakeDeceleration")
                 local przyspieszenie pobierzHandling (v"engineAcceleration")
                 local wariant getVehicleVariant (v)
                 local naped pobierzHandling (v"driveType")

                 local tune_sprezarka getElementData (v"tune:sprezarka") or 0
                 local tune_naped getElementData (v"tune:naped") or 0
                 local tune_hamulce getElementData (v"tune:hamulce") or 0
                 local tune_niskienadwozie getElementData (v"tune:niskienadwozie") or 0
                 local tune_wysokienadwozie getElementData (v"tune:wysokienadwozie") or 0
                 local instalacja_audio getElementData (v"tune:audio") or 0
                 local radio_cb getElementData (v"tune:cb") or 0
            local klocuszki getElementData (v"pojazd_klocki") or 0
            local airbagi getElementData (v"pojazd_airbag") or 0

--zapisywanie_db dbQuery (baza"INSERT INTO POJAZDY (id, model, owner, x, y, z, rotx, roty, rotz, color1, color2, color3, color4, color5, color6, paliwo, opis_gielda, przebieg, stan_swiatel, stan_silnika, reczny, paintjob, hr, hg, hb, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, instalacja_audio, radio_cb, rejestracja, h_zawieszenie, h_predkosc, h_hamulce, h_przyspieszenie, wariant, naped, tune_sprezarka, tune_naped, tune_hamulce, tune_niskienadwozie, tune_wysokienadwozie) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"ksamochodwlascicielxyzrotxrotyrotzcolor1color2color3color4color5color6paliwoopis_gieldaprzebiegstan_swiatelstan_silnikatostring(reczny), paintjobrgbsav[0], sav[1], sav[2], sav[3], sav[4], sav[5], sav[6], sav[7], sav[8], sav[9], sav[10], sav[11], sav[12], sav[13], sav[14], sav[15], sav[16], instalacja_audioradio_cbplate_textzawieszeniepredkosc_maxhamulceprzyspieszeniewariantnapedtonumber(tune_sprezarka), tonumber(tune_naped), tonumber(tune_hamulce), tonumber(tune_niskienadwozie), tonumber(tune_wysokienadwozie))

zapisywanie_db dbQuery (baza"UPDATE POJAZDY SET id=?, model=?, owner=?, x=?, y=?, z=?, rotx=?, roty=?, rotz=?, color1=?, color2=?, color3=?, color4=?, color5=?, color6=?, paliwo=?, opis_gielda=?, przebieg=?, stan_swiatel=?, stan_silnika=?, reczny=?, paintjob=?, hr=?, hg=?, hb=?, t0=?, t1=?, t2=?, t3=?, t4=?, t5=?, t6=?, t7=?, t8=?, t9=?, t10=?, t11=?, t12=?, t13=?, t14=?, t15=?, t16=?, instalacja_audio=?, radio_cb=?, rejestracja=?, h_zawieszenie=?, h_predkosc=?, h_hamulce=?, h_przyspieszenie=?, wariant=?, naped=?, tune_sprezarka=?, tune_naped=?, tune_hamulce=?, tune_niskienadwozie=?, tune_wysokienadwozie=?, PRZECHO=?, stan_klocki=?, stan_poduszki=? WHERE id=? AND owner=?"ksamochodwlascicielxyzrotxrotyrotzcolor1color2color3color4color5color6paliwoopis_gieldaprzebiegstan_swiatelstan_silnikatostring(reczny), paintjobrgbsav[0], sav[1], sav[2], sav[3], sav[4], sav[5], sav[6], sav[7], sav[8], sav[9], sav[10], sav[11], sav[12], sav[13], sav[14], sav[15], sav[16], instalacja_audioradio_cbplate_textzawieszeniepredkosc_maxhamulceprzyspieszeniewariantnapedtonumber(tune_sprezarka), tonumber(tune_naped), tonumber(tune_hamulce), tonumber(tune_niskienadwozie), tonumber(tune_wysokienadwozie), falseklocuszkiairbagiid_autawlasciciel)


            sav nil


            local resultnum_affected_rowslast_insert_id dbPoll zapisywanie_db, -)

            if result == nil then
                outputConsole"dbPoll result not ready yet" )
            elseif result == false then
                local error_code,error_msg num_affected_rows,last_insert_id
                outputConsole"dbPoll failed. Error code: " .. tostring(error_code) .. "  Error message: " .. tostring(error_msg) )                    else
                outputConsole"dbPoll succeeded. Number of affected rows: " .. tostring(num_affected_rows) .. "  Last insert id: " .. tostring(last_insert_id) )
end



            dbFree (zapisywanie_db)
        end
    end
outputDebugString ("* Pojazdy przechowalni zapisane pomy?lnie.")
end
addEventHandler ("onResourceStop"resourceRootzapisz)
addCommandHandler ("zapiszpojazdy"zapisz)


PS. Nie sugerujcie si? tym, ?e to przechowalnia. Pierwotnie chcia?em zrobi? z tego przechowalni?, ale ten system na XML mia?em tak tragicznie zrobiony, ?e zrobi?em z tego typowy system pojazd?w xD

Edit: Dodam, ?e jak pojazd ju? si? zdubluje, to gdy go przeparkuj? (a jego klona zostawi? w miejscu gdzie by?) to po restarcie zasobu auta zn?w s? "w sobie", nachodz? na siebie, wiadomo o co chodzi. Wi?c wychodzi na to, ?e to nadprogramowe auto jest aktualizowane tak jak auto pierwotne.

Podpis



GTAO Member: 2015-08-23, 14:26

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-11, 23:27


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

Tutaj wygl?da to normalnie, robisz update przy onResourceStop() i aktualizuje si? auto kt?re ma id i owner taki jaki pobrany. Nie ma tutaj zapytania z u?yciem "INSERT" i przez to by si? dublowa?o. W tym kodzie nie ma b??du je?li chodzi o wykonywanie zapisu.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
jg2aviva1
Wysłany: 2022-05-11, 23:51


jg2aviva1

Rusek :D






Wiek: 25
Na forum: 4134 dni
Posty: 445
Nick w MP: _Wolfenstei[N]^.^

Piwa: 1033

Respekt: 240
Respekt: 240Respekt: 240

Ostrzeżeń: 60%
A wiesz mo?e w jaki spos?b mo?na zdublowa? auto w przypadku tak napisanego skryptu na zapis? Bo naprawd? jestem bezradny i albo jakie? auto znika nagle z mapy i z bazy albo jakie? auta si? dubluj? (czasem nawet dziesi?ciokrotnie) i naprawd? nie wiem co robi?. Mog? ewentualnie podes?a? linka z ca?ym skryptem (razem z baz?) je?li kto? chcia?by zajrze? do kodu g??biej, to bym podpi?? pod ten ca?y skrypt cygana przy okazji dla testu :boli:

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-12, 00:23


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

Poka? ca?y skrypt i wtedy znajdziemy, w tym w/w na pewno nie mo?e si? dublowa?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-12, 15:42


jg2aviva1

Rusek :D






Wiek: 25
Na forum: 4134 dni
Posty: 445
Nick w MP: _Wolfenstei[N]^.^

Piwa: 1033

Respekt: 240
Respekt: 240Respekt: 240

Ostrzeżeń: 60%
Wystawiam tutaj ca?y skrypt. Dodam, ?e wy??czy?em sam skrypt, ?eby go spakowa? do archiwum i po ponownym odpaleniu powieli?o mi 6-7 krotnie Slamvana zamieniaj?c na niego w bazie inne auta. Naprawd? nie wiem o co chodzi :boli:

https://drive.google.com/file/d/13RutrQOJjV1f4RANGiAwdqXj9jJR3qlB/view?usp=sharing

Postaw piwo autorowi tego posta
 

 
Wysłany: 2022-05-12, 17:16


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3


Losujesz jakie? random ID, si?? rzeczy to b?dzie si? nak?ada?, losowo bo losowo czyli np. po dziesi?tym b?d? tysi?cznym aucie ale b?dzie, og?lnie to jako? dziwnie zbudowane to masz.

Losujesz ID i nawet nie sprawdzasz czy te wylosowane ju? istnieje dlatego si? podmienia auto

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
jg2aviva1
Wysłany: 2022-05-12, 17:50


jg2aviva1

Rusek :D






Wiek: 25
Na forum: 4134 dni
Posty: 445
Nick w MP: _Wolfenstei[N]^.^

Piwa: 1033

Respekt: 240
Respekt: 240Respekt: 240

Ostrzeżeń: 60%
Aaa, a? mam ochot? wypisa? wulgaryzm na sw?j w?asny b??d lol , ale nie da?em tego bez powodu. Napisa?em ca?y system a nie wiem jak nada? unikalne ID dla ka?dego pojazdu z osobna (nadawane po kolei wed?ug ilo?ci aut w bazie). Podpowiesz mo?e jak to zrobi??

Edit: ogarni?te, wi?c dzi?ki za pomoc :D

Postaw piwo autorowi tego posta
 

 
Tagi: dublowanie :: pojazdów :: (zapis :: sqlite)
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Dublowanie pojazdów (zapis sqlite) Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku