Ir para conteúdo
  • Cadastre-se

(Resolvido){ERROR} Task System


Ir para solução Resolvido por ViitinG,

Posts Recomendados

Alguem pode me ajudar com o task.xml? É onde fica a contagem e os bichos... Deve ser algo de "}", tentei procurar mas não achei ;s

Segue aqui o arquivo.xml

<?xml version="1.0" encoding="UTF-8"?>  

<mod name="Simple Task" version="3.0" author="Vodkart" contact="tibiaking.com" enabled="yes">  
<config name="task_func"><![CDATA[
 
tasktabble = {
["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 1000,money = 800},
["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 150,exp = 200,money = 250},
["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 20},
["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 150, exp = 2500},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 400},
["giant spider"] = {monster_race={"giant spider", "spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 50000, money = 15000},
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 12000},
["quara scout"] = {monster_race={"quara predator scout","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout"}, storage_start = 200223, storage = 91023,count = 300, exp = 50000, money = 60000},
["nightmare"] = {monster_race={"nightmare","nightmare scion"}, storage_start = 200205, storage = 91005,count = 500,exp = 10000,money = 5000},
["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 250, exp = 50000},
["serpent spawn"] = {monster_race={"serpent spawn","medusa"}, storage_start = 200206, storage = 91006,count = 500,exp = 10000,money = 5000},
["plaguesmith"] = {monster_race={"plaguesmith","destroyer"}, storage_start = 200207, storage = 91007,count = 300,exp = 10000,money = 5000},
["defiler"] = {monster_race={"son of verminor","defiler"}, storage_start = 200208, storage = 91008,count = 300,exp = 10000,money = 5000},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{6391,1},{5741,1}}},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6000, exp = 70000, money = 200000, reward = {{2495,1},{2496,1},{2520,1},{2472,1}}},
["hellfire figther"] = {monster_race={"hellfire figther"}, storage_start = 200212, storage = 91012,count= 220, exp = 2000},
["hellhound"] = {monster_race={"hellhound"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, money = 10000},
["Juggernaut"] = {monster_race={"Juggernaut"}, storage_start = 200217, storage = 91017,count = 100, exp = 120000, money = 300000, reward = {{6433,1},{7434,1},{2197,1},{2476,1}}
}
 
 
configbosses_task = {
{race = "minotaur",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},
{race = "necromancer",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "dragon",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}
 
function CheckTask(cid)
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end
end
return false
end
function finisheAllTask(cid)
local config = {
exp = {true,100000},
money = {true,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={true,5}
}
local x = true
for k, v in pairs(tasktabble) do
if tonumber(getPlayerStorageValue(cid,v.storage)) then
x = false
end
end
if x == true then
setPlayerStorageValue(cid, 521456, 0)
local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end
if b < 11 then
setGlobalStorageValue(63005,b+1)
doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')
doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)
doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)
doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)
if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end
doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")
end
end
end
function HavePlayerPosition(cid, from, to)
return isInRange(getPlayerPosition(cid), from, to) and true or false
end
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
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
  piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getItemsFromList(items) -- by vodka
local str = ''
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
str = str .. items[2] .. ' ' .. getItemNameById(items[1])
if i ~= table.maxn(items) then str = str .. ', ' end end end
return str
end
function doAddItemsFromList(cid,items) -- by vodka
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
local count = items[2]
while count > 0 do
if isItemStackable(items[1]) then
doPlayerAddItemStacking(cid, items[1], 1)
else
doPlayerAddItem(cid, items[1],1)
end
count = count - 1
end
end
end
end
function pairsByKeys(t, f)
 local a = {}
 for n in pairs(t) do table.insert(a, n) end
 table.sort(a, f)
 local i = 0
 local iter = function ()
i = i + 1
if a == nil then return nil
else return a, t[a]
end
 end
 return iter
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "KillTask")
return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
local param = string.lower(param)
if param == "rank" then
getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") 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)
]]></talkaction>
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lastHit)
if(isMonster(target) == true) then
local n = string.lower(getCreatureName(target))
for race, mob in pairs(tasktabble) do
if getPlayerStorageValue(cid,mob .storage_start) >= 1 then
for i = 1,#mob.monster_race do
if n == mob.monster_race then
local contagem = getPlayerStorageValue(cid, mob.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > mob.count then return true end
if contagem > mob.count then return true end
setPlayerStorageValue(cid, mob.storage, contagem+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")
end
end
end
end
end
return true
end]]></event>
</mod>

Link para o post
Compartilhar em outros sites
  • Solução

Não testei :

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Simple Task" version="3.0" author="Vodkart" contact="xtibia.com" enabled="yes">
<config name="task_func"><![CDATA[

tasktabble = {
["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 1000,money = 800},
["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 150,exp = 200,money = 250},
["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 20},
["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 150, exp = 2500},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 400},
["giant spider"] = {monster_race={"giant spider", "spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 50000, money = 15000},
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 12000},
["quara scout"] = {monster_race={"quara predator scout","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout"}, storage_start = 200223, storage = 91023,count = 300, exp = 50000, money = 60000},
["nightmare"] = {monster_race={"nightmare","nightmare scion"}, storage_start = 200205, storage = 91005,count = 500,exp = 10000,money = 5000},
["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 250, exp = 50000},
["serpent spawn"] = {monster_race={"serpent spawn","medusa"}, storage_start = 200206, storage = 91006,count = 500,exp = 10000,money = 5000},
["plaguesmith"] = {monster_race={"plaguesmith","destroyer"}, storage_start = 200207, storage = 91007,count = 300,exp = 10000,money = 5000},
["defiler"] = {monster_race={"son of verminor","defiler"}, storage_start = 200208, storage = 91008,count = 300,exp = 10000,money = 5000},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{6391,1},{5741,1}}},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6000, exp = 70000, money = 200000, reward = {{2495,1},{2496,1},{2520,1},{2472,1}}},
["hellfire figther"] = {monster_race={"hellfire figther"}, storage_start = 200212, storage = 91012,count= 220, exp = 2000},
["hellhound"] = {monster_race={"hellhound"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, money = 10000},
["Juggernaut"] = {monster_race={"Juggernaut"}, storage_start = 200217, storage = 91017,count = 100, exp = 120000, money = 300000, reward = {{6433,1},{7434,1},{2197,1},{2476,1}}}
}

configbosses_task = {
{race = "minotaur",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},
{race = "necromancer",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "dragon",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}

function CheckTask(cid)
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end
end
return false
end
function finisheAllTask(cid)
local config = {
exp = {true,100000},
money = {true,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={true,5}
}
local x = true
for k, v in pairs(tasktabble) do
if tonumber(getPlayerStorageValue(cid,v.storage)) then
x = false
end
end
if x == true then
setPlayerStorageValue(cid, 521456, 0)
local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end
if b < 11 then
setGlobalStorageValue(63005,b+1)
doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')
doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)
doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)
doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)
if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end
doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")
end
end
end
function HavePlayerPosition(cid, from, to)
return isInRange(getPlayerPosition(cid), from, to) and true or false
end
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
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag[i])
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
  piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getItemsFromList(items) -- by vodka
local str = ''
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1])
if i ~= table.maxn(items) then str = str .. ', ' end end end
return str
end
function doAddItemsFromList(cid,items) -- by vodka
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
local count = items[i][2]
while count > 0 do
if isItemStackable(items[i][1]) then
doPlayerAddItemStacking(cid, items[i][1], 1)
else
doPlayerAddItem(cid, items[i][1],1)
end
count = count - 1
end
end
end
end
function pairsByKeys(t, f)
 local a = {}
 for n in pairs(t) do table.insert(a, n) end
 table.sort(a, f)
 local i = 0
 local iter = function ()
i = i + 1
if a[i] == nil then return nil
else return a[i], t[a[i]]
end
 end
 return iter
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "KillTask")
return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
local param = string.lower(param)
if param == "rank" then
getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") 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)
]]></talkaction>
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lastHit)
if(isMonster(target) == true) then
local n = string.lower(getCreatureName(target))
for race, mob in pairs(tasktabble) do
if getPlayerStorageValue(cid,mob .storage_start) >= 1 then
for i = 1,#mob.monster_race do
if n == mob.monster_race[i] then
local contagem = getPlayerStorageValue(cid, mob.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > mob.count then return true end
if contagem > mob.count then return true end
setPlayerStorageValue(cid, mob.storage, contagem+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")
end
end
end
end
end
return true
end]]></event>
</mod>

