Ir para conteúdo
  • Cadastre-se

(Resolvido)Alteração em 2 scripts


Ir para solução Resolvido por thelifeofpbion,

Posts Recomendados

O primeiro script que eu precisava que fosse alterado, é esse globalevents, o problema é que o lottery system está premiando membros da staff, precisava que impedisse isso:

 

E o segundo script, era para incrementar nesse mod uma função para que não permita o uso do mesmo (item de double xp), se o player já estiver utilizando um segundo item que tem outra função e que corresponde a  seguinte storage (71473). 

 

"Você não pode utilizar o potion exp enquanto estiver sob efeito do spirit gem."

 

Se não entenderem, me avisa que tento explicar de outra forma:

 

tfs 0.4

 

-- Lottery System
local config = {
    lottery_hour = "30 minutos", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 300, -- 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.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
        end
        return true
end

 

mod.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 30, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {FALSE, level = 1500},
costmana = {FALSE, mana = 1000},
addrate = 100, -- Exp que vai adicionar em %
removeonuse = TRUE
}
function getTime(s)
    local n = math.floor(s / 60)
    s = s - (60 * n)
    return n, s
end
CreatureEventChecker = function(event, ...) -- Colex
    if isCreature(arg[1]) then
   event(unpack(arg))
    end
end
creatureEvent = function(event, delay, ...) -- Colex
    addEvent(CreatureEventChecker, delay, event, unpack(arg))
end
function getPlayerExtraExpRate(cid) -- By MatheusMkalo
    return (getPlayerRates(cid)[8]-1)*100
end
]]></config>
<!-- exppotion.lua -->
<action itemid="12328" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 49016) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja esta ta Sob o efeito de uma exp potion.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce precisar ser premium para usar esse item.")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce precisa ser " .. configs.needlvl.level .. " para usar a exp potion.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce precisar ter " .. configs.costmana.mana .. " de mana para usar a exp potion.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end
if configs.removeonuse then
    doRemoveItem(item.uid, 1)
end
 
for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito final da exp potion.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O efeito da exp potion vai acabar em "..a..".")
end
doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce esta recebendo 2x de exp.")
setPlayerStorageValue(cid, 49016, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 49016, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 49016) < time *60 then
  doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
  creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
  creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) * 1000 , cid, 49016, 0)
  for i = (time*60-(os.time()-getPlayerStorageValue(cid, 49016))), 1, -1 do
  local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
  if #a < 4 then
  a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
  end
  if i == (time*60-(os.time()-getPlayerStorageValue(cid, 49016))) then
  creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 49016)))*1000, cid, "O efeito da exp potion termina em.")
  end
  creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49016)))-i)*1000, cid, "O efeito da exp potion termina em "..a..".")
  end
    end
return TRUE
]]></creaturescript>
</mod>

 

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

PRIMEIRO SCRIPT:

 

Spoiler

-- Lottery System
local config = {
    lottery_hour = "30 minutos", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 300, -- 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
        if getPlayerAccess(tid) >= 3 then
            doBroadcastMessage("[LOTTERY SYSTEM]: Nao foi possivel realizer a loteria por falta de players online")
            return false
        else
     list = tid
        end      
    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.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
        end
        
        return true
end








Segundo: 

Eu não sei se vai funcionar esse segundo script mas tenta.... caso não funcionar sinto muito... odeio mods.

 

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 30, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {FALSE, level = 1500},
costmana = {FALSE, mana = 1000},
addrate = 100, -- Exp que vai adicionar em %
removeonuse = TRUE
}
function getTime(s)
    local n = math.floor(s / 60)
    s = s - (60 * n)
    return n, s
end
CreatureEventChecker = function(event, ...) -- Colex
    if isCreature(arg[1]) then
   event(unpack(arg))
    end
end
creatureEvent = function(event, delay, ...) -- Colex
    addEvent(CreatureEventChecker, delay, event, unpack(arg))
end
function getPlayerExtraExpRate(cid) -- By MatheusMkalo
    return (getPlayerRates(cid)[8]-1)*100
