Ir para conteúdo
  • 0

Golden/Survival Arena


Pergunta

Galera preciso de ajuda pra configurar melhor essa Arena....
Ando tendo problemas com ela...
o que eu quero é que ela de o aviso que vai iniciar a X hora com 3 minutos de antecedência e que a wave de monstros nasça de 1 em 1 minuto

O código acime é no LIB.....

 

 

Global Event

  Mostrar conteúdo oculto

Scripts

StartSurvival

  Mostrar conteúdo oculto

SurvivalArena

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Acho melhor passar o StartSurvival para dentro do SurvivalArena:

Novo SurvivalArena:

function onTimer()
	setGlobalStorageValue(254600, 1)
	setGlobalStorageValue(254601, 1)
	addEvent(setGlobalStorageValue, 3 * 60 * 1000, 254601, -1)
	doBroadcastMessage("[Survival Arena]: O evento irá começar em 3 minutos, você é forte o suficiente para participar?")            
	addEvent(doBroadcastMessage, 1 * 60 * 1000, "[Survival Arena]: A Entrada irá fechar em 2 minutos, você é forte o suficiente para participar?")
	addEvent(doBroadcastMessage, 2 * 60 * 1000, "[Survival Arena]: A Entrada irá fechar em 1 minutos, você é forte o suficiente para participar?")
	addEvent(doBroadcastMessage, 3 * 60 * 1000, "[Survival Arena]: A Entrada fechou.... Boa Sorte a todos.")
	addEvent(startGolden, 3*60*1000)
	return true    
end

 

E na função setMonsterWave no lib troque por:

function setMonsterWave(arenaName, wave, count, multi)
    if #getPlayersInArea(b.ArenaPlayers) < 1 then 
        doBroadcastMessage("[Survival Arena]: Todos jogadores foram derrotados.")
        --limpar arena
        return true
    end
	local this_wave = arena[arenaName].pokemon[wave]

	if not arena[arenaName] then	
		return false
	end
	
	if not this_wave then
		return false
	end
	
	for i = 1, count, 1 do
		EX = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
		EY = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
	
		local position = {x = EX, y = EY, z = arena[arenaName].z}

		if isWalkable(position) and getTopCreature(position).uid == 0 then		
			local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
			setBonusWild(monster, multi)
		else
			for l = 0, 0, 0 do
				position.x = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
				position.y = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
				if isWalkable(position) and getTopCreature(position).uid == 0 then		
					local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
					setBonusWild(monster, multi)
					break
				end
			end
		end
	end
    wave = wave+1
    setGlobalStorage(214689, wave)
	addEvent(setMonsterWave, 1 * 60 * 1000, "Golden", wave, 25 + math.floor(wave * 2), 1 + (wave * 0.10))
end
			


Se necessário, nessa função troque "--limpar arena" pela função que remove os monstros que sobraram da arena.

 

Editado por Scizorgame
Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757235
Compartilhar em outros sites

  • 0
  Em 20/02/2020 em 11:44, Scizorgame disse:

Acho melhor passar o StartSurvival para dentro do SurvivalArena:

Novo SurvivalArena:

function onTimer()
	setGlobalStorageValue(254600, 1)
	setGlobalStorageValue(254601, 1)
	addEvent(setGlobalStorageValue, 3 * 60 * 1000, 254601, -1)
	doBroadcastMessage("[Survival Arena]: O evento irá começar em 3 minutos, você é forte o suficiente para participar?")            
	addEvent(doBroadcastMessage, 1 * 60 * 1000, "[Survival Arena]: A Entrada irá fechar em 2 minutos, você é forte o suficiente para participar?")
	addEvent(doBroadcastMessage, 2 * 60 * 1000, "[Survival Arena]: A Entrada irá fechar em 1 minutos, você é forte o suficiente para participar?")
	addEvent(doBroadcastMessage, 3 * 60 * 1000, "[Survival Arena]: A Entrada fechou.... Boa Sorte a todos.")
	addEvent(startGolden, 3*60*1000)
	return true    
end

 

E na função setMonsterWave no lib troque por:

