Tpw, o seu script funciona(pelo menos eu axo, pois não cheguei a testar), mas o que to querendo dizer, é que mesmo ele funcionando não evita as clonagens pois elas podem ser feitas de outras maneiras principalmente se o server cair e bugs pra derrubar server quase sempre tem, mesmo quando os distros são bons, um simples erro de script de algum npc, monstro, magia, etc, pode derrubar o server.
Um bom exemplo era de alguns servers vim com o monstro Water Elemental bugado e quando alguem o matava o server caia. Claro que aí era só retirar o mosntro do mapa ou arrumar o script dele. Mas pra quem quer ter server sério, clonagem é uma coisa que deve ser levada muito a sério, pois você sempre tem que manter seu server atualizado e a cada atualização vem os novos bugs...E se seus itens vips forem clonados, adeus rendimentos...
Mas indo agora direto ao assunto eu disse q seu script não evitava as clonagens pelo seguinte, exemplo: Eu compro um item vip no seu server e largo ele no chão dentro da minha casa e espero até dar um server save. O meu item vip foi salvo na tabela tile_items(isso se você usar o sistema mysql) ou na tabela house_data(dependendo de como você configurou no config.lua). Até aqui beleza, se o server cair, o item vai estar no chão dentro da minha casa.
Agora digamos que eu vá na minha casa e pegue o meu item vip e coloque ele no meu char e deslogue meu char ou se você estiver utilizando akele seu script, basta eu esperar apenas 30 segundos pra ter certeza que meu item vip foi salvo na tabela player_items. Pronto, é nesse momento que a clonagem pode ser feita, o meu item vip está salvo no meu char, mas ainda está salvo na casa e o item vip vai continuar salvo na casa até que seja feito o próximo server save. Se antes do proximo server save por algum motivo o server cair, ocorre a clonagem, pois o item vai estar salvo no char e na casa ao mesmo tempo... Esse mesmo problema ocorre também com o depot.
Pode também acontecer o inverso, o item vip pode ser perdido sem que o player tenha qualquer culpa nisso. Digamos que eu esteja usando o item vip no meu char e eu vá lá na minha casa e largue o item vip no chão. Com o seu script, em 30 segundos no máximo o meu char terá sido salvo na tabela player_items SEM O ITEM VIP e a tabela tile_items terá que esperar o próximo server save pra atualizar a informação de que o item vip está no chão da casa. Se o server cair antes do server save... já viu neh.. o item já não estava mais na tabela player_items e nem na tabela tile_items... O item vip acaba de sumir do server...
E agora.. como vou comprovar pra você de que meu item simplesmente sumiu... Como você você vai acreditar em mim sendo que GM nenhum pode confiar na palavra de um player, ainda mais envolvendo dinheiro...
O problema está na diferença de tempo em que as coisas são salvas, não poderia ser assim, todos os items e informações deveriam ser salvas ao mesmo tempo. Esse negócio de o player deslogar e nisso o char dele ser salvo, é errado. Mas também se quando ele deslogar o char não salvar, ele acaba perdendo tudo o que ele fez enquanto ele estava logado...
Creio que a solução para isso é modificar esse sistema no distro do ot, fazendo com que tudo seja salvo ao mesmo tempo, e quando um player deslogar, que essa informação fique temporariamente salva na memoria ram utilizada pelo ot ou até mesmo em uma tabela secundária. Mas como eu não entendo nada nessa parte...
Claro que quanto menos o server cair, menos chances tem disso acontecer, mas pra quem quer server sério, não pode deixar que um player possa correr esse risco.
Pode haver melhores soluções, mas por enquanto nenhuma me veio na cabeça.
Desculpe aí pela extensão da minha explicação, e se não entenderam alguma coisa, só perguntar.