Script movements não esta executando da forma correta

UroTTa
Por UroTTa
em Lixeira Pública

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

Gostaria de uma pequena ajuda em um script de movements de uma quest que estou fazendo, é o seguinte:

 

E uma quest que 4 jogadores pisam em um tile é abre uma escada ao sul, eu consegui fazer tudo, porem quando somente um jogador pisa ja abre a escada e executa suas funções. Gostaria que somente quando os 4 jogadores com tal storage executava as funções.

local pos = {
	{x = 33258, y = 31079, z = 8},
	{x = 33259, y = 31089, z = 8},
	{x = 33266, y = 31084, z = 8},
	{x = 33263, y = 31093, z = 8}
}


function doClearMissionArea(fromPos, toPos)
	for x = fromPos.x, toPos.x do
		for y = fromPos.y, toPos.y do
			for z = fromPos.z, toPos.z do
				if(getTopCreature({x = x, y = y, z = z}).uid > 0) then
					if(isPlayer(getTopCreature({x = x, y = y, z = z}).uid)) then
						doTeleportThing(getTopCreature({x = x, y = y, z = z}).uid, {x = 33353, y = 31410, z = 8})
						doSendMagicEffect({x = 33353, y = 31410, z = 8}, CONST_ME_TELEPORT)
					else
						doRemoveCreature(getTopCreature({x = x, y = y, z = z}).uid)
					end
				end
			end
		end
	end
	return true
end

function TirarEscada()
    local escada = getTileItemById({x = 33265, y = 31116, z = 8}, 3687)
    local escada2 = getTileItemById({x = 33265, y = 31116, z = 7}, 3219)
    if escada then
        doRemoveItem(escada.uid, 1)
	doRemoveItem(escada2.uid, 1)
	doCreateItem(11097, 1, {x = 33265, y = 31116, z = 7})	
    end
    return true
end


function onStepIn(cid, item, position, lastPosition)
	start = false
	if(getPlayerStorageValue(cid, 1050) == 19) then
		if(item.actionid == 8014) then
			for i = 1, 4 do
				if(getTopCreature(pos[i]).uid > 0) then
					if(isPlayer(getTopCreature(pos[i]).uid)) then
						if(getGlobalStorageValue(8014) < 1) then
							doCreatureSay(getTopCreature(pos[i]).uid, "A clicking sound tatters the silence.", TALKTYPE_ORANGE_1)
							start = true
						end
					end
				end
			end				
			if(start == true) then				
				doCreateItem(3687, 1, {x = 33265, y = 31116, z = 8})
				doCreateItem(3219, 1, {x = 33265, y = 31116, z = 7})
				addEvent(TirarEscada, 30 * 1000)
				setGlobalStorageValue(8014, 1)
				addEvent(setGlobalStorageValue, 8014, 0)
				creature = ""
				for k = 1, 4 do
					for j = 1, 20 do
						if(k < 3) then
							creature = "eternal guardian"
						else
							creature = "lizard chosen"
						end
						summonPos = {x = math.random(33239, 33295), y = math.random(31100, 31132), z = 7}
						addEvent(doSummonCreature, k * 30 * 1000, creature, summonPos)
						addEvent(doSendMagicEffect, k * 30 * 1000, summonPos, CONST_ME_TELEPORT)
					end
				end
				addEvent(doClearMissionArea, 5 * 30 * 1000, {x = 33239, y = 31100, z = 7}, {x = 33295, y = 31132, z = 7})
				addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 15335, 2)
				addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 1050, 20)
			end
		end
	end
	return true
end

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Você chega se eles tem storage da mesma forma ué.

 

player = getTopCreature({x = x, y = y, z = z}).uid
if getPlayerStorageValue(player, STORAGE) == 1 then
jeoz.png

Techrlz

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 03/03/14Posts: 239

@EDITED: Ajudando skype

 

 

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

@Techrlz

 

Não funcionou.

 

@Skymagnum

 

Você não entendeu, esse script que eu postei era para funcionar so quando 4 jogadores pisase em seus respectivos tiles, mas so de 1 ja pisar o script executa as funções.


@Alguem ajuda?

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

Deixa variavel start inicialmente como true, e caso algum nao possa seta como false, do jeito que ta fazendo se acha um estiver já seta como true

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Isso?

	start = 0
	if item.actionid == 8014 then
		for i = 1, 4 do
			local creature = getTopCreature(pos[i]).uid
			if creature > 0 then
				if isPlayer(creature) then
					if getGlobalStorageValue(8014) < 1 then
						if getPlayerStorageValue(creature, 1050) == 19 then
							doCreatureSay(creature, "A clicking sound tatters the silence.", TALKTYPE_ORANGE_1)
							start = start + 1
						end
					end
				end
			end
		end	
	if start == 4 then

Oie :D

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

@Demonbholder

 

Não deu, apenas 1 ja continua fazendo o efeito no tile.

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

Copiou tudo que eu coloquei ali mesmo? Até o start = 0 e if start == 4? O código fica assim:

local pos = {
	{x = 33258, y = 31079, z = 8},
	{x = 33259, y = 31089, z = 8},
	{x = 33266, y = 31084, z = 8},
	{x = 33263, y = 31093, z = 8}
}


function doClearMissionArea(fromPos, toPos)
	for x = fromPos.x, toPos.x do
		for y = fromPos.y, toPos.y do
			for z = fromPos.z, toPos.z do
				if(getTopCreature({x = x, y = y, z = z}).uid > 0) then
					if(isPlayer(getTopCreature({x = x, y = y, z = z}).uid)) then
						doTeleportThing(getTopCreature({x = x, y = y, z = z}).uid, {x = 33353, y = 31410, z = 8})
						doSendMagicEffect({x = 33353, y = 31410, z = 8}, CONST_ME_TELEPORT)
					else
						doRemoveCreature(getTopCreature({x = x, y = y, z = z}).uid)
					end
				end
			end
		end
	end
	return true
end

function TirarEscada()
    local escada = getTileItemById({x = 33265, y = 31116, z = 8}, 3687)
    local escada2 = getTileItemById({x = 33265, y = 31116, z = 7}, 3219)
    if escada then
        doRemoveItem(escada.uid, 1)
	doRemoveItem(escada2.uid, 1)
	doCreateItem(11097, 1, {x = 33265, y = 31116, z = 7})
    end
    return true
end


function onStepIn(cid, item, position, lastPosition)
	start = 0
	if item.actionid == 8014 then
		for i = 1, 4 do
			local creature = getTopCreature(pos[i]).uid
			if creature > 0 then
				if isPlayer(creature) then
					if getGlobalStorageValue(8014) < 1 then
						if getPlayerStorageValue(creature, 1050) == 19 then
							doCreatureSay(creature, "A clicking sound tatters the silence.", TALKTYPE_ORANGE_1)
							start = start + 1
						end
					end
				end
			end
		end
		if start == 4 then
			doCreateItem(3687, 1, {x = 33265, y = 31116, z = 8})
			doCreateItem(3219, 1, {x = 33265, y = 31116, z = 7})
			addEvent(TirarEscada, 30 * 1000)
			setGlobalStorageValue(8014, 1)
			addEvent(setGlobalStorageValue, 8014, 0)
			creature = ""
			for k = 1, 4 do
				for j = 1, 20 do
					if(k < 3) then
						creature = "eternal guardian"
					else
						creature = "lizard chosen"
					end
					summonPos = {x = math.random(33239, 33295), y = math.random(31100, 31132), z = 7}
					addEvent(doSummonCreature, k * 30 * 1000, creature, summonPos)
					addEvent(doSendMagicEffect, k * 30 * 1000, summonPos, CONST_ME_TELEPORT)
				end
			end
			addEvent(doClearMissionArea, 5 * 30 * 1000, {x = 33239, y = 31100, z = 7}, {x = 33295, y = 31132, z = 7})
			addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 15335, 2)
			addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 1050, 20)
		end
	end

return true
end

ps: eu não to testando, mas acho que deve funcionar...

Oie :D

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

Copiei e não deu :/

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

Techrlz

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 03/03/14Posts: 239

.

 

 

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

wtf HIEHEIHE

rachei dos parenteses kk, como se tivesse mais de uma condicional ai ne kk

ai ai

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

UroTTa

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 31Char no Tibia: Lost Woods

Alem de ficar criticando porque não tenta me ajudar @dalvorsn

WWW.LEGENDOT.NET

Mapa styller editado é unico,

Servidor 8.60 totalmente brasileiro.

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

hahaha, com ou sem parênteses, nesse caso, da no mesmo kkkk

 

 

...

Oie :D

Techrlz

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 03/03/14Posts: 239

hahaha, com ou sem parênteses, nesse caso, da no mesmo kkkk

 

enfim, tenta assim cara:

 

 

 

local pos = {
	{x = 33258, y = 31079, z = 8},
	{x = 33259, y = 31089, z = 8},
	{x = 33266, y = 31084, z = 8},
	{x = 33263, y = 31093, z = 8}
}


function doClearMissionArea(fromPos, toPos)
	for x = fromPos.x, toPos.x do
		for y = fromPos.y, toPos.y do
			for z = fromPos.z, toPos.z do
				if(getTopCreature({x = x, y = y, z = z}).uid > 0) then
					if(isPlayer(getTopCreature({x = x, y = y, z = z}).uid)) then
						doTeleportThing(getTopCreature({x = x, y = y, z = z}).uid, {x = 33353, y = 31410, z = 8})
						doSendMagicEffect({x = 33353, y = 31410, z = 8}, CONST_ME_TELEPORT)
					else
						doRemoveCreature(getTopCreature({x = x, y = y, z = z}).uid)
					end
				end
			end
		end
	end
	return true
end

function TirarEscada()
    local escada = getTileItemById({x = 33265, y = 31116, z = 8}, 3687)
    local escada2 = getTileItemById({x = 33265, y = 31116, z = 7}, 3219)
    if escada then
        doRemoveItem(escada.uid, 1)
	doRemoveItem(escada2.uid, 1)
	doCreateItem(11097, 1, {x = 33265, y = 31116, z = 7})
    end
    return true
end


function onStepIn(cid, item, position, lastPosition)
	start = 0
	if item.actionid == 8014 then
		for i = 1, 4 do
			pos[i].stackpos = 253
			local creature = getThingFromPos(pos[i]).uid
			if creature > 0 then
				if isPlayer(creature) then
					if getGlobalStorageValue(8014) < 1 then
						if getPlayerStorageValue(creature, 1050) == 19 then
							doCreatureSay(creature, "A clicking sound tatters the silence.", TALKTYPE_ORANGE_1)
							start = start + 1
						end
					end
				end
			end
		end
		if start == 4 then
			doCreateItem(3687, 1, {x = 33265, y = 31116, z = 8})
			doCreateItem(3219, 1, {x = 33265, y = 31116, z = 7})
			addEvent(TirarEscada, 30 * 1000)
			setGlobalStorageValue(8014, 1)
			addEvent(setGlobalStorageValue, 8014, 0)
			creature = ""
			for k = 1, 4 do
				for j = 1, 20 do
					if(k < 3) then
						creature = "eternal guardian"
					else
						creature = "lizard chosen"
					end
					summonPos = {x = math.random(33239, 33295), y = math.random(31100, 31132), z = 7}
					addEvent(doSummonCreature, k * 30 * 1000, creature, summonPos)
					addEvent(doSendMagicEffect, k * 30 * 1000, summonPos, CONST_ME_TELEPORT)
				end
			end
			addEvent(doClearMissionArea, 5 * 30 * 1000, {x = 33239, y = 31100, z = 7}, {x = 33295, y = 31132, z = 7})
			addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 15335, 2)
			addEvent(setPlayerStorageValue, 5 * 30 * 1000, cid, 1050, 20)
		end
	end

return true
end

 

 

 

Eu troquei uma função ali que vc tava usando por getThingFromPos.

 

Como eu disse, não to testando, mas sei lá, eu nunca tinha usado essa função getTopCreature, então troquei, de repente é isso...

 

Essa função getThingFromPos nem existe em tfs 1.0 o certo e usar getTopCreature mesmo.

 

 

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

Alem de ficar criticando porque não tenta me ajudar @dalvorsn

Amigo a solução para o seu problena ja foi dita, se nao esta funcionando e por algum defeito no seu code

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)