PL/DestroyElement: Difference between revisions
No edit summary |
No edit summary |
||
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> |
Revision as of 15:53, 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