Эта функция используется для получения списка всех элементов заданного типа. Это может быть полезно, Так как он не учитывает того, где в дереве элементов. Он может использоваться как для встроенных типов (см. ниже) или с любого пользовательского типа, используемая в .файл карте. Например, если имеется элемент типа "флаг" (например, <флаг />) в интернет .Map-файл, используя "флаг" в качестве аргумента типа хотела ее найти.
Syntax
Server
table getElementsByType ( string theType, [ element startat=getRootElement() ] )
Client table getElementsByType ( string theType, [ element startat=getRootElement(), bool streamedIn=false ] )
Обязательные Аргументы
Тип элемента вы хотите, чтобы список. Это же как имя тега в .Map файл, поэтому он может использоваться с пользовательским типом элемента, если это необходимо. Встроенных типов можно найти здесь: элемент
- "player": Игрок подключен к серверу
- "ped": A пед
- "water": Водный многоугольник
- "sound":Звук игры
- "vehicle": Транспортное средство
- "object": Объект
- "pickup": Пикап
- "marker": Маркер
- "colshape": Форма столкновения
- "blip": Блип
- "radararea": Радар
- "team": Команда
- "spawnpoint": Спавн Поинт
- "console": Консоль
- "projectile": Клиентский снаряд
- "effect": Клиентские Эфекты
- "light": клиентский свет
- "searchlight": Скриншот
- "shader": Шейдер
- "texture": Текстуры
Необязательные аргументы
ПРИМЕЧАНИЕ: При использовании необязательных аргументов вам может потребоваться предоставить все аргументы перед тем, который вы хотите использовать. Для получения дополнительной информации о необязательных аргументах см. Дополнительные аргументы.
startat: элемент, с которого должен начинаться поиск. Выполняется поиск дочерних элементов этого элемента, братьев, сестер или родителей не будет. По умолчанию,
это корневой элемент, который подходит для большинства случаев использования.
streamedIn: если true, функция будет возвращать только те элементы, которые передаются в потоковом режиме.
Возврат
Возвращает таблицу, содержащую все элементы указанного типа. Возвращает пустую таблицу, если нет элементов указанного типа.
Возвращает false, если указанная строка недействительна (или не является строкой).
Пример
Пример 1: Этот пример извлекает таблицу игроков на сервере и проверяет, находится ли каждый из них в транспортном средстве:
local players = getElementsByType ( "player" ) -- get a table of all the players in the server
for theKey,thePlayer in ipairs(players) do -- use a generic for loop to step through each player
if ( isPlayerInVehicle ( thePlayer ) ) then -- if the player is in a vehicle, announce it
outputChatBox ( getPlayerName ( thePlayer ) .. " is in a vehicle" )
else -- if the player isn't in a vehicle, announce that he/she is on foot
outputChatBox ( getPlayerName ( thePlayer ) .. " is on foot" )
endПример 2: Этот пример извлекает таблицу команд на сервере и отображает их в чате:local teams = getElementsByType("team")
for i,team in ipairs(teams) do
local teamName = getTeamName(team) -- get the team name
outputChatBox(teamName) -- display the team name in chat
endПример 3: Здесь показано, как можно создать новый элемент для описания заправочной станции:function createGasStations(below)
local gasstations = getElementsByType ( "gasstation", below ) -- get a table of all the gas station elements in the element tree
for theKey,theGasStation in ipairs(gasstations) do
local x = getElementData(theGasStation, "posX") -- get the position of the element
local y = getElementData(theGasStation, "posY")
local z = getElementData(theGasStation, "posZ")
setElementParent(createColSphere(x, y, z, 10), theGasStation) -- create a colshape for the gas station at the gas station's position
addEventHandler("onColShapeHit", theGasStation, giveGas) -- when the player hits
end
end
function mapLoad()
createGasStations(source) -- create gas stations for the map that's just loaded
end
addEventHandler("onResourceStart", resourceRoot, 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("Pump is out of gas!")
end
end
endПример 4: Этот пример проходит через всех подключенных игроков и перенаправляет их на другой хост-сервер:local serverIP = "99.88.77.66" -- Change to your server IP to redirect everyone
local serverPort = 22005 -- The destination server's port
function redirectAllPlayers()
for _,p in ipairs (getElementsByType("player")) do
if p then
redirectPlayer (p, serverIP, serverPort)
end
end
end
addEventHandler ("onResourceStart", resourceRoot, redirectAllPlayers)