LE

Rank Task - System Do Vodkart

Por Leoxtibia, 05 de abr. de 2012 em Scripts

otserv
tibia
11
2.5k
LeoxtibiaL
05 de abril de 2012 às 16:54

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

VodkartV
05 de abril de 2012 às 20:31

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 Abril 6 por Vodkart

LeoxtibiaL
06 de abril de 2012 às 10:39

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 Abril 6 por Leoxtibia

VodkartV
06 de abril de 2012 às 10:58

sei, é porque você não copio ela toda, só uma parte.

LeoxtibiaL
06 de abril de 2012 às 11:35

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;")

VodkartV
06 de abril de 2012 às 13:03

seu server é mySQL ?

dyego2008D
06 de abril de 2012 às 13:10

ou Vodkart me add msn dy_fernando@hotmail.com por favor.

VodkartV
06 de abril de 2012 às 13:24

@up ok

 

@leoxtibia

 

me manda seu msn q eu vejo onde vc configuro errado, ai te dou suporte por lá

LeoxtibiaL
06 de abril de 2012 às 13:26

@edit

 

Dúvida sanada pelo msn! Podem mover o tópico.

Editado Abril 6 por Leoxtibia

VodkartV
06 de abril de 2012 às 14:04

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 Abril 6 por Vodkart

HisashiitYamagutiH
06 de abril de 2012 às 15:37

Tópico movido para a área de Pedidos Atendidos.