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

Wysłany: 2017-03-12, 02:22


Krzemo1234







Wiek: 27
Na forum: 3892 dni
Posty: 387
Nick w MP: Krzemo

Piwa: 16

Respekt: 40

Client
local marker=createMarker(-2358.20, -50.63, 35.31-1, "cylinder", 5, 0, 0, 0, 155)
local cuboid=createColCuboid(-2361.4538574219, -60.199493408203, 33.187068939209, 56.6, 32.5, 11)
createBlip(-2319.64, -36.99, 35.32, 55,2,0,0,0,0,0,275)

local wstep=false
local podatek=0

local text=createElement("text")
setElementPosition(text,-2358.20, -50.63, 35.31)
setElementData(text,"name","Gie?da\nUstawianie ceny.")


function getPlayerName2(plr)
if not plr then return end
return getPlayerName(plr):gsub("#%x%x%x%x%x%x","")
end

local wm={}
wm.window=guiCreateWindow(0.74, 0.33, 0.25, 0.50, "Gielda", true)
guiWindowSetSizable(wm.window, false)
guiWindowSetMovable(wm.window, false)
guiSetVisible(wm.window, false)
wm.label=guiCreateLabel(0.06, 0.07, 0.89, 0.07, "Wpisz cen? kt?ra ma widnie? na poje?dzie.", true, wm.window)
guiLabelSetHorizontalAlign(wm.label, "center", false)
guiLabelSetVerticalAlign(wm.label, "center")
wm.label2=guiCreateLabel(0.06, 0.21, 0.89, 0.07, "Po odj?ciu podatku cena wyniesie: 0 PLN", true, wm.window)
guiLabelSetHorizontalAlign(wm.label2, "center", false)
guiLabelSetVerticalAlign(wm.label2, "center")
wm.edit=guiCreateEdit(0.06, 0.40, 0.91, 0.10, "", true, wm.window)
wm.submit2=guiCreateButton(0.06, 0.55, 0.90, 0.16, "Zgadzam si?", true, wm.window)
wm.submit=guiCreateButton(0.06, 0.75, 0.90, 0.20, "Akceptuj", true, wm.window)

addEventHandler("onClientMarkerHit", resourceRoot, function(el,md)
    if not md or el ~= localPlayer then return end
    if not wstep then return end
    local veh=getPedOccupiedVehicle(localPlayer)
    if not veh then return end
    if getVehicleController(veh) ~= localPlayer then return end
    local spawn=getElementData(veh,"vehicle:id")
    if not spawn then return end
    if getElementHealth(veh) < 900 then
    exports["1"]:outputNotificationBox ("#cc0000Jed? go napraw!")
    exports["1"]:outputNotificationBox ("#cc0000Pojazd zbyt mocno uszkodzony!")
        return
    end
    if getElementData(veh,"vehicle:ownedPlayer") ~= getElementData(localPlayer,"player:uid") then return end
    showCursor(true,false)
    guiSetVisible(wm.window, true)
    guiSetVisible(wm.label2, false)
    guiSetVisible(wm.submit2, false)
    guiSetInputMode("no_binds_when_editing")
end)

addEventHandler("onClientMarkerLeave", resourceRoot, function(el,md)
    if el~=localPlayer then return end
    if not wstep then return end
    showCursor(false)
    guiSetVisible(wm.window, false)
end)

addEventHandler("onClientGUIClick", resourceRoot, function()
    if not wstep then return end
    local cena=tonumber(guiGetText(wm.edit))
    if not cena or cena < 1 or cena ~= math.floor(cena) or cena > 5000000 then
        exports["1"]:outputNotificationBox ("#cc0000Podano nieprawid?ow? cen?!")
        return
    end
    local veh=getPedOccupiedVehicle(localPlayer)
    if not veh then return end
    if getVehicleController(veh) ~= localPlayer then return end
    if not getElementData(veh,"vehicle:id") then return end
    if source == wm.submit then
        guiSetVisible(wm.submit2, true)
        guiSetVisible(wm.label2, true)
        guiSetText(wm.label2, "Akceptujesz podan? cen?? "..cena.." PLN")
    end
    if source == wm.submit2 then
    setElementData(veh,"vehicle:desc",false)
    setElementData(veh,"vehicle:gielda",true)
    setElementData(veh,"vehicle:nazwa:G",getVehicleName(veh))
    setElementData(veh,"vehicle:owner:G",getPlayerName(localPlayer):gsub("#%x%x%x%x%x%x",""),true)
    setElementData(veh,"vehicle:owner:UID",getElementData(localPlayer,"player:uid"))
    setElementData(veh,"vehicle:cena:G",tonumber(cena))
    setElementData(veh,"vehicle:id:G",getElementData(veh, "vehicle:id"))
    guiSetVisible(wm.window, false)
    showCursor(false)
    end
end)

