é porque o unique ID de itens não são estáticos, eles variam...
imagine se o servidor fosse atribuir um valor diferente pra cada chão, grama, árvore, motanha, itens dos players, itens nas houses, itens nos depot dos players, corpses dos monstros que morrem, loot desses monstros, itens que são agrupáveis podem ser divididos em 100 itens diferentes...
resumindo, é muito item pra atribuir estaticamente um id, então eles são atribuídos dinamicamente, o servidor gera um uid pro item no memento requisitado e esse uid só dura um instante, e depois esse id é destruído da memória.
é possível fazer UID estáticos, mas não é viável, já que itens contáveis podem ser separados e itens estão sumindo o tempo todo... então não rola
Outro erro associável ao seu script, é que o itemEx.uid pode ser um monstro, player etc... então ia dar erro se usasse a função de transformar item sendo que o alvo seria uma criatura
eu tinha feito um post parecido com esse antes, se quiser entender mais sobre o assunto:
http://www.xtibia.com/forum/topic/193795-duvida-sobre-depot/page__view__findpost__p__1336914
seu script vai funcionar dessa forma:
function onUse(cid, item, frompos, item2, topos)
local arvores = {2706, 2701}
if isCreature(item2.uid) or (item2.itemid or 0) <= 1 then
return doPlayerSendCancel(cid, "Use somente em itens.")
end
local function doTransformToTree(itemId, itemPos, trees)
local i = getTileItemById(itemPos, itemId).uid
if i > 0 then
doTransformItem(i, trees[math.random(#trees)])
end
end
addEvent(doTransformToTree, 3 * 1000, item2.itemid, topos, arvores)
return true
end