Powyższy kod powoduje, że skrypt głupieje - zero działania, nawet funkcje obok przestają działać.
Próbuję dociec, w czym rzecz. Wywalam całego for'a i zostaje samo:
local t = {
"tools" = true,
"tools2" = true,
"tools3" = true,
"tools4" = true
}
-- plus poniższa linijka na koniec, żebym wiedział czy wykonało
alife():create("new_item",db.actor:position(),0,0,0)
Nic, nie tworzy itema. Coś mu bardzo nie pasuje, bo nawet funkcje obok przestają działać. Dopiero, kiedy zrobię tak:
local t = {
["tools"] = true,
["tools2"] = true,
["tools3"] = true,
["tools4"] = true
}
-- plus poniższa linijka na koniec, żebym wiedział czy wykonało
alife():create("new_item",db.actor:position(),0,0,0)
to tworzy itema.
No to wklejam wyciętego for'a - i znowu schody.
Mamy zatem całość taką:
local t = {
["tools"] = true,
["tools2"] = true,
["tools3"] = true,
["tools4"] = true
}
for i = 4, 1, -1 do
if i > 1 then
for index = 0, db.actor:object_count() - 1 do
local section = db.actor:object(index):section()
if t[section] then
local getrid = db.actor:object(index)
alife():release(alife():object(getrid:id()), true)
end
end
break
else
if db.actor:object("tools") then
local getrid = (db.actor:object("tools"))
alife():release(alife():object(getrid:id()), true)
end
end
alife():create("new_item",db.actor:position(),0,0,0)
end
Testuję. Efekt: z ekwipunku znika wszystko, new_item się nie tworzy. Wszystko czyli wszystkie toolsy, dowolna ich ilość dowolnego typu - ile tylko mam toolsów któregokolwiek rodzaju przy sobie, wszystkie idą w hugo.
Trocha już głupieję od tego. Co tu trzeba dalej zmienić? Docelowo chcę, żeby zabrało toolsy z najwyższym numerem, zastąpiło je toolsami z niższym o jeden numerem (tools4->tools3, tools3->tools2 itd.) i zespawnowało new_item.
EDIT:
wypieprzyłem przedostatnią linijkę (tą z alife create) i zastąpiłem break'a tym:
return alife():create("new_item",db.actor:position(),0,0,0)
new_item już się spawnuje, toolsy oczywiście bez zmian.
EDIT2:
teraz tą linijkę zastępującą poprzedniego break'a przerzucam o dwie wyżej, tak, że jest zaraz za alife release
efekt: usuwa toolsa, tworzy new_item. Problem jest tylko taki: z tak skonstruowanym skryptem, jeśli posiadam w ekwipunku tools, tools2, tools3, tools4, to wybierze te, które pierwsze były do ekwipunku wrzucone, leci po object indexie, pierwszy chronologicznie się zgadza, no to sru go do piachu i kończymy funkcję. A jednak chodzi o to, żeby zaczął od "4" w nazwie itema i leciał w dół, aż do beznumerowego odpowiednika "1".
Też nie bardzo wiem, jak się zabrać za zespawnowanie toolsa z niższym numerem...