PL/DestroyElement: Difference between revisions
No edit summary |
No edit summary |
||
Line 64: | Line 64: | ||
destroyElement ( source ) | destroyElement ( source ) | ||
end | 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> | </syntaxhighlight> |
Revision as of 15:57, 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