PL/DestroyElement: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 4: Line 4:


{{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).}}
{{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).}}
{{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==
<syntaxhighlight lang="lua">
bool destroyElement ( element elementDoUsuniecia )
</syntaxhighlight>
{{OOP||[[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.
<syntaxhighlight lang="lua">
-- Zniszcz wszystkie jego potomki, z wyjątkiem graczy.
destroyElement ( root )
</syntaxhighlight>
'''Przykład 2:''' Ten przykład niszczy wszystkie pojazdy określonego modelu:
<syntaxhighlight lang="lua">
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)
</syntaxhighlight>
'''Przykład 3:''' Ten przykład pozwala na tworzenie claymorów. Kiedy eksplodują, colshape i obiekt Claymore zostaną zniszczone.
<syntaxhighlight lang="lua">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
</syntaxhighlight>
'''Przykład 4:''' Ten przykład niszczy wszystkie pojazdy, niezależnie od identyfikatora, nazwy itp.:
<syntaxhighlight lang="lua">
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
</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