SerweryWłasny serwerDla twórcówForumFAQDokumentacjaBezpieczeństwo
Pobierz launcher
  1. Dokumentacja
  2. Funkcje wspólne
  3. processLineOfSight

Funkcja

processLineOfSight

Szuka pierwszej przeszkody na odcinku między dwoma punktami i zwraca szczegóły trafienia. Na kliencie pyta grę (teren, budynki, obiekty, auta, postacie, kolizje z plików .col) i zwraca dużo danych: punkt trafienia, element, normalną powierzchni, materiał, oświetlenie, część ciała lub pojazdu, a na życzenie także model obiektu mapy z położeniem. Każde wywołanie czeka ok. jedną klatkę gry; gdy świat jeszcze się wczytuje (ekran ładowania), od razu zwraca false. Na serwerze liczy na uproszczonym modelu (kule elementów, bez terenu i budynków).

Składnia

bool, float... processLineOfSight(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, bool shootThroughStuff = false, element ignoredElement = nil, bool includeWorldModelInformation = false, bool throughMapObjects = false])

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.
checkObjectsbool, opcjonalny = true
Uwzględnij obiekty.
checkDummiesbool, opcjonalny = true
Uwzględnij obiekty pomocnicze (klient).
seeThroughStuffbool, opcjonalny = false
Przenikaj przez rzeczy przezroczyste (klient).
ignoreSomeObjectsForCamerabool, opcjonalny = false
Pomiń obiekty pomijane przez kamerę (klient).
shootThroughStuffbool, opcjonalny = false
Przenikaj przez rzeczy, przez które przechodzą kule (klient).
ignoredElementelement, opcjonalny = nil
Element pomijany w teście.
includeWorldModelInformationbool, opcjonalny = false
Zwróć też model obiektu mapy, jego położenie, obrót i model LOD (klient).
throughMapObjectsbool, opcjonalny = false
Przenikaj przez drzewa, krzaki i obiekty mapy (latarnie, ławki, płoty); teren, budynki, auta, postacie i obiekty skryptów nadal zatrzymują (klient).

Różnice względem MTA:SA

  • Tych argumentów z MTA:SA tu nie ma: bool bIncludeExtraMateriaInfo = false

W MTA:SA

processLineOfSight(float startX, float startY, float startZ, float endX, float endY, float endZ, bool checkBuildings = true, bool checkVehicles = true, bool checkPlayers = true, bool checkObjects = true, bool checkDummies = true, bool seeThroughStuff = false, bool ignoreSomeObjectsForCamera = false, bool shootThroughStuff = false, element ignoredElement = nil, bool includeWorldModelInformation = false, bool bIncludeCarTyres = false, bool bIncludeExtraMateriaInfo = false)

Zwraca

hit, x, y, z trafienia, element, nx, ny, nz, materiał, oświetlenie, część, (model świata, x, y, z, rx, ry, rz, LOD); false, gdy nic nie trafiono.

Przykład

addCommandHandler("cel", function()
    local x1, y1, z1, x2, y2, z2 = getCameraMatrix()
    local hit, hx, hy, hz, element = processLineOfSight(x1, y1, z1, x1 + (x2 - x1) * 50, y1 + (y2 - y1) * 50, z1 + (z2 - z1) * 50)
    if hit then outputChatBox(("Celujesz w %.1f %.1f %.1f %s"):format(hx, hy, hz, element and getElementType(element) or "")) end
end)

Zobacz też