NO

Healing Ground

Por noobinhu, 26 de nov. de 2008 em Actions e Talkactions

script
14
2.9k
noobinhuN
26 de novembro de 2008 às 07:16

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 Janeiro 26 por noobinhu

MovackM
26 de novembro de 2008 às 09:22

Bacana, pra colocar em alguma quest fica rox, Vlw.

Muita criatividade em todos seus scripts xP

flwz

28 de novembro de 2008 às 00:31

Muito bom cara, parabens.

Você conseguiria fazer um para velocidade de ataque?

 

 

Abraços...

noobinhuN
28 de novembro de 2008 às 08:01

Uhm, eu estava fazendo uma spell para aumentar status, talvez eu tente depois, mas não tenho certeza. :)

alissonlinnekerA
28 de novembro de 2008 às 11:09

Hum bem legal....isso vai ser bom no meu ot, vou colocar em área premium

=D

1 mês depois...
CahueC
13 de dezembro de 2008 às 21:53

Show, vou por na área vip do meu ot [2]

 

tava catando isso.

1 mês depois...
luisfaoL
25 de janeiro de 2009 às 23:30

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:

noobinhuN
26 de janeiro de 2009 às 05:41

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

luisfaoL
26 de janeiro de 2009 às 18:21

Num deu =\

nao teria que por nenhum return nao?

mais msm assim vlw :p

vou continuar tentando..

se tiver otra ideia de como resolver, postai plz *.*

noobinhuN
26 de janeiro de 2009 às 21:29

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 Janeiro 26 por noobinhu

luisfaoL
26 de janeiro de 2009 às 21:41

N DEEEEU

MANOOO DO CEEEU QUE ZIKAAA =\

e sempre cmg mano :/

 

agora nem healando ta mais...

viro um tile normal =\

 

que saco viu ='(

noobinhuN
26 de janeiro de 2009 às 21:44

Opa, arrumei, testa denovo ae, faltava um parameters.playerpos...

luisfaoL
26 de janeiro de 2009 às 21:59

Vish, a zika me persegue, agora fala assim, Sorry, not possible.

 

=\

SkybladeS
27 de janeiro de 2009 às 00:34

uAHuaHauhAUH

tah foda ai em noobinhoo

uauHaUuahuh

 

 

vc eh DeiZ!!