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