Postado Maio 16, 2017 8 anos Alguem pode me ajudar com isso... Mostrar conteúdo oculto function onUse(cid, item, fromPosition, itemEx, toPosition) local hours, storage = 2,789159 if getPlayerStorageValue(cid, storage) >= os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Desculpe, mas o item ainda está ativo!") return true end doSendAnimatedText(getPlayerPosition(cid), "Amethyst", TEXTCOLOR_PURPLE) doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), math.random(28,28)) setPlayerStorageValue(cid, storage, os.time()+hours*3600) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Agora você estara healando 2% de sua mana e life por "..hours.." horas, não podendo usar outra Amethyst durante esse tempo.") return true end Eu queria que ao dar use no item o player ficasse regenerando 2% de sua mana e life maxima por 2 horas até vencer o tempo da storage. com intervalos de 2 segundos no heal.
Postado Maio 17, 2017 8 anos @Tchuka você postou 3x tópicos com o mesmo assunto e ainda comentar up para subir o tópico, ambas ações são contra as regras, leia as regras: 2.7 - Dar "UP" para subir tópicos: É totalmente proibido comentar "UP" para subir tópicos, caso você tenha a intenção você pode utilizar nosso recurso de subir tópicos e ele automaticamente irá te colocar um tempo de espera de 24 horas para realizar a função novamente. Caso o membro realize tal ato isso pode ser interpretado como flood. 2.5 - Evite posts e tópicos duplos: Não poste duas ou mais mensagens seguidas no mesmo tópico, a não ser que seja muito necessário. Se, por exemplo, você deseja apenas acrescentar algo que esqueceu de dizer no seu post anterior, edite-o (através do botão "Editar") e altere o que precisa. Posts duplos são permitidos somente se você precisa dizer algo totalmente novo e ninguém enviou outra mensagem depois da sua, durante as últimas horas. Também é altamente proibido a criação de dois ou mais tópicos idênticos. Peço que leia todas as regras do TibiaKing, e evite fazer isso novamente, próximas inflações poderão ser consideradas foods, por tanto, evite fazer e seja paciente com seu pedido. Em relação ao seu pedido, qual a versão da sua distro ? Tem certeza que gostaria desse action em 1 em 1 segundo ? Imagine vários players usando um item que vai healar ele por 2 horas, imagine seu servidor healando todos durante 1 segundo, e checando a cada 1 segundo se ele tem a storage ? Imagine o lag, a sobre-carga que seu servidor irá enfrentar ? Mas isso não desrespeito a mim, afinal você pode ter um "super dedicado para tal situação". Um item, que ao player clicar irá ficar healando ele a cada 1 segundo, uma certa quantia de hp, durante duas horas, ok ? Tenha em mente o estrago que seu servidor irá sofrer, com vários players se healando durante 1 segundo por 2 horas, sem contar os checks que também serão durante 1 segundo, afinal para que o heal aconteça, é necessário ver se o player tem a storage. Em fim, sendo isso mesmo, irei fazer seu action!
Postado Maio 17, 2017 8 anos Autor Ok me desculpe pelos up... Então eu queria que assim que o player usasse o item ele iria obter uma storage por 2 horas... e esse player por duas horas ira ficar healando 2% de hp e mana. O item que vai dar a storage vai sumir... o que vai ficar é o healing durante 2 horas, creio que não ira lagar se só pouquíssimos players iram conseguir esse item. Editado Maio 17, 2017 8 anos por Tchuka (veja o histórico de edições)
Postado Maio 17, 2017 8 anos Solução @Tchuka em data/lib abra o arquivo 050-function.lua e coloque isso dentro: Mostrar conteúdo oculto RegenPercent = { storage = 12223, -- storage do check mp = 2, -- porcentagem que vai ganhar de mana por segundo hp = 2, -- porcentagem que vai ganhar em hp por segundo secs = 1, -- em quanto em quanto segundos que vai healar hours = 1 -- quantas horas irá ficar healando } function LoopRegen(uid) if isPlayer(uid) then if getPlayerStorageValue(uid, RegenPercent.storage) > os.time() then doCreatureAddMana(uid, getCreatureMaxMana(uid)/100*RegenPercent.mp) doCreatureAddHealth(uid, getCreatureMaxHealth(uid)/100*RegenPercent.hp) addEvent(function() LoopRegen(uid) end, RegenPercent.secs*1000) end end end Fiz isso /\ apenas para chamar de forma global, e não precisar criar duas tabelas em callbacks diferentes, assim quando você alterar algo, será para ambos. Haushsa A script action mude para essa: Mostrar conteúdo oculto function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, RegenPercent.storage) < os.time() then doCreatureSetStorage(cid, RegenPercent.storage, os.time()+RegenPercent.hours*60*60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora está com heal de por "..RegenPercent.hours.." hora"..(RegenPercent.hours == 1 and "." or "s." )) LoopRegen(cid) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você já está com buff.") end return true end Tag xml do action: <action itemid="00000" event="script" value="NomeDoArquivo.lua"/> Coloque o nome do arquivo, e o id do item. Abra seu login.lua e logo após a função onLogin, adicione o seguinte: if getPlayerStorageValue(cid, RegenPercent.storage) > os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você agora está com heal de por "..RegenPercent.hours.." hora"..(RegenPercent.hours == 1 and "." or "s." )) LoopRegen(cid) end
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.