function znajdzprzezuid(uid)
    if not uid then return end
    for _,p in pairs(getElementsByType('player'),root,false) do
        if getElementData(p,"player:uid") and getElementData(p,"player:uid") == uid then return p end
    end
    return false
end
gielda = {}

function RGBToHex(red, green, blue, alpha)
    if ( (red < 0 or red > 255 or green < 0 or green > 255 or blue < 0 or blue > 255) or (alpha and (alpha < 0 or alpha > 255) ) ) then
        return nil
    end
    if ( alpha ) then
        return string.format("#%.2X%.2X%.2X%.2X", red,green,blue,alpha)
    else
        return string.format("#%.2X%.2X%.2X", red,green,blue)
    end
end


local function aktualizujdane()
if not isElementWithinColShape(localPlayer,cuboid) then return end
for i,v in ipairs(getElementsByType("vehicle",root,true)) do
    if getElementData(v, "vehicle:gielda",true) then
    if getElementData(v, "vehicle:id") == getElementData(v, "vehicle:id:G") then
    local online=znajdzprzezuid(getElementData(v,"vehicle:owner:UID"))
    if online then jest="#00FF00Dost?pny (ID: "..getElementData(online,"id")..")" else jest="#FF0000Niedost?pny" end
    local desc=string.format("ID Auta: %d\nPojazd: "..RGBToHex( 0, 255, 100,false).."%s"..RGBToHex(255, 255, 255).."\nCena: %d PLN\nPrzebieg: %dkm\nSprzedaj?cy: %s\nStatus sprzedaj?cego: %s\n#FFFFFFAby sprawdzi? informacje o tym poje?dzie wpisz /v.info", tonumber(getElementData(v, "vehicle:id")), getElementData(v, "vehicle:nazwa:G"), tonumber(getElementData(v, "vehicle:cena:G")), getElementData(v,"vehicle:mileage"), getElementData(v,"vehicle:owner:G"), jest)
    gielda[v] = desc
    end
    end
    end
end


if not vopisFont then vopisFont = "default-bold"; vopisrozmiar=1.0 end

function isEventHandlerAdded( sEventName, pElementAttachedTo, func )
    if
        type( sEventName ) == 'string' and
        isElement( pElementAttachedTo ) and
        type( func ) == 'function'
    then
        local aAttachedFunctions = getEventHandlers( sEventName, pElementAttachedTo )
        if type( aAttachedFunctions ) == 'table' and #aAttachedFunctions > 0 then
            for i, v in ipairs( aAttachedFunctions ) do
                if v == func then
                    return true
                end
            end
        end
    end
    return false
end

timerke = nil
aktualizujdane()



function renderinge()
if not isElementWithinColShape(localPlayer,cuboid) then return end
    local rootx, rooty, rootz = getCameraMatrix()
    for i,vehicle in ipairs(getElementsByType("vehicle",root,true)) do
        local x,y,z=getElementPosition(vehicle)
        local sx,sy=getScreenFromWorldPosition(x,y,z)
        if sx and sy then
            local desc=gielda[vehicle]
            if desc then
                local distance=getDistanceBetweenPoints3D(rootx,rooty,rootz,x,y,z)
                if distance <= 14 then
                    if isLineOfSightClear( rootx,rooty,rootz, x,y,z, true, true, false, true, false, true, true,vehicle ) then
                        dxDrawText(desc:gsub("#%x%x%x%x%x%x",""), sx, sy, sx, sy, tocolor(0, 0, 0, 255), vopisrozmiar-0.01, vopisFont, "center", "center")
                        dxDrawText(desc, sx, sy, sx, sy, tocolor(255, 255, 255, 255), vopisrozmiar, vopisFont, "center", "center",false,false,false,true)
                    end
                end
            end
        end
    end
