Ir para conteúdo
  • 0

[Resolvido] Erro Script


Gabrielkss

Pergunta

Olá pessoal, eu estou usando um script de frag look que tem tbm um sistema de Free ou Vip. mais tá dando um erro. alguém poderia me ajudar ?

Spoiler

[Error - CreatureScript Interface]
data/creaturescripts/scripts/fraglook.lua:onLook
Description:
data/creaturescripts/scripts/fraglook.lua:39: attempt to call field 'hasVip' (a nil value)
stack traceback:
        data/creaturescripts/scripts/fraglook.lua:39: in function <data/creaturescripts/scripts/fraglook.lua:33>

 

[Error - CreatureScript Interface]
data/creaturescripts/scripts/fimvip.lua:onLogin
Description:
data/creaturescripts/scripts/fimvip.lua:3: attempt to call field 'hasVip' (a nil value)
stack traceback:
        data/creaturescripts/scripts/fimvip.lua:3: in function <data/creaturescripts/scripts/fimvip.lua:1>

Esse é o sistema

Spoiler

function getPlayerFrags(cid)
    local time = os.time()
    local times = {today = (time - 86400), week = (time - (7 * 86400))}

    local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
    if(result:getID() ~= -1) then
        repeat
            local content = {date = result:getDataInt("date")}
            if(content.date > times.today) then
                table.insert(contents.day, content)
            elseif(content.date > times.week) then
                table.insert(contents.week, content)
            else
                table.insert(contents.month, content)
            end
        until not result:next()
        result:free()
    end

    local size = {
        day = table.maxn(contents.day),
        week = table.maxn(contents.week),
        month = table.maxn(contents.month)
    }
    return size.day + size.week + size.month
end

function onLogin(cid)
    registerCreatureEvent(cid, "fraglook")
    return true
end

function onLook(cid, thing, position, lookDistance)
    if isPlayer(thing.uid) and thing.uid ~= cid then
        vip = vip.hasVip(thing.uid) == TRUE and "VIP" or "Free"
        doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..']['..vip..']')
        return true
    elseif thing.uid == cid then
        vips = vip.hasVip(cid) == TRUE and "VIP" or "Free"
        doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..']['..vips..']')
        local string = 'You see yourself.'
        if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
            string = string..' You are '.. getPlayerGroupName(cid) ..'.'
        elseif getPlayerVocation(cid) ~= 0 then
            string = string..' You are '.. getPlayerVocationName(cid) ..'.'
        else
            string = string..' You have no vocation.'
        end
        string = string..getPlayerSpecialDescription(cid)..''

        if getPlayerGuildId(cid) > 0 then
            string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
            string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
        end

        if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
            string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
            string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
        end

        if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
            string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
        end
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
        return false
    end
    return true
end

 

Uso o sistema by mock :

Agradeço desde ja.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
9 horas atrás, Gabrielkss disse:

@Poccnn Eu não sei como fazer isso. poderia me ajudar? por favor

Tenta assim:


function getPlayerFrags(cid)
    local time = os.time()
    local times = {today = (time - 86400), week = (time - (7 * 86400))}

    local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
    if(result:getID() ~= -1) then
        repeat
            local content = {date = result:getDataInt("date")}
            if(content.date > times.today) then
                table.insert(contents.day, content)
            elseif(content.date > times.week) then
                table.insert(contents.week, content)
            else
                table.insert(contents.month, content)
            end
        until not result:next()
        result:free()
    end

    local size = {
        day = table.maxn(contents.day),
        week = table.maxn(contents.week),
        month = table.maxn(contents.month)
    }
    return size.day + size.week + size.month
end

function onLogin(cid)
    registerCreatureEvent(cid, "fraglook")
    return true
end

function onLook(cid, thing, position, lookDistance)
    if isPlayer(thing.uid) and thing.uid ~= cid then
        local info1 = vip.hasVip(thing.uid) == TRUE and "VIP" or "Free"
        doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..']['..info1..']')
        return true
    elseif thing.uid == cid then
        local info2 = vip.hasVip(cid) == TRUE and "VIP" or "Free"
        doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..']['..info2..']')
        local string = 'You see yourself.'
        if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
            string = string..' You are '.. getPlayerGroupName(cid) ..'.'
        elseif getPlayerVocation(cid) ~= 0 then
            string = string..' You are '.. getPlayerVocationName(cid) ..'.'
        else
            string = string..' You have no vocation.'
        end
        string = string..getPlayerSpecialDescription(cid)..''

        if getPlayerGuildId(cid) > 0 then
            string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
            string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
        end

        if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
            string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
            string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
        end

        if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
            string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
        end
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string)  
        return false
    end
    return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Não é coluna. Você adicionou a lib do sistema?

 

function vip.hasVip(cid)assert(tonumber(cid),'Parameter must be a number')if isPlayer(cid) == FALSE then return end;local t = vip.getVip(cid) or 0if os.time(day) < t thenreturn TRUEelsereturn FALSEendend

 

Link para o comentário
Compartilhar em outros sites

  • 0
21 horas atrás, Gabrielkss disse:

vip = vip.hasVip(thing.uid) == TRUE and "VIP" or "Free"

Eu não abri o link que tu postou e nem me dei ao trabalho de pesquisar, mas eu sei que isso aqui possa ser o causador do problema.

 

A tabela vip esta sendo substituída pelo texto "vip" ou "free".

Como resolver isso?

Mudando os termos de vip para qualquer outra coisa (tem que mudar em todas as declarações no script).

Link para o comentário
Compartilhar em outros sites

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