Ir para conteúdo
  • Cadastre-se

(Resolvido)ajuda a terminar esse script de quest


Ir para solução Resolvido por Vodkart,

Posts Recomendados

.Qual servidor ou website você utiliza como base? tfs 0.4

 

Qual o motivo deste tópico? preciso de ajuda para terminar uma quest.

a ideia do script é o seguinte 6 players tem que colocar um item em x position e após clicar em uma alavanca os 6 seriam teleportado para uma pos determinada no script. essas funções ja estão funcionando corretamente!

estou precisando que seja adcionado nesse mesmo script uma função de apenas poder clicar na alavanca da quest 1 vez por diae a outra função seria entre um dos 6 players o script escolher apenas um e mandar para outra posição.

no caso esse players que seria escolhido randomicamente pelo o script iria para uma sala que iria morrer, e os outros 5 players iriam continuar a quest.

preciso que apenas 1 player seja escolhido para ir a uma position diferente das outras!

para tentar deixar mais especifico o script atual eu posso escolher 6 posições diferentes ou iguais, mas eu necessito que entre um dos 6 players um deles morra, mas isso teria que ser na "sorte". O script escolheria um dos 6 players e jogaria-o para uma outra posição.

 

 

 

Você tem o código disponível? Se tiver publique-o aqui: 

local lvl = 400
local t = {
{vocations = {1, 13},Pos = {{x=1397, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1502, z=9}}}, -- TANK OR DRUNK
{vocations = {14, 15},Pos = {{x=1396, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1508, z=9}}},  -- ATTACK OR DRUNK
{vocations = {16, 17},Pos = {{x=1395, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1508, z=9}}},  -- SUPPORT OR DRUNK
{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}  -- PARALYZE OR DRUNK
{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}  -- PARALYZE
{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}  -- SUPPORT
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
local items = {}
for _, k in ipairs(t) do
local x = getTopCreature(k.Pos[1]).uid
local v = getTileItemById(k.item[2], k.item[1])
if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE) then
doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..lvl..' ou mais ou não tem a vocação.') return true
elseif v.uid == 0 then
doPlayerSendCancel(cid, "Todos os itens precisão estar na posição.") return true end
table.insert(check, x)
table.insert(items, v)
end
for k, tid in ipairs(check) do
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
doTeleportThing(tid, t[k].Pos[2])
doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
end
for _, remove in ipairs(items) do
doRemoveItem(remove.uid)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Link para o post
Compartilhar em outros sites
local lvl = 400
local stor_time = 787687
local hours = 24
local pos_die = {x=1429, y=1549, z=9} 
local t = {
	{vocations = {1, 13},Pos = {{x=1397, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1502, z=9}}}, -- TANK OR DRUNK
	{vocations = {14, 15},Pos = {{x=1396, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1508, z=9}}}, -- ATTACK OR DRUNK
	{vocations = {16, 17},Pos = {{x=1395, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1508, z=9}}}, -- SUPPORT OR DRUNK
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}, -- PARALYZE OR DRUNK
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}, -- PARALYZE
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}} -- SUPPORT
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	local items = {}
	for _, k in ipairs(t) do
		local x = getTopCreature(k.Pos[1]).uid
		local v = getTileItemById(k.item[2], k.item[1])
		if x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE or getPlayerStorageValue(x, stor_time) - os.time() > 0 then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..lvl..' ou mais ou não tem a vocação ou so pode participar 1x no dia.') return true
		elseif v.uid == 0 then
		doPlayerSendCancel(cid, "Todos os itens precisão estar na posição.") return true end
		table.insert(check, x)
		table.insert(items, v)
	end
	local sort = check[math.random(1, #check)]
	for k, tid in ipairs(check) do
		doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
		if tid ~= sort then 
			doTeleportThing(tid, t[k].Pos[2])
			
		else
			doTeleportThing(tid, pos_die)
		end
		doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
		setPlayerStorageValue(tid, stor_time, os.time()+hours*3600)
	end
	for _, remove in ipairs(items) do
		doRemoveItem(remove.uid)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 

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

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
7 horas atrás, Vodkart disse:

local lvl = 400
local stor_time = 787687
local hours = 24
local pos_die = {x=1429, y=1549, z=9} 
local t = {
	{vocations = {1, 13},Pos = {{x=1397, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1502, z=9}}}, -- TANK OR DRUNK
	{vocations = {14, 15},Pos = {{x=1396, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1398, y=1508, z=9}}}, -- ATTACK OR DRUNK
	{vocations = {16, 17},Pos = {{x=1395, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1508, z=9}}}, -- SUPPORT OR DRUNK
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}, -- PARALYZE OR DRUNK
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}}, -- PARALYZE
	{vocations = {18, 19},Pos = {{x=1394, y=1505, z=9},{x=1429, y=1549, z=9}},item= {2349,{x=1393, y=1502, z=9}}} -- SUPPORT
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local check = {}
	local items = {}
	for _, k in ipairs(t) do
		local x = getTopCreature(k.Pos[1]).uid
		local v = getTileItemById(k.item[2], k.item[1])
		if x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE or getPlayerStorageValue(x, stor_time) - os.time() > 0 then
			doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..lvl..' ou mais ou não tem a vocação ou so pode participar 1x no dia.') return true
		elseif v.uid == 0 then
		doPlayerSendCancel(cid, "Todos os itens precisão estar na posição.") return true end
		table.insert(check, x)
		table.insert(items, v)
	end
	local sort = check[math.random(1, #check)]
	for k, tid in ipairs(check) do
		doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
		if tid ~= sort then 
			doTeleportThing(tid, t[k].Pos[2])
			
		else
			doTeleportThing(tid, pos_die)
		end
		doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
		setPlayerStorageValue(tid, stor_time, os.time()+hours*3600)
	end
	for _, remove in ipairs(items) do
		doRemoveItem(remove.uid)
	end
	doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
	return true
end

 

 

Muito obrigado mano, funcionou 100%!

apenas uma dúvida, após as 24 horas o mesmo players pode voltar na quest?  

local stor_time = 787687

fiquei em dúvida nessa parte, é apenas um storage pro time certo?

Link para o post
Compartilhar em outros sites
  • Solução

@hiquezerah sim, todos os players recebem um time de 24 horas para voltar a fazer a quest, essa storage é ó para controlar esse time.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
8 minutos atrás, Vodkart disse:

@hiquezerah sim, todos os players recebem um time de 24 horas para voltar a fazer a quest, essa storage é ó para controlar esse time.

 

Dúvida sanada! E mais uma vez, muito obrigado!

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo