Ir para conteúdo
  • 0

[Resolvido] Lottery System sem sortear membros da staff


Tio Lukz

Pergunta

Fala galera, to tendo uns probleminhas aqui, como o título do tópico diz, preciso de uma adequação no script. Segue o script abaixo, meu servidor é o Styller 8.60. Qualquer informação que for necessária que eu não tenha mencionado, comentem que eu edito o pedido. Agradeço desde já pela atenção e pelo tempo dedicado. Valeu!

local premio = {
[1] = {item = 2160, count = 10},
}

local configs = {
        hours = 2, -- quantas em quantas horas, vai acontecer.
        winners = 1 -- qntos players podem ganhar.
}

function onThink(interval, lastExecution)

local p = getPlayersOnline()
local winners = configs.winners

if #p < winners then
        winners = #p
end


for i = 1, winners do
        local p = getPlayersOnline()
        local c, w = #p, #premio
        local d, e = math.random(c), math.random(w)
        local playerwin = p[d]
        doPlayerAddItem(playerwin, premio[e].item, premio[e].count)
        doBroadcastMessage("")
        if i == winners then
                doBroadcastMessage("[" .. i .. "ST PLACE] Winner: " .. getCreatureName(playerwin) .. ", Reward: " .. premio[e].count .. " " .. getItemNameById(premio[e].item) .. ", Congratulations! (Next Lottery in " .. configs.hours .. " hours.)")
        end
        doSendMagicEffect(getThingPos(playerwin), 12)
end

return true
end

 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Eai bro, eu fiz aqui mas não testei. Vê aí

local configs = {
	hours = 2, -- quantas em quantas horas, vai acontecer.
	winners = 1, -- qntos players podem ganhar.
	premio = {
        [1] = {item = 2160, count = 10},
	}
}

function onThink(interval, lastExecution)
	if getPlayersOnline() >= configs.winners then
		local str = "Lottery:"
		for i = 1, configs.winners do
			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
			if getPlayerAcess(lucky_player) <= 1 then
				local random_reward = configs.premio[math.random(#configs.premio)]
				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
			end
		end
		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
	end
	return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia queridão, eu testei aqui, mas deu erro, na distro informa isso:

[Error - GlobalEvent Interface]
data/globalevents/scripts/incendio.lua:onThink
Description:
data/globalevents/scripts/incendio.lua:10: attempt to compare number with table
stack traceback:
data/globalevents/scripts/incendio.lua:10: in function <data/globalevents/scripts/incendio.lua:9>
[Error - GlobalEvents::think] Couldn't execute event: lotery

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
26 minutos atrás, Tio Lukz disse:

Bom dia queridão, eu testei aqui, mas deu erro, na distro informa isso:


[Error - GlobalEvent Interface]
data/globalevents/scripts/incendio.lua:onThink
Description:
data/globalevents/scripts/incendio.lua:10: attempt to compare number with table
stack traceback:
data/globalevents/scripts/incendio.lua:10: in function <data/globalevents/scripts/incendio.lua:9>
[Error - GlobalEvents::think] Couldn't execute event: lotery

 

 

 

 

Aah sim, perdão mano, tinha esquecido de um pequeno detalhe.

local configs = {
	hours = 2, -- quantas em quantas horas, vai acontecer.
	winners = 1, -- qntos players podem ganhar.
	premio = {
        [1] = {item = 2160, count = 10},
	}
}

function onThink(interval, lastExecution)
	if #getPlayersOnline() >= configs.winners then
		local str = "Lottery:"
		for i = 1, configs.winners do
			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
			if getPlayerAcess(lucky_player) <= 1 then
				local random_reward = configs.premio[math.random(#configs.premio)]
				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
			end
		end
		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
	end
	return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
[10:6:20.466] [Error - GlobalEvent Interface]
[10:6:20.470] data/globalevents/scripts/incendio.lua:onThink
[10:6:20.472] Description:
[10:6:20.473] data/globalevents/scripts/incendio.lua:14: attempt to call global 'getPlayerAcess' (a nil value)
[10:6:20.478] stack traceback:
[10:6:20.480]   data/globalevents/scripts/incendio.lua:14: in function <data/globalevents/scripts/incendio.lua:9>
[10:6:20.486] [Error - GlobalEvents::think] Couldn't execute event: lotery

Agora o erro é esse.

Link para o comentário
Compartilhar em outros sites

  • 1

Fazer scripts sem testar, tem dessas coisas kkkkk. São erros mto toscos

 

local configs = {
	hours = 2, -- quantas em quantas horas, vai acontecer.
	winners = 1, -- qntos players podem ganhar.
	premio = {
		[1] = {item = 2160, count = 10},
	}
}

function onThink(interval, lastExecution)
	if #getPlayersOnline() >= configs.winners then
		local str = "Lottery:"
		for i = 1, configs.winners do
			local lucky_player = getPlayersOnline()[math.random(#getPlayersOnline())]
			if getPlayerAccess(lucky_player) <= 1 then
				local random_reward = configs.premio[math.random(#configs.premio)]
				doPlayerAddItem(lucky_player, random_reward.item, random_reward.count)
				str = str .. "\n" .. getCreatureName(lucky_player) .. " - " .. random_reward.count .. "x " .. getItemNameById(random_reward.item)
			end
		end
		doBroadcastMessage(str .. "\n (Next in " .. configs.hours .. " hours.)")
	end
	return true
end

 

Editado por Tony Araujo
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...