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

Wysłany: 2015-07-17, 16:49


Tostuch







Wiek: 28
Na forum: 5072 dni
Posty: 483
Nick w MP: Tost

Piwa: 137

Respekt: 110
Respekt: 110

Cze??! Robi? system pojazd?w i nie tworzy mi w og?le pojazdu.

Komenda do tworzenia pojazdu:
addCommandHandler("veh", function(plr, com, model, owner, temp, rejka, r, g, b)
    if model then
    local x,y,z = getElementPosition(plr)
    local rx, ry, rz = getElementRotation(plr)
        if owner then else
        local owner = "Publiczny"
        end
        
        if tonumber(type(temp)) ~= nil and tonumber(temp) > 0 then
        local temp = true
        else
        local temp = false
        end
        
        if rejka then else
        local rejka = nil
        end
        
        if r then else
        local r = nil
        end
        
        if y then else
        local y = nil
        end
        
        if z then else
        local z = nil
        end
        
        local veh = stworzPojazd(model, x, y, z, rx, ry, rz, owner, temp, rejka, r, g, b)
        setElementPosition(plr, x+2, y+2, z)
        warpPedIntoVehicle(plr, veh)
        
        if getElementData(veh, "uid") then
        outputChatBox("* Utworzono "..getVehicleName(veh).." o UID: "..tostring(getElementData(veh, "uid"))..".", plr)
        else
        outputChatBox("* Utworzono "..getVehicleName(veh)..".", plr)
        end
    else
    outputChatBox("/"..com.." [Nazwa lub ID] ([W?a?ciciel] [Tymczasowy 0-1] [Rejestracja] [R] [G] [B]", plr)
    end
end)


A tutaj sama funkcja tworz?ca:
function stworzPojazd(model, x, y, z, rx, ry, rz, owner, temp, rejka, r, g, b)
    if model and owner and temp and rejka and r and g and b then
        if (tonumber(type(x)) ~= nil) and (tonumber(type(y)) ~= nil) and (tonumber(type(z)) ~= nil) then
            if owner ~= "Publiczny" then
            local owner = exports.hl_core:findPlayer(owner)
            end
            
            if type(model) == nil then
            local model = getVehicleModelFromName(model)
            end
            
            if rejka == nil then
            local rejka = exports.hl_core:generateString(8)
            end
            
            if tonumber(type(rx)) == nil then
            local rx = 0
            end
            
            if tonumber(type(ry)) == nil then
            local rx = 0
            end
            
            if tonumber(type(rz)) == nil then
            local rx = 0
            end
            
            if tonumber(type(r)) == nil then
            local r = 0
            end
            
            if tonumber(type(g)) == nil then
            local g = 0
            end
            
            if tonumber(type(b)) == nil then
            local b = 0
            end
            
            if temp == true then
            local veh = createVehicle(model, x, y, z, rx, ry, rz)
            setVehiclePlateText(veh, rejka)
            setVehicleColor(veh, r, g, b)
            return veh
            else
            local veh = createVehicle(model, x, y, z, rx, ry, rz)
            setVehiclePlateText(veh, rejka)
            setVehicleColor(veh, r, g, b)
            saveVehicle(veh)
            local que = executeSQLQuery("SELECT uid FROM hl_pojazdy ORDER BY uid DESC")
            setElementData(pojazd, "uid", que[1].uid)
            return veh
            end
        else
        outputDebugString("POJAZDY: Podano niepoprawne wsp??rz?dne!", 1)
        end
    else
    outputDebugString("POJAZDY: Nie podano wszystkich argument?w")
    end
end


W debugu mam 5 informacji.
INFO: POJAZDY: Nie podano wszystkich argument?w
WARNING: [High Life]\tost\pojazdy_server.lua:181: Bad argument @ 'warpPedIntoVehicle' [Expected vehicle at argument 2, got nil]
WARNING: [High Life]\tost\pojazdy_server.lua:183: Bad argument @ 'getElementData' [Expected element at argument 1, got nil]
WARNING: [High Life]\tost\pojazdy_server.lua:186: Bad argument @ 'getVehicleName' [Expected vehicle at argument 1, got nil]
ERROR: [High Life]\tost\pojazdy_server.lua:186: attempt to concatenate a boolean value

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-18, 01:52


Wittx

8===D






Wiek: 27
Na forum: 4935 dni
Posty: 121
Nick w MP: wittula

Piwa: 1906

Respekt: 120
Respekt: 120

Cze??. Przerobi?em troch? Tw?j kod, sprawd? powoli co si? w nim po kolei dzieje, por?wnaj z Twoim etc. Nie testowa?em jak co?. Nie chce mi si? po kolei opowiada? co zmieni?em itd (moze pozniej, nie teraz), jak masz jakie? w?tpliwo?ci, pytania to pisz. W funkcjach nie dawa?em przy niektorych zmiennych 'local', poniewa? te zmienne ju? istniej? w tej funkcji (z argument?w) i tylko zmieniam ich warto??.

Komenda:
local function getValidVehicleModels()
    local validVehicles = { }
    local invalidModels = {
        ['435']=true, ['449']=true, ['450']=true, ['537']=true,
        ['538']=true, ['569']=true, ['570']=true, ['584']=true,
        ['590']=true, ['591']=true, ['606']=true, ['607']=true, 
        ['608']=true
    }
    for i=400, 609 do
        if ( not invalidModels[tostring(i)] ) then
            table.insert ( validVehicles, i )
        end
    end
    return validVehicles
end

local function toboolean(number)
    if number >= 1 then
        return true
    else
        return false
    end
    return false
end

local validTable = getValidVehicleModels()

addCommandHandler("veh", function(plr, com, model, owner, temp, rejka, r, g, b)
    if tonumber(model) then
        model = tonumber(model)
    else
        model = getVehicleModelFromName(model)
    end

    if validTable[model] then
        owner = owner or "Publiczny"
        rejka = rejka or false
        r = r or 0
        g = g or 0
        b = b or 0
        temp = tonumber(temp) or 1
       
        local veh = stworzPojazd(model, plr.position.x, plr.position.y, plr.position.z, plr.rotation.x, plr.rotation.y, plr.rotation.z, owner, toboolean(temp), rejka, r, g, b)
        plr:warpIntoVehicle(veh)
        
        if veh:getData("uid") then
        outputChatBox("* Utworzono "..veh.name.." o UID: "..veh:getData("uid")..".", plr)
        else
        outputChatBox("* Utworzono "..veh.name..".", plr)
        end
    else
    outputChatBox("/"..com.." [Nazwa lub ID] ([W?a?ciciel] [Tymczasowy 0-1] [Rejestracja] [R] [G] [B]", plr)
    end
end)


Funkcja na tworzenie pojazdu:
function stworzPojazd(model, x, y, z, rx, ry, rz, owner, temp, rejka, r, g, b)
    if model and x and y and z and owner then
        if owner ~= "Publiczny" then
            owner = exports.hl_core:findPlayer(owner)
        end
            
        if not rejka then
            rejka = exports.hl_core:generateString(8)
        end

        local veh = Vehicle(model, x, y, z, rx or 0, ry or 0, rz or 0)
        veh:setPlateText(rejka)
        veh:setColor(r, g, b)

        if not temp then
            saveVehicle(veh)
            local que = executeSQLQuery("SELECT uid FROM hl_pojazdy ORDER BY uid DESC") --nie lepiej na w?asnym pliku .db lub MySQL?
            pojazd:setData("uid", que[1].uid)
        end
        return veh
    else
    outputDebugString("POJAZDY: Nie podano wszystkich argument?w")
    end
end


Pozwolilem sobie pisa? obiektowo, w meta.xml musisz doda?:
Kod:

<oop>true</oop>

Jak pisa?em wcze?niej - nie testowa?em. Poza tym jest p??no troch? teraz wi?c mo?esz napotka? w kodzie jakie? #fucklogic etc. :D
Daj zna? czy dzia?a :D

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-18, 02:44


Tostuch







Wiek: 28
Na forum: 5072 dni
Posty: 483
Nick w MP: Tost

Piwa: 137

Respekt: 110
Respekt: 110

New_Banan, tw?j kod wywala b??d przy:
if validTable[model] then


Aczkolwiek po kilku przer?bkach skrypt dzia?a poprawnie. Widocznie musia?em gdzie? si? pogubi? w tych chorych zmiennych :P


//EDIT: Ring, ding, ding. Jednak nie pozb?dziecie si? mnie tak szybko, zn?w b??d.

ERROR: [High Life]/[systemy]/hl_pojazdy/pojazdy_server.lua:69: Database query failed: no such column: false

Linijka 69:
executeSQLQuery("INSERT INTO hl_pojazdy (model, posx, posy, posz, rx, ry, rz, r, g, b, rejka, owner) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", model, x, y, z, rx, ry, rz, r, g, b, rejka, owner)


