Hudsin 48 Postado Abril 20, 2014 Share Postado Abril 20, 2014 (editado) Erro: 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 Abril 20, 2014 por Hudsin Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/ Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 20, 2014 Share Postado Abril 20, 2014 Erro: 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639378 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 (editado) Deu esse: 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 Abril 20, 2014 por Hudsin Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639388 Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 20, 2014 Share Postado Abril 20, 2014 Deu esse: 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639399 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 (editado) 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: simple_task.lua: 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 Abril 20, 2014 por Hudsin Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639420 Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 20, 2014 Share Postado Abril 20, 2014 Concertei as letras maiusculas, agora da erro no npc: simple_task.lua: 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639434 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 (editado) 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 Abril 20, 2014 por Hudsin Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639439 Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 20, 2014 Share Postado Abril 20, 2014 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639448 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 20, 2014 Autor Share Postado Abril 20, 2014 Está certo já, mas agora não salva quantos monstros ja matou, continua 0/10000 Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639468 Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 20, 2014 Share Postado Abril 20, 2014 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639469 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 21, 2014 Autor Share Postado Abril 21, 2014 (editado) 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 Abril 21, 2014 por Hudsin Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639473 Compartilhar em outros sites More sharing options...
Mateusoo 15 Postado Abril 21, 2014 Share Postado Abril 21, 2014 Bom dia,Posta ai o seu arquivo que está na pasta MODs novamente. Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1639873 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Abril 23, 2014 Autor Share Postado Abril 23, 2014 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 https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1640672 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Abril 23, 2014 Share Postado Abril 23, 2014 qual versão do seu ot Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1640781 Compartilhar em outros sites More sharing options...
Maenilse 86 Postado Abril 23, 2014 Share Postado Abril 23, 2014 se ta ligado q eu senti saudade sua ne? btw, sistema foda pra caramba cara, funcionou 100% aqui manow. Link para o comentário https://xtibia.com/forum/topic/232122-simple-task-by-vodkart/#findComment-1640839 Compartilhar em outros sites More sharing options...
Posts Recomendados