function setMonsterWave(arenaName, wave, count, multi)
    if #getPlayersInArea(b.ArenaPlayers) < 1 then 
        doBroadcastMessage("[Survival Arena]: Todos jogadores foram derrotados.")
        --limpar arena
        return true
    end
	local this_wave = arena[arenaName].pokemon[wave]

	if not arena[arenaName] then	
		return false
	end
	
	if not this_wave then
		return false
	end
	
	for i = 1, count, 1 do
		EX = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
		EY = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
	
		local position = {x = EX, y = EY, z = arena[arenaName].z}

		if isWalkable(position) and getTopCreature(position).uid == 0 then		
			local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
			setBonusWild(monster, multi)
		else
			for l = 0, 0, 0 do
				position.x = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
				position.y = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
				if isWalkable(position) and getTopCreature(position).uid == 0 then		
					local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
					setBonusWild(monster, multi)
					break
				end
			end
		end
	end
    wave = wave+1
    setGlobalStorage(214689, wave)
	addEvent(setMonsterWave, 1 * 60 * 1000, "Golden", wave, 25 + math.floor(wave * 2), 1 + (wave * 0.10))
end
			


Se necessário, nessa função troque "--limpar arena" pela função que remove os monstros que sobraram da arena.

 

Expand  

Beleza manoooo vou testar aqui

 

Manooooooooo funfouuuu perfeitamente VLW MANIN
REPZÃO NA MÃO ^^

 

Aaaaah deu esse erro aqui....

[Error - GlobalEvent Interface]
In a timer event called from:
data/globalevents/scripts/survivalArena.lua:onTimer
Description:
data/lib/036-golden arena.lua:294: attempt to index global 'b' (a nil value)
stack traceback:
        data/lib/036-golden arena.lua:294: in function <data/lib/036-golden arena.lua:293>


o Evento ta com as configurações pegando mas não está spamando os mobs

 

Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757245
Compartilhar em outros sites

  • 0

Qual essa linha 294 ?

Na função setMonsterWave troque:

for l = 0, 0, 0 do

 

Por:

for l = 0, 0 do

 

Na tabela arena["Golden"] troque:

ArenaPlayers = {fromx = 1262, fromy = 1639, fromz = 6, tox = 1341, toy = 1686, toz= 6}, -- área onde será checado se tem players

 

Por:

ArenaPlayers = {["from"] = {x = 1262, y = 1639, z = 6}, ["to"] = {x = 1341, y = 1686, z= 6}, -- área onde será checado se tem players

 

Troque a função startGolden() por essa:

function startGolden()
	if getGlobalStorageValue(254600) >= 1 then
		local aG = arena["Golden"]
		if #getPlayersInArea(aG.ArenaPlayers["from"], aG.ArenaPlayers["to"]) >= 1 then
			local wave = getGlobalStorageValue(214689) <= 1 and 1 or getGlobalStorageValue(214689)
			setGlobalStorageValue(214689, wave + 1)
			doBroadcastMessage("[Survival Arena]:A ["..wave.."] irá surgir em 3 minutos")
			addEvent(setMonsterWave, 3 * 60 * 1000, "Golden", wave, 25 + math.floor(wave * 2), 1 + (wave * 0.10))
		else
			setGlobalStorageValue(254600, 0)
			setGlobalStorageValue(214689, 0)
			creatureInSurvival(aG.ArenaUpper, aG.ArenaLower, true, true)
			doBroadcastMessage("[Survival Arena]: Evento finalizado até a próxima!")
		end
	end
end

 

Editado por Scizorgame
Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757261
Compartilhar em outros sites

  • 0
  Em 20/02/2020 em 22:11, Scizorgame disse:

Qual essa linha 294 ?

Na função setMonsterWave troque:

for l = 0, 0, 0 do

 

Por:

for l = 0, 0 do

 

Na tabela arena["Golden"] troque:

ArenaPlayers = {fromx = 1262, fromy = 1639, fromz = 6, tox = 1341, toy = 1686, toz= 6}, -- área onde será checado se tem players

 

Por:

ArenaPlayers = {["from"] = {x = 1262, y = 1639, z = 6}, ["to"] = {x = 1341, y = 1686, z= 6}, -- área onde será checado se tem players

 

Troque a função startGolden() por essa:

function startGolden()
	if getGlobalStorageValue(254600) >= 1 then
		local aG = arena["Golden"]
		if #getPlayersInArea(aG.ArenaPlayers["from"], aG.ArenaPlayers["to"]) >= 1 then
			local wave = getGlobalStorageValue(214689) <= 1 and 1 or getGlobalStorageValue(214689)
			setGlobalStorageValue(214689, wave + 1)
			doBroadcastMessage("[Survival Arena]:A ["..wave.."] irá surgir em 3 minutos")
			addEvent(setMonsterWave, 3 * 60 * 1000, "Golden", wave, 25 + math.floor(wave * 2), 1 + (wave * 0.10))
		else
			setGlobalStorageValue(254600, 0)
			setGlobalStorageValue(214689, 0)
			creatureInSurvival(aG.ArenaUpper, aG.ArenaLower, true, true)
			doBroadcastMessage("[Survival Arena]: Evento finalizado até a próxima!")
		end
	end
end

 

Expand  

Vish agora nem da mais start

 

  Mostrar conteúdo oculto

Manooo eu deixei ela assim ela começa mas não continua... tipo vem a primeira Wave e depois não vem mais nada

Voltando aqui sobre o Erro lá na linha

 

[Error - GlobalEvent Interface]
In a timer event called from:
data/globalevents/scripts/survivalArena.lua:onTimer
Description:
data/lib/036-golden arena.lua:294: attempt to index global 'b' (a nil value)
stack traceback:
        data/lib/036-golden arena.lua:294: in function <data/lib/036-golden arena.lua:293>

 

 

o Erro ta nessa parte onde destaquei



 

function setMonsterWave(arenaName, wave, count, multi)
    if #getPlayersInArea(b.ArenaPlayers) < 1 then 
        doBroadcastMessage("[Survival Arena]: Todos jogadores foram derrotados.")
        --limpar arena
        return true
    end
    local this_wave = arena[arenaName].pokemon[wave]

    if not arena[arenaName] then    
        return false
    end
    
    if not this_wave then
        return false
    end
    
    for i = 1, count, 1 do
        EX = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
        EY = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
    
        local position = {x = EX, y = EY, z = arena[arenaName].z}

        if isWalkable(position) and getTopCreature(position).uid == 0 then        
            local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
            setBonusWild(monster, multi)
        else
            for l = 0, 0, 0 do
                position.x = math.random(arena[arenaName].TopLeft.x,arena[arenaName].BottomRight.x)
                position.y = math.random(arena[arenaName].TopLeft.y,arena[arenaName].BottomRight.y)
                if isWalkable(position) and getTopCreature(position).uid == 0 then        
                    local monster = doCreateMonster(this_wave[math.random(1,#this_wave)], position)
                    setBonusWild(monster, multi)
                    break
                end
            end
        end
    end
    wave = wave+1
    setGlobalStorage(214689, wave)
    addEvent(setMonsterWave, 1 * 60 * 1000, "Golden", wave, 25 + math.floor(wave * 2), 1 + (wave * 0.10))
end

Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757266
Compartilhar em outros sites

  • 0

Troque ela por:

if #getPlayersInArea(arena["Golden"].ArenaPlayers["from"], arena["Golden"].ArenaPlayers["to"]) < 1 then

 

Editado por Scizorgame
Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757273
Compartilhar em outros sites

  • 0
  Em 21/02/2020 em 03:21, Scizorgame disse:

Troque ela por:

if #getPlayersInArea(arena["Golden"].ArenaPlayers["from"], arena["Golden"].ArenaPlayers["to"]) < 1 then

 

Expand  

Mano nada
ele ta dando erro no começo tambem

 

 

ta nessa linha 
 

ArenaPlayers = {["from"] = {x = 1262, y = 1639, z = 6}, ["to"] = {x = 1341, y = 1686, z= 6},
Link para o comentário
https://xtibia.com/forum/topic/251082-goldensurvival-arena/#findComment-1757311
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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