andrzej80
Amator Lua :D
Wiek: 29 Na forum: 3777 dni Posty: 74
Nick w MP: andrzej80
Piwa : 1
Witam mam ma?y problem z systemem fotoradar?w - ot??, gdy kogo? on z?apie, zabiera tyle ile trzeba, wy?wietla si? wszystko co potrzeba, ale w konsoli wywala taki b??d:
Kod: [2016-02-14 10] ERROR: [skrypty]/fotoradary/fotoradary.lua:23: attempt to perform arithmetic on local 'speedCamera' (a nil value)
Nie mam poj?cia, jak to mo?na rozwi?za?
Kod, w kt?rym wywala b??d:
local speedCamera ={
{ 2000.58984375 , - 1759.1041259766 , 13.546875 , 50 , 75 },
}
for i , v in pairs ( speedCamera ) do
local cs = createColSphere ( v [ 1 ], v [ 2 ], v [ 3 ], v [ 4 ]- 2 )
local o1 = createObject ( 1622 , v [ 1 ], v [ 2 ], v [ 3 ]+ 4 , 0 , 0 , - 60 )
local o2 = createObject ( 16101 , v [ 1 ]+ 0.3 , v [ 2 ]- 0.1 , v [ 3 ]+ 4 , 180 )
setElementData ( cs , 'fotoradar:predkosc' , v [ 5 ] or 60 , false ) -- nie synchronizujemy do serwera
end
addEventHandler ( 'onColShapeHit' , resourceRoot , function( el , md )
if not el then return end
if getElementType ( el ) == 'player' then
local veh = getPedOccupiedVehicle ( el )
if not veh then return end
if getVehicleController ( veh )~= el then return end
if getVehicleSirensOn ( veh ) then return else
local speedCamera = tonumber ( getElementData ( source , 'fotoradar:predkosc' ))
local vx , vy , vz = getElementVelocity ( veh )
local speedVehicle =(( vx ^ 2 + vy ^ 2 + vz ^ 2 )^( 0.5 ))* 180
local cost = 100
local diff =( speedVehicle - speedCamera )
if diff > 30 then
-- przekroczono predkosc o 30j
cost =( diff + speedVehicle )/ 2
else
cost = diff / 1.2
end
cost = math . floor ( cost )
if speedVehicle > speedCamera then
-- zapisywanie ile razy kierowca przekroczyl predkosc
-- przy 5 - 7 razach , zostanie informowana policja o piracie drogowym
if getPlayerMoney ( el )> cost then
takePlayerMoney ( el , cost )
outputChatBox ( "Przekroczy?e? pr?dko??! Otrzymujesz mandat w wysoko?ci " .. cost .. " z?." , el , 30 , 45 , 110 )
else
outputChatBox ( "Przekroczy?e? pr?dko??!" , el , 30 , 45 , 110 )
end
outputChatBox ( "Dopuszczalna pr?dko??: " .. speedCamera .. " km/h, Twoja pr?dko??: " .. string . format ( "%.02f" , speedVehicle ).. " km/h." , el , 30 , 45 , 110 )
end
end
end
end )
Drugi plik:
local speedCameras ={
{- 2000.60 , 213.17 , 27.69 , 20 , 75 }, -- mechanik doherty
{- 1123.60 , 1146.06 , 37.40 , 20 , 140 }, -- most sf - fc
{- 183.96 , 1113.91 , 19.74 , 20 , 75 }, -- fort carson
{ 1525.93 , 1865.88 , 10.82 , 20 , 75 }, -- las venturas
{ 2292.52 , 1380.36 , 10.82 , 20 , 75 }, -- obok piramidy
}
for i , v in ipairs ( speedCameras ) do
local cuboid = createColSphere ( v [ 1 ], v [ 2 ], v [ 3 ], v [ 4 ])
local object1 = createObject ( 1622 , v [ 1 ], v [ 2 ], v [ 3 ]+ 3 , 0.9 )
local object2 = createObject ( 16101 , v [ 1 ]+ 0.3 , v [ 2 ]- 0.1 , v [ 3 ]+ 2.5 , 180 )
setElementData ( cuboid , "speedcamera:speed" , v [ 5 ])
end
addEventHandler ( "onColShapeHit" , resourceRoot , function( el , md )
if getElementType ( el ) == "player" then
local veh = getPedOccupiedVehicle ( el )
if not veh then return end
if getVehicleController ( veh )~= el then return end
local maxspeed = tonumber ( getElementData ( source , "speedcamera:speed" ))
if getVehicleSirensOn ( veh ) then
outputChatBox ( "Jedziesz aktualnie na sygnale!" , el , 30 , 45 , 110 )
else
speedx , speedy , speedz = getElementVelocity ( veh )
actualspeed = ( speedx ^ 2 + speedy ^ 2 + speedz ^ 2 )^( 0.5 )
kmh = actualspeed * 180
if kmh > maxspeed then
local mandate = tonumber ( math . floor ( math . random ( 20 , 50 )))
if getPlayerMoney ( el ) > mandate then
takePlayerMoney ( el , mandate )
end
outputChatBox ( "Przekroczy?e? pr?dko??! Otrzymujesz mandat w wysoko?ci: " .. mandate .. " z?." , el , 30 , 45 , 110 )
outputChatBox ( "Dopuszczalna pr?dko??: " .. maxspeed .. " km/h, Twoja pr?dko??: " .. string . format ( "%.02f" , kmh ).. " km/h." , el , 30 , 45 , 110 )
end
end
end
end )
Skrypt na fotoradary jest z gtaO.