PL/getElementsByType
Ta funkcja jest używana do pobrania listy wszystkich elementów wybranego typu. Może być użyty, aby wiedzieć gdzie element znajduje się w drzewie elementów. Może być używany też np. w plikach map. Jeśli jest tam element typu "flaga" (przykład: <flaga />) będzie można odnaleść go używając argumentu "flaga".
Składnia
table getElementsByType ( string typElementu, [ element startat=getRootElement() ] )
table getElementsByType ( string typElementu, [ element startat=getRootElement(), bool jestStreamowany=false ] )
Wymagane argumenty
- typElementu: Typ elementu który chcesz wyszukać. Może być używany z niestandardowymi elementami jak te z plików .map. Lista wbudowanych elementów:
- "player": Gracz połączony z serwerem,
- "ped": Stworzony ped,
- "water": Zbiornik wodny,
- "sound": Grająca muzyka,
- "vehicle": Pojazd,
- "object": Obiekt,
- "pickup": Pickup,
- "marker": Marker,
- "colshape": Kolizje,
- "blip": Blip,
- "radararea": Area radaru,
- "team": Drużyna,
- "spawnpoint": Punkt spawnu,
- "remoteclient": Klient zdalnie połączony z serwerem,
- "console": Konsola serwera,
- "projectile": Pocisk.
Argumenty opcjonalne
UWAGA: Kiedy korzystasz z opcjonalnych argumentów, musisz uzupełnić wszystkie argumenty przed tym, którego chcesz użyć. Aby uzyskać więcej informacji na ten temat, zajrzyj tutaj.
- startat: element na którym szukanie powinno się zacząć.
- streamedIn: Jeśli zostanie ustawiony na true funkcja wyszuka tylko elementy które znajdują się w zasięgu streamingu gracza.
Co zwraca
Zwraca tabelę zawierającą elementy wybranego typu. Zwraca pustą tabelę jeśli szukanie nie przyniosło wyników. Zwraca false jeśli wprowadzony ciąg znaków był nieprawidłowy.
Przykłady
Przykład 1: Ten przykład wyszukuje graczy i sprawdza, czy są oni w pojeździe.
local players = getElementsByType ( "player" ) -- pobieranie tabeli z wszystkimi graczami on-line for theKey,thePlayer in ipairs(players) do -- używanie pętli aby dokonać sprawdzenia na wszystkich graczach if ( isPlayerInVehicle ( thePlayer ) ) then -- jeśli gracz jest w pojeździe outputChatBox ( getPlayerName ( thePlayer ) .. " jest w jakimś pojeździe" ) else -- jeśli nie w pojeździe, outputChatBox ( getPlayerName ( thePlayer ) .. " nie jest w pojeździe" ) end end
Przykład 2: Ten przykład wyszukuje drużyny i wyświetla ich nazwy na czacie
local teams = getElementsByType("team") for i,team in ipairs(teams) do local teamName = getTeamName(team) -- pobranie nazwy drużyny, outputChatBox(teamName) -- wyświetlenie nazwy drużyny na czacie, end
Przykład 3: Ten przykład pokazuje jak powinnieneś stworzyć nowy element (w tym przypadku stacjaPaliw) i wyszukać go
function createGasStations(below) local gasstations = getElementsByType ( "stacjaPaliw", below ) for theKey,theGasStation in ipairs(gasstations) do local x = getElementData(theGasStation, "posX") -- pozycja local y = getElementData(theGasStation, "posY") local z = getElementData(theGasStation, "posZ") setElementParent(createColSphere(x, y, z, 10), theGasStation) -- stworzenie strefy kolizji dla stacji paliw addEventHandler("onColShapeHit", theGasStation, giveGas) -- funkcja wywołująca się gdy gracz uderzy w kolizję end end function mapLoad() createGasStations(source) -- stworzenie stacji paliw dla nowo wczytanej mapy end addEventHandler("onResourceStart", getRootElement(), mapLoad) function giveGas(hittingElement) local theGasStation = source if getElementType(hittingElement) == "vehicle" then local gas_left = getElementData(theGasStation, "amount") local gas_speed = getElementData(theGasStation, "speed") if gas_left > 0 then local gas_to_remove = gas_speed if gas_left < gas_speed then gas_to_remove = gas_left local current_vehicle_gas = getElementData(hittingElement, "gas") current_vehicle_gas = current_vehicle_gas + gas_to_remove gas_left = gas_left - gas_to_remove setElementData(hittingElement, "gas", current_vehicle_gas) setElementData(theGasStation, "amount", gas_left) else outputChatBox("Brak paliwa w dystrybutorze!") end end end
Przykład 4: Ten przykład wyszukuje samochody i pokazuje ich pozycje na mapie przy użyciu createBlipAttachedTo
local auta = getElementsByType("vehicle") for i,auto in ipairs(auta) do createBlipAttachedTo (auto, 0, 2, 255, 0, 0, 255, 0, 99999.0) end