Ir para conteúdo

Posts Recomendados

Versão: 3.1
Versão de tibia: 9.7+
Descrição: Como muitos sabem na versão 9.7 a tfs removeu o rank system, e o tibia também adicionou os novos estilos de diálogos. Então eu resolvi fazer um novo rank system com esse sistema.

Features:
- Rank system em tempo real.
- Janela personalisada.
- Rank de Frags (Mock)

TAG:

<talkaction words="!rank;/rank;!ranks;/ranks" event="script" value="rank.lua"/>

Script:
data/talkactions/rank.lua


modaldialog2 = {
title = "Rank",
message = "Escolha o rank que você quer visualizar:",
buttons = {
{ id = 1, value = "Ver" },
{ id = 2, value = "Cancelar" },
},
buttonEnter = 1,
buttonEscape = 2,
choices = {
{ id = 1, value = "Fist" },
{ id = 2, value = "Club" },
{ id = 3, value = "Sword" },
{ id = 4, value = "Axe" },
{ id = 5, value = "Distance" },
{ id = 6, value = "Shield" },
{ id = 7, value = "Fish" },
{ id = 8, value = "Magic" },
{ id = 9, value = "Level" },
{ id = 10, value = "Frags" }
},
popup = false
}
 
function callback2(cid, button, choice)
if (button == 1) then
local str = ""
local name_now
if (choice == 1) then
str = "--[ Fist Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 2) then
str = "--[ Club Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 3) then
str = "--[ Sword Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 4) then
str = "--[ Axe Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 5) then
str = "--[ Distance Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 6) then
str = "--[ Shield Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 7) then
str = "--[ Fish Rank ]--\n"
query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC LIMIT 20;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 8) then
str = "--[ Magic Rank ]--\n"
query = db.getResult("SELECT `maglevel`, `name` FROM `players` WHERE `group_id` < 3 ORDER BY `maglevel` DESC LIMIT 20;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("maglevel") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 9) then
str = "--[ Level Rank ]--\n"
query = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` < 3 ORDER BY `experience` DESC LIMIT 20;")
if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end
str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("level") .. "]"
k = k + 1 until not query:next()
end
elseif (choice == 10) then
str = "--[ Kills Rank ]--\n"
query = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;")
if query:getID() == -1 then
str = str .. "\nNinguém matou ninguém." 
end
if (query:getID() >= 0) then k = 1 repeat if k > 20 then break end
name_now, l = query:getDataString("name"), string.len(query:getDataString("name"))
str = str .. "\n " .. k ..". ".. name_now .." - [" .. query:getDataInt("frags") .. "]" 
k = k + 1 until not query:next()
end
end
doShowTextDialog(cid, 2529, str)
end
end
 
function onSay(cid, words, param)
addDialog(modaldialog2, 1002, cid, callback2);
return true
end

Como usar:
No servidor digite /rank e selecione o tipo de rank ou skill que você deseja visualizar.

Video: (Antigo mais explicativo)



Creditos:
Comedinha (Bruno Carvalho)
Mock
Tutoriais de query em vários fórums.

Oneshot

Editado por BrunoCarvalho
Link para o comentário
Compartilhar em outros sites

Nao tem como por esse sistema em 8.54?

 

Infelizmente não, a janela de modal dialogs foi lançada somente para 9.7+

Da para colocar pra abri tipo channel mais tenque faze umas config muito louca no creaturescripts e eu to sem tempo ._.

Link para o comentário
Compartilhar em outros sites

Foi mal,falei errado funfo aki certinho,pode me ajuda?como por para que so os gms cms e gods,podem falar isso?e como eu regulo o tempo para ficar na prisao

 

Primeiramente gostaria de pedir para que postasse no tópico original.

http://www.xtibia.co...prision-system/

 

Tem até um tutorial explicando:

"- O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico."

 

E a tag que eu recomendei já está somente para GM+: access="3"

Editado por BrunoCarvalho
Link para o comentário
Compartilhar em outros sites

  • 4 months later...
  • 1 month later...

estou usando o alissow 5.0 e da este erro:

 

[1:14:10.973] [Error - TalkAction Interface]
[1:14:10.976] data/talkactions/scripts/rank.lua:onSay
[1:14:10.979] Description:
[1:14:10.981] (LuaInterface::luaGetPlayerNameByGUID) Player not found
[1:14:10.986] [Error - TalkAction Interface]
[1:14:10.989] data/talkactions/scripts/rank.lua:onSay
[1:14:10.992] Description:
[1:14:10.994] data/talkactions/scripts/rank.lua:33: attempt to concatenate a nil
value
[1:14:11.000] stack traceback:
[1:14:11.002] data/talkactions/scripts/rank.lua:33: in function <data/talkacti
ons/scripts/rank.lua:25>
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

 

estou usando o alissow 5.0 e da este erro:

 

[1:14:10.973] [Error - TalkAction Interface]
[1:14:10.976] data/talkactions/scripts/rank.lua:onSay
[1:14:10.979] Description:
[1:14:10.981] (LuaInterface::luaGetPlayerNameByGUID) Player not found
[1:14:10.986] [Error - TalkAction Interface]
[1:14:10.989] data/talkactions/scripts/rank.lua:onSay
[1:14:10.992] Description:
[1:14:10.994] data/talkactions/scripts/rank.lua:33: attempt to concatenate a nil
value
[1:14:11.000] stack traceback:
[1:14:11.002] data/talkactions/scripts/rank.lua:33: in function <data/talkacti
ons/scripts/rank.lua:25>

 

Tem certeza desse erro?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...