Ir para conteúdo

Healing Ground


noobinhu

Posts Recomendados

Este script faz com que você ao estar em um SQM do itemid 457, comece a recuperar seu HP e Mana automaticamente até ficarem full, pode ser configurado o quanto vai recuperar de pouco em pouco e também o delay do heal.

 

Bom, vamos ao script, em movements.xml adicione:

 

<!-- Heal System -->

<movevent event="StepIn" itemid="457" script="healing.lua"/>

<movevent event="StepOut" itemid="457" script="healing.lua"/>

 

Faça um arquivo em movements/scripts com nome de healing.lua contendo:

 

-- configs

healpower = math.random(200,300)

manapower = math.random(100,200)

delaytoheal = 0.5 -- seconds

message = "heal me!"

-- end configs

 

function onStepIn(cid, item, pos)

if isPlayer(cid) then

playerpos = getCreaturePosition(cid)

parameters = {cid=cid,playerpos=playerpos}

addEvent(heal, 0, parameters)

end

end

 

 

function heal(parameters)

-- playerposition = getCreaturePosition(parameters.cid)

 

-- if (playerposition == parameters.playerpos) then

doSendMagicEffect(parameters.playerpos,12)

doCreatureAddHealth(parameters.cid, healpower)

doPlayerAddMana(parameters.cid, manapower)

doSendAnimatedText(playerpos, message, 5)

healEvent = addEvent(heal, 1000*delaytoheal, parameters)

-- end

end

 

 

function onStepOut(cid, item, pos)

stopEvent(healEvent)

end

 

Pronto, seu sistema está pronto.

Para evitar um bug quando alguém morrer nesses tiles, adicione a seguinte linha no começo do arquivo creaturescripts/scripts/playerdeath.lua:

stopEvent(healEvent)

 

Ficando algo assim:

dofile("./config.lua")

 

function onDeath(cid, corpse, killer)

stopEvent(healEvent)

doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You are dead.")

if deathListEnabled == "yes" then

if sqlType == "mysql" then

env = assert(luasql.mysql())

con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))

else -- sqlite

env = assert(luasql.sqlite3())

con = assert(env:connect(sqliteDatabase))

end

... (continuação do arquivo)

 

Screenshoot do resultado:

healinggroundho0.png

 

Façam bom proveito deste script,

Até mais.

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 1 month later...

To com uma duvida, se alguem puder me ajudar, fiz tudo direitinho, funciono, ta healando, so que se vc fica entrando e saindo bem rapido, ele buga, e eele fica aparecendo o Heal Me! toda hora e nao para, causando muito lag no ot.

Se puder me ajuda e tal =D

estarei mt grato =P

 

A quase esqueci, script sensacional, mais pra variar, comigo nunca da certo ne :dry2:

Link para o comentário
Compartilhar em outros sites

Testa tirando isto do script:

 

function heal(parameters)

doSendMagicEffect(parameters.playerpos,12)

doCreatureAddHealth(parameters.cid, healpower)

doPlayerAddMana(parameters.cid, manapower)

doSendAnimatedText(playerpos, message, 5)

healEvent = addEvent(heal, 1000*delaytoheal, parameters)

end

 

Substitui por isso:

 

function heal(parameters)

if (parameters.cid ~= nil) then

doSendMagicEffect(parameters.playerpos,12)

doCreatureAddHealth(parameters.cid, healpower)

doPlayerAddMana(parameters.cid, manapower)

doSendAnimatedText(playerpos, message, 5)

healEvent = addEvent(heal, 1000*delaytoheal, parameters)

end

end

Link para o comentário
Compartilhar em outros sites

Pronto, arrumei.

 

Troque a function heal inteira por:

 

function heal(parameters)

playerposition = getCreaturePosition(parameters.cid)

 

if (playerposition == parameters.playerpos) then

doSendMagicEffect(parameters.playerpos,12)

doCreatureAddHealth(parameters.cid, healpower)

doPlayerAddMana(parameters.cid, manapower)

doSendAnimatedText(playerpos, message, 5)

healEvent = addEvent(heal, 1000*delaytoheal, parameters)

end

end

 

Caso tenha dúvidas, olhe o tópico e veja como ficou o script inteiro.

Editado por noobinhu
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...