Ir para conteúdo

[Moveevent] Tiles Para Hunt


Demonbholder

Posts Recomendados

Olá pessoal do XTibia! Venho aqui, mais uma vez, apresentar um script desenvolvido por min e pelo Vodkart. O script consiste em um sistema de tiles (pisos) com action ids onde eles adicionam uma porcentagem de vida e mana para o jogador, e ainda pode ser usado como armadilha, podendo ser usado em diversas quests.

 

Segue o script e a explicação deste:

 

Como não havia as funções necessárias para o desenvolvimento do script, estas foram criadas no próprio e estão funcionando perfeitamente. Para adicionar o script, vá em data/movements/scripts, crie um arquivo .lua e cole isto dentro dele:

 

function onStepIn(cid, item, pos)

 

if (item.actionid == 60160) then

local storage = (3600*24 + os.time()) -- Tempo, no caso, 1 dia.

if getPlayerStorageValue(cid, 13090) - os.time() <= 0 then

local sec = 20 -- Até quanto segundos vai adicionar.

doFillPlayer(cid,sec)

setPlayerStorageValue(cid, 13090, storage)

doSendAnimatedText(getPlayerPosition(cid), "Aaaah...", TEXTCOLOR_ORANGE)

return TRUE

end

 

elseif (item.actionid == 60161) then

local sec = 10 -- Até quanto segundos vai remover.

doTrapPlayer(cid, sec)

doSendAnimatedText(getPlayerPosition(cid), "Armadilha!", TEXTCOLOR_ORANGE)

doSendMagicEffect(getPlayerPosition(cid), 11)

end

return TRUE

end

 

function doFillPlayer(cid, time)

 

if isCreature(cid) then

local percent = 2/10 -- No caso, 20%.

doCreatureAddHealth(cid, getCreatureMaxHealth(cid)*percent)

doCreatureAddMana(cid, getCreatureMaxMana(cid)*percent)

if time ~= 1 then

addEvent(doFillPlayer, 1000, cid, time - 1)

end

return TRUE

end

return TRUE

end

 

function doTrapPlayer(cid, time)

 

if isCreature(cid) then

local hp,mana = -10,-10 -- Quantidade de vida/mana a serem removidas por segundo.

doCreatureAddMana(cid, mana)

doCreatureAddHealth(cid, hp)

if time ~= 1 and getCreatureHealth(cid) > 0 then

addEvent(doTrapPlayer, 1000, cid, time - 1)

end

return TRUE

end

return TRUE

end

 

No script acima, você irá escolher dois action id, um para o script de cura, e outro para as armadilhas. No caso, eu escolhi o action id 60160 para a cura, e o action id 60161 para as armadilhas.

 

Azul: Action id usado nos tiles, lembrando que o action id do tile de cura, e o action id do tile de armadilha deve ser diferente.

Vermelho: Tempo que vai ficar adicionando/removendo vida e mana do jogador.

Verde: Quanto que vai ser adicionado de vida e mana ao jogador em porcentagem, ou seja, vai adicionar tanto por cento da vida máxima do jogador.

 

1/10 = 10%
2/10 = 20%
3/10 = 30%
4/10 = 40%
5/10 = 50%
6/10 = 60%
7/10 = 70%
8/10 = 80%
9/10 = 90%
1 = 100%

 

Laranja: Quanto que vai remover de vida e mana do jogador (desta vez, não em porcentagem!).

Marrom: Este é o tempo necessário para o jogador poder usar o tile e recuperar vida; pode ser configurado com a seguinte conta:

 

Numero_de_Segundos Multiplicado_por Tantas_Vezes

Exemplo: 3600*24 -- No caso, são 3600 segundo, o equivalente a uma hora, multiplicado por 24, resultando em um dia.

 

Se você esta por dentro das novidades do forum, certamente já adicionou o script do Vodkart, que se encontra neste link:

 

Script do Vodkart

 

Se já adicionou e seguiu todos os passos exatamente como esta dito lá, o script se torna menor, menos complexo e mais configurável, então pode usar, ao invés do script acima, este outro:

 

function onStepIn(cid, item, pos)

 

if (item.actionid == 60160) then

local storage = (3600*24 + os.time()) -- Tempo, no caso, 1 dia.

local sec = 20 -- Até quantos segundos vai adicionar.

local percent = 0.2 -- Porcentagem de vida/mana a serem adicionadas por segudo, no caso, 20%.

if getPlayerStorageValue(cid, 13090) - os.time() <= 0 then

doManaSecond(cid,(getCreatureMaxMana(cid)*percent), sec)

doHealthSecond(cid,(getCreatureMaxHealth(cid)*percent), sec)

setPlayerStorageValue(cid, 13090, storage)

doSendAnimatedText(getPlayerPosition(cid), "Aaaah...", TEXTCOLOR_ORANGE)

return TRUE

end

elseif (item.actionid == 60161) then

local sec = 10 -- Até quantos segundos vai remover.

local hp,mana = -10,-10 -- Quantidade de vida/mana a serem removidas por segundo,

doManaSecond(cid, mana, sec)

doHealthSecond(cid, hp, sec)

doSendAnimatedText(getPlayerPosition(cid), "Armadilha!", TEXTCOLOR_ORANGE)

doSendMagicEffect(getPlayerPosition(cid), 11)

end

return TRUE

end

 

A unica diferença é que se você já adicionou as funções do Vodkart, poderá contar com elas e usar o script acima, porém, os dois estão funcionando igualmente.

 

Após ter adicionado um dos scripts, vá em data/movements, abra o arquivo movements.xml e cole esta tag em algum lugar dele:

 

<movevent type="StepIn" actionid="60160;60161" event="script" value="funcao.lua"/>

 

Azul: Action ids usados nos tiles.

Cinza: Nome do arquivo .lua criado para adicionar um dos scripts acima.

 

Espero que gostem, e comentem, até a próxima!

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

  • 1 month later...
  • 1 month later...
  • 2 months later...
×
×
  • Criar Novo...