end
addEventHandler("onClientColShapeHit",cuboid,function(el,md)
if not md then return end
if el ~= localPlayer then return end
if isEventHandlerAdded("onClientRender",root,renderinge) then
removeEventHandler("onClientRender",root,renderinge)
end
addEventHandler("onClientRender",root, renderinge)
timerke = setTimer(aktualizujdane,3000,0)
end)


addEventHandler("onClientColShapeLeave",cuboid,function(el,md)
if not md then return end
if el ~= localPlayer then return end
if isEventHandlerAdded("onClientRender",root,renderinge) then
removeEventHandler("onClientRender",root,renderinge)
end
--if isTimer(timerke) then killTimer(timerke) end
end)
addEventHandler("onClientColShapeHit", cuboid, function(el,md)
    if not md or el ~= localPlayer then return end
    if wstep then return end
    wstep=true
end)

addEventHandler("onClientColShapeLeave", cuboid, function(el,md)
    if getElementData(el,"vehicle:gielda") then gielda[el] = false end
    if not md or el ~= localPlayer then return end
    if not wstep then return end
    local veh=getPedOccupiedVehicle(el)
    if veh then
    --setElementData(veh,"vehicle:desc",false)
    setElementData(veh, "vehicle:gielda",false)
    end
end)


Server
local LIMIT=3 -- tylko gracz mo?e kupi? trzy pojazdy

local cmd="sprzedajpojazd"
local cmd2="akceptuj"
local sprzedazPojazdu={}
local marker=nil
local timer=nil

local pozycjeMarkerow={
    -- Opis nad markerem, x,y,z, int, dim
    {"Gie?da Las Venturas\nSprzeda? pojazd?w", 2527.78,-1290.79,1048.29,2,1}, -- gielda san fierro I
    
}

for i,v in pairs(pozycjeMarkerow) do
    local mkr=createMarker(v[2], v[3], v[4]-0.90, "cylinder", 2.0, 255, 0, 0, 35)
    setElementDimension(mkr, v[6] or 0)
    setElementInterior(mkr, v[5] or 0)
    setElementData(mkr, "sprzedaz:pojazd?w", true)
    
    marker = mkr
    
    local t=createElement("text")
    setElementData(t,"name", v[1])
    setElementPosition(t,v[2],v[3],v[4])
    setElementDimension(t, v[6] or 0)
    setElementInterior(t, v[5] or 0)
    addEventHandler ("onMarkerHit", mkr, function(el,md)
    exports["1"]:outputNotificationBox (el, "#00cccc/sprzedajpojazd <NICK/ID> <ID POJAZDU> <CENA>")
    exports["1"]:outputNotificationBox (el, "#00cc00Aby sprzeda? pojazd wpisz:")
    setElementData(el, "sprzedaz:pojazdow", true)
end)
    addEventHandler ("onMarkerLeave", mkr, function(el,md)
    exports["1"]:outputNotificationBox (el, "#cc0000Wyszed?e? z markera!")
    setElementData(el, "sprzedaz:pojazdow", false)
end)
end


function checkVehiclePlayer(plr)
    -- Pobieramy tabel? i nast?pnie zwracamy j?
    local result=exports["pystories-db"]:dbGet("SELECT * FROM pystories_vehicles")
    local number=0
    -- Uruchamiamy p?tl? spradzaj?c? pojazdy z bazy danych i
    -- por?wnujemy w?a?ciciela z UID osoby kt?ra chce zakupi?
    for i,v in ipairs(result) do
        if result[1].ownedPlayer == getElementData(plr,"player:sid") then
            number=number+1
        end
    end
    -- Zwracamy ilo?? pojazd?w gracza je?eli nie ma zwr?ci
    -- mu false.
    return number
end


