- Dokumentacja
- Funkcje wspólne
- isLineOfSightClear
Funkcja
isLineOfSightClear
Sprawdza, czy odcinek między dwoma punktami nie jest niczym zasłonięty. Na kliencie pyta grę (teren, budynki, obiekty, pojazdy, postacie, kolizje z plików .col). Na serwerze liczy na uproszczonym modelu: elementy skryptów jako kule, bez terenu i budynków mapy, więc służy tylko do przybliżonej oceny.
Składnia
bool isLineOfSightClear(float sx, float sy, float sz, float ex, float ey, float ez [, bool checkBuildings = true, bool checkVehicles = true, bool checkPeds = true, bool checkObjects = true, bool checkDummies = true, bool seeThroughStuff = false, bool ignoreSomeObjectsForCamera = false, element ignoredElement = nil])Argumenty
sxfloat- X początku.
syfloat- Y początku.
szfloat- Z początku.
exfloat- X końca.
eyfloat- Y końca.
ezfloat- Z końca.
checkBuildingsbool, opcjonalny = true- Uwzględnij budynki i teren.
checkVehiclesbool, opcjonalny = true- Uwzględnij pojazdy.
checkPedsbool, opcjonalny = true- Uwzględnij postacie i graczy.
checkObjectsbool, opcjonalny = true- Uwzględnij obiekty.
checkDummiesbool, opcjonalny = true- Uwzględnij obiekty pomocnicze gry (klient).
seeThroughStuffbool, opcjonalny = false- Przenikaj przez rzeczy przezroczyste, np. siatki i szyby (klient).
ignoreSomeObjectsForCamerabool, opcjonalny = false- Pomiń obiekty, które kamera pomija (klient).
ignoredElementelement, opcjonalny = nil- Element pomijany w teście (np. sam gracz).
Zwraca
true, gdy nic nie zasłania odcinka.
Przykład
local function canSee(target)
local x1, y1, z1 = getCameraMatrix()
local x2, y2, z2 = getElementPosition(target)
return isLineOfSightClear(x1, y1, z1, x2, y2, z2, true, false, false, true, true, false, false, localPlayer)
end
Uwagi
Serwer. Serwer nie ma kolizji mapy. Wywołane w async(function() ... end) pyta grę gracza najbliżej środka odcinka (do 250 m, poza wnętrzami) i czeka na odpowiedź do 1,5 s - wtedy wynik uwzględnia teren i budynki. Poza async albo bez gracza w pobliżu sprawdza tylko elementy skryptów.