Ir para conteúdo

Simple Task by Vodkart


Hudsin

Posts Recomendados

Erro:

0pGfZGx.png

 

Mod Script:

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>

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

Erro:

0pGfZGx.png

 

Mod Script:

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>

Boa tarde,

Experimente agora:

 

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 12666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>

Aqui funcionou perfeitamente, qualquer problema, posta ai.

Abraços.

Link para o comentário
Compartilhar em outros sites

Deu esse:

OSjggYI.png

 

Tentei adicionar no login.lua e não deu tb.

 

 

 

Boa tarde,
Experimente agora:

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 12666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>

Aqui funcionou perfeitamente, qualquer problema, posta ai.
Abraços.

 

 

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

Deu esse:

OSjggYI.png

 

Tentei adicionar no login.lua e não deu tb.

 

 

 

 

 

Olá,

Retira do Login.lua.

Utilize o daqui:

 

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 12666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lasthit)
if ismonster(target) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>
<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></mod>

Você mudou todos os "C" para "c" fazendo com que a função:

registerCreatureEvent ficasse assim: registercreatureEvent

A primeira função existe, porem a segunda não.

Cuidado. Abraço.

Link para o comentário
Compartilhar em outros sites

 

 

Olá,
Retira do Login.lua.
Utilize o daqui:

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 150000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 400000,reward = {{7432,1},{3973,1},{7463,1}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200203, storage = 91003,count = 600,exp = 1500000},
["quaras"] = {monster_race={"quara constrictor","quara hydromancer","quara mantassin","quara pincher","quara predator","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout","quara predator scout"}, storage_start = 200204, storage = 91004,count = 600,exp = 1200000,reward = {{2487,1},{7383,1},{2497,1}}},
["mutated rats"] = {monster_race={"mutated rat"}, storage_start = 200205, storage = 91005,count = 400,exp = 1000000,reward = {{7884,1},{2438,1},{3476,1}}},
["giant spiders"] = {monster_race={"giant spider"}, storage_start = 200206, storage = 91006,count = 1000,exp = 500000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 500000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000,reward = {{8887,1},{10521,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,reward = {{6101,1}}},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200209, storage = 91009,count = 6000,reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200210, storage = 91010,count = 6000,reward = {{6100,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur mage","minotaur archer"}, storage_start = 200211, storage = 91011,count= 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200212, storage = 91012,count= 8000, exp = 2000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 12666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
}




configbosses_task = {
{race = "minotaur",playerpos = {x = 32439, y = 31990, z = 9}, FromposTopos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",playerpos = {x = 32610, y = 32795, z = 8}, FromposTopos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function issummon(uid)
return uid ~= getcreaturemaster(uid) or false
end
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 = {false,100000},
money = {false,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lasthit)
if ismonster(target) and not issummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>
<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></mod>

Você mudou todos os "C" para "c" fazendo com que a função:

registerCreatureEvent ficasse assim: registercreatureEvent

A primeira função existe, porem a segunda não.
Cuidado. Abraço.

 

 

 

Concertei as letras maiusculas, agora da erro no npc:

OkqamJE.png

 

 

simple_task.lua:

 

 

  1. Script simple_task.lua:domodlib('task_func')
    local keywordHandler = KeywordHandler:new()
    local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)
    local talkState = {}
    function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
    function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
    function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
    function onThink() npcHandler:onThink() end
    function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
    return false
    end
    local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
    local msg = string.lower(msg)
    if isInArray({"task","tasks","missao","mission"}, msg) then
    npcHandler:say("Me diga o nome do monstro que você deseja fazer a task!", cid)
    talkState[talkUser] = 1
    elseif talkState[talkUser] == 1 then
    if tasktabble[msg] then
    if CheckTask(cid) ~= true then
    local contagem = getPlayerStorageValue(cid, tasktabble[msg].storage)
    if (contagem == -1) then contagem = 1 end
    if not tonumber(contagem) then npcHandler:say('Desculpe, mas você já terminou a task do '..msg, cid) return true end
    setPlayerStorageValue(cid, tasktabble[msg].storage_start, 1)
    npcHandler:say("Parabéns, agora você está participando da missão task do "..msg..", falta matar "..string.sub(((contagem)-1)-tasktabble[msg].count, 2).." "..msg, cid)
    talkState[talkUser] = 0
    else
    npcHandler:say('Desculpe, mas você já faz parte de uma task!', cid)
    talkState[talkUser] = 0
    end
    else
    npcHandler:say('digite o nome correto da missão task! para mais informações digite {!task}', cid)
    talkState[talkUser] = 1
    end
    elseif isInArray({"receber","reward","recompensa","report","reportar"}, msg) then
    if CheckTask(cid) then
    for k, v in pairs(tasktabble) do
    racetype = k
    if getPlayerStorageValue(cid,v.storage_start) >= 1 then
    local contagem = getPlayerStorageValue(cid, v.storage)
    if (contagem == -1) then contagem = 1 end
    if not tonumber(contagem) then npcHandler:say('você só pode receber os items uma única vez!', cid) return true end
    if (((contagem)-1) >= v.count) then
    for _, check in pairs(configbosses_task) do
    if string.lower(check.race) == string.lower(racetype) then
    local on = getPlayersOnline()
    for i=1, #on do
    if HavePlayerPosition(on[i], check.FromPosToPos[1],check.FromPosToPos[2]) then
    selfSay('aguarde alguns instantes, tem pessoas fazendo a task.', cid) return true
    end
    end
    doTeleportThing(cid, check.Playerpos)
    local function checkArea(cid)
    if not isCreature(cid) then return LUA_ERROR end
    if HavePlayerPosition(cid, check.FromPosToPos[1],check.FromPosToPos[2]) then
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
    end
    addEvent(checkArea, check.time*60*1000, cid)
    end
    end
    local str = ""
    if v.exp ~= nil then doPlayerAddExp(cid, v.exp ) str = str.."".. (str == "" and "" or ",") .." "..v.exp.." de exp" end
    if v.money ~= nil then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ",") ..""..v.money.." gps" end
    if v.reward ~= nil then doAddItemsFromList(cid,v.reward) str = str.."".. (str == "" and "" or ",") ..""..getItemsFromList(v.reward) end
    npcHandler:say("Obrigado pela sua ajuda Recompensas: "..(str == "" and "nenhuma" or ""..str.."").." por ter completado a task do "..k, cid)
    setPlayerStorageValue(cid, v.storage, "Finished")
    setPlayerStorageValue(cid, v.storage_start, 0)
    setPlayerStorageValue(cid, 521456, getPlayerStorageValue(cid, 521456) == -1 and 1 or getPlayerStorageValue(cid, 521456)+1)
    finisheAllTask(cid)
    else
    npcHandler:say('Desculpe,mas você só matou '..((contagem)-1)..' de '..v.count..' '..k, cid)
    end
    end
    end
    else
    npcHandler:say("você não está em nenhuma missão task", cid)
    end
    elseif isInArray({"sair","leave","exit"}, msg) then
    if CheckTask(cid) then
    talkState[talkUser] = 2
    for k, v in pairs(tasktabble) do
    if getPlayerStorageValue(cid,v.storage_start) >= 1 then
    storagesair = v.storage_start
    local contagem = getPlayerStorageValue(cid, v.storage)
    if (contagem == -1) then contagem = 1 end
    npcHandler:say('você está participando de uma missão task do '..k..' e já tem '..((contagem)-1)..' '..k..' mortos, deseja mesmo sair?', cid)
    end
    end
    else
    npcHandler:say("você não está em nenhuma missão task", cid)
    end
    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
    setPlayerStorageValue(cid, storagesair, 0)
    npcHandler:say("Você foi retirado da task com sucesso!", cid)
    elseif msg == "no" then  
    selfSay("Tudo bem então", cid)  
    talkState[talkUser] = 0  
    npcHandler:releaseFocus(cid)  
    end
    return TRUE
    end
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

 

 

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

 

 

 

 

 

Concertei as letras maiusculas, agora da erro no npc:

OkqamJE.png

 

 

simple_task.lua:

 

 

  1. Script simple_task.lua:domodlib('task_func')
    local keywordHandler = KeywordHandler:new()
    local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)
    local talkState = {}
    function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
    function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
    function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
    function onThink() npcHandler:onThink() end
    function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
    return false
    end
    local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
    local msg = string.lower(msg)
    if isInArray({"task","tasks","missao","mission"}, msg) then
    npcHandler:say("Me diga o nome do monstro que você deseja fazer a task!", cid)
    talkState[talkUser] = 1
    elseif talkState[talkUser] == 1 then
    if tasktabble[msg] then
    if CheckTask(cid) ~= true then
    local contagem = getPlayerStorageValue(cid, tasktabble[msg].storage)
    if (contagem == -1) then contagem = 1 end
    if not tonumber(contagem) then npcHandler:say('Desculpe, mas você já terminou a task do '..msg, cid) return true end
    setPlayerStorageValue(cid, tasktabble[msg].storage_start, 1)
    npcHandler:say("Parabéns, agora você está participando da missão task do "..msg..", falta matar "..string.sub(((contagem)-1)-tasktabble[msg].count, 2).." "..msg, cid)
    talkState[talkUser] = 0
    else
    npcHandler:say('Desculpe, mas você já faz parte de uma task!', cid)
    talkState[talkUser] = 0
    end
    else
    npcHandler:say('digite o nome correto da missão task! para mais informações digite {!task}', cid)
    talkState[talkUser] = 1
    end
    elseif isInArray({"receber","reward","recompensa","report","reportar"}, msg) then
    if CheckTask(cid) then
    for k, v in pairs(tasktabble) do
    racetype = k
    if getPlayerStorageValue(cid,v.storage_start) >= 1 then
    local contagem = getPlayerStorageValue(cid, v.storage)
    if (contagem == -1) then contagem = 1 end
    if not tonumber(contagem) then npcHandler:say('você só pode receber os items uma única vez!', cid) return true end
    if (((contagem)-1) >= v.count) then
    for _, check in pairs(configbosses_task) do
    if string.lower(check.race) == string.lower(racetype) then
    local on = getPlayersOnline()
    for i=1, #on do
    if HavePlayerPosition(on[i], check.FromPosToPos[1],check.FromPosToPos[2]) then
    selfSay('aguarde alguns instantes, tem pessoas fazendo a task.', cid) return true
    end
    end
    doTeleportThing(cid, check.Playerpos)
    local function checkArea(cid)
    if not isCreature(cid) then return LUA_ERROR end
    if HavePlayerPosition(cid, check.FromPosToPos[1],check.FromPosToPos[2]) then
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
    end
    addEvent(checkArea, check.time*60*1000, cid)
    end
    end
    local str = ""
    if v.exp ~= nil then doPlayerAddExp(cid, v.exp ) str = str.."".. (str == "" and "" or ",") .." "..v.exp.." de exp" end
    if v.money ~= nil then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ",") ..""..v.money.." gps" end
    if v.reward ~= nil then doAddItemsFromList(cid,v.reward) str = str.."".. (str == "" and "" or ",") ..""..getItemsFromList(v.reward) end
    npcHandler:say("Obrigado pela sua ajuda Recompensas: "..(str == "" and "nenhuma" or ""..str.."").." por ter completado a task do "..k, cid)
    setPlayerStorageValue(cid, v.storage, "Finished")
    setPlayerStorageValue(cid, v.storage_start, 0)
    setPlayerStorageValue(cid, 521456, getPlayerStorageValue(cid, 521456) == -1 and 1 or getPlayerStorageValue(cid, 521456)+1)
    finisheAllTask(cid)
    else
    npcHandler:say('Desculpe,mas você só matou '..((contagem)-1)..' de '..v.count..' '..k, cid)
    end
    end
    end
    else
    npcHandler:say("você não está em nenhuma missão task", cid)
    end
    elseif isInArray({"sair","leave","exit"}, msg) then
    if CheckTask(cid) then
    talkState[talkUser] = 2
    for k, v in pairs(tasktabble) do
    if getPlayerStorageValue(cid,v.storage_start) >= 1 then
    storagesair = v.storage_start
    local contagem = getPlayerStorageValue(cid, v.storage)
    if (contagem == -1) then contagem = 1 end
    npcHandler:say('você está participando de uma missão task do '..k..' e já tem '..((contagem)-1)..' '..k..' mortos, deseja mesmo sair?', cid)
    end
    end
    else
    npcHandler:say("você não está em nenhuma missão task", cid)
    end
    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
    setPlayerStorageValue(cid, storagesair, 0)
    npcHandler:say("Você foi retirado da task com sucesso!", cid)
    elseif msg == "no" then  
    selfSay("Tudo bem então", cid)  
    talkState[talkUser] = 0  
    npcHandler:releaseFocus(cid)  
    end
    return TRUE
    end
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

 

 

Funcionou?

Se sim, marca como respondido e pede pra algum moderador mover.

abraços.

Link para o comentário
Compartilhar em outros sites

Funcionou?
Se sim, marca como respondido e pede pra algum moderador mover.
abraços.

 

Não ta funcionando, por causa do erro no npc, que postei acima. xD

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

 

 

Não ta funcionando, por causa do erro no npc, que postei acima. xD

 

Mano, eu to olhando aqui, você fez o que que a maioria das letras maiusculas foram substituidas por minusculas?

Varias funções não estão funcionando, tem que olhar ambos os scripts e corrigir função por função...

Acho melhor você pegar o MOD base novamente, e editar COM CUIDADO o que você editou nesse.

Tente evitar ferramentas de substituição de letras, por exemplo:

Substituir "S" por "s" fará com que todas as funções: getPlayerStorageValue se tornem getPlayerstorageValue o que vai gerar erro.

Faça tudo manualmente e não mecha no que você não sabe para que serve, a não ser que você esteja estudando, claro kkkk

Vou tentar arrumar esse script aqui, mas te recomendo pegar o MOD do jeito que foi postado e re-editar. Será 1000x mais rapido...

Abraço.

Link para o comentário
Compartilhar em outros sites

Está certo já, mas agora não salva quantos monstros ja matou, continua 0/10000

Deve ser essa linha:

 

setplayerstorageValue(cid, mob.storage, contagem+1)

Mude para:

Linha 172 se não me engano

setPlayerStorageValue(cid, mob.storage, contagem+1)

Você terá vários problemas desse se não utilizar a versão disponibilizada pelo Vodkart...

Esses problemas com as funções são bestas, mas são chatos pois são muitos...

Abraço.

Link para o comentário
Compartilhar em outros sites

Continuarei testando, preciso sair agora, atualizarei com o dele e venho falar se deu certo, abraços

Deve ser essa linha:

 

setplayerstorageValue(cid, mob.storage, contagem+1)
Mude para:

Linha 172 se não me engano

setPlayerStorageValue(cid, mob.storage, contagem+1)
Você terá vários problemas desse se não utilizar a versão disponibilizada pelo Vodkart...

Esses problemas com as funções são bestas, mas são chatos pois são muitos...

Abraço.

 

Edit 21/04:

 

Bom, hoje eu testei com o dele e continua o problema de não salvar quantos matei, fica 0/100

 

Essa linha está correta e não tem problemas de letras maiusculas ou minusculas agora.

Tambem não mostra erro no distro

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

simple task.xml:

 

 

 

Bom dia,
Posta ai o seu arquivo que está na pasta MODs novamente.

 

 

<?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 = {
["tarantula"] = {monster_race={"tarantula"}, storage_start = 200201, storage = 91001,count = 600,exp = 15000,reward = {{2477,1},{7903,1}}},
["mammoth"] = {monster_race={"mammoth"}, storage_start = 200202, storage = 91002,count = 600,exp = 40000,reward = {{7432,1},{3973,1},{7463,1}}},
["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 30,exp = 1000,money = 1000},
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},
["pirate three"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200205, storage = 91005,count = 6000,exp = 10000, reward = {{6099,1}}},
["pirate four"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200206, storage = 91006,count = 6000,exp = 10000, reward = {{6100,1}}},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 6000,exp = 10000, reward = {{6102,1}}},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 6000,exp = 10000, reward = {{6101,1}}},
["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 10000},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 8000},
["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 3000, exp = 2500, reward = {{5015,1}}},
["stone golem"] = {monster_race={"stone golem"}, storage_start = 200212, storage = 91012,count= 200, exp = 2000, reward = {{5880,5}}},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 2000, reward = {{7902,1},{7449,1}}},
["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 10000, exp = 30000, reward = {{5919,1}}},
["mutated rat"] = {monster_race={"mutated rat"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, reward = {{7884,1},{2438,1},{3476,1}}},
["giant spider"] = {monster_race={"giant spider"}, storage_start = 200215, storage = 91016,count = 1000, exp = 50000, reward = {{2477,1},{7416,1},{7419,1},{2476,1}}},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 4000, exp = 2000, money = 15000, reward = {{6433,1},{2195,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 4000, exp = 70000, reward = {{8887,1},{10521,1}}},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{5741,1}}},
["serpent spawn"] = {monster_race={"serpent spawn"}, storage_start = 200220, storage = 91020,count = 1400, exp = 70000,  reward = {{8880,1},{7386,1}}},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 126666, exp = 70000, money = 200000, reward = {{2495,1},{2520,1},{2472,1}}},
["quara"] = {monster_race={"quara predator","quara constrictor","quara hydromancer","quara mantassin","quara pincher"}, storage_start = 200222, storage = 91022,count = 500, exp = 1000000, reward = {{2487,1},{7383,1},{2497,1}}},
["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 = 500, exp = 1000000, reward = {{2487,1},{7383,1},{2497,1}}},
}




configbosses_task = {
{race = "minotaur",Playerpos = {x = 32439, y = 31990, z = 9}, FromPosToPos = {{x = 32434, y = 31989, z = 9},{x = 32448, y = 32001, z = 9}},time = 5},
{race = "necromancer",Playerpos = {x = 32610, y = 32795, z = 8}, FromPosToPos = {{x = 32605, y = 32785, z = 8},{x = 32614, y = 32795, z = 8}}, time = 5},
}




function isSummon(uid)
return uid ~= getCreatureMaster(uid) or false
end
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 = {false,100000},
money = {true,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,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) and not isSummon(target) 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 not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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 comentário
Compartilhar em outros sites

×
×
  • Criar Novo...