--[[
Developed by Yolos and Split
All rights reserved!
You cannot use this without permission!
--]]
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 LIMIT=3 -- tylko gracz mo?e kupi? trzy pojazdy
local cmd="sprzedaj"
local cmd2="akceptuj"
local sprzedazPojazdu={}
local marker=nil
local timer=nil
function wczytaj(v)
v.pos=split(v.pos,",")
local mkr=createMarker(v.pos[1], v.pos[2], v.pos[3]-0.90, "cylinder", 2, 88, 88, 72, 212)
setElementDimension(mkr, v.dimension or 0)
setElementInterior(mkr, v.interior or 0)
setElementData(mkr, "sprzedaz:pojazd?w", true)
setElementData(mkr,"sprzedaz:typ",2)
setElementData(mkr,"sprzedaz:owner",tonumber(v.owner))
addEventHandler ("onMarkerHit", mkr, function(el,md)
if getElementType(el) ~= "player" then return end
if getPedOccupiedVehicle(el) then return end
outputChatBox("* Aby sprzeda? pojazd: ", el)
outputChatBox("* Wpisz /sprzedaj <nick/ID> <id pojazdu> <cena>", el)
local typ = getElementData(mkr,"sprzedaz:typ")
if typ == 2 then
outputChatBox("* Podatek sprzeda?y pojazdu nie obowi?zuje w komisach :) ", el)
else
outputChatBox("* Podatek sprzeda?y pojazdu obowi?zuje kupuj?cego(2%) i sprzedaj?cego(5%) ", el)
end
setElementData(el, "sprzedaz:pojazdow", true)
setElementData(el, "sprzedaz:typ", typ)
setElementData(el,"sprzedaz:owner",getElementData(source,"sprzedaz:owner"))
end)
addEventHandler ("onMarkerLeave", mkr, function(el,md)
if getElementType(el) ~= "player" then return end
if getPedOccupiedVehicle(el) then return end
outputChatBox("* Wyszedles z markera ", el)
setElementData(el, "sprzedaz:pojazdow", false)
setElementData(el, "sprzedaz:typ", false)
setElementData(el,"sprzedaz:owner",false)
end)
end
local pozycjeMarkerow={
-- Opis nad markerem, x,y,z, int, dim, jestkomisem(true or false)
{"Gie?da SF\nSprzeda? pojazd?w", -1907.74, -864.00, 31.72,0,0 },
}
for i,v in pairs(pozycjeMarkerow) do
local mkr=createMarker(v[2], v[3], v[4]-0.90, "cylinder", 2, 96, 96, 96, 255)
setElementDimension(mkr, v[6] or 0)
setElementInterior(mkr, v[5] or 0)
setElementData(mkr, "sprzedaz:pojazd?w", true)
if v[7] and v[7] == true then
setElementData(mkr,"sprzedaz:typ",2)
else
setElementData(mkr,"sprzedaz:typ",1)
end
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)
if getElementType(el) ~= "player" then return end
if getPedOccupiedVehicle(el) then return end
outputChatBox("* Aby sprzeda? pojazd: ", el)
outputChatBox("* Wpisz /sprzedaj <nick/ID> <id pojazdu> <cena>", el)
local typ = getElementData(mkr,"sprzedaz:typ")
if typ == 2 then
outputChatBox("* Podatek sprzeda?y pojazdu nie obowi?zuje w komisach :) ", el)
else
outputChatBox("* Podatek sprzeda?y pojazdu obowi?zuje kupuj?cego(2%) i sprzedaj?cego(5%) ", el)
end
setElementData(el, "sprzedaz:pojazdow", true)
setElementData(el, "sprzedaz:typ", typ)
end)
addEventHandler ("onMarkerLeave", mkr, function(el,md)
if getElementType(el) ~= "player" then return end
if getPedOccupiedVehicle(el) then return end
outputChatBox("* Wyszedles z markera ", el)
setElementData(el, "sprzedaz:pojazdow", false)
setElementData(el, "sprzedaz:typ", 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,typ)
if not typ then return end
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)
if typ == 1 then
outputChatBox("* Podatek kt?ry zap?acisz wynosi: "..math.floor(sprzedazPojazdu[plr][4]*0.02), plr, 255, 255, 0)
end
outputChatBox("* ID: "..getElementData(veh,"vehicle:id").." | Przebieg: "..getElementData(veh,"vehicle:mileage").."", plr, 255, 255, 0)
outputChatBox("* Aby potwierdzi? zakup prosz? wpisz /zakup, masz 20 sekund", plr, 255, 255, 0)
--outputDebugString("xd:"..typ)
setElementData(plr,"sprzedaz:typ",typ)
timer=setTimer(function()
sprzedazPojazdu[plr]=nil
outputChatBox("* Transakcja zosta?a anulowana.", plr, 255, 0, 0)
removeCommandHandler("zakup", akceptujTransakcje) -- usuwanie komendy
end, 20000, 1)
addCommandHandler("zakup", akceptujTransakcje) -- tworzenie komendy
end
function akceptujTransakcje(plr,cmd)
if not sprzedazPojazdu[plr] then return end
local veh=sprzedazPojazdu[plr][3]
local typ=getElementData(plr,"sprzedaz:typ")
--outputDebugString("x131:"..typ)
if not isElement(veh) then outputChatBox("* Pojazd nie moze byc w przecho.",plr) return end
local cost=sprzedazPojazdu[plr][4]
local cost2=sprzedazPojazdu[plr][4]
local podatek = 0
if typ == 1 then
cost=sprzedazPojazdu[plr][4]+(math.floor(sprzedazPojazdu[plr][4]*0.02))
cost2=sprzedazPojazdu[plr][4]-(math.floor(sprzedazPojazdu[plr][4]*0.05))
podatek = math.floor(sprzedazPojazdu[plr][4]*0.02) + math.floor(sprzedazPojazdu[plr][4]*0.05)
end
local target=sprzedazPojazdu[plr][1]
if cost < 0 then
outputChatBox("* Cena jest nieprawid?owa.", plr)
return
end
if tonumber(cost) > getPlayerMoney(plr) then
outputChatBox(" Nie posiadasz tyle got?wki.", plr)
return
end
givePlayerMoney(target, cost2)
takePlayerMoney(plr, cost)
exports['pystories-db']:dbSet("UPDATE pystories_donates SET money=money+?? WHERE type=?",podatek,"gielda")
killTimer(timer)
outputChatBox(" Sprzeda? przeprowadzona pomy?lnie.", plr)
outputChatBox(" Sprzeda? przeprowadzona pomy?lnie.", target)
removeCommandHandler("akceptuj", akceptujTransakcje) -- usuwanie komendy
wykonajZapytanie(veh,plr,getElementData(plr,"player:sid"),getElementData(veh,"vehicle:id"),target,getElementData(target,"player:sid")) -- do bazy danych ustawiamy od razu
end
function wykonajZapytanie(veh,plr,uid,vid,target,tuid)
if isElement(veh) then
setElementData(veh,"vehicle:ownedGroup", 0)
setElementData(veh,"vehicle:rent", 0)
setElementData(veh,"vehicle:ownedPlayer",getElementData(plr,"player:sid"))
end
exports["pystories-db"]:dbSet("UPDATE pystories_vehicles SET ownedPlayer=? AND ownedGroup=0 AND rent=0 WHERE id=?", uid, vid)
local text = string.format("Sprzedaz Auta | "..getPlayerName(target):gsub("#%x%x%x%x%x%x","" ).."("..getElementData(target,"player:sid")..") >>>"..vid.." "..getVehicleName(veh).."<<< dla "..getPlayerName(plr):gsub("#%x%x%x%x%x%x","" ).."("..getElementData(plr,"player:sid")..") >>>CENA: "..sprzedazPojazdu[plr][4])
triggerEvent("admin:logs", root, text)
-- triggerClientEvent(root, "admin:addText", root, pm_text)
triggerClientEvent("onDebugMessage", resourceRoot, text,5, "Sprzeda? auta")
triggerEvent("admin:addText", resourceRoot, RGBToHex(255,255,0)..text..RGBToHex(255,255,255),math.random(0,99))
-- triggerClientEvent(root, "admin:addText", root, )
end
addCommandHandler(cmd, function(plr,_,cel,id,cost)
if getElementData(plr,"sprzedaz:owner") and getElementData(plr,"sprzedaz:owner") ~= getElementData(plr,"player:sid") then outputChatBox("*Sprzeda? mo?liwa tylko dla w?asciciela komisu!",plr) return end
if getElementData(plr, "sprzedaz:pojazdow")== false then
outputChatBox(" Nie jeste? w miejscu przeznaczonym do tego.", plr, 255, 0, 0)
return
end
costt=tonumber(cost)
if not cel or not costt then
outputChatBox("* U?ycie: /sprzedaj <nick/ID> <id pojazdu> <cena>", plr)
return
end
local target=exports["pystories-core"]:findPlayer(plr,cel)
if not target then
outputChatBox(" Nie znaleziono podanego gracza.", plr, 255, 0, 0)
return
end
if getElementData(target, "sprzedaz:pojazdow")== false then
outputChatBox("*Gracz jest w miejscu przeznaczonym do tego.", plr, 255, 0, 0)
return
end
if tonumber(costt) < 0 then
outputChatBox(" Poda?e? nieprawid?ow? warto??.", plr, 255, 0, 0)
return
end
local typ = getElementData(plr,"sprzedaz:typ")
local result=exports["pystories-db"]:dbGet("SELECT * FROM pystories_vehicles WHERE id=? AND parking=1 LIMIT 1;", id)
if result and #result > 0 then
outputChatBox("* Pojazd znajduje na parkingu, nie mo?esz go sprzeda?.", plr, 255, 0, 0)
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
outputChatBox("* Nie jeste? w?a?cicielem pojazdu.", plr, 255, 0, 0)
return
end
sprzedazPojazdu[target]={plr,target,vehicle,costt,typ}
end
end
pokazOperacje(target,typ)
outputChatBox("* Pomy?lnie wys?ano ofert? o sprzeda? pojazdu.", plr)
end)
function vehinfo(plr)
local car=getPedOccupiedVehicle(plr)
if not car then outputChatBox("Nie jeste? w poje?dzie!", plr, 255, 255, 255) return end
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']
chip=vehicle['chip']
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
if tonumber(naped) == 1 then naped="TAK" else naped="NIE" end
if tonumber(chip) == 1 then chip="TAK" else chip="NIE" end
outputChatBox(" ", plr, 255,0,0)
outputChatBox("Informacje o poje?dzie:", plr, 255,0,0)
outputChatBox(" ", plr, 255,0,0)
outputChatBox("UP1: "..us1.." ", plr, 17,214,53)
outputChatBox("UP2: "..us2.." ", plr, 17,214,53)
outputChatBox("RH: "..rh1.." ", plr, 17,214,53)
outputChatBox("Chip Tuning: "..chip.." ", plr, 17,214,53)
outputChatBox("Nap?d 4x4: "..naped.." ", plr, 17,214,53)
outputChatBox(" ", plr, 255,0,0)
end
addCommandHandler("informacje.pojazd", vehinfo)