Ir para conteúdo
  • 0

Rank Task - System Do Vodkart


Leoxtibia

Pergunta

Será que alguém seria capaz de fazer um rank para esse sistema de task do Vodkart? http://www.xtibia.co...simple-task-10/

Cada task valeria um ponto ou se possível, o ponto seria editável de acordo com a task, e qdo falasse: !rank task, viesse o rank dos players.

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

10 respostass a esta questão

Posts Recomendados

  • 0

edited--

me esqueci de colocar por ponto, mas é simples só colocar uma variável na tabela de task '-'

 

--edited2

 

resolvido vc vai colocar a variável chamada de points, exemplo:

 

["minotaur mage"] = {storage = 91001,count = 12,points = 1, exp = 1000,reward = {{2656,1},{7730,1},{2152,20}}},

 

ai vc adc ela em todas ok?

 

points = ?? -- quanto de pontos ela vai dar ao terminar a task

 

----------------------------------------

 

 

na SimpletaskLib.lua vc adc isso:

storage_rank_task = 200154
function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end

 

em creaturescript/script

 

taskcount.lua vc usa essa:

function onKill(cid, target)
if(isMonster(target) == TRUE) then
local n = getCreatureName(target)
local name_monster = tasktabble[string.lower(n)]
if(name_monster) then
local contagem = getPlayerStorageValue(cid, name_monster.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > name_monster.count then return true end
setPlayerStorageValue(cid, name_monster.storage, contagem+1)
if contagem == name_monster.count then
doPlayerSendTextMessage(cid, 18, "Congratulations! You finished the task of "..n)
if getPlayerStorageValue(cid, storage_rank_task) == -1 then setPlayerStorageValue(cid, storage_rank_task, 0) end
setPlayerStorageValue(cid, storage_rank_task, getPlayerStorageValue(cid, storage_rank_task)+name_monster.points)
end
end
end
return TRUE
end

 

e em talkactions

 

task_complete.lua vc usa essa:

 

function onSay(cid, words, param)
if param == "rank" then
getRankStorage(cid, storage_rank_task, 10, "Rank Task")
return true
end
local str = ""
str = str .. "Task Completed :\n\n"
for k, v in pairsByKeys(tasktabble) do
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n"
end
str = str .. ""
return doShowTextDialog(cid, 8983, str)
end

 

ai só usar

 

!task rank -- ver rank dos jogadores na task

 

!task -- para ver a suas lista de task

 

 

obs: Para atualizar o seu lugar no rank da task o jogador deve relogar, porque é uma query,

 

abraços

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

  • 0

Vlw por responder cara, mas não tá funcionando. Essa parte que você pediu pra add no Simpletasklib, é no final né?

storage_rank_task = 200154
function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY `value` DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end

 

Pq eu coloquei no final do script e deu o seguinte erro:

 

[Error - LuaScriptInterface::loadFile] data/lib/Simplestasklib.lua:156: unfinished string near '" ORDER BY `value` '
[07/04/2012 12:51:13] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

 

E no caso, a linha 156 é a:

 

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY `value`

 

Sabe oq pode ser? =S

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

  • 0

Copiei, é que só enviei essa linha, mas o resto tá aí:

 

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY `value`
DESC;")

Link para o comentário
Compartilhar em outros sites

  • 0

resolvido por msn, é pq o server dele era sql ai tinha que ser outra query

 

local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")

abraços

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

×
×
  • Criar Novo...