Tworzenie bazy:
executeSQLQuery("CREATE TABLE IF NOT EXISTS hl_pojazdy (uid INTEGER PRIMARY KEY AUTOINCREMENT, model INT, posx FLOAT, posy FLOAT, posz FLOAT, rx FLOAT, ry FLOAT, rz FLOAT, r INT, g INT, b INT, paintjob INT, rejka TEXT, owner TEXT)")


ERROR: [High Life]/[systemy]/hl_pojazdy/pojazdy_server.lua:110: attempt to index field '?' (a nil value)

Linijka 109 i 110:
local que = executeSQLQuery("SELECT uid FROM hl_pojazdy ORDER BY uid DESC")
setElementData(veh, "uid", que[1].uid)


ERROR: [High Life]/tost/server.lua:3: call: failed to call 'hl_pojazdy:stworzPojazd' [string "?"]

Linijka 3:
local veh = exports.hl_pojazdy:stworzPojazd(nazwa, -1976.3515625, 300.892578125, 34.889842987061, 0, 0, 179.31335449219, getPlayerName(client), false)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-18, 12:01


Wittx

8===D






Wiek: 27
Na forum: 4935 dni
Posty: 121
Nick w MP: wittula

Piwa: 1906

Respekt: 120
Respekt: 120

3 linijka (uwaga, g?upie pytania):
- Czy masz zas?b "hl_pojazdy" i czy jest uruchomiony?
- Czy ten zas?b jest widziany dla MTA? (wiesz, mo?e ?le co? w meta.xml)
- Czy w meta.xml masz wyeksportowan? funkcj? stworzPojazd?

Tworzenie bazy: autoincrement w sqlite (w tagach jest co? o Androidzie, nie wiem czy b?dzie dzia?a? na MTA)
executeSQLQuery("CREATE TABLE IF NOT EXISTS `hl_pojazdy` (`uid` INTEGER PRIMARY KEY, `model` INTEGER, `posx` REAL, `posy` REAL, `posz` REAL, `rx` REAL, `ry` REAL, `rz` REAL, `r` INTEGER, `g` INTEGER, `b` INTEGER, `paintjob` INTEGER, `rejka` TEXT, `owner` TEXT)")


69 linijka:
executeSQLQuery("INSERT INTO `hl_pojazdy` (`model`, `posx`, `posy`, `posz`, `rx`, `ry`, `rz`, `r`, `g`, `b`, `rejka`, `owner`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", model, x, y, z, rx, ry, rz, r, g, b, rejka, owner)


109 i 110 linijka:
local que = executeSQLQuery("SELECT MAX(uid) FROM hl_pojazdy") --nie wiem czy MAX(x) dzia?a na MTA
setElementData(veh, "uid", que[1])


Je?li chodzi o baz? danych dla pojazd?w to na Twoim miejscu pomy?la?bym o MySQL.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-19, 00:42


Tostuch







Wiek: 28
Na forum: 5072 dni
Posty: 483
Nick w MP: Tost

Piwa: 137

Respekt: 110
Respekt: 110

AUTOINCREMENT W MTA dzia?a jak najbardziej, sam stosuje to do kont.

Czy masz zas?b "hl_pojazdy" i czy jest uruchomiony? - no to jest oczywiste, co nie? :D
Czy ten zas?b jest widziany dla MTA? (wiesz, mo?e ?le co? w meta.xml) - tak, poniewa? dzia?a komenda /veh kt?ra jest bezpo?rednio w poje?dzie.
Czy w meta.xml masz wyeksportowan? funkcj? stworzPojazd? - tak, ni?ej w jaki spos?b j? eksportuj?. By? mo?e jest co? ?le, ale ze smoothMoveCamera nie ma problem?w.

Exportowanie funkcji:
Kod:

<export function="stworzPojazd" type="server"/>


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-19, 16:25


Wittx

8===D






Wiek: 27
Na forum: 4935 dni
Posty: 121
Nick w MP: wittula

Piwa: 1906

Respekt: 120
Respekt: 120

New_Banan napisał/a:

Je?li chodzi o baz? danych dla pojazd?w to na Twoim miejscu pomy?la?bym o MySQL.
+ przepisa? ca?y kod na nowo, bo sam widzisz, ?e nic nie mo?na z nim zrobi?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-07-19, 19:44


Tostuch







Wiek: 28
Na forum: 5072 dni
Posty: 483
Nick w MP: Tost

Piwa: 137

Respekt: 110
Respekt: 110

Tak zrobi?, jednak MySQL jest ?dziebko bardziej funkcjonalne.

Postaw piwo autorowi tego posta
 

 
Tagi: auto :: się :: nie :: respi
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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