Jump to content

Tower quest


Recommended Posts

Em 31/10/2017 at 22:39, PuW disse:

acho que o erro é devido a falta da função: 


getStoreString

deu um erro com a função, porém, eu coloquei uma função getStoreString que achei aqui pelo fórum mas não sei se é a correta você poderia me mandar a função?

----Edit

acho que achei o motivo do erro, tipo, se eu colocar:

  Ocultar conteúdo

local search = getCreaturesInRange(tower, 70, 70, true, showPlayers)
local players = getCreaturesInRange(tower, 70, 70, showMonsters, true)
local pp = getCreaturesInRange(tower, 70, 70, showMonsters, true)


ele não funciona, mas, se eu colocar:

  Ocultar conteúdo

local search = getCreaturesInRange(tower, 3, 3, true, showPlayers)
local players = getCreaturesInRange(tower, 3, 3, showMonsters, true)
local pp = getCreaturesInRange(tower, 3, 3, showMonsters, true)


como tava no script inicial ele funciona normalmente, mas, como minha tower é grande ele teleporta o player sem o player precisar matar todos os bixos

 

Aqui está a função getstorestring:

Spoiler


function getStoreString(str) --[[( Marcryzius )]]--
--Essa função converte a 'string' em numeros e devolve a soma de todos os numeros.
local store = 0
	if(type(str) == 'string')then
		for pos = 1,#str do
			store = store+str:sub(pos,pos):byte()
		end
	elseif(type(str) == 'number')then
		return str
	else
		print('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')')
	end
	return store
end

 

 

Com relação a esse outro problema descrito por tu, não faço a menor ideia do porquê isso acontece, pois o script não tem limite de radius.

Link to comment
Share on other sites

Agora, Poccnn disse:

 

Aqui está a função getstorestring:

  Mostrar conteúdo oculto



function getStoreString(str) --[[( Marcryzius )]]--
--Essa função converte a 'string' em numeros e devolve a soma de todos os numeros.
local store = 0
	if(type(str) == 'string')then
		for pos = 1,#str do
			store = store+str:sub(pos,pos):byte()
		end
	elseif(type(str) == 'number')then
		return str
	else
		print('function getStoreString adverte: tipo de parametro invalido. ('..type(str)..')')
	end
	return store
end

 

 

Com relação a esse outro problema descrito por tu, não faço a menor ideia do porquê isso acontece, pois o script não tem limite de radius.

Vou testar e muito obrigado, em relação as modificações você irá fazer?

Link to comment
Share on other sites

  • 2 years later...
Em 05/06/2017 em 08:43, Poccnn disse:

Hail Xtibianos!

 

Eu fiz essa quest há um tempo atrás como uma forma diferente da paradox tower quest.

 

Existem sete níveis  (pode ser modificado), cada nível terá uma série de monstros, ao matar todos os monstros os players são teleportados para o andar acima, no último andar será a sala da recompensa.

 

Deixo aqui um exemplo de como montar a tower quest.

 

Parte superior (sala da recompensa)

tile_full_1.jpg.70e2c52539f2642e198be5d71c298f7e.jpg

 

Parte inicial com escada.

tile_first_7.jpg.1d510d161eb12dc972133bacce091f8b.jpg

 

Primeira sala com monstros (aqui o sistema começa a funcionar).

second_tile_6.jpg.165e4c97b8255b1a3ecc681627843870.jpg

 

Implementando o sistema.

 

Na escada tu coloca uma aid qualquer, registra no arquivo movements.xml

Ex:

 

Agora crie um arquivo lua e põe esse código nele.

 

tower.lua

  Ocultar conteúdo


local events,towers,QuantPlayersTower = {},{
	{x=908,y=925,z=6,firstNivel=6,ultimoNivel=1},--posição central e primeira sala da torre 1. firstNivel mesmo valor do z; ultimoNivel é o ultimo nivel da torre; sala da recompensa.
	{x=926,y=921,z=7,firstNivel=7,ultimoNivel=5},--posição central e primeira sala da torre 2.  firstNivel mesmo valor do z;  ultimoNivel é o ultimo nivel da torre; sala da recompensa.
	--{x=0,y=0,z=0},--posição central e primeira sala da torre 3 e assim sucessivamente...
},2 -- quantidade de players por sala da tower

function rollUpLevelTower(tower,id,players)
	tower.z = tower.z-1
	for _,cid in pairs(players) do
		if(isPlayer(cid))then
		local Ppos = getCreaturePosition(cid)
			Ppos.z = Ppos.z-1
			doTeleportThing(cid,Ppos)
		end
	end
	events[id] = addEvent(upDateLevelKTower,1000,tower,id)
end

function upDateLevelKTower(tower,id)
local search = getCreaturesInRange(tower, 3, 3, true, showPlayers)
local players = getCreaturesInRange(tower, 3, 3, showMonsters, true)
	if(#players > 0 and search[1])then
		events[id] = addEvent(upDateLevelKTower,1000,tower,id)
	elseif(tower.z > tower.ultimoNivel)then
		for _,cid in pairs(players) do
			doPlayerSendCancel(cid,"10 segundos para o proximo nivel.")
		end
		events[id] = addEvent(rollUpLevelTower, 10*1000, tower,id,players) -- 10 segundos para ir para o proximo nivel.
		return
	else
		for _,cid in pairs(players) do	
			setPlayerStorageValue(cid,getStoreString("towerQuest"),tonumber(os.date("%d"))) 
		end	
	end
	events[id] = nil
	tower.z = tower.firstNivel	
end

function onStepIn(cid, item, pos)
	if not isPlayer(cid) then return true end
	for k,tower in pairs(towers) do
	local pp = getCreaturesInRange(tower, 3, 3, showMonsters, true)
		if(getPlayerStorageValue(cid,getStoreString("towerQuest")) == tonumber(os.date("%d")))then
			doPlayerSendCancel(cid,"Tu já fizeste essa quest hoje. Amanhã poderás faze-la de novo.")
		elseif(#pp < QuantPlayersTower)then 
			doTeleportThing(cid,tower)
			if not events[k] then table.insert(events,addEvent(upDateLevelKTower,1000,tower,k)) end
			return true
		elseif(#towers == k)then
			doPlayerSendCancel(cid,"Todas as torres estão ocupadas.")
		end
	end
	return false
end 

 

 

Espero que gostem e qualquer dúvida ou problema no script, deixe nos comentários. 

 

 

 

 

error

 

[25/01/2020 19:13:16] [Error - MoveEvents Interface] 
[25/01/2020 19:13:16] data/movements/scripts/Tower/Tower nivel 1.lua:onStepIn
[25/01/2020 19:13:16] Description: 
[25/01/2020 19:13:16] data/movements/scripts/Tower/Tower nivel 1.lua:42: attempt to call global 'getCreaturesInRange' (a nil value)
[25/01/2020 19:13:16] stack traceback:
[25/01/2020 19:13:16]     data/movements/scripts/Tower/Tower nivel 1.lua:42: in function <data/movements/scripts/Tower/Tower nivel 1.lua:39>

Link to comment
Share on other sites

×
×
  • Create New...