Ir para conteúdo
  • 0

!rank dando erro


Xtibianoo01

Pergunta

local ranks = { 

['fist'] = {0}, 

['club'] = {1}, 
['sword'] = {2}, 
['axe'] = {3}, 
['distance'] = {4}, 
['shield'] = {5}, 
['fish'] = {6}, 
['magic'] = {7}, 
['level'] = {8}, 


function onSay(cid, words, param) 

local msg = string.lower(param) 
if ranks[msg] ~= nil then 
str = getHighscoreString((ranks[msg][1])) 
else 
str = getHighscoreString((8)) 
end 
doShowTextDialog(cid,6500, str)
end 
return TRUE 

 

 

 

ele da esse erro 

 

[24/8/2018 21:20:29] [Error - TalkAction Interface] 
[24/8/2018 21:20:29] data/talkactions/scripts/ranking.lua:onSay
[24/8/2018 21:20:29] Description: 
[24/8/2018 21:20:29] data/talkactions/scripts/ranking.lua:21: attempt to call global 'getHighscoreString' (a nil value)
[24/8/2018 21:20:29] stack traceback:
[24/8/2018 21:20:29]     data/talkactions/scripts/ranking.lua:21: in function <data/talkactions/scripts/ranking.lua:17>
 

alguem pode ajudar ??

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Veja se vai assim: 

 

 

local ranks = {
["fist"] = {skill = 0},
["club"] = {skill = 1},
["sword"] = {skill = 2},
["axe"] = {skill = 3},
["distance"] = {skill = 4},
["shield"] = {skill = 5},
["fish"] = {skill = 6},
["magic"] = {skill = 7},
["level"] = {skill = 8}
}

function onSay(cid, words, param) 

if param ~= "" then
doPlayerSendCancel(cid, "Falta parametro.")
return true
end

local msg = string.lower(param) 

if not ranks[msg].skill then
doPlayerSendCancel(cid, "Skill errada.")
return true
end

if ranks[msg] ~= nil then 
str = getHighscoreString(ranks[msg].skill) 
else 
str = getHighscoreString(8) 
end 
doShowTextDialog(cid,6500, str) 
return TRUE 
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
47 minutos atrás, gabrielzika disse:

Veja se vai assim: 

 

 


local ranks = {
["fist"] = {skill = 0},
["club"] = {skill = 1},
["sword"] = {skill = 2},
["axe"] = {skill = 3},
["distance"] = {skill = 4},
["shield"] = {skill = 5},
["fish"] = {skill = 6},
["magic"] = {skill = 7},
["level"] = {skill = 8}
}

function onSay(cid, words, param) 

if param ~= "" then
doPlayerSendCancel(cid, "Falta parametro.")
return true
end

local msg = string.lower(param) 

if not ranks[msg].skill then
doPlayerSendCancel(cid, "Skill errada.")
return true
end

if ranks[msg] ~= nil then 
str = getHighscoreString(ranks[msg].skill) 
else 
str = getHighscoreString(8) 
end 
doShowTextDialog(cid,6500, str) 
return TRUE 
end

 

falo !rank axe e da "falta paramento"

Link para o comentário
Compartilhar em outros sites

  • 0
local ranks = {
["fist"] = {skill = 0},
["club"] = {skill = 1},
["sword"] = {skill = 2},
["axe"] = {skill = 3},
["distance"] = {skill = 4},
["shield"] = {skill = 5},
["fish"] = {skill = 6},
["magic"] = {skill = 7},
["level"] = {skill = 8}
}

function onSay(cid, words, param) 
  
local msg = string.lower(param) 

if not ranks[msg].skill then
doPlayerSendCancel(cid, "Skill errada.")
return true
end

if ranks[msg] ~= nil then 
str = getHighscoreString(ranks[msg].skill) 
else 
str = getHighscoreString(8) 
end 
doShowTextDialog(cid,6500, str) 
return TRUE 
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
15 horas atrás, gabrielzika disse:

"já arrumei aqui " Por isso ninguém ajuda vocês, poste oque você fez para alguem com o mesmo problema poder corrigir em breve.

ok !

 

function getPlayerNameByGUID2(n)
    local c = db.getResult("SELECT `name` FROM `players` WHERE `group_id` <= 2 and `id` = "..n..";")
    if c:getID() == -1 then
        return nil
    end
    return c:getDataString("name")
end

function onSay(cid, words, param)
    local max = 20
    local letters_to_next = 20
    local option = 2 -- coloque 1 ou 2 pra ver as opções de amostragem de rank
     
    local skills = {
        ['fist'] = 0,
        ['club'] = 1,
        ['sword'] = 2,
        ['axe'] = 3,
        ['distance'] = 4,
        ['shielding'] = 5,
        ['fishing'] = 6,
        ['dist'] = 4,
        ['shield'] = 5,
        ['fish'] = 6,
    }
    
    local name_now
    local name = "Highscore for level\n"
    local rkn, no_break = 0, 0
    param = string.lower(param)
    dofile('config.lua')


    if (param == "" or param == "level") and skills[param] == nil then
        name = name.."\n"
        name = name.."Rank Level - Nome do Jogador\n"
        local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";")
        repeat
            no_break = no_break +1
            if v:getID() == -1 then
                break
            end
            rkn = rkn+1
            name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
            space = ""
            for i=1, letters_to_next-l do
                space = space.." "
            end
            name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n"
            if no_break >= 20 then
                break
            end
        until v:next() == false
         
    elseif param == "magic" or param == "ml" then
        name = name.."\n"
        name = name.."Rank Magic - Nome do Jogador\n"
        local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";")
        repeat
            if v:getID() == -1 then
                break
            end
            rkn = rkn+1
            name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
            space = ""
            for i=1, letters_to_next-l do
                space = space.." "
            end
            name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n"
        until v:next() == false
    elseif skills[param] ~= nil then
        name = name.."\n"
        name = name.."Rank "..param.." fighting - Nome do Jogador\n"
        local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;")
        local kk = 0
         
        repeat
            if kk == max or v:getID() == -1 then
                break
            end
            name_now = getPlayerNameByGUID2(v:getDataInt("player_id"))
            if name_now ~= nil then
            kk = kk+1
                space = ""
                l = string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
                for i=1, letters_to_next-l do
                    space = space.." "
                end
                name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n"
            end
        until v:next() == false
    end
    if name ~= "Highscore\n" then
        if option == 1 then
            doPlayerPopupFYI(cid, name)
        else
            doShowTextDialog(cid, 7369, name)
        end
    end 
return true
end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...