end
]]></config>
<!-- exppotion.lua -->
<action itemid="12328" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 71473) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja esta ta Sob o efeito de uma exp potion.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce precisar ser premium para usar esse item.")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce precisa ser " .. configs.needlvl.level .. " para usar a exp potion.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce precisar ter " .. configs.costmana.mana .. " de mana para usar a exp potion.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end
if configs.removeonuse then
    doRemoveItem(item.uid, 1)
end
 
for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito final da exp potion.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O efeito da exp potion vai acabar em "..a..".")
end
doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce esta recebendo 2x de exp.")
setPlayerStorageValue(cid, 71473, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 71473, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 71473) < time *60 then
  doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
  creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
  creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) * 1000 , cid, 71473, 0)
  for i = (time*60-(os.time()-getPlayerStorageValue(cid, 71473))), 1, -1 do
  local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
  if #a < 4 then
  a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
  end
  if i == (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) then
  creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 71473)))*1000, cid, "O efeito da exp potion termina em.")
  end
  creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 71473)))-i)*1000, cid, "O efeito da exp potion termina em "..a..".")
  end
    end
return TRUE
]]></creaturescript>
</mod>

 

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
43 minutos atrás, pablobion disse:

PRIMEIRO SCRIPT:

 

  Ocultar conteúdo

-- Lottery System
local config = {
    lottery_hour = "30 minutos", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 300, -- 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
        if getPlayerAccess(tid) >= 3 then
            doBroadcastMessage("[LOTTERY SYSTEM]: Nao foi possivel realizer a loteria por falta de players online")
            return false
        else
     list = tid
        end      
    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.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
        end
        
        return true
end








Segundo: 

Eu não sei se vai funcionar esse segundo script mas tenta.... caso não funcionar sinto muito... odeio mods.

 

  Ocultar conteúdo

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 30, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {FALSE, level = 1500},
costmana = {FALSE, mana = 1000},
addrate = 100, -- Exp que vai adicionar em %
removeonuse = TRUE
}
function getTime(s)
    local n = math.floor(s / 60)
    s = s - (60 * n)
    return n, s
end
CreatureEventChecker = function(event, ...) -- Colex
    if isCreature(arg[1]) then
   event(unpack(arg))
    end
end
creatureEvent = function(event, delay, ...) -- Colex
    addEvent(CreatureEventChecker, delay, event, unpack(arg))
end
function getPlayerExtraExpRate(cid) -- By MatheusMkalo
    return (getPlayerRates(cid)[8]-1)*100
end
]]></config>
<!-- exppotion.lua -->
<action itemid="12328" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 71473) >= 1 then
    return doPlayerSendCancel(cid, "Voce ja esta ta Sob o efeito de uma exp potion.")
end
if configs.needpa and not isPremium(cid) then
    return doPlayerSendCancel(cid, "Voce precisar ser premium para usar esse item.")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
    return doPlayerSendCancel(cid, "Voce precisa ser " .. configs.needlvl.level .. " para usar a exp potion.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
    return doPlayerSendCancel(cid, "Voce precisar ter " .. configs.costmana.mana .. " de mana para usar a exp potion.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end
if configs.removeonuse then
    doRemoveItem(item.uid, 1)
end
 
for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "Efeito final da exp potion.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "O efeito da exp potion vai acabar em "..a..".")
end
doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce esta recebendo 2x de exp.")
setPlayerStorageValue(cid, 71473, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 71473, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
    if os.time()-getPlayerStorageValue(cid, 71473) < time *60 then
  doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
  creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
  creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) * 1000 , cid, 71473, 0)
  for i = (time*60-(os.time()-getPlayerStorageValue(cid, 71473))), 1, -1 do
  local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
  if #a < 4 then
  a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
  end
  if i == (time*60-(os.time()-getPlayerStorageValue(cid, 71473))) then
  creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 71473)))*1000, cid, "O efeito da exp potion termina em.")
  end
  creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 71473)))-i)*1000, cid, "O efeito da exp potion termina em "..a..".")
  end
    end
return TRUE
]]></creaturescript>
</mod>

 

 

Para surpreender você, o mod funcionou, e o do global events deu erro:

 

Acusa que o player não esta online, mas ele esta

 

erro.png

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

HAHAHAHAHA eita :putnam:
Bom, eu tenho um script aqui de lottery system, acho que é mais facil a gente modificar para um que funcione e é bom do que tentar arrumar esse ai, o que acha?
A diferença é que esse pode ser usado ou não com site, e o horario é pré determinado


tag:
    <globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>

 

lottery.lua

Spoiler

local config = {
        lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
        rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
        crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
        website = "no", -- so colocar yes se voce usa server com site e tiver as querys na data base
        days = {
                "Monday-08:00",
                "Monday-13:00",
                "Monday-19:30",

                "Tuesday-08:00",
                "Tuesday-13:00",
                "Tuesday-19:30",
                "Tuesday-05:53",

                "Wednesday-08:00",
                "Wednesday-13:00",
                "Wednesday-19:30",

                "Thursday-08:00",
                "Thursday-13:00",
                "Thursday-19:30",

                "Friday-01:22",
                "Friday-13:00",
                "Friday-19:30",

                "Saturday-21:27",
                "Saturday-21:28",
                "Saturday-21:29",

                "Sunday-08:00",
                "Sunday-13:00",
                "Sunday-19:30"
                }
        }
local function getPlayerWorldId(cid)
    if not(isPlayer(cid)) then
        return false
    end
    local pid = getPlayerGUID(cid)
    local worldPlayer = 0
    local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
    if(result_plr:getID() ~= -1) then
        worldPlayer = tonumber(result_plr:getDataInt("world_id"))
        result_plr:free()
        return worldPlayer
    end
    return false
end

local function getOnlineParticipants()
    local players = {}
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
            table.insert(players, pid)
        end
    end
    if #players > 0 then
        return players
    end
    return false
end
     
