GA
suporte scripts

[Resolvido] Erro Script

Por Gabrielkss, 10 de ago. de 2017 em Resolvidos

12
2.5k
GabrielkssG
10 de agosto de 2017 às 23:43

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.

MudrockM
11 de agosto de 2017 às 00:44

Ele esta buscando o Campo " hasVip  " na sua database porem não é encontrado, basta adicionar a coluna hasVip

;)

GabrielkssG
11 de agosto de 2017 às 13:15

como eu posso adicionar essa coluna hasvip ?

NogardN
11 de agosto de 2017 às 14:44

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

 

GabrielkssG
11 de agosto de 2017 às 14:52

Sim, adicionei

MudrockM
11 de agosto de 2017 às 16:56

Perdão, estava pelo celular nao consegui ver o código direito. foi erro meu.

 

GabrielkssG
11 de agosto de 2017 às 20:32

alguém sabe ? por favor.

PoccnnP
11 de agosto de 2017 às 21:04
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).

GabrielkssG
11 de agosto de 2017 às 21:12

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

CrypterC
12 de agosto de 2017 às 06:58
Melhor resposta
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

 

GabrielkssG
12 de agosto de 2017 às 10:24

Obrigado @Crypter, funcionou 

PoccnnP
12 de agosto de 2017 às 11:01

A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.