Problem polega na tym, ?e potrzebuj? aby kod wysy?a? polecenie dbExec, natomiast wychodzi na to ?e jest sk?adniowiec. Wisz? nad nim od d?u?szego czasu i nie wiem o co mu chodzi.
Otrzymuj? nast?puj?c? zwrotk?:
Niby wymaga domkni?cia nawiasu, ale gdzie? nawet notepad++ wariuje i nie pokazuje ?adnych nawias?w do zamkni?cia.
Problem polega na tym, ?e potrzebuj? aby kod wysy?a? polecenie dbExec, natomiast wychodzi na to ?e jest sk?adniowiec. Wisz? nad nim od d?u?szego czasu i nie wiem o co mu chodzi.
dbExec(db, "DELETE FROM Save WHERE owner="usunTo"")
Otrzymuj? nast?puj?c? zwrotk?:
ERROR: Loading script failed: privcar/server.lua.5: ')' expected near 'usunTo'
Niby wymaga domkni?cia nawiasu, ale gdzie? nawet notepad++ wariuje i nie pokazuje ?adnych nawias?w do zamkni?cia.
Rozwi?zanie jest naprawd? proste
--- phpBB : The Protected Message is not copied in this quote ---[/hide]
Twoje polecenie zwraca nast?puj?ce b??dy:
ERROR: Loading script failed: privcar\server.lua:3: unfinished string near '")'
Druga wersja polecenia za?aduje ca?y kod, natomiast nie wykona si? za?o?enie (nie usunie z bazy rekord?w, gdzie w tabeli "owner" wyst?puje warto?? 'usunTo'.
Wpisuj?c polecenie SQL: DELETE FROM Save WHERE owner="usunTo" w oprogramowanie bazy danych wykonuje si? poprawnie i zgodnie z za?o?eniami, nie mog? tylko zrobi? tego, aby by?o to egzekwowane przez kod.
Rozumiem, ?e chcesz usum?? rekord kt?ry zosta? zmieniony na usunTo, je?li tak to wtedy w ten spos?b.
dbExec(db, "DELETE FROM Save WHERE owner=usunTo")
--lub
local owner = "usunTo"
dbExec(db, "DELETE FROM Save WHERE owner=?", owner)
--lub to samo z inn? sk?adni?
local owner = "usunTo"
dbExec(db, "DELETE FROM Save WHERE owner="..owner)
To mo?e inaczej, jak by? rozwi?za? t? pl?tanin?? podrzucam fragment kodu odpowiadaj?cy za DB i za zapis:
local db=dbConnect("sqlite","save.db")
dbExec(db,"CREATE TABLE IF NOT EXISTS `Save` (ID INTEGER, Model INTEGER, owner VARCHAR, c1 INTEGER, c2 INTEGER, c3 INTEGER, c4 INTEGER, c5 INTEGER, c6 INTEGER, tuning VARCHAR, x VARCHAR, y VARCHAR, z VARCHAR, przebieg INTEGER, hp INTEGER, paliwo INTEGER, rot INTEGER, driveType INTEGER, numberOfGears INTEGER, maxVelocity INTEGER, engineAcceleration INTEGER, steeringLock INTEGER, rejka VARCHAR, opis VARCHAR)")
addCommandHandler("save",function(plr)
dbExec(db,"DELETE FROM `Save`")
for _,v in ipairs(getElementsByType("vehicle"))do
local owner=getElementData(v,"owner") or "usunTo"
local c1,c2,c3,c4,c5,c6=getVehicleColor(v,true)
local model=getElementModel(v)
local rejka=getVehiclePlateText(v)
local id=getElementData(v,"v:id") or math.random(1,10000)
local hp=getElementHealth(v)
local opis=getElementData(v,"pojazd_opis") or ""
local przebieg=getElementData(v,"przeb") or 0
local paliwo=getElementData(v,"fuel") or 0
local x1,y1,z1=getElementPosition(v)
local _,_,rot1=getVehicleRotation(v)
local x=getElementData(v,"x") or x1
local y=getElementData(v,"y") or y1
local z=getElementData(v,"z") or z1
local rot=getElementData(v,"rot") or rot1
local hd = getVehicleHandling(v)
local driveType = hd["driveType"]
local numberOfGears = hd["numberOfGears"]
local maxVelocity = hd["maxVelocity"]
local engineAcceleration = hd["engineAcceleration"]
local steeringLock = hd["steeringLock"]
local tuning = toJSON(getVehicleUpgrades(v))
dbExec(db,"INSERT INTO `Save` (ID,Model,owner,c1,c2,c3,c4,c5,c6,przebieg,hp,paliwo,tuning,x,y,z,rot,driveType,numberOfGears,maxVelocity,engineAcceleration,steeringLock,rejka,opis) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",id,model,owner,c1,c2,c3,c4,c5,c6,przebieg,hp,paliwo,tuning,x,y,z,rot,driveType,numberOfGears,maxVelocity,engineAcceleration,steeringLock,rejka,opis)
end
end)
Problematyka jest nast?puj?ca: w bazie generuj? si? rekordy z brakiem w?a?ciciela (owner=usunTo), co sprawia ?e auta generowane przez inny skrypt/map? kt?re maj? by? og?lnodost?pne zapisuj? si?, i duplikuj?, i na dodatek s? bezu?yteczne bo je?li kto? nie jest w?a?cicielem to nie mo?e z nich korzysta?. S? dwie opcje:
- Wy??czenie w jaki? spos?b zapisywania si? aut, kt?re nie maj? w?a?ciciela (tej elementDaty w?a?nie)
- Nie robienie nic w kodzie, ale implementacja funkcji, kt?ra takie rekordy z bazy b?dzie usuwa? permanentnie. (np. co start skryptu).
A co do nie domkni?tego nawiasu to tutaj jest problem
local owner=getElementData(v,"owner") or "usunTo"
Zr?b
local owner=getElementData(v,"owner") or false
[ Dodano: 2022-01-12, 20:16 ]
Problematyka jest nast?puj?ca: w bazie generuj? si? rekordy z brakiem w?a?ciciela (owner=usunTo), co sprawia ?e auta generowane przez inny skrypt/map? kt?re maj? by? og?lnodost?pne zapisuj? si?, i duplikuj?, i na dodatek s? bezu?yteczne bo je?li kto? nie jest w?a?cicielem to nie mo?e z nich korzysta?. S? dwie opcje:
- Wy??czenie w jaki? spos?b zapisywania si? aut, kt?re nie maj? w?a?ciciela (tej elementDaty w?a?nie)
- Nie robienie nic w kodzie, ale implementacja funkcji, kt?ra takie rekordy z bazy b?dzie usuwa? permanentnie. (np. co start skryptu).
local db=dbConnect("sqlite","save.db")
dbExec(db,"CREATE TABLE IF NOT EXISTS `Save` (ID INTEGER, Model INTEGER, owner VARCHAR, c1 INTEGER, c2 INTEGER, c3 INTEGER, c4 INTEGER, c5 INTEGER, c6 INTEGER, tuning VARCHAR, x VARCHAR, y VARCHAR, z VARCHAR, przebieg INTEGER, hp INTEGER, paliwo INTEGER, rot INTEGER, driveType INTEGER, numberOfGears INTEGER, maxVelocity INTEGER, engineAcceleration INTEGER, steeringLock INTEGER, rejka VARCHAR, opis VARCHAR)")
addCommandHandler("save",function(plr)
--dbExec(db,"DELETE FROM `Save`")
for _,v in ipairs(getElementsByType("vehicle"))do
local owner=getElementData(v,"owner")
if not owner then return end
local c1,c2,c3,c4,c5,c6=getVehicleColor(v,true)
local model=getElementModel(v)
local rejka=getVehiclePlateText(v)
local id=getElementData(v,"v:id") or math.random(1,10000)
local hp=getElementHealth(v)
local opis=getElementData(v,"pojazd_opis") or ""
local przebieg=getElementData(v,"przeb") or 0
local paliwo=getElementData(v,"fuel") or 0
local x1,y1,z1=getElementPosition(v)
local _,_,rot1=getVehicleRotation(v)
local x=getElementData(v,"x") or x1
local y=getElementData(v,"y") or y1
local z=getElementData(v,"z") or z1
local rot=getElementData(v,"rot") or rot1
local hd = getVehicleHandling(v)
local driveType = hd["driveType"]
local numberOfGears = hd["numberOfGears"]
local maxVelocity = hd["maxVelocity"]
local engineAcceleration = hd["engineAcceleration"]
local steeringLock = hd["steeringLock"]
local tuning = toJSON(getVehicleUpgrades(v))
dbExec(db,"INSERT INTO `Save` (ID,Model,owner,c1,c2,c3,c4,c5,c6,przebieg,hp,paliwo,tuning,x,y,z,rot,driveType,numberOfGears,maxVelocity,engineAcceleration,steeringLock,rejka,opis) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",id,model,owner,c1,c2,c3,c4,c5,c6,przebieg,hp,paliwo,tuning,x,y,z,rot,driveType,numberOfGears,maxVelocity,engineAcceleration,steeringLock,rejka,opis)
end
end)
[ Dodano: 2022-01-12, 20:17 ]
To teraz wiadomo o co ci chodzi, w/w kod nie wpisze nic do bazy je?li nie b?dzie w?a?ciciela ale og?lnie to nie wiem dlaczego chcesz wpisywa? nowy rekord skoro powiniene? robi? update jak jest w?a?ciciel
Ok, brzmi sensownie, ale czy w momencie kiedy nie b?dzie na samochodzie elementDaty w?a?ciciela, to on pominie procedur? i nie doda nowego rekordu, czy doda, ale nie wpisze w?a?ciciela? W za?o?eniu ma w og?le nie dodawa? i w og?le nie bra? takich samochod?w pod uwag? w systemie, od tego s? inne skrypty, np. skrypty prac kt?re maj? spawnowa? swoje auta.
Warunek jest prosty, pobiera date z pojazdu czyli "owner" je?li pojazd nie posiada takiej daty to pominie go i wykona si? kolejny warunek do innego pojazdu, tak jest w zamy?le bo nie pami?tam czy return nie zablokuje ca?ej p?tl.
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