local function pokazOperacje(plr)
    if not sprzedazPojazdu[plr] then return end
    local veh=sprzedazPojazdu[plr][3] -- sprawdzanie tablicy
    outputChatBox("* Otrzyma?e?/a? ofert? sprzeda?y pojazdu "..getVehicleNameFromModel(getVehicleModel(veh)).." za cen? "..sprzedazPojazdu[plr][4], plr, 255, 255, 0)
    outputChatBox("* ID: "..getElementData(veh,"vehicle:id").." | Przebieg: "..getElementData(veh,"vehicle:mileage").."", plr, 255, 255, 0)
    outputChatBox("* Aby potwierdzi? zakup prosz? wpisz /akceptuj, masz 20 sekund", plr, 255, 255, 0)
    timer=setTimer(function()
        sprzedazPojazdu[plr]=nil
        exports["1"]:outputNotificationBox (plr, "#cc0000Transakcja zosta?a anulowana!")
        removeCommandHandler("akceptuj", akceptujTransakcje) -- usuwanie komendy
    end, 20000, 1)
    addCommandHandler("akceptuj", akceptujTransakcje) -- tworzenie komendy
end

function akceptujTransakcje(plr,cmd)
    if not sprzedazPojazdu[plr] then return end
    local veh=sprzedazPojazdu[plr][3]
    local cost=sprzedazPojazdu[plr][4]
    local target=sprzedazPojazdu[plr][1]
    if cost < 0 then
        exports["1"]:outputNotificationBox (plr, "#cc0000Cena jest nieprawid?owa!")
        return
    end
    if tonumber(cost) > getPlayerMoney(plr) then
        exports["1"]:outputNotificationBox (plr, "#cc0000Nie posiadasz tyle got?wki!")
        return
    end
    givePlayerMoney(target, cost)
    takePlayerMoney(plr, cost)
    killTimer(timer)
    exports["1"]:outputNotificationBox (plr, "#00cc00Sprzeda? przeprowadzona pomy?lnie!")
    exports["1"]:outputNotificationBox (target, "#00cc00Sprzeda? przeprowadzona pomy?lnie!")
    removeCommandHandler("akceptuj", akceptujTransakcje) -- usuwanie komendy
    wykonajZapytanie(veh,plr) -- do bazy danych ustawiamy od razu
end

function wykonajZapytanie(veh,plr)
    setElementData(veh,"vehicle:ownedGroup", 0)
    setElementData(veh,"vehicle:rent", 0)
    setElementData(veh,"vehicle:ownedPlayer",getElementData(plr,"player:sid"))
    exports["pystories-db"]:dbSet("UPDATE pystories_vehicles SET ownedPlayer=? AND ownedGroup=0 AND rent=0 WHERE id=?", getElementData(plr,"player:sid"), getElementData(veh,"vehicle:id"))
    local text = string.format("[SELL-CAR] Gracz "..getPlayerName(localPlayer).."("..getElementData(localPlayer,"player:sid")..") sprzeda? pojazd "..getElementData(veh,"vehicle:id").." dla "..getPlayerName(plr).."("..getElementData(plr,"player:sid")..")")
    triggerEvent("admin:logs", root, text)
 --   triggerClientEvent(root, "admin:addText", root, pm_text)
    triggerClientEvent("onDebugMessage", resourceRoot, text,5, "Sprzeda? auta")
--    triggerClientEvent(root, "admin:addText", root, )
end

