KO
suporte scripts

[Resolvido] Potion que cura por segundo

Por Koring4, 03 de ago. de 2017 em Resolvidos

10
1.9k
Koring4K
03 de agosto de 2017 às 19:03

Olá, gostaria de por fazer um potion que cura por segundo (Exemplo: a potion dura 30 segundos e cada 2 segundos vai cura)

 

eu consegui fazer isso mas não sei por pra cura a cada 2 segundos por durante 30 segundos

 

Spoiler
local config = {    storage = 19030, --use empty storage    exhaust = 35 --Exhaust is in seconds 600 equals 10min} function onUse(cid, item, fromPos, itemEx, toPos)    if (getPlayerStorageValue(cid, config.storage) <= os.time()) then        if (item.itemid == 7440) then            doCreatureAddHealth(cid, 12*getCreatureMaxHealth(cid)/100)            doPlayerAddMana(cid, 12*getPlayerMaxMana(cid)/100)            doCreatureSay(cid, "Muahaha!",TALKTYPE_ORANGE_1)            doSendMagicEffect(getPlayerPosition(cid),14)			doPlayerAddSoul(cid,-1)            doRemoveItem(item.uid, 1)            setPlayerStorageValue(cid, config.storage, os.time() + config.exhaust)        end	endend

 

 

PoccnnP
04 de agosto de 2017 às 09:44

No meu servidor eu fiz ssse sistema.

Citar

local EMPTY_POTION,ITEM_POOL,LVL = 7635,2016,80 
local condition = createConditionObject(CONDITION_REGENERATION) 
setConditionParam(condition, CONDITION_PARAM_SUBID, 1) 
setConditionParam(condition, CONDITION_PARAM_BUFF, true) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 10 * 1000) -- tempo 10 segundos
setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, math.random(7,9)) -- quantidade de vida ganha por segundo
setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 125) 

 

function onUse(cid, item, fromPosition, itemEx, toPosition) 
   if(isPlayer(itemEx.uid) == true and itemEx.uid ~= cid)then 
      return true,doPlayerSendCancel(cid,'Essa pocao so pode ser consumido por tu mesmo.') 
   elseif((not(isKnight(itemEx.uid)) or getPlayerLevel(itemEx.uid) < LVL) and 
      getPlayerCustomFlagValue(itemEx.uid, PlayerCustomFlag_GamemasterPrivileges) == FALSE) then 
   return true,doCreatureSay(itemEx.uid, "esse pote so pode ser consumido por "..getVocationNameById(4).." e seu respectivo superior de level "..LVL.." ou mais.", TALKTYPE_ORANGE_1) 
   elseif(isPlayer(itemEx.uid) == FALSE)then 
   local splash = doCreateItem(ITEM_POOL,2,toPosition) 
      doDecayItem(splash) 
      doTransformItem(item.uid, EMPTY_POTION) 
      return true 
   end 
   doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) 
   doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) 
   if(getConfigInfo('useEventPotions'))then doAddCondition(cid, condition) else doCreatureAddHealth(cid,math.random(450,550)) end 
   if(getConfigInfo('removepotions'))then doRemoveItem(item.uid, 1) else doTransformItem(item.uid,EMPTY_POTION)end 
   return true 
end 

 

Adicione ao seu config.lua essa variável 

Citar

useEventPotions = true

 

LeoxtibiaL
04 de agosto de 2017 às 10:51
Melhor resposta

Coloquei para curar o life e a mana, como tinha no seu script, mas não testei. 

 

Em actions/scripts:

 

potionHpMp.lua



 

Spoiler
local t = {duration = 20, -- tempo de duração em segundosinterval = 2, -- intervalo para aumentar X hp/mphp = 30,  -- quanto vai aumentar de hpmp = 20 -- quanto vai aumentar de mp}function onUse(cid, item, fromPosition, itemEx, toPosition)    if(not isPlayer(itemEx.uid)) then        return false    end    doRemoveItem(item.uid, 1)    doCreatureSay(cid, "Muahaha!", TALKTYPE_ORANGE_1, cid)    setPlayerStorageValue(cid, 14421, os.time() + t.duration)    AddHpMp(cid)endfunction AddHpMp(cid)    if isCreature(cid) and (getPlayerStorageValue(cid, 14421) - os.time() >= 0) then        doCreatureAddHealth(cid, t.hp)        doCreatureAddMana(cid, t.mp)    end        addEvent(AddHpMp, t.interval*1000, cid)end

 

 

 

Em actions.xml:  <action itemid="ID_DO_ITEM" script="potionHpMp.lua" />

 

 

Koring4K
04 de agosto de 2017 às 11:13

@Leoxtibia  testei aqui, não da pra usar o item no jogo, não mostra nenhuma mensagem de erro.

LeoxtibiaL
04 de agosto de 2017 às 11:29
10 minutos atrás, Koring4 disse:

@Leoxtibia  testei aqui, não da pra usar o item no jogo, não mostra nenhuma mensagem de erro.

 

@Koring4 Qual item que você tá usando? Achei que fosse algo como um potion mesmo que você teria que usar no player. Se não for, apague essa parte:

 

    if(not isPlayer(itemEx.uid)) then
        return false
    end

 

 

Koring4K
04 de agosto de 2017 às 11:47

@Leoxtibia deu esse erro

Spoiler

blood1.jpg.cac6bb38096fe7330e365c5819d52c3d.jpg

 

blood1.jpg.cac6bb38096fe7330e365c5819d52c3d.jpg

LeoxtibiaL
04 de agosto de 2017 às 12:09

Substitua essa linha:

 

doCreatureAddMana(cid, t.mp)

 

por essa:

 

doPlayerAddMana(cid, t.mp)

Koring4K
04 de agosto de 2017 às 12:22

@Leoxtibia Funciono valeu mesmo rep+ pra ti.  (como faz pra dar rep+?)

@Poccnn não consegui usa o teu mas valeu pela ajuda.

Editado Agosto 4 por Koring4

LeoxtibiaL
04 de agosto de 2017 às 12:34
12 minutos atrás, Koring4 disse:

@Leoxtibia Funciono valeu mesmo rep+ pra ti.  (como faz pra dar rep+?)

@Poccnn não consegui usa o teu mas valeu pela ajuda.

 

@Koring4 É só clicar ali na seta verde pra cima

Editado Agosto 4 por Leoxtibia

PoccnnP
04 de agosto de 2017 às 13:20

A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.