Ir para conteúdo

Anel Ressucitador


Omega

Posts Recomendados

Um usuário me pediu pra fazer e achei interessante, então vou postar aqui pra quem quiser usar:

 

INFORMAÇÕES:

  • Ring que previne a morte de um jogador que tiver equipado o ring por pelo menos 5 minutos.

 

CÓDIGO:

  • Creaturescript:

Crie um arquivo chamado ring.lua em creaturescripts/scripts:

 

 -- [[ Anel ressucitador por Leoric (Omega Blueheaven no XTibia ]] --

local ringid = 12345 -- bote aqui o id do ring que vai reviver

function onPrepareDeath(cid, deathList)	
	if isPlayer(cid) then
		if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid and getPlayerStorageValue(cid,716231) >= 30 then
			if doPlayerRemoveItem(cid,ringid,1) then
				doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
				doCreatureAddMana(cid, getCreatureMaxMana(cid))
				doRemoveConditions(cid, false)
				return false
			end
		end
	end
	return true
end

 

 

 

 

  • Tag no creaturescripts.xml
<event type="preparedeath" name="Anel Ressucitador" event="script" value="ring.lua"/>
  • Tag no login.lua

Adicione isso perto dos outros register em creaturescripts/scripts/login.lua

registerCreatureEvent(cid, "Anel Ressucitador")
  • Movement:

Crie um arquivo ringres.lua em movements/scripts

 

local ringid = 12345 -- itemid do ring

function ringOn(cid)
	if not isPlayer(cid) then return false end
	if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid then
		setPlayerStorageValue(cid,716231,getPlayerStorageValue(cid, 716231)+1)
		addEvent(ringOn,10000,cid)
		return true
	end
end

function onEquip(cid, item, slot)
	setPlayerStorageValue(cid,716231,0)
	addEvent(ringOn,10000,cid)
	return true
end

 

 

 

 

  • Tag no movements.xml:
<movevent type="Equip" itemid="id do ring" level="level necessário" script="ringres.lua"/>

OBSERVAÇÕES:

  • Se houver algum bug, poste o erro em spoiler no comentário ou será ignorado
  • Cuidado para não deixar duas tags do mesmo item no movements.xml
  • Verifique quais atributos esse item muda no items.xml
Editado por omega blueheaven
Link para o comentário
Compartilhar em outros sites

 

Desculpa mais não sei por Spolier mais o erro foi esse

 

[30/08/2013 20:37:05] [Warning - Event::loadScript] Event onPrepareDeath not found (data/creaturescripts/scripts/novos/Anel Ressucitador.lua)

 

 

Pra por spoiler você faz isso: [ spoiler ] CONTEÚDO EM SPOILER [ /spoiler ]. Claro, sem os espaços dentro dos colchetes ( [ ] ).

O erro foi que você botou numa pasta (novos) e não deve ter sinalizado isso dentro da tag do creaturescripts.xml

 

Compara:

<event type="preparedeath" name="Anel Ressucitador" event="script" value="ring.lua"/>
(30/08/2013 20:37:05] [Warning - Event::loadScript] Event onPrepareDeath not found (data/creaturescripts/scripts/novos/Anel Ressucitador.lua)

 

O erro diz:

- Aviso: não consegui carregar o script que tá aqui (data/creaturescripts/scripts/novos/Anel Ressucitador.lua) -

Então tenta mudar o value="ring.lua" para value="novos/Anel Ressucitador.lua"

Link para o comentário
Compartilhar em outros sites

 

 

Desculpa mais não sei por Spolier mais o erro foi esse

 

[30/08/2013 20:37:05] [Warning - Event::loadScript] Event onPrepareDeath not found (data/creaturescripts/scripts/novos/Anel Ressucitador.lua)

 

 

Pra por spoiler você faz isso: [ spoiler ] CONTEÚDO EM SPOILER [ /spoiler ]. Claro, sem os espaços dentro dos colchetes ( [ ] ).

O erro foi que você botou numa pasta (novos) e não deve ter sinalizado isso dentro da tag do creaturescripts.xml

 

Compara:

<event type="preparedeath" name="Anel Ressucitador" event="script" value="ring.lua"/>
(30/08/2013 20:37:05] [Warning - Event::loadScript] Event onPrepareDeath not found (data/creaturescripts/scripts/novos/Anel Ressucitador.lua)

 

O erro diz:

- Aviso: não consegui carregar o script que tá aqui (data/creaturescripts/scripts/novos/Anel Ressucitador.lua) -

Então tenta mudar o value="ring.lua" para value="novos/Anel Ressucitador.lua"

 

Já fiz isso e nada o erro dever ser no scrpit :x

Link para o comentário
Compartilhar em outros sites

Ô caramba, tem um erro imbecil mesmo!

Cara, é o seguinte: estava escrito onPreprareDeath, mas a função é onPrepareDeath. Tô corrigindo no tópico principal, mas a solução é a seguinte:

 

Substitua:

 

 

 -- [[ Anel ressucitador por Leoric (Omega Blueheaven no XTibia ]] --

local ringid = 12345 -- bote aqui o id do ring que vai reviver

function onPreprareDeath(cid, deathList)	
	if isPlayer(cid) then
		if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid and getPlayerStorageValue(cid,716231) >= 30 then
			if doPlayerRemoveItem(cid,ringid,1) then
				doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
				doCreatureAddMana(cid, getCreatureMaxMana(cid))
				doRemoveConditions(cid, false)
				return false
			end
		end
	end
	return true
end

 

 

 

Por

 

 

 -- [[ Anel ressucitador por Leoric (Omega Blueheaven no XTibia ]] --

local ringid = 12345 -- bote aqui o id do ring que vai reviver

function onPrepareDeath(cid, deathList)
	if isPlayer(cid) then
		if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid and getPlayerStorageValue(cid,716231) >= 30 then
			if doPlayerRemoveItem(cid,ringid,1) then
				doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
				doCreatureAddMana(cid, getCreatureMaxMana(cid))
				doRemoveConditions(cid, false)
				return false
			end
		end
	end
	return true
end

 

 

 

Agora deve funcionar. Qualquer coisa estou a disposição.

Link para o comentário
Compartilhar em outros sites

Não teve nenhum efeito nada não funcionou nem deu nenhum bug nada não fez absolutamente nada.

 

Opa Espera 1 minuto já edito aqui

 

Está Funcionando 100% falta só umas coisas bota pra mim?

 

Pra quando colocar no dedo e se remover antes ele some

e quando colocar no dedo ele fala essa messagem "Você colocou o ring e agora está protegido" e o ultimo quando reviver o jogador dar um efeito no jogador e uma messagem "você ressucitou dos mortos bravo guerreiro" o id do efeito é 65

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

- Movements:

 

 

local ringid = 12345 -- itemid do ring
function ringOn(cid)
if not isPlayer(cid) then return false end
if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid then
setPlayerStorageValue(cid,716231,getPlayerStorageValue(cid, 716231)+1)
addEvent(ringOn,10000,cid)
return true
end
end
function onEquip(cid, item, slot)
setPlayerStorageValue(cid,716231,0)
addEvent(ringOn,10000,cid)
doPlayerSendTextMessage(cid, 20, "Você colocou o ring e agora está protegido.")
return true
end
function onDeEquip(cid, item, slot)
if item.itemid == ringid then
if not doRemoveItem(cid, item.itemid, 1) then return true end
end
return true
end

 

 

 

Adiciona está tag:

<movevent type="DeEquip" itemid="id do ring" level="level necessário" script="ringres.lua"/>

-CreatureScript:

 

 

-- [[ Anel ressucitador por Leoric (Omega Blueheaven no XTibia ]] --
local ringid = 12345 -- bote aqui o id do ring que vai reviver
function onPrepareDeath(cid, deathList)
if isPlayer(cid) then
if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid and getPlayerStorageValue(cid,716231) >= 30 then
if doPlayerRemoveItem(cid,ringid,1) then
doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
doCreatureAddMana(cid, getCreatureMaxMana(cid))
doRemoveConditions(cid, false)
doPlayerSendTextMessage(cid, 20, "Você ressucitou dos mortos, bravo guerreiro...")
doSendMagicEffect(getThingPos(cid), 65)
return false
end
end
end
return true
end

 

 

 

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

Adicione a tag onDeEquip no movements.xml (igual a do onEquip, mas com De)

 

 

local ringid = 12345 -- itemid do ring

function ringOn(cid)
	if not isPlayer(cid) then return false end
	if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid then
		setPlayerStorageValue(cid,716231,getPlayerStorageValue(cid, 716231)+1)
		addEvent(ringOn,10000,cid)
		return true
	end
end

function onEquip(cid, item, slot)
	setPlayerStorageValue(cid,716231,0)
	addEvent(ringOn,10000,cid)
	doPlayerSendTextMessage(cid,22,'Com esse anel equipado por 5 minutos voce estara protegido da morte!')
	return true
end

function onDeEquip(cid, item, slot)
	if getPlayerStorageValue(cid,716231) < 30 then
		doRemoveItem(item.uid,1)
		doPlayerSendTextMessage(cid,25,'Seu anel sumiu!')
	end
end

 

 

 

Agora o creaturescripts:

 

 

 -- [[ Anel ressucitador por Leoric (Omega Blueheaven no XTibia ]] --

local ringid = 12345 -- bote aqui o id do ring que vai reviver

function onPrepareDeath(cid, deathList)
	if isPlayer(cid) then
		if getPlayerSlotItem(cid,CONST_SLOT_RING).itemid == ringid and getPlayerStorageValue(cid,716231) >= 30 then
			if doPlayerRemoveItem(cid,ringid,1) then
				doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
				doCreatureAddMana(cid, getCreatureMaxMana(cid))
				doPlayerSendTextMessage(cid,25,'Voce retornou da morte, bravo guerreiro.')
				doSendMagicEffect(getCreaturePosition(cid),65)
				doRemoveConditions(cid, false)
				return false
			end
		end
	end
	return true
end

 

 

 

Não tinha carregado o post do cara aí de cima. Só vi uma diferença significativa:

- Na minha correção, o cara só perde o anel se ele não estiver ativado (se quiser mudar pra ativado você coloca getPlayerStorageValue(cid,...) >= 30)

- Na correção do Smix você sempre vai perder o ring quando desequipar, ativado ou não.

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

Tecnicamente, você só adicionou linhas inúteis no código, já que o usuário pediu que ao retirar, não importando condições nenhuma, o player perdesse o ring. ^^

Link para o comentário
Compartilhar em outros sites

@Omega Blueheaven

 

O seu scrpit ta dando conflito com um script meu tem como você ajeitar isso?

e por o contador de tempo tipo quando eu colocar ele no dedo ele falar o anel sera ativando em 4:59 minutos e ficando cotando 4:58 minutos 4:57 minutos...

 

o scrpit que da conflito é do meu aol porque meu aol é diferente dos normais ele não some ele só desenergyza ai quando o jogador usa o ring e morre ele desenergyza mais não é pra desenergyzar ): entendeu? olha meu script do aol ai

 

 

--[[
By Lucas Brito © 2012
Version : v1.0
]]--

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
local amulet = getPlayerSlotItem(cid, CONST_SLOT_NECKLACE)
if (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 2361) then -- energyzado
doPlayerRemoveItem(cid, 2361, 1) -- energyzado
local amulet = doPlayerAddItem(cid,11523) --quebrado
elseif (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 11512) then -- energyzado
doPlayerRemoveItem(cid, 11512, 1) -- energyzado
local amulet = doPlayerAddItem(cid,11511) --quebrado
elseif (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 11513) then -- energyzado
doPlayerRemoveItem(cid, 11513, 1) -- energyzado
local amulet = doPlayerAddItem(cid,11519) --quebrado
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

@Smix

 

Tecnicamente, você só adicionou linhas inúteis no código, já que o usuário pediu que ao retirar, não importando condições nenhuma, o player perdesse o ring. ^^

 

 

Não teve nenhum efeito nada não funcionou nem deu nenhum bug nada não fez absolutamente nada.

 

Opa Espera 1 minuto já edito aqui

 

Está Funcionando 100% falta só umas coisas bota pra mim?

 

Pra quando colocar no dedo e se remover antes ele some

e quando colocar no dedo ele fala essa messagem "Você colocou o ring e agora está protegido" e o ultimo quando reviver o jogador dar um efeito no jogador e uma messagem "você ressucitou dos mortos bravo guerreiro" o id do efeito é 65

 

Antes do que? Eu imaginei que fosse antes de ele ser ativado, não foram linhas inúteis, foi questão de interpretação do pedido.

 

@Jonathas

 

Cara, não precisava nem ter perguntado o ID do anel, esse script só checa necklace. Se você não conseguir ver qual é o script que você tem e tá dando conflito, troca pra outro anel. No pior dos casos, cria outro anel a partir de um que já exista.

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

@Smix

 

Tecnicamente, você só adicionou linhas inúteis no código, já que o usuário pediu que ao retirar, não importando condições nenhuma, o player perdesse o ring. ^^

 

 

Não teve nenhum efeito nada não funcionou nem deu nenhum bug nada não fez absolutamente nada.

 

Opa Espera 1 minuto já edito aqui

 

Está Funcionando 100% falta só umas coisas bota pra mim?

 

Pra quando colocar no dedo e se remover antes ele some

e quando colocar no dedo ele fala essa messagem "Você colocou o ring e agora está protegido" e o ultimo quando reviver o jogador dar um efeito no jogador e uma messagem "você ressucitou dos mortos bravo guerreiro" o id do efeito é 65

 

Antes do que? Eu imaginei que fosse antes de ele ser ativado, não foram linhas inúteis, foi questão de interpretação do pedido.

 

@Jonathas

 

Cara, não precisava nem ter perguntado o ID do anel, esse script só checa necklace. Se você não conseguir ver qual é o script que você tem e tá dando conflito, troca pra outro anel. No pior dos casos, cria outro anel a partir de um que já exista.

 

Acho que você não entendeu o aol só é pra desenergizar no caso da segunda morte porque a primeira ele vai ressuscitar ai o aol tem que continuar lá energizado só quando morre na segunda vez sem o ring que é pra desenergizar o aol entendeu? Desculpa por ta lé abusando muito mais é que não sei mesmo ajeitar isso ): tentei bugei tudo ate que quando tirava o anel do dedo o servidor caia ):

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...