KucharSolo
Wiek: 35 Na forum: 3439 dni Posty: 94
Nick w MP: Kuchar
Piwa : 2
Witam, posiadam skrypt na fotoradar i wszystko dzia?a opr?cz jednej rzeczy a mianowicie gdy przekrocz? pr?dko?? to zabiera pieni?dze kierowcy i pasa?erowi. Chcia?bym ustawi? aby mandat dostawa? tylko kierowca. Prosz? o pomoc. Poni?ej wklejam kod. Dzi?kuje za pomoc.
Po stronie CLIENTA:
--[[
author : Asthma .
( c ) 2020 <-- fvck this year
]]
local sx , sy = guiGetScreenSize ();
local zoom = 1
local baseX = 1920
local minZoom = 2
if sx < baseX then
zoom = math . min ( minZoom , baseX / sx );
end
function scaleX ( type , value )
if type == 'center' then
return math . floor ( sx / 2 - value / zoom )
elseif type == 'left' then
return math . floor ( sx - value / zoom )
elseif type == 'right' then
return math . floor ( value / zoom )
end
end
function scaleY ( type , value )
if type == 'center' then
return math . floor ( sy / 2 - value / zoom )
elseif type == 'top' then
return math . floor ( value / zoom )
elseif type == 'down' then
return math . floor ( sy - value / zoom )
end
end
local txd = engineLoadTXD ( "foto.txd" );
engineImportTXD ( txd , 16101 )
local dff = engineLoadDFF ( "foto.dff" );
engineReplaceModel ( dff , 16101 )
_table = {};
local takenPhoto = nil
--[[
przyklad
{ x , y , z , rx , ry , rz , zasiegFotoradary , dopuszczalnaPredkosc }
]]
local points = {
{ - 2711.51 , 312.86 , 2.34 , 0 , 0 , 0 , 7 , maxVelocity = 50 },
{- 2598.63379 , - 490.13394 , 73.4849 , 0 , 0 , 0 , 7 , maxVelocity = 30 },
}
for i = 1 , #points do
points [ i ]. cs = createColSphere ( points [ i ][ 1 ], points [ i ][ 2 ], points [ i ][ 3 ], points [ i ][ 7 ]);
object = createObject ( 16101 , points [ i ][ 1 ], points [ i ][ 2 ], points [ i ][ 3 ], points [ i ][ 4 ], points [ i ][ 5 ], points [ i ][ 6 ])
end
function renderSpeedCamera ()
dxDrawText ( 'Model: ' .. _table . myVehicle , scaleX ( 'center' , 0 ), scaleY ( 'down' , 300 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 300 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Rejestracja pojazdu: ' .. _table . plateText , scaleX ( 'center' , 0 ), scaleY ( 'down' , 280 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 280 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Tw?j nick: ' .. _table . nick , scaleX ( 'center' , 0 ), scaleY ( 'down' , 260 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 260 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Twoja pr?dko??: ' .. _table . myVelocity .. 'km/h' , scaleX ( 'center' , 0 ), scaleY ( 'down' , 240 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 240 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Dopuszczalna pr?dko??: ' .. _table . maxVelocity .. 'km/h' , scaleX ( 'center' , 0 ), scaleY ( 'down' , 220 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 220 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Przekroczono o: ' .. _table . speedExceeded .. 'km/h' , scaleX ( 'center' , 0 ), scaleY ( 'down' , 200 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 200 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
dxDrawText ( 'Kwota mandatu: ' .. _table . pricePhoto .. 'PLN' , scaleX ( 'center' , 0 ), scaleY ( 'down' , 180 ), scaleX ( 'center' , 0 ), scaleY ( 'down' , 180 ), white , 1.2 / zoom , 'default' , 'center' , 'center' );
end
function renderDetector ()
local x , y , z = getElementPosition ( localPlayer )
for _ , v in ipairs ( points ) do
local distance = getDistanceBetweenPoints3D ( x , y , z , v [ 1 ], v [ 2 ], v [ 3 ])
if distance <= 151 then
dxDrawRectangle ( scaleX ( 'right' , 10 ), scaleY ( 'down' , 25 ), 70 / zoom , 20 / zoom , tocolor ( 0 , 0 , 0 , 180 ))
dxDrawText ( math . floor ( distance ).. 'm' , scaleX ( 'right' , 45 ), scaleY ( 'down' , 15 ), scaleX ( 'right' , 45 ), scaleY ( 'down' , 15 ), white , 1 / zoom , 'default-bold' , 'center' , 'center' )
dxDrawImage ( scaleX ( 'right' , 10 ), scaleY ( 'down' , 100 ), 70 / zoom , 70 / zoom , 'disc.png' )
dxDrawText ( v . maxVelocity , scaleX ( 'right' , 45 ), scaleY ( 'down' , 65 ), scaleX ( 'right' , 45 ), scaleY ( 'down' , 65 ), tocolor ( 0 , 0 , 0 ), 2.5 / zoom , 'default-bold' , 'center' , 'center' )
end
end
end
function onSpeedCameraHit ( element , dm )
if takenPhoto then return end
for i , v in pairs ( points ) do
if source == points [ i ]. cs then
if element == localPlayer then
if isPedInVehicle ( element ) and getVehicleController ( getPedOccupiedVehicle ( element )) then
if getElementDimension ( element ) == 0 and getElementInterior ( element ) == 0 then
local sx , sy , sz = getElementVelocity ( getPedOccupiedVehicle ( element ));
local speed = (( sx ^ 2 + sy ^ 2 + sz ^ 2 ) ^( 0.5 )) * 0.7 * 180 * 1.310
if ( speed - 10 > points [ i ]. maxVelocity ) then
playSound ( 'fotoradar.ogg' , false );
fadeCamera ( false , 0.1 , 255 , 255 , 255 );
setTimer ( fadeCamera , 60 , 1 , true , 1.5 );
_table = {
nick = getPlayerName ( element ): gsub ( '#%x%x%x%x%x%x' , '' ),
maxVelocity = points [ i ]. maxVelocity ,
myVelocity = string . format ( "%.01f" , speed ),
speedExceeded = string . format ( "%.01f" , speed - points [ i ]. maxVelocity ),
plateText = getVehiclePlateText ( getPedOccupiedVehicle ( element )),
myVehicle = getVehicleNameFromModel ( getElementModel ( getPedOccupiedVehicle ( element ))),
pricePhoto = math . floor ( tonumber ( speed - points [ i ]. maxVelocity ) * 3 ),
};
triggerServerEvent ( 'takeMoneyFromPhoto' , resourceRoot , _table . pricePhoto )
addEventHandler ( 'onClientRender' , root , renderSpeedCamera )
takenPhoto = true
setTimer (function()
takenPhoto = nil
removeEventHandler ( 'onClientRender' , root , renderSpeedCamera )
_table = {}
end , 10000 , 1 )
end
end
end
end
end
end
end
addEventHandler ( 'onClientColShapeHit' , resourceRoot , onSpeedCameraHit )
addEventHandler ( 'onClientVehicleEnter' , root ,function( player , seat )
if player == localPlayer and seat == 0 then
if getElementData ( source , 'detector:speed' ) then
addEventHandler ( 'onClientRender' , root , renderDetector )
end
end
end )
addEventHandler ( 'onClientVehicleExit' , root ,function( player , seat )
if player == localPlayer and seat == 0 then
if getElementData ( source , 'detector:speed' ) then
removeEventHandler ( 'onClientRender' , root , renderDetector )
end
end
end )
Po stronie SERWERA:
addEvent ( 'takeMoneyFromPhoto' , true )
function takeMoneyFromPhoto ( value )
takePlayerMoney ( client , value )
end
addEventHandler ( 'takeMoneyFromPhoto' , resourceRoot , takeMoneyFromPhoto )