Przykładowo pobieramy dźwignię z pozycji X Y Z, Stackpos. Naciskając przycisk w grze, skrypt sprawdza stan dźwigni. Dajmy na to, że dźwignia leży na ziemi. Skrypt pobiera ze stackpos 1, bo tyle wynosi. Ok, działa, ale teraz postawmy potwora na miejsce dźwigni i uderzmy go. Co się stało? Pojawiło się pole krwi! Jak się okazuje stackpos dźwigni zmienił się z 1 na 2! W tym momencie cały skrypt nam nawala, dopóki krew nie zniknie. A jeśli mamy doTransformItem? Łoo, wówczas może się nieźle namieszać. Takich sytuacji może być więcej, ale można temu łatwo zapobiec.
W związku z tym stworzyłem taką prostą funkcję, która wyszukuje przedmiot poprzez nazwę, lub ID:
Kod PHP:
function findItem(tablica, param, deep)
if tablica == nil or param == nil then
print("Error, the parameter is not specified!")
return false
end
local search = 3
if deep > 0 then
search = deep
end
for i = 0, search do -- glebokosc
local thing = getThingFromPos( { x = tablica.x, y = tablica.y, z = tablica.z, stackpos = i} )
if isNumber(param) then
if thing.itemid == param then
return thing
end
else
if getItemName(thing.uid) == param then
return thing
end
end
end
return 0
end
Kod:
local switch = findItem( { x = 222, y = 333, z = 444 }, "switch", 253 )
Zakładki