Ir para conteúdo

[Creaturescripts] Resurrection


Valentine

Posts Recomendados

Explicação:

 

O Player tem um Item na Bag, que ao ser usado salva como Respawn a posição em que ele se encontra, o Item desaparece.

Agora, o Player tem outro Item diferente na Bag, este não pode ser usado. Quando o Player morrer, será imediatamente teleportado para a posição de Respawn.

Caso o Player tenha salvado a posição, e não tenha o segundo Item (que faz renascer), será teleportado para uma posição fixa (o real Templo).

 

 

O Script:

 

Será dividido em duas partes, o CreatureScript, que vai verificar se o Player possui o Item, caso verdadeiro, ressucitará:

 

local item_id = 999
local count = 1
local temple = {x=999, y=999, z=9}

function onDeath(cid, corpse, deathList)

if isPlayer(cid) then
	if getPlayerItemCount(cid,item_id) >= 1 then
		if doPlayerRemoveItem(cid,item_id,count) then
			doSendMagicEffect(getPlayerPosition(cid), 10)
			doPlayerSendTextMessage(cid, 23, "Reborn from the ashes.")
		end
	else
		doPlayerSetMasterPos(cid, temple)
 doTeleportThing(cid,c)
		doSendMagicEffect(getPlayerPosition(cid), 10)
	end
end
end

 

E a Tag:

 

<event type="death" name="Resurrection" event="script" value="resurrection.lua">

 

 

E a segunda parte, Action que salva a posição do Player atravéz de um Item:

 

function onUse(cid, item, pos)
newpos = getPlayerPosition(cid)

if doPlayerRemoveItem(cid,8888,1) then
	doPlayerSetMasterPos(cid, newpos)
end

end

 

E sua Tag:

 

<action itemid="8888" event="script" value="savepos.lua">

 

 

Sugestão de nomes e IDs:

 

Position Map - ID 5091 - (Treasure Map)

Resurrection Heart - ID 2353 - (Burning Heart)

 

 

Configurando o Script:

 

local item_id = 999

ID do Item que será consumido para renascer. Como exemplo, o ID 2353.

 

local count = 1

Quantidade do Item que será consumida.

 

local temple = {x=999, y=999, z=9}

Aqui deve ser dada a posição do Templo real.

 

doPlayerSendTextMessage(cid, 23, "Reborn from the ashes.")

Mensagem para caso o Player renascer.

 

<event type="death" name="Resurrection" event="script" value="resurrection.lua">

A Tag pode ter o nome editado e o nome do Script também.

 

if doPlayerRemoveItem(cid,8888,1) then

O ID do Item que salva a posição atual do Player, aconselho a não utilizar o mesmo Item que vai ressucitar para evitar erros. Como exemplo, o ID 5091.

 

<action itemid="8888" event="script" value="savepos.lua">

Editar na Tag o ID do Item, deve ser o mesmo utilizado na linha acima. O nome do Script também pode ser editado.

 

 

Obrigado por lerem, o Script ainda não foi testado e está em uma versão "beta", pois ainda pode ser melhorado.

Link para o comentário
Compartilhar em outros sites

Gostei cara (:, eu tinha feito um que o cara ficava "morto", transformado em um loot, e ficava imóvel quando morria, ai os monstros não atacavam o cara, e aparecia o Anjo da morte( um Grim reaper), ai ele falava pro cara se alguém não ressucitasse ele em x tempo ele morreria de vez, ai ficava o tempo em contagem regressiva na tela do Player :p.

 

REP+

Link para o comentário
Compartilhar em outros sites

Também cheguei a pensar em NPC's, TalkActions.

Preferi utilizar diretamente os Itens só pelo motivo de alguns monstros usarem a habilidade de se curar. Se o Player demorar muito pra renascer, pode dar Spawn de monstros, curarem, se moverem (após serem lurados)...

 

Porém ainda acho o seu método mais bonito. É legal pensar em um Anjo da Morte vindo até você.

 

Obrigado por comentar e pelo REP+.

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

  • 3 weeks later...

Dá para fazer um Ressurrection literalmente com a função onPrepareDeath, se o jogador tiver um certo item, em vez de morrer, ganha uma segunda chance com 10% do HP por exemplo.

Link para o comentário
Compartilhar em outros sites

Dá sim, ai fica meio dificil do cara se manter vivo novamente, pois ele já estará sendo atacado. Ai vai acabar morrendo pela segunda vez.

Tem esse problema, ai tem que fazer um período em que ele não podera ser atacado.

Link para o comentário
Compartilhar em outros sites

  • 1 year later...

Gostei muito, muito bem explicado ganhou meu rep ;)

 

mais o meu deu esse erro tem como ajeitar?

 

[03/08/2013 18:37:29] [Error - Action Interface]
[03/08/2013 18:37:29] data/actions/scripts/novos/savepos.lua:onUse
[03/08/2013 18:37:29] Description:
[03/08/2013 18:37:29] (luaGetThingPosition) Thing not found

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

×
×
  • Criar Novo...