Postado Fevereiro 8, 2019 6 anos Se essa for a seção errada, desculpa. Bom, criei uns itens vips que dão atributo para os players, mas esses itens possuem tempo, e somem quando o tempo acaba. (decayTo O). Não usei as funções onEquipe e onDeEquipe por duas razões: 1. Não tenho IDs com sprites repetidos para esses itens e não quero mexer no meu OTB pq já deu ruim outras vezes. 2. A intenção era que o tempo continuasse contando mesmo com o item dentro da mochila, ou seja, não adianta desequipar o item que O Tempo Não Para (já dizia Cazuza, rsrs). Até aí tudo bem. Mas acabei descobrindo um bug... se o player guardar o item no depot e depois deslogar, quando ele relogar e pegar o item do depot outra vez, o tempo buga e fica parado. E só volta a ser contato caso ele relogue com o item no char outra vez. Ou seja, se o cara for malando, ele fica com o item pra sempre, pq basta ficar guardando ele no dp sempre que for deslogar. Preciso resolver isso de alguma forma, aceito sugestões. Alguém poderia me ajudar? PS.: Uso TFS 1.3 Editado Fevereiro 8, 2019 6 anos por jefersonzc (veja o histórico de edições)
Postado Março 11, 2019 6 anos Autor Depois de muito bater cabeça eu consegui achar uma solução quase perfeita para o problema. Então vou compartilhar aqui a solução, 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. Editado Março 11, 2019 6 anos por jefersonzc (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.