PL/DestroyElement: Difference between revisions
| No edit summary | No edit summary | ||
| (2 intermediate revisions by the same user not shown) | |||
| Line 18: | Line 18: | ||
| ===Zwraca=== | ===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). | 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.
| 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
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
- attachElements
- createElement
- destroyElement
- detachElements
- getAttachedElements
- getElementAlpha
- getElementAttachedOffsets
- getElementAttachedTo
- getElementByIndex
- getElementByID
- getElementChild
- getElementChildren
- getElementChildrenCount
- getElementCollisionsEnabled
- getElementColShape
- getElementData
- getAllElementData
- hasElementData
- getElementDimension
- getElementHealth
- getElementID
- getElementInterior
- getElementMatrix
- getElementModel
- getElementParent
- getElementPosition
- getElementRotation
- getElementsByType
- getElementsWithinColShape
- getElementsWithinRange
- getElementType
- getElementVelocity
- getLowLODElement
- getRootElement
- isElement
- isElementAttached
- isElementCallPropagationEnabled
- isElementDoubleSided
- isElementFrozen
- isElementInWater
- isElementLowLOD
- isElementWithinColShape
- isElementWithinMarker
- setElementAlpha
- setElementAngularVelocity
- getElementAngularVelocity
- setElementAttachedOffsets
- setElementCallPropagationEnabled
- setElementCollisionsEnabled
- setElementData
- setElementDimension
- setElementDoubleSided
- setElementFrozen
- setElementHealth
- setElementID
- setElementInterior
- setElementModel
- setElementParent
- setElementPosition
- setElementRotation
- setElementVelocity
- setLowLODElement
- getPedContactElement
- getResourceDynamicElementRoot
- getResourceRootElement