PL/DestroyElement: Difference between revisions
No edit summary |
No edit summary |
||
(6 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
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 [[Player|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. | 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 [[Player|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== | |||
<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.
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