Ir para conteúdo
  • Cadastre-se

(Resolvido)Healing


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Alguem pode me ajudar com isso...

Spoiler

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.

Link para o post
Compartilhar em outros sites

@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! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

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 por Tchuka (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Tchuka em data/lib abra o arquivo 050-function.lua e coloque isso dentro:

Spoiler

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:

Spoiler

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 

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@KotZletY Funcionou perfeitamente, só que quando o player morre ele perde o healing... tem como fazer ele não perder ?

Link para o post
Compartilhar em outros sites

@Tchuka tem, mas agora tenho compromisso, no retorno faço um onLogin que siga o script até termina! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@Tchuka pronto, modifiquei meu comentário do script, basta segui como está lá que é sucesso! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

@KotZletY Eu não consigo acessar mais essa conta @Tchuka essa aqui é minha antiga conta... Enfim, o scripts ainda não fica com o healing continuo quando reloga ou morre, e não aparece nenhum erro na distro, uso a 0.4 rev3777.19 não sei o que acontece :/

Link para o post
Compartilhar em outros sites

@Tchukixx desculpe, erro de digitação. Kkkkk, dei um ctrl+c e v numa parte que já tinha feito e não inverti o sinal. Hahaha! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
  • 3 months later...

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo