Ir para conteúdo
  • 0

[Resolvido] [Pedido] Após morte voltar em local aleatório


NdboHakai

Pergunta

Boa Tarde, Galera do Xtibia

 

Utilizo a distro

Tfs 0.4

 

Gostaria de saber se tem alguma forma de fazer os players que morrer ir para um hospital.

Só que teria varias salas[cabines] e os jogadores iriam logar após a morte em uma das salas[cabines]

Seria aleatório

 

Espero que vocês possam me ajudar

 

Rep ++ 

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 1
  • Diretor
4 minutos atrás, NdboHakai disse:

certo , acabei de testar e ainda assim dá o mesmo error 

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1030, y = 981, z = 7}, 
}

local str = 66666

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
	if getPlayerStorageValue(cid, str) == 1 then
	setPlayerStorageValue(cid, str, -1)
	doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
	end
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor

Tenta ai. Só criar um arquivo .lua no creaturescripts e por isso:

local hospitalpos = {
[1] = {x = 1006, y = 1010, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1006, y = 1015, z = 7},
[3] = {x = 1006, y = 1020, z = 7},
}

local str = "MT" --storage para controlar se o player foi morto ou nao

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
	if getPlayerStorageValue(cid, str) == 1 then
	setPlayerStorageValue(cid, str, -1)
	doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
	end
end
return true
end

TAG:

<event type="login" name="DeathPlayerHospital_L" event="script" value="arquivo.lua"/>
<event type="death" name="DeathPlayerHospital" event="script" value="arquivo.lua"/>

Se quiser por mais posições só adicionar conforme o script. Daria pra fazer também um fromPosition e toPosition , assim o jogador se teleportaria pra qualquer lugar dentro das área configurada. Mas recomendo usar dessa maneira que te mandei.

 

Link para o comentário
Compartilhar em outros sites

  • 0
21 minutos atrás, Yan Liima disse:

Tenta ai. Só criar um arquivo .lua no creaturescripts e por isso:


local hospitalpos = {
[1] = {x = 1006, y = 1010, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1006, y = 1015, z = 7},
[3] = {x = 1006, y = 1020, z = 7},
}

local str = "MT" --storage para controlar se o player foi morto ou nao

function onDeath(cid, position)
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
	if getPlayerStorageValue(cid, str) == 1 then
	setPlayerStorageValue(cid, str, -1)
	doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
	end
end
return true
end

TAG:


<event type="login" name="DeathPlayerHospital_L" event="script" value="arquivo.lua"/>
<event type="death" name="DeathPlayerHospital" event="script" value="arquivo.lua"/>

Se quiser por mais posições só adicionar conforme o script. Daria pra fazer também um fromPosition e toPosition , assim o jogador se teleportaria pra qualquer lugar dentro das área configurada. Mas recomendo usar dessa maneira que te mandei.

 

Irei testar

 

Deixei dessa maneira e quando os players morrem vão pro templo igual antes, tem alguma coisa a mais pra fazer?

Obs: não da error na distro nem nada

Spoiler

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1032, y = 981, z = 7},
}

local str = "66666" --storage para controlar se o player foi morto ou nao

function onDeath(cid, position)
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
    if getPlayerStorageValue(cid, str) == 1 then
    setPlayerStorageValue(cid, str, -1)
    doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
    end
end
return true
end

 

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

  • 0
  • Diretor
37 minutos atrás, Thalles Vitor disse:

Dscp se intrometer ae, mas... esse


doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)

Não devia ficar na function onDeath? ou pode ficar ai mesmo?

Não, é na função de login mesmo. Pois ao logar ele estará no local configurado. o onDeath só serve para controlar

 

52 minutos atrás, NdboHakai disse:

Irei testar

 

Deixei dessa maneira e quando os players morrem vão pro templo igual antes, tem alguma coisa a mais pra fazer?

Obs: não da error na distro nem nada

  Mostrar conteúdo oculto

 

Erro meu, editei. Copia de novo e tente. Creio que o problema era no Register, qualquer coisa é só tirar do script e por o register no login.lua.

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
45 minutos atrás, Yan Liima disse:

Não, é na função de login mesmo. Pois ao logar ele estará no local configurado. o onDeath só serve para controlar

 

Erro meu, editei. Copia de novo e tente. Creio que o problema era no Register, qualquer coisa é só tirar do script e por o register no login.lua.

 

 

Deu um error

1990265910_Semttulo.png.1baaecc996fd7a48abe46d6de85017e4.png

 

Script : 

Spoiler

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1030, y = 981, z = 7},

local str = "66666" --storage para controlar se o player foi morto ou nao

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
    if getPlayerStorageValue(cid, str) == 1 then
    setPlayerStorageValue(cid, str, -1)
    doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
    end
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
1 minuto atrás, NdboHakai disse:

Deu um error

1990265910_Semttulo.png.1baaecc996fd7a48abe46d6de85017e4.png

 

Script : 

  Ocultar conteúdo

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1030, y = 981, z = 7},

local str = "66666" --storage para controlar se o player foi morto ou nao

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
    if getPlayerStorageValue(cid, str) == 1 then
    setPlayerStorageValue(cid, str, -1)
    doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
    end
end
return true
end

 

Tira as aspas do 66666... Coloquei aspas pois coloquei uma storage por letras, inves de números, comecei utilizar pra evitar storage igual kkk. Muitos usam números por achar que não da para utilizar storage por letras...

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, Yan Liima disse:

Tira as aspas do 66666... Coloquei aspas pois coloquei uma storage por letras, inves de números, comecei utilizar pra evitar storage igual kkk. Muitos usam números por achar que não da para utilizar storage por letras...

Eu deixei as msm letras que você colocou com as "" e deu error, tirei as "" e coloquei os numeros 66666 e deu o mesmo error

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
1 minuto atrás, NdboHakai disse:

Eu deixei as msm letras que você colocou com as "" e deu error, tirei as "" e coloquei os numeros 66666 e deu o mesmo error

Então deve ter dado bug de caractere ao copiar. Reescreve essa linha, apaga local e escreve novamente.

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, Yan Liima disse:

Então deve ter dado bug de caractere ao copiar. Reescreve essa linha, apaga local e escreve novamente.

Apaguei e refiz continua o mesmo error '-'

 

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1030, y = 981, z = 7},

local str 66666

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
	if getPlayerStorageValue(cid, str) == 1 then
	setPlayerStorageValue(cid, str, -1)
	doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
	end
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, Yan Liima disse:

local hospitalpos = {
[1] = {x = 1021, y = 981, z = 7}, -- posições pra onde o player será teleportado ao morrer
[2] = {x = 1026, y = 981, z = 7},
[3] = {x = 1030, y = 981, z = 7}, 
}

local str = 66666

function onDeath(cid, position)
registerCreatureEvent(cid, "DeathPlayerHospital_L")
if isPlayer(cid) then
setPlayerStorageValue(cid, str, 1)
end
return true
end

function onLogin(cid)
registerCreatureEvent(cid, "DeathPlayerHospital")
if isPlayer(cid) then
	if getPlayerStorageValue(cid, str) == 1 then
	setPlayerStorageValue(cid, str, -1)
	doTeleportThing(cid, hospitalpos[math.random(#hospitalpos)], true)
	end
end
return true
end

 

você pode me ajudar no outro topico ?

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor
1 minuto atrás, NdboHakai disse:

você pode me ajudar no outro topico ?

 

 

Odeio mexer com spells, não manjo tanto ksksks isso dai deixo pro @Night Wolf. A questão do tópico em si foi resolvida? Se foi, marque a melhor resposta e estarei movendo/fechando o tópico.

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, Yan Liima disse:

Odeio mexer com spells, não manjo tanto ksksks isso dai deixo pro @Night Wolf. A questão do tópico em si foi resolvida? Se foi, marque a melhor resposta e estarei movendo/fechando o tópico.

Posso entrar em contato com você pelo discord pra ter um suporte? eu explico lá 

 

Sim foi resolvido e já marquei melhor resposta

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...