Não sei se vai ajudar ou como é escrito o sistema de unique de vocês, mas vou postar aqui como é feito o do meu servidor (skyfall) Obs: muitas funções é só do skyfall mas da para ter uma ideia boa.
if(isUniqueItem(item) and topos.y ~= 8) then --Check if we can drop unique item if(frompos.x == 65535) then local toPlayer = getItemContainer(cid, topos) if(toPlayer ~= 0 and toPlayer and topos.y > 10 and topos.x == 65535) then toPlayer = getHoldingPlayer(toPlayer) end if(toPlayer ~= cid) then if(todepo == false or (isHoldingPokeball(item) and getPlayerFreeCap(cid) >= 5)) then return false end end end --Check if we can dress pokeball but if dressed is unique elseif(topos.y == 8 and (ball.itemid ~= 0 and isUniqueItem(ball))) then local fromItem = getItemContainer(cid, frompos) local fromPlayer = 0 if(fromItem ~= 0) then fromPlayer = getHoldingPlayer(fromItem) end if(fromPlayer == 0 and fromdepo == false) then return false end --check if we can drop last pokeball elseif(isHoldingPokeball(item)) then local free = getPlayerFreeCap(cid) local toPlayer = getItemContainer(cid, topos) if(toPlayer ~= 0 and toPlayer and topos.y > 10 and topos.x == 65535) then toPlayer = getHoldingPlayer(toPlayer) end local fromItem = getItemContainer(cid, frompos) local fromPlayer = 0 if(fromItem ~= 0 and fromItem and frompos.y ~= 8) then fromPlayer = getHoldingPlayer(fromItem) elseif(frompos.y == 8) then fromPlayer = cid end if(fromPlayer ~= 0 and free >= 5 and toPlayer ~= cid) then if(topos.y == 8) then if(fromPlayer ~= cid and fromdepo == false) then return false end else return false end end end