addCommandHandler(cmd, function(plr,_,cel,id,cost)
    if getElementData(plr, "sprzedaz:pojazdow")== false then 
        exports["1"]:outputNotificationBox (plr, "#cc0000Nie jeste? w odpowiednim miejscu!")
        return
    end
    costt=tonumber(cost)
    if not cel or not costt then
        exports["1"]:outputNotificationBox (plr, "#cc0000U?ycie: #00cccc/sprzedajpojazd <NICK/ID> <ID POJAZDU> <CENA>")
        return
    end
    local target=exports["pystories-core"]:findPlayer(plr,cel)
    if not target then
        exports["1"]:outputNotificationBox (plr, "#cc0000Nie znaleziono podanego gracza!")
        return
    end
    if getElementData(target, "sprzedaz:pojazdow")== false then 
        exports["1"]:outputNotificationBox (plr, "#cc0000Nie jeste? w miejscu przeznaczonym do tego!")
        return
    end
    if tonumber(costt) < 0 then
        exports["1"]:outputNotificationBox (plr, "#cc0000Podano nieprawid?ow? warto??!")
        return
    end
    local result=exports["pystories-db"]:dbGet("SELECT * FROM pystories_vehicles WHERE id=? AND parking=1 LIMIT 1;", id)
    if result and #result > 0 then
        exports["1"]:outputNotificationBox (plr, "#cc0000Pojazd znajduje si? na parkingu. Nie mo?esz go sprzeda?!")
        return
    end
    for _,vehicle in ipairs(getElementsByType("vehicle")) do
        if tonumber(getElementData(vehicle,"vehicle:id")) == tonumber(id) then
            if tonumber(getElementData(vehicle,"vehicle:ownedPlayer")) ~= tonumber(getElementData(plr,"player:sid")) then
                exports["1"]:outputNotificationBox (plr, "#cc0000Nie jeste? w?a?cicielem tego pojazdu!")
                return
            end
            sprzedazPojazdu[target]={plr,target,vehicle,costt}
        end
    end
    if checkVehiclePlayer(target) and checkVehiclePlayer(target) >= LIMIT then
        exports["1"]:outputNotificationBox (plr, "#cc0000Maksymalnie ten gracz mo?e mie?: #00cccc"..LIMIT.." #cc0000pojazd?w!")
        return
    end
    pokazOperacje(target)
    exports["1"]:outputNotificationBox (plr, "#00cc00Pomy?lnie wys?ano ofert? sprzeda?y pojazdu!")
end)

function vehinfo(plr)
local car=getPedOccupiedVehicle(plr)
if not car then outputChatBox("Nie jeste? w poje?dzie!", plr, 255, 0, 0) return end
outputChatBox(" ", plr, 0, 255, 255)
outputChatBox(" ", plr, 0, 255, 255)
outputChatBox("Ulepszenia mechaniczne tego pojazdu:", plr, 0, 255, 255)
local baza=exports["pystories-db"]:dbGet("SELECT * FROM pystories_vehicles WHERE id=?", getElementData(car, "vehicle:id"))
for i,vehicle in pairs(baza) do
mk1=vehicle['mk1']
mk2=vehicle['mk2']
rh=vehicle['rh']
naped=vehicle['naped']
end
if tonumber(mk1) == 1 then us1="TAK" else us1="NIE" end
if tonumber(mk2) == 1 then us2="TAK" else us2="NIE" end
if tonumber(rh) == 1 then rh1="TAK" else rh1="NIE" end
outputChatBox("Przyspieszenie 1: "..us1.."", plr, 0, 255,0)
outputChatBox("Przyspieszenie 2: "..us2.."", plr, 0, 255,0)
outputChatBox("Gwintwane Zawieszenie: "..rh1.."", plr, 0, 255,0)
end
addCommandHandler("v.info", vehinfo)


Za pomoc zimne :piwo: dlaczego to nie dzia?a ?

[ Dodano: 2017-03-12, 02:23 ]
Wje?d?am w marker dok?adnie czarny i nic si? nie dzieje

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 02:55


amited







Wiek: 26
Na forum: 3855 dni
Posty: 1233
Nick w MP: Amited

Piwa: 512

Respekt: 466
Respekt: 466

A b??d poda? to nie ?aska? A tak po za tym tutaj nie jest tworzony ?aden czarny marker :)

Podpis
"amited" napisał/a:
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 13:39


Krzemo1234







Wiek: 27
Na forum: 3892 dni
Posty: 387
Nick w MP: Krzemo

Piwa: 16

Respekt: 40

B??dzik http://imgur.com/a/OlujX

[ Dodano: 2017-03-12, 16:07 ]
?

[ Dodano: 2017-03-13, 18:10 ]
pomo?e kto? w ko?cu ?

Podpis
Jeśli ci pomogłem zostaw zimne :piwo:
Postaw piwo autorowi tego posta
 

 
Tagi: nie :: działa :: giełda
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Nie działa giełda 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