function loadVehs() vehIDs = exports.mysql:_QuerySingle(\"SELECT MAX(id) FROM vehicles\") for i=0,vehIDs,1 do vehInf = exports.mysql:_QuerySingle(\"select * from vehicles where id = ?\",i) veh = createVehicle(vehInf.vehid,vehInf.x,vehInf.y,vehInf.z,0,0,0,vehInf.backplate) setVehicleColor(veh,vehInf.r1,vehInf.g1,vehInf.b1,vehInf.r2,vehInf.g2,vehInf.b2,vehInf.r3,vehInf.g3,vehInf.b3,vehInf.r4,vehInf.g4,vehInf.b4) end outputDebugString(vehIDs) outputDebugString(tostring(vehIDs))endaddEventHandler(\"onResourceStart\",resourceRoot,loadVehs)
for i=0,vehIDs,1
Inkább nézz utána, hogyan is működik maga az egész adatbázis kezelés az MTAban
function loadOneVehicle(vehInf)local veh = createVehicle(vehInf.vehid,vehInf.x,vehInf.y,vehInf.z,0,0,0,vehInf.backplate)if veh then setVehicleColor(veh,vehInf.r1,vehInf.g1,vehInf.b1,vehInf.r2,vehInf.g2,vehInf.b2,vehInf.r3,vehInf.g3,vehInf.b3,vehInf.r4,vehInf.g4,vehInf.b4)endendaddEventHandler(\"onResourceStart\", resourceRoot, function()dbQuery(function(qh) local res, rows, err = dbPoll(qh, 0) if rows > 0 then for k, in pairs(res) do local co = coroutine.create(loadOneVehicle) coroutine.resume(co, v) end endend, connection, \"SELECT * FROM vehicles\")end)
Async:setPriority(\"normal\") -- engedélyezett típusok: low - lassú, kevés cpu, normal, high - gyors betöltés, sok cpuAsync:foreach(res, function(value)loadOneVehicle(value)end, function()outputChatBox(\"kész\")end)
function loadOneVehicle(vehInf)local veh = createVehicle(vehInf.vehid,vehInf.x,vehInf.y,vehInf.z,0,0,0,vehInf.backplate)if veh then setVehicleColor(veh,vehInf.r1,vehInf.g1,vehInf.b1,vehInf.r2,vehInf.g2,vehInf.b2,vehInf.r3,vehInf.g3,vehInf.b3,vehInf.r4,vehInf.g4,vehInf.b4)endendaddEventHandler(\"onResourceStart\", resourceRoot, function()dbQuery(function(qh) local res, rows, err = dbPoll(qh, 0) if rows > 0 then for k, in pairs(res) do local co = coroutine.create(loadOneVehicle) coroutine.resume(co, v) end endend, connection, \"SELECT * FROM vehicles\")end) + Javaslom hogy a coroutine részt állítsd egy timerre, ami egyszerre max 2-3 autót tölt be. Ezres nagyságrendnél elég sok problémát tud okozni ha 2000-3000 kocsit töltesz be egyszerre. Vagy pedig használj async-et, az is sokat segít. (https://github.com/Inlife/mta-lua-async) Ahhoz egy példa (a for részt kell kicserélni erre): Async:setPriority(\"normal\") -- engedélyezett típusok: low - lassú, kevés cpu, normal, high - gyors betöltés, sok cpuAsync:foreach(res, function(value)loadOneVehicle(value)end, function()outputChatBox(\"kész\")end)