PL/DestroyElement: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 85: Line 85:
setTimer(zniszczWszystkiePojazdy, 3600000, 0) --czas podany w milisekundach
setTimer(zniszczWszystkiePojazdy, 3600000, 0) --czas podany w milisekundach
</syntaxhighlight>
</syntaxhighlight>
==Zobacz także==
{{Element functions}}

Latest revision as of 15:58, 6 December 2020

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

Przykład 4: Ten przykład niszczy wszystkie pojazdy, niezależnie od identyfikatora, nazwy itp.:

function zniszczWszystkiePojazdy()
	-- zadeklaruj tabelę wszystkich istniejących pojazdów i użyj pętli
	pojazdy = getElementsByType("vehicle")
	for i,v in ipairs(pojazdy) do
		-- usuń każdy pojazd
		destroyElement(v)
	end
end
--Poniższa komenda zniszczy wszystkie pojazdy
--wpisujesz /vzniszcz na czacie lub vzniszcz w konsoli
addCommandHandler("vzniszcz", zniszczWszystkiePojazdy)

--Jest to bardzo przydatne, jeśli korzystasz z zasobów freeroam,
--a niektórzy bezduszni gracze zaczynają spamować.
--Możesz także ustawić licznik czasu, aby serwer wyczyścił wszystkie
--pojazdy po 60 minutach (1 godzinie):
setTimer(zniszczWszystkiePojazdy, 3600000, 0) --czas podany w milisekundach

Zobacz także