Ir para conteúdo
  • Cadastre-se

(Resolvido)[pedido] storage que retorna o player morto para um local


Ir para solução Resolvido por Mecianosz,

Posts Recomendados

Qual servidor ou website você utiliza como base? 

TFS 0.5 exclusive edition (ot 8.60)

 

Olá, gente. Como estão? Eu estou fazendo um evento onde um grupo de pessoas entram quando o primeiro aperta a alavanca (tipo annihilator). O evento dura 5 minutos. Porém, eu quero acrescentar uma coisa: se uma das pessoas morrer dentro destes 5 minutos, ela retorna para um local específico que fica dentro do mapa do evento. Como eu faço para cancelar a morte ou retornar o player para a área do evento? Alguém pode me ajudar com esta parte? Já tentei fazer isto para cancelar a morte, mas nao funciona:

    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    doCreatureAddMana(cid, getCreatureMaxMana(cid))
    doRemoveConditions(cid, FALSE)

REP desde já! valeu!

 

 

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 30/07/2020 em 17:04, Mecianosz disse:

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE)

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

doCreatureAddMana(cid, getCreatureMaxMana(cid))

Utiliza isso com o callback onPrepareDeath que devê funcionar.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
Agora, WooX disse:

Utiliza isso com o callback onPrepareDeath que devê funcionar.

eu usei e não funiconou @WooX !

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Mecianosz disse:

eu usei e não funiconou @WooX !

 


function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

 

Certifique-se de registrar o evento.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
Agora, WooX disse:

Certifique-se de registrar o evento.

@WooX também registrei no login.lua '-' .. o cara morre e o corpo dele aparece morto no templo...

Link para o post
Compartilhar em outros sites
Agora, Mecianosz disse:

@WooX também registrei no login.lua '-' .. o cara morre e o corpo dele aparece morto no templo...

Pra funcionar o callback precisa retornar falso.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
5 minutos atrás, WooX disse:

Pra funcionar o callback precisa retornar falso.

@WooX acho que fica mais fácil se eu te mandar todas as linhas kkkk.. eu coloquei false, olha:

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
    if not isPlayer(cid) or not isInArena(cid) then
        return TRUE
    end

    local oldPosition = getCreaturePosition(cid)
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    doCreatureAddMana(cid, getCreatureMaxMana(cid))
    doSendMagicEffect(getCreaturePosition(cid), 61)
    doSendMagicEffect(oldPosition, 65)
    doRemoveConditions(cid, FALSE)
    leaveArena(cid)
    return false
end

 

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
3 minutos atrás, Mecianosz disse:

acho que fica mais fácil se eu te mandar todas as linhas kkkk.. eu coloquei false, olha:

Não sei o que a função leaveArena faz, mas se o script está registrado corretamente deveria funcionar.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
1 minuto atrás, WooX disse:

Não sei o que a função leaveArena faz, mas se o script está registrado corretamente deveria funcionar.

:/

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Não entendi muito bem oque você quer, ver se funciona o script que fiz pelo bloco de notas:
OBS: não esqueça de adicionar a tags do creaturescripts.xml, e dentro do login.lua. Após adicionar o script, se caso o servidor estiver aberto, feche-o e o abra novamente.

local c = {
	storage = 20000, -- storage do evento ativo
	arena = {from = {x = 2100, y = 2100, z = 7}, to = {x = 2100, y = 2100, z = 7}}, -- posição superior esquerda, posição inferior direita
	pos = {x = 2100, y = 2100, z = 7}, -- posição que o player sera teleportado dentro do storage
	oldPEffect = 200, -- efeito quando ele morrer
	newPEffect = 200, -- efeito quando ele renascer
	exit = {x = 1000, y = 1000, z = 7}, -- posição que ele sera levado caso ele não tenha a storage
}

function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)

	if (isInRange(getCreaturePosition(cid), c.arena.from, c.arena.to)) then
		if (getPlayerStorageValue(cid, c.storage) ~= 0) then 
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
			doCreatureAddMana(cid, getCreatureMaxMana(cid))
			doSendMagicEffect(getCreaturePosition(cid), c.oldPEffect)
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		else
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		end
	end

return false
end	

 

Editado por Onepiece (veja o histórico de edições)

 

Projeto/Serviços que desenvolvi durante esse Tempo.

[SERVIDOR] - NTO By Madara Rinnegan - Criado em 2014

Link para o post
Compartilhar em outros sites
Em 30/07/2020 em 17:04, Mecianosz disse:

Qual servidor ou website você utiliza como base? 

TFS 0.5 exclusive edition (ot 8.60)

 

Olá, gente. Como estão? Eu estou fazendo um evento onde um grupo de pessoas entram quando o primeiro aperta a alavanca (tipo annihilator). O evento dura 5 minutos. Porém, eu quero acrescentar uma coisa: se uma das pessoas morrer dentro destes 5 minutos, ela retorna para um local específico que fica dentro do mapa do evento. Como eu faço para cancelar a morte ou retornar o player para a área do evento? Alguém pode me ajudar com esta parte? Já tentei fazer isto para cancelar a morte, mas nao funciona:


    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE)
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    doCreatureAddMana(cid, getCreatureMaxMana(cid))
    doRemoveConditions(cid, FALSE)

REP desde já! valeu!

 

 