Link para o post
Compartilhar em outros sites

Muito bem ViitinG, você poderia me dizer qual era o erro e como arrumou? Gostaria de aprender rs

Link para o post
Compartilhar em outros sites

Opa,claro que posso ! ;)

Estava faltando fechar aqui :

A tabela não tava fechada porque a ultima chave estava fechando o monstro Juggernaut e não a tabela.

tasktabble = {
["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 1000,money = 800},
["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 150,exp = 200,money = 250},
["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 20},
["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 150, exp = 2500},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 400},
["giant spider"] = {monster_race={"giant spider", "spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 50000, money = 15000},
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 12000},
["quara scout"] = {monster_race={"quara predator scout","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout"}, storage_start = 200223, storage = 91023,count = 300, exp = 50000, money = 60000},
["nightmare"] = {monster_race={"nightmare","nightmare scion"}, storage_start = 200205, storage = 91005,count = 500,exp = 10000,money = 5000},
["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 250, exp = 50000},
["serpent spawn"] = {monster_race={"serpent spawn","medusa"}, storage_start = 200206, storage = 91006,count = 500,exp = 10000,money = 5000},
["plaguesmith"] = {monster_race={"plaguesmith","destroyer"}, storage_start = 200207, storage = 91007,count = 300,exp = 10000,money = 5000},
["defiler"] = {monster_race={"son of verminor","defiler"}, storage_start = 200208, storage = 91008,count = 300,exp = 10000,money = 5000},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{6391,1},{5741,1}}},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6000, exp = 70000, money = 200000, reward = {{2495,1},{2496,1},{2520,1},{2472,1}}},
["hellfire figther"] = {monster_race={"hellfire figther"}, storage_start = 200212, storage = 91012,count= 220, exp = 2000},
["hellhound"] = {monster_race={"hellhound"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, money = 10000},
["Juggernaut"] = {monster_race={"Juggernaut"}, storage_start = 200217, storage = 91017,count = 100, exp = 120000, money = 300000, reward = {{6433,1},{7434,1},{2197,1},{2476,1}}}

}

Link para o post
Compartilhar em outros sites

Aaah beleza ^^ Obrigado ai amigão ;)

Só uma coisa, eu tava testando a task e não ta dando pra iniciar a do jugger, será que pode ser a letra maíuscula? "J"

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo