Buenas!
La solución para este problema, es obtener la dimensión y el interior del jugador y compararla con la del marker. Un breve ejemplo:
playerMarker = createMarker(1601, 1212, 12.434, "cylinder", 15, 10, 244, 23, 2)
setElementDimension(playerMarker, 43)
setElementInterior(playerMarker, 1)
addEventHandler("onMarkerHit", playerMarker, function(hitElement, matchingDimension)
if getElementDimension(source) == getElementDimension(hitElement) && getElementInterior(source) == getElementDimension(hitElement) then
outputChatBox("Estás dentro del marker.", hitElement, 0, 255, 0)
end
end)
Sí que es cierto que en principio, debería de valer simplemente comparando la dimensión del jugador, y no el interior (esto es hilar más fino, nada más). Así, podemos hacerlo sólo comparando la dimensión del jugador respecto del marker, a través del 'matchingDimension' que nos llega.
playerMarker = createMarker(1601, 1212, 12.434, "cylinder", 15, 10, 244, 23, 2)
setElementDimension(playerMarker, 43)
setElementInterior(playerMarker, 1)
addEventHandler("onMarkerHit", playerMarker, function(hitElement, matchingDimension)
if matchingDimension == true then
outputChatBox("Estás dentro del marker.", hitElement, 0, 255, 0)
end
end)
Lo que no va a funcionar nunca, o al menos como esperamos, es esto:
playerMarker = createMarker(1601, 1212, 12.434, "cylinder", 15, 10, 244, 23, 2)
setElementDimension(playerMarker, 43)
setElementInterior(playerMarker, 1)
addEventHandler("onMarkerHit", playerMarker, function(hitElement, matchingDimension)
if getElementDimension(playerMarker) == 43 && getElementInterior(playerMarker) == 1 then -- Error, comparamos los datos del marker, pero no los del jugador.
outputChatBox("Estás dentro del marker.", hitElement, 0, 255, 0)
end
end)
¿Por qué? Porque cuando un player que esté en la dimensión 50 pase por el marker, el 'getElementDimension(playerMarker)' va a devolver 43, que es donde está creado en teoría el marker, y no el 50 que es donde está el player. Así, le dirá al player que está dentro del marker, cuando en realidad no debería de estarlo.
Saludos.