PL/DestroyElement

From Multi Theft Auto: Wiki
Revision as of 15:53, 6 December 2020 by Tracer (talk | contribs)
Jump to navigation Jump to search

Ta funkcja "niszczy" element i wszystkie elementy w nim zawarte w hierarchii (elementy dziedziczące, itp.). Za pomocą tej funkcji nie można zniszczyć elementów Gracza. Gracz może zostać usunięty z hierarchii tylko wtedy, gdy wyjdzie z serwera lub zostanie wyrzucony. Elementu głównego root również nie można zniszczyć, jednak przekazanie roota jako argumentu spowoduje wymazanie wszystkich elementów z serwera, z wyjątkiem graczy i klientów, którzy staną się bezpośrednimi potomkami węzła głównego oraz innych elementów, których nie można zniszczyć, np. jako elementy katalogu głównego zasobów.


[[{{{image}}}|link=|]] Uwaga: Podczas próby zniszczenia przeglądarki internetowej (Element/Browser), która wróciła z funkcji guiGetBrowser, występuje błąd, więc zamiast tego zniszcz element gui, który został zwrócony z guiCreateBrowser w przeciwnym razie gra się zawiesi (Przez Master_MTA).
[[{{{image}}}|link=|]] Uwaga: Ponieważ identyfikatory elementów są ostatecznie odtwarzane, zawsze upewnij się, że po wywołaniu tej funkcji nie ma zmiennych zawierających element

Gracze to nie jedyne elementy, których nie można usunąć. Ta lista zawiera również klientów zdalnych i elementy konsoli.

Syntax

bool destroyElement ( element elementDoUsuniecia )

OOP Syntax Help! I don't understand this!

Method: element:destroy(...)


Wymagane argumenty

  • elementDoUsuniecia: Element, który chcesz "zniszczyć".

Zwraca

Zwraca true (prawda) jeżeli element został usunięty pomyślnie, false (fałsz) jeśli przekazany do niego element był nieprawidłowy lub nie można go było zniszczyć z innego powodu (Na przykład zniszczenie elementu po stronie klienta nie może zniszczyć elementów po stronie serwera).

Przykłady

Przykład 1: Ten przykład zniszczy każdy element na mapie, z wyjątkiem graczy i samego elementu głównego.

-- Zniszcz wszystkie jego potomki, z wyjątkiem graczy.
destroyElement ( root )

Przykład 2: Ten przykład niszczy wszystkie pojazdy określonego modelu:

function zniszczWszystkiePojazdyOID(idModelu)
	-- zadeklaruj tabelę wszystkich istniejących pojazdów i użyj pętli
	local pojazdy = getElementsByType("vehicle")
	for i,v in ipairs(pojazdy) do
		-- jeśli identyfikator pojazdu jest taki sam co id podanego modelu, zniszcz go
		if (getElementModel(v) == idModelu) then
			destroyElement(v)
		end
	end
end

destroyVehiclesOfModel(445)

Przykład 3: Ten przykład pozwala na tworzenie claymorów. Kiedy eksplodują, colshape i obiekt Claymore zostaną zniszczone.

function stworzClaymore ( x,y,z, kreator )
	local objektClaymore = createObject ( 1945, x, y, z - 1, 0, 0, 90 )  -- stwórz obiekt, który wygląda jak claymore
	local kolizjeClaymore = createColSphere ( x, y, z, 1 )                   -- utwórz kolizje o kształcie kuli o promieniu 1
	setElementData ( kolizjeClaymore, "objekt", objektClaymore )             -- przechowaj objekt claymore
	setElementData ( kolizjeClaymore, "kreator", kreator )             -- przechowaj osobę która stworzyła ten obiekt
	addEventHandler ( "onColShapeHit", kolizjeClaymore, wejscie )        -- dodaj obsługę zdarzeń do kolizji obiektu
end

function wejscieWKolizjeClaymore ( gracz, wymiar )
	-- pobierz obiekt powiązany z obiektem claymore i kto go stworzył
	local obiektClaymore = getElementData ( source, "objekt" )
	local kreatorClaymore = getElementData ( source, "kreator" )
	- zdobądź pozycję obiektu
	local x,y,z = getElementPosition ( source )
	createExplosion ( x,y,z, 12, kreatorClaymore ) -- stwórz eksplozję o niewielkich rozmiarach, skojarzoną z kreatorem na obszarze kolizji
	-- usuń obsługę zdarzeń dla kolizji
	removeEventHandler ( "onColShapeHit", source, wejscieWKolizjeClaymore )
	-- zniszcz obiekt claymore i kolizje, aby nie został ponownie uruchomiony.
	destroyElement ( obiektClaymore )
	destroyElement ( source )
end