Ir para conteúdo
  • 0

[Globalevent] Loteria Apenas Fim De Semana


lucas502

Pergunta

Eae galera blza?

 

então, acredito que seja facil, pois eu mesmo que não entendo nada de script tentei e cheguei bem perto, mas sem sucesso :D

 

oq eu preciso é o seguinte: Sistema de Loteria apenas nos dias que eu escolher, ou melhor, somente nos fins de semana a cada 5 horas.

 

 

segue meu lottery:

-- Lottery System
local config = {
   lottery_hour = "2 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
   rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
   crystal_counts = 5, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
   website = "no" -- Only if you have php scripts and table `lottery` in your database!
   }
function onThink(interval, lastExecution)
    if(getWorldCreatures(0) == 0)then
		    return true
    end

   local list = {}
   for i, tid in ipairs(getPlayersOnline()) do
		    list[i] = tid
    end
    local winner = list[math.random(1, #list)]
    local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

    if(random_item == 2160) then
		    doPlayerAddItem(winner, random_item, config.crystal_counts)
		    doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
    else
		    doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
		    doPlayerAddItem(winner, random_item, 1)
    end

    if(config.website == "yes") then
		    db.query("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
    end
    return true
end

 

aguardo pessoal, vlw ;D

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Testa ae

 

 

-- Lottery System
local config = {
   lottery_hour = "5 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
   rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
   crystal_counts = 5, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
   website = "no" -- Only if you have php scripts and table `lottery` in your database!
   dias = {"Sunday", "Saturday"}
   }
function onThink(interval, lastExecution)
           if(getWorldCreatures(0) == 0)then
if isInArray(quedia.dias, os.date("%A")) then
                           return true
           end
                           return true
           end

   local list = {}
   for i, tid in ipairs(getPlayersOnline()) do
                           list[i] = tid
           end
           local winner = list[math.random(1, #list)]
           local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

           if(random_item == 2160) then
                           doPlayerAddItem(winner, random_item, config.crystal_counts)
                           doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
           else
                           doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
                           doPlayerAddItem(winner, random_item, 1)
           end

           if(config.website == "yes") then
                           db.query("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
           end
           return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Lucaws esta certo so que se cometeu um pequeno erro vc coloco o nome do local errado ja que vc coloco para verificar e ja pos end voce tinha que ter colocado o not

Se quiser uma dicas me manda mp pq seus erros sao bobinhos mais podem prejudicar o script.

 

 

e so colocar assim

 

 

-- Lottery System

local config = {

lottery_hour = "5 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)

dias = {"Sunday","Saturday"},

rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria

crystal_counts = 5, -- Usado somente se a rewards_id for crystal coin (ID: 2160).

website = "no" -- Only if you have php scripts and table `lottery` in your database!

}

function onThink(interval, lastExecution)

if not isInArray(config.dias, os.date("%A")) then

return true

end

if(getWorldCreatures(0) == 0)then

return true

end

local list = {}

for i, tid in ipairs(getPlayersOnline()) do

list = tid

end

local winner = list[math.random(1, #list)]

local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

if(random_item == 2160) then

doPlayerAddItem(winner, random_item, config.crystal_counts)

doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")

else

doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")

doPlayerAddItem(winner, random_item, 1)

end

if(config.website == "yes") then

db.query("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")

end

return true

end

 

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 0

Eu queria um script desses só que seja de itens diferentes e que possam ter a chance de sorteados tipo, 1º demon legs, depois uma boh... o rodom dos itens sejam aleatorios.

Link para o comentário
Compartilhar em outros sites

  • 0

então galera, fiz o teste aki e tive um erro no distro:

 

Error - luainterface::loadfile] data/globalevents/scripts/lotteryfds/scripts/lotteryfds.lua

 

lotteryfds.lua:8: '}' expected <to close '}' at line 3> near 'dias'

Link para o comentário
Compartilhar em outros sites

  • 0

não funcionou não... A loteria ainda está sorteando em outros dias "sem ser fim de semana".

 

 

Como resolver? vlw

Editado por Lucas502
Link para o comentário
Compartilhar em outros sites

  • 0

Pow 2003... Tá atualizado heim.

Se você quer colocar para horario e data BR você tem que programar para isso.

Caso ao contrario ele fará eventos na hora e data de onde se encontra o dedicado.

 

Fuso Horário certo é:

 

GMT -03:00 Brasilia.

Link para o comentário
Compartilhar em outros sites

  • 0

-- Lottery System
local config = {
lottery_hour = "2 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
crystal_counts = 5, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
website = "no", -- Only if you have php scripts and table `lottery` in your database!
days = {"Saturday","Sunday"} -- days the weekend
}
function onThink(interval, lastExecution)
		if (getWorldCreatures(0) == 0) or not isInArray(config.days, os.date("%A")) then
						return true
		end

local list = {}
for i, tid in ipairs(getPlayersOnline()) do
						list[i] = tid
		end
		local winner = list[math.random(1, #list)]
		local random_item = config.rewards_id[math.random(1, #config.rewards_id)]

		if(random_item == 2160) then
						doPlayerAddItem(winner, random_item, config.crystal_counts)
						doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
		else
						doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")")
						doPlayerAddItem(winner, random_item, 1)
		end

		if(config.website == "yes") then
						db.query("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
		end
		return true
end

 

 

@caotic

 

o seu estava pelo simples motivo de usar a estrutura de controle de forma errônea, veja bem:

 

if(getWorldCreatures(0) == 0)then
if not isInArray(config.dias, os.date("%A")) then
return true
end
return true
end

 

if(getWorldCreatures(0) == 0)then

 

só iria executar se não tivesse nenhum player(criatura ou npc tbm acho) no server e então ele iria passar para o próximo bloco que seria

 

if not isInArray(config.dias, os.date("%A")) then

 

e aqui está certo, só errou naquela outra mesmo.

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

aff nem tinha percebido a verificaçao la

 

eu pensava que a verificaçao ja tinha terminado eu nao vi msn acho que so foi falta de atençao

 

 

Me desculpe

 

Esta certo analisando o or serve apenas falta de atençao apenas falta de atençao........

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 0

aff nem tinha percebido a verificaçao la

 

eu pensava que a verificaçao ja tinha terminado eu nao vi msn acho que so foi falta de atençao

 

 

Me desculpe

 

ja concertei o meu tambem foi tambem um boa usar o "or" no seu script mais isto nao seria como se fosse "ou" podera dar erro,nao?

e mais facil usar "and"

 

?

 

velho, estuda um pouco mais de lua porque está precisando, deixa eu te falar a diferença básica de "and" e "or"...

 

o "and" sempre vai retornar seu segundo argumento se o primeiro argumento for nil ou false, ou seja, ele só vai executar o bloco que seus argumentos forem verdadeiro, exemplo:

 

local nome = "joão"
local idade = 15

if nome == "joão" and idade == 15 then
return true
end

 

nesse caso só vai executar o script se o nome for joão e a idade for 15, se o nome já não for joão nem vai mais executar nada, depois do "and" ele nem vai mais ler.

 

o "or" é diferente, é o contrário de "and", ele executa se o seu primeiro bloco é nil ou false:

 


local nome = "joão"
local idade = 15

if nome == "maria" and idade == 15 then
return true
end

 

aqui mesmo que o nome seja maria mas a idade seja 15 ele vai sim executar o script, agora vamos estudar nosso caso

 


                       if (getWorldCreatures(0) == 0) or not isInArray(config.days, os.date("%A")) then
                                                       return true
                       end

 

se não tiver criaturas(players) ou não forem os dias dos fim de semana então

retornar verdadeiro

fim

 

aqui para executar o script, o primeiro argumento que é para checar sem tem players, porque se tivesse um player no ot ele iria checar o segundo argumento, ja que o primeiro ficaria como "false", então iria checar os dias da semana.

 

diferente do and, que para executar o script teria que para executar:

 

se criaturas == 0 e não forem os dias da semana então

retornar verdadeiro

fim

 

ou seja para checar os dias da semana o primeiro argumento do and teria que ser verdadeiro!

para checar os dias teria que ter 0 criaturas no servidor.

 

leia mais em: http://www.lua.org/manual/5.1/pt/manual.html#5.4.1

 

irá te ajudar

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...