Wysłany: 2019-12-21, 15:10
Nywis
Wiek: 29 Na forum: 2847 dni Posty: 60
Nick w MP: Nywis
Piwa : 14
Posiadam kod podmieniajacy markery, a dokladniej cylindry, aczkolwiek problem tkwi w tym, i? gdy postawi? marker na np. dim 12, czy te? dam interior, to ten marker widoczny jest te? na dim 0.
MARKER_DRAW_DISTANCE = 3000
MARKER_FADE_DISTANCE = MARKER_DRAW_DISTANCE - 10
MARKER_REFRESH_TIMEOUT = 500 -- czas w ms co ile wyszukuje markery w poblizu
tick_rotation = getTickCount ()
local markers = {}
local textures = {}
local iconSize = Vector2 ( 0.8 , 0.8 )
function findRotation ( from_x , from_y , to_x , to_y )
local result = - math . deg ( math . atan2 ( to_x - from_x , to_y - from_y ))
return result < 0 and result + 360 or result
end
local thisTick = getTickCount ()
local font = exports [ 'lrpg-markery' ]: dxGetFont ( 'light' ) or 'default-bold'
function renderCustomMarkers ()
local cx , cy , cz = getCameraMatrix ()
local rx , ry , rz = getElementRotation ( getCamera ())
local posPlayerX , posPlayerY , posPlayerZ = getElementPosition ( localPlayer )
local pX , pY , pZ = getElementRotation ( localPlayer )
-- local tick = math . abs ( getTickCount () % 2500 - 2500 / 2 ) / 2500 / 2
local tick = interpolateBetween ( 0 , 0 , 0 , 0.3 , 0 , 0 , ( getTickCount ()- thisTick )/ 2500 , "SineCurve" )
for i , marker in ipairs ( markers ) do
if isElement ( marker ) then
local x , y , z = getElementPosition ( marker )
local radius = getMarkerSize ( marker ) or 3
local color = { getMarkerColor ( marker )} or { 255 , 255 , 255 , 255 }
local icon = getElementData ( marker , "icon" ) or "marker"
local dist = getDistanceBetweenPoints3D ( cx , cy , cz , x , y , z )
local progress = ( dist - MARKER_FADE_DISTANCE )/( MARKER_DRAW_DISTANCE - MARKER_FADE_DISTANCE )
color [ 4 ] = math . max ( 0 , math . min ( 255 - ( 255 * progress ), 255 ))
if isOnScreen ( x , y , z , radius * 0.25 ) and color [ 4 ] > 0 then
local i1 , i2 = interpolateBetween ( 0 , 0 , 0 , 360 , 0 , 0 ,( getTickCount ()- tick_rotation )/ 1250 , "OutQuad" )
if ( getTickCount ()- tick_rotation ) > 1250 then
tick_rotation = getTickCount ()
end
drawTransformedMaterial ( textures [ icon .. "_icon" ], x , y , z + iconSize . y * 1.5 + tick , pX - 90 , pY , pZ , iconSize . x - 0.3 , iconSize . y - 0.3 , color , 0 , 0 , 0 , posPlayerX , posPlayerY , posPlayerZ )
local lightColor = color
-- lightColor [ 4 ] = ( lightColor [ 4 ]* 0.8 ) - (( lightColor [ 4 ]* 0.3 )* tick )
lightColor [ 4 ] = lightColor [ 4 ] - ( tick * 10 )
drawTransformedMaterial ( textures . marker_ring1 , x , y , z + 0.1 , 0 , 0 , i1 , radius + 0.4 , radius + 0.4 , lightColor , 0 , 0 , 0 , 0 , 0 , 0 )
-- drawTransformedMaterial ( textures . marker_ring2 , x , y , z + 0.1 , 0 , 0 , i2 , radius + 0.4 , radius + 0.4 , lightColor , 0 , 0 , 0 , 0 , 0 , 0 )
end
if getElementData ( marker , 'marker:text' ) and dist < 20 then
local sx , sy = getScreenFromWorldPosition ( x , y , z + 0.4 * 1.5 + tick )
if sx and sy then
local alpha = (( 20 / 255 - dist / 255 ) * 255 )/ 15 * 255
local size = (( 20 / 1 - dist / 1 ) * 1 )/ 15 * 1
dxDrawText ( getElementData ( marker , 'marker:text' ) or '' , sx , sy , sx , sy , tocolor ( 255 , 255 , 255 , alpha ), math . max ( 0.1 , size ), font , 'center' , 'center' , false , false , false , false , false )
end
end
end
end
end
function getNearbyMarkers ()
local cx , cy , cz = getCameraMatrix ()
if font == 'default-bold' then
font = dxCreateFont ( "light.ttf" , 15 )
end
markers = {}
for k , v in ipairs ( getElementsWithinRange ( cx , cy , cz , 75 , 'marker' )) do
if getMarkerType ( v ) ~= 'corona' then
local x , y , z = getElementPosition ( v )
if getDistanceBetweenPoints3D ( x , y , z , cx , cy , cz ) < MARKER_DRAW_DISTANCE * 2 then
local r , g , b = getMarkerColor ( v )
setMarkerColor ( v , r , g , b , 0 )
table . insert ( markers , v )
end
end
end
end
addEventHandler ( "onClientResourceStart" , resourceRoot , function()
textures . marker_icon = dxCreateTexture ( "images/marker.png" , "argb" , false , 'wrap' )
textures . get_car_icon = dxCreateTexture ( "images/icons/get_car.png" , "argb" , false , 'wrap' )
textures . store_car_icon = dxCreateTexture ( "images/icons/store_car.png" , "argb" , false , 'wrap' )
textures . station_lpg_icon = dxCreateTexture ( "images/icons/station_lpg.png" , "argb" , false , 'wrap' )
textures . marker_ring1 = dxCreateTexture ( 'images/marker_1.png' , "argb" , false , 'wrap' )
textures . marker_ring2 = dxCreateTexture ( 'images/marker_2.png' , "argb" , false , 'wrap' )
textures . light = dxCreateTexture ( "images/light.png" )
setTimer ( getNearbyMarkers , MARKER_REFRESH_TIMEOUT , 0 )
addEventHandler ( "onClientRender" , root , renderCustomMarkers )
end )
addEventHandler ( 'onClientResourceStop' , resourceRoot ,function()
for i , v in ipairs ( getElementsByType ( 'marker' )) do
local r , g , b = getMarkerColor ( v )
setMarkerColor ( v , r , g , b , 255 )
end
end )
Wysłany: 2019-12-21, 18:23
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
W onClientRenderze musisz sprawdza? czy gracz jest w tym samym dimensionie co marker, kt?ry rysujesz.
Wysłany: 2019-12-21, 19:00
Nywis
Wiek: 29 Na forum: 2847 dni Posty: 60
Nick w MP: Nywis
Piwa : 14
"Wilq" napisał/a :W onClientRenderze musisz sprawdza? czy gracz jest w tym samym dimensionie co marker, kt?ry rysujesz.
Czyli jak to powinno wygl?da?? Aby by?o tak, ?e postawi? marker na dimensionie np. 9 i aby nie by?o go na ?adnym innym dimensionie?
setTimer ( getNearbyMarkers , MARKER_REFRESH_TIMEOUT , 0 )
addEventHandler ( "onClientRender" , root , renderCustomMarkers )
end )
Wysłany: 2019-12-21, 19:10
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Jeszcze raz: sprawdzaj czy gracz jest w tym samym dimensionie co marker w evencie onClientRender (tam gdzie tworzysz te markery).
Wysłany: 2019-12-21, 19:51
Nywis
Wiek: 29 Na forum: 2847 dni Posty: 60
Nick w MP: Nywis
Piwa : 14
"Wilq" napisał/a :Jeszcze raz: sprawdzaj czy gracz jest w tym samym dimensionie co marker w evencie onClientRender (tam gdzie tworzysz te markery).
No to tak jest, dobrze wszystko, nawet jak wy??cz? ten skrypt z tzw. podmiank? tych marker?w, to te markery znikaj? z innych dimension?w, a jak w??cz?, to s? na ka?dym
Wysłany: 2019-12-21, 21:47
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
To dodaj sprawdzanie jeszcze w funkcji getNearbyMarkers i wy?lij kod po zmianach.
Tagi: jest :: nie :: tak :: kodzie :: markerami?
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: