Jump to content
Sign in to follow this  
Mecianosz

Suporte [pedido] storage que retorna o player morto para um local

Recommended Posts

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!

 

 

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other 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 

Share this post


Link to post
Share on other 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)

 

Share this post


Link to post
Share on other 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 

Share this post


Link to post
Share on other 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 

Share this post


Link to post
Share on other 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

 

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other 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 

Share this post


Link to post
Share on other 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.

:/

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other 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	

 

Edited by Onepiece (see edit history)

                                                                         Coisas Que Quero Alcança

                                                                 Aprender a Fazer Boas Signs e.e

15zgwp5.png

Share this post


Link to post
Share on other 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

 

Edited by Mor3nao (see edit history)

MEUS POSTS:

 

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

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other sites

Editei, ve ai


MEUS POSTS:

 

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

Share this post


Link to post
Share on other sites

tenta dnv


MEUS POSTS:

 

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

Share this post


Link to post
Share on other 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

 

Edited by Mecianosz (see edit history)

Share this post


Link to post
Share on other 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.


                                                                         Coisas Que Quero Alcança

                                                                 Aprender a Fazer Boas Signs e.e

15zgwp5.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Mor3nao
      Alguns scripts meus estão apresentando esse erro argument is unsafe, não me prejudica em nada, o script funciona normal, só polui minha distrô, e gostaria de saber doq se trata
      Tá acontecendo em pelo menos dois:
       
      1. Minha bolt vip:
      A ideia dessa bolt é ela ter 10% de chance de dar um atk extra
       
       
       
      2. Uma estatua que cospe fogo(tipo uma wave)
      A ideia é dar use na statua e ela lançar uma wave de fogo, q mata qualquer um no caminho.
       
       
       
      No caso desse segundo, esse erro aparece várias vezes,  sempre q uso, aparentemente, cada um dos "i" do for, o primeiro, só quando dá a segunda bolt, , queria saber como resolver, pra parar de aparecer
       
    • By victordlr
      Enfim, estou usando uma base OTPokémon, semelhante a PokeZr... Os pokémons não selvagens do servidor, os pokémons que os jogadores capturam, Gloom, etc.... Estão dando muito dano, queria pelomenos aumentar o life dos pokémons selvagens ou tirar o dano que essas spells absurdas estão dando, não estou conseguindo....
       
       
       
      QUEM ME AJUDAR, VAI GANHAR MEU RESPEITO. 
       
      Porfavor, se alguem puder me ajudar agradeço muito...

    • By alquimistarando
      Oi desculpa incomodar gostaria da ajuda de alguém pra ajeitar esse jutsu, é  um tsukuyomi que leva eu e o inimigo pro word. O problema q estou tendo é  que quando leva eu e o cara,  não consigo usar nenhum outro jutsu lá simplificando, o combo de ataques meu não sai porém, o inimigo pode usar jutsus  em mim é pode me comba com as magias dele normalmente entao se alguem puder dar um help tirando essa função que me bloqueia de usar outros ataques  ou colocar ela pra bloquear o tageth em vez de mim, agradeço.antes q alguém pergunte se eu repeti os storages  das spels, eu não repeti, desculpem se não expliquei bem sou meio leigo tô  começando agr a mexer nessas coisas 
       
       
       
      local time = 15 -- tempo em segundos para voltar
      local points = 80 -- o tanto de skills ele ficara mais forte
      local condition = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(condition, CONDITION_PARAM_TICKS, time*1000)
      setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, points)
      setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, points)
      function onCastSpell(cid, var)
      local waittime = 30 -- Tempo de exhaustion
      local storage = 15288
      if exhaustion.check(cid, storage) then
      return false
      end
      exhaustion.set(cid, storage, waittime)
      local pos = getCreaturePosition(cid)
      local target = getCreatureTarget(cid)
      local targetpos = getCreaturePosition(target)
      local Tile1 = {x = 996, y = 1001, z = 7} -- position onde o player sera teleportado
      local Tile2 = {x = 996, y = 997, z = 7} -- position onde o target sera teleportado
      local from1,to1 = {x=1509, y=1259, z=7},{x=1509, y=1255, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from2,to2 = {x=979, y=911, z=7},{x=994, y=918, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from3,to3 = {x=1514, y=1262, z=7},{x=1504, y=1253, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from4,to4 = {x=1552, y=1254, z=7},{x=1561, y=1262, z=7} -- ponto 1 ao ponto 2 da area
      local from5,to5 = {x=979, y=911, z=7},{x=994, y=918, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from6,to6 = {x=1156, y=1192, z=7},{x=1172, y=1172, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from7,to7 = {x=664, y=1096, z=7},{x=685, y=1104, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      local from8,to8 = {x=1553, y=1254, z=7},{x=1562, y=1262, z=7} -- ponto 1 ao ponto 2 da area em que ele sera teleportado
      if isInRange(pos, from1, to1) or isInRange(pos, from2, to2) or isInRange(pos, from3, to3) or isInRange(pos, from4, to4) or isInRange(pos, from5, to5) or isInRange(pos, from6, to6) or isInRange(pos, from7, to7) or isInRange(pos, from8, to8) then
      doPlayerSendCancel(cid, "Você nao pode usar o Tsukuyomi World aqui!")
      return FALSE
      end
      if not isPlayer(target) then
      doPlayerSendCancel(cid, "Você so pode usar essa magia em players!")
      return FALSE
      end
      local function Teleport_Player(cid)
      doTeleportThing(cid,pos)
      end
      local function Teleport_Target(target)
      doCreatureSetNoMove(target, 0)
      doTeleportThing(target,targetpos)
      end
      doAddCondition(cid, condition)
      doCreatureSetNoMove(target, 1)
      doTeleportThing(cid,Tile1)
      doTeleportThing(target,Tile2)
      doSendMagicEffect(targetpos, 182)
      addEvent(Teleport_Player, time*1000, cid)
      addEvent(Teleport_Target, time*1000, target)
      return TRUE
      end
       
       
       
    • By knepperzik
      Boa Noite!
      Detalhes: tfs 0.4, narutibia.
      Então, estou com um problema gigantesco, peço a ajuda de vocês!
      Por exemplo:
      Vocações que usa gloves, quando vai usar uma sword e vai hitar alguma coisa, simplesmente o servidor congela!!
      Sem nenhum erro na distro.
       
       
    • By LeoPetry
      .Qual servidor ou website você utiliza como base?  TFS 0.4
       
      Qual o motivo deste tópico? Erros no SQLITE, se alguém puder me dar um auxilio
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...