--[[
Skrypt zosta? wykonany przez:
-Asper (nezymr69@gmail.com).
Na potrzeby serwera:
-WestRPG (2018).
Jedyne i wy??czone prawo do u?ywania kodu ma serwer WestRPG oraz autor skryptu. (Asper)
]]
local markers = {
['fortcarson'] = {
markers = {
{73.45, 1172.18, 18.66,'Benzyna'},
{75.33, 1172.09, 18.66,'Benzyna'},
{75.14, 1165.00, 18.66,'Benzyna'},
{73.25, 1165.08, 18.66,'Benzyna'},
},
cs = {76.62, 1168.69, 18.66, 28},
csTo = {76.62, 1168.69, 18.66, 16},
},
}
local tick = getTickCount()
addEventHandler('onMarkerHit', resourceRoot, function(hit, dim)
if not hit or hit and not isElement(hit) or hit and isElement(hit) and getElementType(hit) ~= 'player' or hit and isElement(hit) and getElementType(hit) == 'player' and isPedInVehicle(hit) or not dim then return end
if (getTickCount()-tick) < 500 then return end -- server side, laduje sie wczesniej niz client side
local type = getElementData(source, 'type') or 'Benzyna'
if not getElementData(hit, 'user:line') then
if getElementData(hit, 'tank:vehicle') then
triggerClientEvent(hit, 'onClientAddNotification', hit, 'Najpierw zap?a? za poprzednie zam?wienie.', 'error')
return
end
local x,y,z = getElementPosition(source)
exports['3dline']:create3DLine(hit, x, y, z)
giveWeapon(hit, 41)
setPedWeaponSlot(hit, 4)
triggerClientEvent(hit, 'start:weapon', resourceRoot, type)
else
exports['3dline']:destroy3DLine(hit)
triggerClientEvent(hit, 'stop:weapon', resourceRoot)
takeWeapon(hit,41)
if not getElementData(hit, 'player:admin') then
takeWeapon(hit, 32)
end
end
end)
addEventHandler('onPlayerWeaponSwitch', root, function(prev, curr)
if getElementData(source, 'user:line') and prev == 23 then
setPedWeaponSlot(source, 4)
end
end)
addEventHandler('onColShapeLeave', resourceRoot, function(hit)
if not hit or hit and not isElement(hit) or hit and isElement(hit) and getElementType(hit) ~= 'player' then return end
if getElementData(source, 'cs') and getElementData(hit, 'tank:vehicle') then
setElementData(hit, 'tank:vehicle', false)
triggerClientEvent(hit, 'onClientAddNotification', hit, 'Twoje zam?wienie zosta?o anulowane.', 'info')
return
end
if getElementData(hit, 'user:line') then
exports['3dline']:destroy3DLine(hit)
triggerClientEvent(hit, 'stop:weapon', resourceRoot)
if not getElementData(hit, 'player:admin') then
takeWeapon(hit, 32)
end
end
end)
addEvent('tank:vehicle', true)
addEventHandler('tank:vehicle', resourceRoot, function(vehicle, cost, fuel, type)
if not vehicle or vehicle and not isElement(vehicle) then
setElementData(client, 'tank:vehicle', false)
triggerClientEvent(client, 'onClientAddNotification', client, 'Twoje zam?wienie jest ju? przedawnione.', 'info')
end
local text = 'paliwa'
if type == 'LPG' then
local gas = getElementData(vehicle, 'vehicle:gas') or 0
setElementData(vehicle, 'vehicle:gas', gas + fuel)
text = 'gazu'
else
local fuel_ = getElementData(vehicle, 'vehicle:fuel') or 0
setElementData(vehicle, 'vehicle:fuel', fuel_ + fuel)
end
takePlayerMoney(client, cost)
exports['pystories-db']:dbSet('update pystories_users set money=? where login=? limit 1', getPlayerMoney(client), getPlayerName(client))
triggerClientEvent(client, 'onClientAddNotification', client, 'Zap?aci?e? '..math.floor(cost)..' PLN \nza dolanie '..math.floor(fuel)..'L '..text..' do pojazdu '..getVehicleName(vehicle), 'success')
setElementData(client, 'tank:vehicle', false)
end)
function getMarkerColorFromType(type)
local r,g,b,t = 255,255,255,'pb-95'
if type == 'Benzyna' then
r,g,b,t = 0,0,255,'pb-95'
elseif type == 'Diesel' then
r,g,b,t = 255,0,0,'on'
elseif type == 'LPG' then
r,g,b,t = 0,255,0,'lpg'
end
return r,g,b,t
end
addEventHandler('onResourceStart', resourceRoot, function()
for k,v in pairs(markers) do
if #v['markers'] > 0 then
for i = 1,#v['markers'] do
local r,g,b,t = getMarkerColorFromType(v['markers'][i][4])
local marker = createMarker(v['markers'][i][1], v['markers'][i][2], v['markers'][i][3]-0.97, 'cylinder', 1.1, 0, 0, 0, 80)
setElementData(marker, 'marker:icon', t)
setElementData(marker, 'type', v['markers'][i][4])
end
local cs = createColSphere(v['cs'][1], v['cs'][2], v['cs'][3], v['cs'][4])
setElementData(cs, 'cs', true)
createColSphere(v['csTo'][1], v['csTo'][2], v['csTo'][3], v['csTo'][4])
local blip = createBlip(v['markers'][1][1], v['markers'][1][2], v['markers'][1][3], 40)
setBlipVisibleDistance(blip, 500)
end
end
end)
local czas = getTickCount()
isBike = {
[509]=true, --Bike
[481]=true, --BMX
[510]=true, --Mountain bike
}
function odejmijPaliwo(pojazd)
if getTickCount() - czas > 150 then
czas = getTickCount()
local paliwo = getElementData(pojazd, "vehicle:fuel") or 0
local vx,vy,vz = getElementVelocity(pojazd)
local spd = ((vx^2+vy^2+vz^2)^(0.5)/150)
if spd > 0 then
paliwo = paliwo-spd*2
setElementData(pojazd, "vehicle:fuel", paliwo)
end
end
end
addEventHandler("onClientRender", root, function()
local pojazd = getPedOccupiedVehicle(localPlayer)
if not pojazd then return end
if isBike[getElementModel(pojazd)] then return end
if not getVehicleEngineState(pojazd) then return end
if getVehicleController(pojazd) ~= localPlayer then return end
odejmijPaliwo(pojazd)
end)
function zgasSilnik()
for i,v in ipairs(getElementsByType("vehicle")) do
local data = getElementData(v, "vehicle:fuel")
if data then
if tonumber(data) < 0 then
setVehicleEngineState(v, false)
end
end
end
end
setTimer(zgasSilnik, 1000, 0)
function koniecpaliwa()
vehicle = getPedOccupiedVehicle(localPlayer)
if vehicle and (not getElementData(vehicle,"vehicle:fuel") == false ) and getElementData(vehicle,"vehicle:fuel") <= 0 then
setElementData(vehicle,"vehicle:fuel",0)
setElementData(vehicle,"koniecpaliwa",true)
setVehicleEngineState(vehicle,false)
end
end
addEventHandler("onClientRender",root,koniecpaliwa)