function onThink(cid, interval)
    if table.find(config.days, os.date("%A-%H:%M")) then
        if(getWorldCreatures(o) <= 0)then
            return true
        end

        local query = db.query or db.executeQuery
        local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
        local item_name = getItemNameById(random_item)  
        local data = os.date("%d/%m/%Y - %H:%M:%S")
        local online = getOnlineParticipants()
       
        if online then
            local winner = online[math.random(1, #online)]
            local world = tonumber(getPlayerWorldId(winner))
           
            if(random_item == 2160) then
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                doPlayerAddItem(winner, random_item, 1)
            end
            if(config.website == "yes") then
                query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
            end
        else
            print("Ninguem OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
22 minutos atrás, pablobion disse:

HAHAHAHAHA eita :putnam:
Bom, eu tenho um script aqui de lottery system, acho que é mais facil a gente modificar para um que funcione e é bom do que tentar arrumar esse ai, o que acha?
A diferença é que esse pode ser usado ou não com site, e o horario é pré determinado


tag:
    <globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>

 

lottery.lua

  Ocultar conteúdo

local config = {
        lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
        rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
        crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
        website = "no", -- so colocar yes se voce usa server com site e tiver as querys na data base
        days = {
                "Monday-08:00",
                "Monday-13:00",
                "Monday-19:30",

                "Tuesday-08:00",
                "Tuesday-13:00",
                "Tuesday-19:30",
                "Tuesday-05:53",

                "Wednesday-08:00",
                "Wednesday-13:00",
                "Wednesday-19:30",

                "Thursday-08:00",
                "Thursday-13:00",
                "Thursday-19:30",

                "Friday-01:22",
                "Friday-13:00",
                "Friday-19:30",

                "Saturday-21:27",
                "Saturday-21:28",
                "Saturday-21:29",

                "Sunday-08:00",
                "Sunday-13:00",
                "Sunday-19:30"
                }
        }
local function getPlayerWorldId(cid)
    if not(isPlayer(cid)) then
        return false
    end
    local pid = getPlayerGUID(cid)
    local worldPlayer = 0
    local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
    if(result_plr:getID() ~= -1) then
        worldPlayer = tonumber(result_plr:getDataInt("world_id"))
        result_plr:free()
        return worldPlayer
    end
    return false
end

local function getOnlineParticipants()
    local players = {}
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
            table.insert(players, pid)
        end
    end
    if #players > 0 then
        return players
    end
    return false
end
     
function onThink(cid, interval)
    if table.find(config.days, os.date("%A-%H:%M")) then
        if(getWorldCreatures(o) <= 0)then
            return true
        end

        local query = db.query or db.executeQuery
        local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
        local item_name = getItemNameById(random_item)  
        local data = os.date("%d/%m/%Y - %H:%M:%S")
        local online = getOnlineParticipants()
       
        if online then
            local winner = online[math.random(1, #online)]
            local world = tonumber(getPlayerWorldId(winner))
           
            if(random_item == 2160) then
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                doPlayerAddItem(winner, random_item, 1)
            end
            if(config.website == "yes") then
                query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
            end
        else
            print("Ninguem OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

 

Não entendi o funcionamento, como eu programo para sortear a cada 30 min? Configurei só na tag, e esse days ai?

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
5 minutos atrás, jNo disse:

 

Não entendi o funcionamento, como eu programo para sortear a cada 30 min? Configurei só na tag, e esse days ai?

Na verdade, como falei ali em cima, ele sorteia com tempo pré programado. a tag deixa 600000 mesmo
e no script vc coloca os dias e a hora.

você que por minutos mesmo? a gente pode dar um jeito no seu script

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
4 minutos atrás, pablobion disse:

Na verdade, como falei ali em cima, ele sorteia com tempo pré programado. a tag deixa 600000 mesmo
e no script vc coloca os dias e a hora.

você que por minutos mesmo? a gente pode dar um jeito no seu script

 

Sim, a cada 30 mins, faz isso amanhã, já esta tarde, uma cabeça descansada é melhor :D

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
15 minutos atrás, jNo disse:

 

Sim, a cada 30 mins, faz isso amanhã, já esta tarde, uma cabeça descansada é melhor :D


amanhã é outro dia. :angel: testa:
obs: aqui funcionou.
da premio só para o player.
 

Spoiler

-- Lottery System
local config = {
    lottery_hour = "30 minutos", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 300, -- 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
        if getPlayerAccess(tid) >= 3 then
            doBroadcastMessage("[LOTTERY SYSTEM]: Nao foi possivel realizer a loteria por falta de players online")
            return false
        else
      list = tid
        end      
    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.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
        end
        
        return true
end

 

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
1 minuto atrás, pablobion disse:


amanhã é outro dia. :angel: testa:
obs: aqui funcionou.
da premio só para o player.
 

  Ocultar conteúdo

-- Lottery System
local config = {
    lottery_hour = "30 minutos", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 300, -- 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
        if getPlayerAccess(tid) >= 3 then
            doBroadcastMessage("[LOTTERY SYSTEM]: Nao foi possivel realizer a loteria por falta de players online")
            return false
        else
      list = tid
        end      
    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.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');")
        end
        
        return true
end

 

 

Deu esse erro:

erro.png

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Cara, acho que descobri o problema.
eu não sei porque mas o tibiking não esta deixando o script conter "[,i,]" (sem as virgulas)  dentro dele , vou postar o .rar com o arquivo lua pra você.


lottery.rar

 

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
3 minutos atrás, pablobion disse:

Cara, acho que descobri o problema eu não sei porque mas acho que quando da ctr+v aqui no site do tibiaking ele apaga um "[]" do script
vou colocar em anexo o .lua


lottery.rar

 

 

Funciona perfeitamente se tiver apenas playeres online, mas com admin online, ele começa a emitir essa mensagem:

 

23:59 [LOTTERY SYSTEM]: Nao foi possivel realizer a loteria por falta de players online

 

tipo, o script não esta ignorando o admin

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
  • Solução

AMEM
kkkkkkkkkkkkkkkk se der erro me fala, testei aqui... ignorando adm, sorteando corretamente e os krl a4


lottery FUNCIONANDO IGNORANDO ADM.rar

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
6 minutos atrás, pablobion disse:

AMEM
kkkkkkkkkkkkkkkk se der erro me fala, testei aqui... ignorando adm, sorteando corretamente e os krl a4


lottery FUNCIONANDO IGNORANDO ADM.rar

 

Agora deu uns erros brusco no distro com admin online:

 

 

erro.png

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

eu ia editar agorarinha, mano sério se agora não funcionar eu desisto mentira

 

lottery Funcionando, ignorando adm.rar

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites
15 horas atrás, pablobion disse:

eu ia editar agorarinha, mano sério se agora não funcionar eu desisto mentira

 

lottery Funcionando, ignorando adm.rar

 

Obrigado pela atenciosidade.

Deu certo, dúvidas sanadas!

 

 

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo