Ir para conteúdo

Featured Replies

  • Respostas 14
  • Visualizações 500
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
1 minuto atrás, Micheel15 disse:

faço a troca ? @Alexy Brocanello

sim!

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Postado
12 minutos atrás, Micheel15 disse:

@Alexy Brocanello , está dando este erro

 

isso acontece com alguns eventos do meu server tbm não sei qual o motivo

fiz a troca de script e persistiu um erro

 

 

Sem título.jpg

opa, vou analisar e testar

 

@Micheel15

 

local gp = {
        ExecuteIntervalHours = 24,
        NeedPlayersOnline = 3,
        NeedDiferentIps = 0,
        MinLevel = 50,
        AddPointsForAcc = 3,
}

function getGuildPlayersValidAccIDS(GuildID,MinLevel)
        local RanksIDS = {}
        local AccsID = {}
        local ValidAccsID = {}
        Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."")
		
        if(Query1:getID() == -1) then
                return ValidAccsID
        end
        for i = 1, Query1:getRows() do
                table.insert(RanksIDS, Query1:getDataInt("id"))
                Query1:next()
        end
        Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."")
        if(Query2:getID() == -1) then
                return ValidAccsID
        end
        for i = 1, Query2:getRows() do
                local AccID = Query2:getDataInt("account_id")
                if #AccsID > 0 then
                        for k = 1, #AccsID do
                                if AccID == AccsID[k] then
                                        AddAccList = false
                                        break
                                end
                                AddAccList = true
                        end
                        if AddAccList then
                                table.insert(AccsID, AccID)
                        end
                else
                        table.insert(AccsID, AccID)
                end
                Query2:next()
        end
        Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")")
        if(Query3:getID() == -1) then
                return ValidAccsID
        end
        for i = 1, Query3:getRows() do
                local AccID = Query3:getDataInt("id")
                if #ValidAccsID > 0 then
                        for k = 1, #ValidAccsID do
                                if AccID == ValidAccsID[k] then
                                        AddAccList = false
                                        break
                                end
                                AddAccList = true
                        end
                        if AddAccList then
                                table.insert(ValidAccsID, AccID)
                        end
                else
                        table.insert(ValidAccsID, AccID)
                end
                Query3:next()
        end
        return ValidAccsID
end

function onSay(cid, words, param, channel)
        if(getPlayerGuildLevel(cid) == 3) then
                local GuildID = getPlayerGuildId(cid)
                Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'")
                if(Query:getID() == -1) then
                        return true
                end
                if Query:getDataInt("last_execute_points") < os.time() then
                        local GuildMembers = {}
                        local GuildMembersOnline = {}
                        local PlayersOnline = getPlayersOnline()
                        for i, pid in ipairs(PlayersOnline) do
                                if getPlayerGuildId(pid) == GuildID then
                                        if getPlayerLevel(pid) >= .MinLevel then
                                                table.insert(GuildMembersOnline, pid)
                                        end
                                end
                        end
                        if #GuildMembersOnline >= .NeedPlayersOnline then
                                local IPS = {}
                                for i, pid in ipairs(GuildMembersOnline) do
                                        local PlayerIP = getPlayerIp(pid)
                                        if #IPS > 0 then
                                                for k = 1, #IPS do
                                                        if PlayerIP == IPS[k] then
                                                                AddIPList = false
                                                                break
                                                        end
                                                        AddIPList = true
                                                end
                                                if AddIPList then
                                                        table.insert(IPS, PlayerIP)
                                                end
                                        else
                                                table.insert(IPS, PlayerIP)
                                        end
                                end
                                if #IPS >= gp.NeedDiferentIps then
                                        local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, gp.MinLevel)
                                        db.query("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(gp.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";")
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points")
                                        if #ValidAccounts > 0 then
                                                db.query("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..gp.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");")
                                                for i, pid in ipairs(GuildMembersOnline) do
                                                        local PlayerMSGAccID = getPlayerAccountId(pid)
                                                        for k = 1, #ValidAccounts do
                                                                if PlayerMSGAccID == ValidAccounts[k] then
                                                                        doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..gp.AddPointsForAcc .." guild points.")
                                                                        break
                                                                end
                                                        end
                                                end
                                        end
                                else
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. gp.NeedDiferentIps .." players with different ips.")
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. gp.NeedPlayersOnline .." players online at least from level ".. gp.MinLevel ..".")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..gp.ExecuteIntervalHours .." hours.")
                end
        else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.")
        end
        return true
end

 

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

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo