[Creaturescripts] Resurrection

Valentine
em Globalevents e Spells

Valentine

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 28/03/12Posts: 119

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.

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

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+

eq9qh0.png

Valentine

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 28/03/12Posts: 119

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+.

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

No caso, não daria o spawn dos monstros pois o player estaria "presente", dando block no spawn..

eq9qh0.png

Gankigner

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/11/11Posts: 30Char no Tibia: Laigooh

Tem como fazer pra ele renascer no mesmo lugar que ele morreu?

Me ajude a ganhar brindes dando um click no link abaixo!

Mande uma mensagem a mim para que eu possa também ajuda-lo!

http://epicfreeprizes.com/?ref=135186

_________________________________________________________________________________________

 

Precisando de ajuda com o servidor?

Estou a sua Disposição!

Mapper [|||||||||||||||] - Nível Avançado

Scripter [|||||||||||||||] - Nível Médio

Spriter [|||||||||||||||] - Quebra Galho

Client Maker [|||||||||||||||] - Profissional

Web Designer [|||||||||||||||] - Profissional (Sites Free)

Divulgador [|||||||||||||||] - Nem ti conto

_________________________________________________________________________________________

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

Valentine

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 28/03/12Posts: 119

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.

jonathasbizerril

Jhonn Stifler
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/02/08Posts: 57Char no Tibia: The Rev

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