Depois de muito bater cabeça eu consegui achar uma solução quase perfeita para o problema. Então vou compartilhar aqui, vai que ajuda outros...
Bom, primeiramente em items.xml precisamos configurar as skills do item, o tempo, etc. Como a ideia é que o item desapareça depois de algum tempo, vou por um decayTo 0.
<item id="25971" article="a" name="Chopper of Corruptedheart">
<attribute key="weight" value="5000" />
<attribute key="defense" value="35" />
<attribute key="attack" value="56" />
<attribute key="skillAxe" value="3" />
<attribute key="weaponType" value="axe" />
<attribute key="decayTo" value="0" /> <!--faz o item sumir depois que seu tempo expira-->
<attribute key="duration" value="360000" />
<attribute key="showduration" value="1" />
<attribute key="slotType" value="two-handed" />
</item>
Reparem que não configurei o transformEquipTo e o transformDeEquipTo, pois meu item não tem duas sprites (como no caso dos rings e da soft)
Agora em movements.xml eu preciso configurar quem pode ou não usar o item.
<movevent event="Equip" itemid="25971" slot="hand" level="0" function="onEquipItem">
<vocation name="Knight" />
<vocation name="Elite Knight" showInDescription="0" />
</movevent>
<movevent event="DeEquip" itemid="25971" slot="hand" function="onDeEquipItem" /><
Por se tratar de uma arma, vou precisar configurar tbm o weapons.xml (se fosse um helmet, um ring ou algo do gênero, eu poderia pular essa etapa).
<melee id="25971" unproperly="1">
<vocation name="Knight" />
<vocation name="Elite Knight" showInDescription="0" />
</melee>
Blz, até aqui nada de novo, tudo isso a gente já precisa fazer quando vai criar qualquer item novo, certo?
Mas é agora que vem o pulo do gato (o gato que no caso sou eu ?, rsrs). Em data/events/scripts/events.xml vamos habilitar o onMoveItem.
<event class="Player" method="onMoveItem" enabled="1" />
E em data/events/scripts/player.lua, vamos configurar a função onMoveItens.
function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder)
local itensVIP = {25187,25175,25185,25429,25946,25915,25971} --todos os itens que eu preciso configurar
for i = 1, #itensVIP do
if item.itemid == itensVIP[i] then
item:decay() --toda vez que um item for movido, ele checa se faz parte dos itensVIP e starta o decay.
end
end
return true
end
Resumidamente o resultado vai ser:
1. O tempo do item não para de decair, independente dele estar no slot, na bp, na casa, no dp, etc. Ok
2. Com o char deslogado, o tempo para de contar. Ok
3. Se o player deixar o item no DP e relogar o char, o tempo do item fica pausa, mas volta cair quando ele der move no item. Ok
4. O meu site possui um sistema de compra de itens que adiciona tal item no char. Quando o player compra o item que configuramos, o tempo dele vem pausado e se tal item cair dentro do seu respectivo slot (exemplo: o char compra uma sword e ele nao tem nenhuma sword na mão, logo, o a sword vai cair direto no slot dela), o tempo permanecerá pausado até que o char mova essa sword para a bp ou relogue. Bom, não era exatamente isso que eu queria, mas acho que posso considerar esse um bug pequeno e que não trará nenhum efeito colateral negativo, posto que cedo ou tarde esse char terá que relogar, no máximo ele irá conseguir umas horas há mais com o item, então, acho que ok.