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







info
Grupo: Visconde
Registrado: 22/06/08
Posts: 489
Reputação: +137
Gênero: Masculino
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 Abril 5 por Leoxtibia