Cara, nao sei na tua versão, mas na minha se vc coloca só o return, sem o true, ele funciona, essa aqui nao deixa morrer, nao preciso nem por pra curar ->

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
    if not isPlayer(cid) then
        return TRUE
    end
	player = Player(cid)
	if player:getStorageValue(Storage.Events.Cerco.timeBlue) == 1 or player:getStorageValue(Storage.Events.Cerco.timeRed) == 1 then
	player:teleport(blalbalbla)
	return
	end
	return true
end

 

Editado por Mor3nao (veja o histórico de edições)

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites
49 minutos atrás, Mor3nao disse:

Cara, nao sei na tua versão, mas na minha se vc coloca só o return, sem o true, ele funciona, essa aqui nao deixa morrer, nao preciso nem por pra curar ->


function onPrepareDeath(creature, lastHitKiller, mostDamageKiller)
local player = creature:getPlayer()
if not player then
	return true
end

	if player:getStorageValue(Storage.Events.Cerco.timeBlue) == 1 or player:getStorageValue(Storage.Events.Cerco.timeRed) == 1 then
	player:teleport(blalbalbla)
	return
	end
	return true
end

 

deu um erro na distro:

Citar

image.thumb.png.800880007e0593ffd11d4e91ec6555b3.png

 

Link para o post
Compartilhar em outros sites

Editei, ve ai

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites

tenta dnv

MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Link para o post
Compartilhar em outros sites
1 hora atrás, Mor3nao disse:

tenta dnv

Arruma um e aparece outro! kkk.. foi mal, estou comecando a estudar essa linguagem agora..

image.thumb.png.d06a8a3d1a7e596e1364d043b6e761a3.png

 

o script todo é:

Citar

local IS_IN_ARENA_PLAYER_STORAGE = 23305

local function isInArena(cid)
    local isInArena = getPlayerStorageValue(cid, IS_IN_ARENA_PLAYER_STORAGE)
    return isInArena == 1
end

local function leaveArena(cid)
    setPlayerStorageValue(cid, IS_IN_ARENA_PLAYER_STORAGE, 0)
end

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
    if not isPlayer(cid) or not isInArena(cid) then
        return TRUE
    end
	player = Player(cid)
	if player:getStorageValue(IS_IN_ARENA_PLAYER_STORAGE) == 1 then
	player:teleport(cid, {x=1979,y=217,z=6}, true)
	return
	end
	return true
end

 

Sabe o que pode ser?

 

---

7 horas atrás, Onepiece disse:

Não entendi muito bem oque você quer, ver se funciona o script que fiz pelo bloco de notas:
OBS: não esqueça de adicionar a tags do creaturescripts.xml, e dentro do login.lua. Após adicionar o script, se caso o servidor estiver aberto, feche-o e o abra novamente.



local c = {
	storage = 20000, -- storage do evento ativo
	arena = {from = {x = 2100, y = 2100, z = 7}, to = {x = 2100, y = 2100, z = 7}}, -- posição superior esquerda, posição inferior direita
	pos = {x = 2100, y = 2100, z = 7}, -- posição que o player sera teleportado dentro do storage
	oldPEffect = 200, -- efeito quando ele morrer
	newPEffect = 200, -- efeito quando ele renascer
	exit = {x = 1000, y = 1000, z = 7}, -- posição que ele sera levado caso ele não tenha a storage
}

function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)

	if (isInRange(cid, c.arena.from, c.arena.to) then
		if (getPlayerStorageValue(cid, c.storage) ~= 0) then 
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
			doCreatureAddMana(cid, getCreatureMaxMana(cid))
			doSendMagicEffect(getCreaturePosition(cid), c.oldPEffect)
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		else
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		end
	end

return false
end	

 

Este retornou um erro:

image.thumb.png.a96fe1f28352d77bde0e8ad9286fb08a.png

No meu arquivo lib/032-position:

image.thumb.png.7e018e9e1976a0ed82a9116602ad26e5.png

Fiz uma mudança na função mas não deu certo:

if (isInRange(getThingPosition(cid), c.arena.from, c.arena.to)) then

 

Editado por Mecianosz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local c = {
	storage = 20000, -- storage do evento ativo
	from,to = {x = 2100, y = 2100, z = 7}, {x = 2100, y = 2100, z = 7}, -- posição superior esquerda, posição inferior direita
	pos = {x = 2100, y = 2100, z = 7}, -- posição que o player sera teleportado dentro do storage
	oldPEffect = 200, -- efeito quando ele morrer
	newPEffect = 200, -- efeito quando ele renascer
	exit = {x = 1000, y = 1000, z = 7}, -- posição que ele sera levado caso ele não tenha a storage
}

function onDeath(cid, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified)

	if (isInRange(getCreaturePosition(cid), c.from, c.to) then
		if ((cid, c.storage) ~= 0) then 
			doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
			doCreatureAddMana(cid, getCreatureMaxMana(cid))
			doSendMagicEffect(getCreaturePosition(cid), c.oldPEffect)
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		else
			doTeleportThing(cid, c.pos)
			doSendMagicEffect(getCreaturePosition(cid), c.newPEffect)
		end
	end

return false
end	

tenta desta forma que coloquei acima.

 

Projeto/Serviços que desenvolvi durante esse Tempo.

[SERVIDOR] - NTO By Madara Rinnegan - Criado em 2014

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo