Ir para conteúdo

Talkaction !rank [Personalizado]


Posts Recomendados

Creditos: Critico (vodkart)

 

Comando !rank atualizado com novo rank que é o !rank frags, onde mostra os maiores matadores do ot.

Ranks:

Skills

Level

Magic

Health

Mana

Frags

 

Exemplo:

!rank frags

!rank magic

 

Crie ranks.lua em data/talkactions/scripts. e cole o script abaixo

local config = {
MaxPlayer = 20,
fight_skills = {
['fist'] = 0,
['club'] = 1,
['sword'] = 2,
['axe'] = 3,
['distance'] = 4,
['shielding'] = 5,
['fishing'] = 6,
['dist'] = 4,
['shield'] = 5,
['fish'] = 6,
},
other_skills = {
[''] = "level",
['level'] = "level",
['magic'] = "maglevel",
['health'] = "healthmax",
['mana'] = "manamax"
},
vocations = {
['sorcerer'] = {1,5},
['druid'] = {2,6},
['paladin'] = {3,7},
['knight'] = {4,8}
},
storages = {
['frags'] = 824544
}
}
function onSay(cid, words, param)
local store,exausted = 156201,30
local param,str = string.lower(param),""
if not config.fight_skills[param] and not config.other_skills[param] and not config.vocations[param] and not config.storages[param] then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "this ranking does not exists.") return true
elseif getPlayerStorageValue(cid, store) >= os.time() then
doPlayerSendCancel(cid, "wait " .. getPlayerStorageValue(cid, store) - os.time() .. " seconds to use this command again.") return true
end
str = "--[ RANK "..(param == "" and "LEVEL" or string.upper(param)).." ]--\n\n"
query = config.fight_skills[param] and db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..config.fight_skills[param].." ORDER BY `value` DESC;") or config.other_skills[param] and db.getResult("SELECT `name`, `"..config.other_skills[param].."` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `"..config.other_skills[param].."` DESC, `name` ASC;") or config.storages[param] and db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..config.storages[param].." ORDER BY cast(value as INTEGER) DESC;") or db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` <= 2 AND `vocation` = "..config.vocations[param][1].." or `vocation` = "..config.vocations[param][2].." ORDER BY `level` DESC;")
if (query:getID() ~= -1) then
k = 1
while true do
str = str .. "\n " .. k .. ". "..(config.fight_skills[param] and getPlayerNameByGUID(query:getDataString("player_id")) or config.storages[param] and getPlayerNameByGUID(query:getDataString("player_id")) or query:getDataString("name")).." - [" .. query:getDataInt((config.fight_skills[param] and "value" or config.storages[param] and "value" or config.vocations[param] and "level" or config.other_skills[param])) .. "]"
k = k + 1
if not(query:next()) or k > config.MaxPlayer then
break
end
end
query:free()
end
doShowTextDialog(cid,6500, str)
setPlayerStorageValue(cid, store, os.time()+exausted)
return true
end

Em data/lib/050-function.lua adicione:

function setFrags(cid)
if not isCreature(cid) then return LUA_ERROR end
setPlayerStorageValue(cid, 824544, getPlayerFrags(cid))
return doPlayerSave(cid)
end

Crie rankfrags.lua em data/creaturescripts/scripts e cole o script abaixo

function onKill(cid, target, lastHit)
if isPlayer(cid) and isPlayer(target) then
addEvent(setFrags, 1, cid)
end
return true
end

E em data/creaturescripts/login.lua adicione:

registerCreatureEvent(cid, "Rankfrags")
setFrags(cid)

Se ajudei REP + E todos ficamos Felizes! :D

 

Link para o comentário
Compartilhar em outros sites

Cara, script mt bacana , mais um pouco confusa, to meio que tentando entender, cheguei a colocar no server mais alguns ranks n mostram os player, !rank level por exemplo n mostra ngm...

Teria como adicionar o !rank frags nesse meu script de rank??

 

-- Original script edited by MaxLinux or Sciter -- Ranking Frags --

function getPlayerNameByGUID2(n)
local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";")
if c:getID() == -1 then
return "SQL_ERROR["..n.."]"
end
return c:getDataString("name")
end
function onSay(cid, words, param)
local max = 20
local letters_to_next = 20
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 = "Highscores\n"
local rkn = 0
local no_break = 0
param = string.lower(param)
dofile('config.lua')
if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then
name = name.."\n"
name = name.."Ranking 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.."Ranking 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 param == "kills" or param == "killer" or param == "kill" or param == "frag" or param == "frags" then
name = name.."\n"
name = name.."Ranking Frags\n"
local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 90190 ORDER BY cast(value as INTEGER) DESC;")
local kk = 0
repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". ["..v:getDataInt("value").."] - "..name_now..space.." \n"
until v:next() == false
elseif skills[param] ~= nil then
name = name.."\n"
name = name.."Ranking "..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
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". ["..v:getDataInt("value").."] - "..name_now..space.." \n"
until v:next() == false
end
if name ~= "Highscore\n" then
doPlayerPopupFYI(cid, name)
end
return TRUE
end
Link para o comentário
Compartilhar em outros sites

Cara, script mt bacana , mais um pouco confusa, to meio que tentando entender, cheguei a colocar no server mais alguns ranks n mostram os player, !rank level por exemplo n mostra ngm...

 

Teria como adicionar o !rank frags nesse meu script de rank??

 

 

 

Acompanhou todos os passos corretamente adicionando todos os itens necessarios? pois testei no meu servidor e está 100%.

Link para o comentário
Compartilhar em outros sites

 

Acompanhou todos os passos corretamente adicionando todos os itens necessarios? pois testei no meu servidor e está 100%.

Claro né, se eu sou bom em alguma coisa é em copiar e colar... KKKKKKKK

Mais enfim, nao teria como implantar o !rank frags nesse rank que eu uso nao ???

Link para o comentário
Compartilhar em outros sites

Claro né, se eu sou bom em alguma coisa é em copiar e colar... KKKKKKKK

Mais enfim, nao teria como implantar o !rank frags nesse rank que eu uso nao ???

Provavelmente não , pois percebi uma grande diferenca nos scripts.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...