Ir para conteúdo
  • Cadastre-se

(Resolvido)Problema guildpoints.lua


Ir para solução Resolvido por acesso123,

Posts Recomendados

local config = {
        executeInterval = 24,
        minimumLevel = 80,
        membersNeeded = 10,
        minimumDifferentIps = 6,
        pointAmount = 9
}

local function getValidAccounts(guild)
        local resultId = db.storeQuery('SELECT a.`id` FROM `accounts` a, `guild_membership` m, `players` p WHERE m.`guild_id` = ' ..guild:getId() .. ' AND p.`id` = m.`player_id` AND p.`level` > ' ..  config.minimumLevel .. ' and a.`id` = p.`account_id` AND a.`guild_points_stats` = 0 GROUP BY a.`id`;')
        if resultId == false then
                return {}
        end

        local accounts = {}
        repeat
                table.insert(accounts, result.getDataInt(resultId, 'id'))
        until not result.next(resultId)
        result.free(resultId)

        return accounts
end

function onSay(player, words, param)       
        local guild = player:getGuild()
        if not guild or player:getGuildLevel() ~= GUILDLEVEL_LEADER then
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Only guild leader can request points.')
                return false
        end

        local resultId = db.storeQuery('SELECT `last_execute_points` FROM `guilds` WHERE id = ' .. guild:getId())
        if resultId == false then
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
                player:sendCancelMessage('Error while running database query.')
                return false
        end

        local lastExecution = result.getDataInt(resultId, 'last_execute_points')
        result.free(resultId)
        if lastExecution >= os.time() then
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'The command can only be run once every ' ..config.executeInterval .. ' hours.')
                return false
        end

        local members = guild:getMembersOnline()
        for i = #members, 1, -1 do
                if members[i]:getLevel() < config.minimumLevel then
                        table.remove(members, i)
                end
        end

        if #members < config.membersNeeded then
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Only ' .. #members .. ' guild members online, you need ' ..config.membersNeeded .. ' guild members with level ' .. config.minimumLevel .. ' or higher.')
                return false
        end

        local ipDictionary, ipCount = {}, 0
        for i = 1, #members do
                local ip = members[i]:getIp()
                if not ipDictionary[ip] then
                        ipDictionary[ip] = true
                        ipCount = ipCount + 1
                end
        end

        if ipCount < config.minimumDifferentIps then
                player:getPosition():sendMagicEffect(CONST_ME_POFF)
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, 'Only ' .. ipCount .. ' members are valid, you need ' ..config.minimumDifferentIps .. ' players with different ip addresses.')
                return false
        end

        local validAccounts = getValidAccounts(guild)
        db.query('UPDATE `guilds` SET `last_execute_points` = ' .. (os.time() + config.executeInterval * 3600) .. ' WHERE `guilds`.`id` = ' .. guild:getId() .. ';')
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, #validAccounts .. ' guild members received points.')
        if #validAccounts > 0 then
                db.query('UPDATE `accounts` SET `guild_points` = `guild_points` + ' .. config.pointAmount .. ', `guild_points_stats` = ' .. os.time() .. ' WHERE `id` IN (' .. table.concat(validAccounts, ',') .. ');')
                for i = 1, #members do
                        local member = members[i]
                        if isInArray(validAccounts, member:getAccountId()) then
                                member:sendTextMessage(MESSAGE_INFO_DESCR, 'You received ' .. config.pointAmount .. ' guild points.')
                        end
                end
        end
        return false
end


Aparece algum tipo de erro? 
ou uma msg fica repetindo toda hora?
 
 
Recomendo alterar o tempo de espera para menor, para testar...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites
2.5 - Evite posts e tópicos duplos:

Não poste duas ou mais mensagens seguidas no mesmo tópico, a não ser que seja muito necessário. Se, por exemplo, você deseja apenas acrescentar algo que esqueceu de dizer no seu post anterior, edite-o (através do botão "Editar") e altere o que precisa. Posts duplos são permitidos somente se você precisa dizer algo totalmente novo e ninguém enviou outra mensagem depois da sua, durante as últimas horas. Também é altamente proibido a criação de dois ou mais tópicos idênticos.

 

movi o outro tópico para lixeira.

Ao invés de criar outro tópico, dê um UP:

 

2.7 - Dar "UP" para subir tópicos:

Não é proibido da "UP" em seus tópicos para ele subir na listagem, porém você só poderá usar deste beneficio dentro de um período de 24h, ou seja, se você deu "UP" agora só poderá dar novamente daqui 24h, caso ao contrário seu tópico será fechado. Lembre-se que isto é um exceção da regra do double post, tanto é que você só poderá usar deste beneficio de 48 em 48 horas.

 

 

 

Vou rever o erro no script.

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Desculpe, é que  me orientaram colocar la, mas não farei denovo. E obrigado por ajudar, estou no aguardo.

 

A área de suporte de scripts realmente é a certa, porém, era melhor reportar o tópico para que movessem.

 

 

Qual erro dá no comando padrão?

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

No !guildpoints  ?

 

No jogo não mostra nada, nem tem efeito algum, apenas no distro este erro 

attachicon.gifpost-150155-0-24117400-1437309287.jpg

 

Você testou o meu, e deu o mesmo erro?

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

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

esse erro é do seu script.

 

Bom ja consegui resolver, so alterei a forma de receber os pontos no arquivo guildpoints.lua e no shopguild.php e ja funcionou. Obrigado mesmo assim.

Editado por acesso123 (veja o histórico de edições)
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