Ir para conteúdo
  • Cadastre-se

(Resolvido)Task system 3.0 nao conta mostros


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Estou usando o sistema de Task 3.0 do Vodkart , porem quando e pego uma task com o npc e vai matar os mobs não ha contagem deles

 nao sai do '0' e nem aparece o progresso dizendo quantos matou.

@Vodkart poderia me ajudar nisso ?

 

mods:

<?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 = {
["kankuro"] = {monster_race={"kankuro"}, storage_start = 200201, storage = 91001,count = 500,exp = 10000000,money = 500000, reward = {{9970,30}}},
["nukenin"] = {monster_race={"nukenin"}, storage_start = 200202, storage = 91002,count = 1000,exp = 13000000,money = 650000, reward = {{9970,40}}},
["gamaguren"] = {monster_race={"gamaguren"}, storage_start = 200203, storage = 91003,count = 1000, exp = 13000000,money = 650000, reward = {{9970,40}}},
["giant furie"] = {monster_race={"giant furie"}, storage_start = 200204, storage = 91004,count= 2000, exp = 16500000, money = 750000, reward = {{9970,60}}},
["zetsu"] = {monster_race={"zetsu"}, storage_start = 200205, storage = 91005,count = 4000, exp = 252000000, money = 1000000, reward = {{9970,75}}},
["konan"] = {monster_race={"konan"}, storage_start = 200206, storage = 91006,count = 4000, exp = 252000000, money = 1000000, reward = {{9970,75}}},
["anbu"] = {monster_race={"anbu"}, storage_start = 200207, storage = 91007,count = 1500, exp = 16000000, money = 600000, reward = {{9970,60}}},
["haku"] = {monster_race={"haku"}, storage_start = 200208, storage = 91008,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["jya boss"] = {monster_race={"jya boss"}, storage_start = 200209, storage = 91009,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["orochimaru"] = {monster_race={"orochimaru"}, storage_start = 200210, storage = 91010,count = 4000, exp = 202000000, money = 1000000, reward = {{9970,75}}},
["sand sc2"] = {monster_race={"sand sc2"}, storage_start = 200211, storage = 91011,count = 2000, exp = 16500000, money = 750000, reward = {{9970,60}}},
["skeleton fear"] = {monster_race={"skeleton fear"}, storage_start = 200212, storage = 91012,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["anbu espadashin"] = {monster_race={"anbu espadashin"}, storage_start = 200213, storage = 91013,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["aranha"] = {monster_race={"aranha"}, storage_start = 200214, storage = 91014,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["dark kikkai"] = {monster_race={"dark kikkai"}, storage_start = 200215, storage = 91015,count = 1000, exp = 13000000, money = 650000, reward = {{9970,40}}},
["giant golem"] = {monster_race={"giant golem"}, storage_start = 200216, storage = 91016,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["jiraya akatsuki"] = {monster_race={"jiraya akatsuki"}, storage_start = 200217, storage = 91017,count = 5000, exp = 252000000, money = 1200000, reward = {{9970,85}}},
["larva"] = {monster_race={"larva"}, storage_start = 200218, storage = 91018,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["mummy"] = {monster_race={"mummy"}, storage_start = 200219, storage = 91019,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["mutante snake"] = {monster_race={"mutante snake"}, storage_start = 200220, storage = 91020,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["mutated crocodile"] = {monster_race={"mutated crocodile"}, storage_start = 200221, storage = 91021,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["mutation creature"] = {monster_race={"mutation creature"}, storage_start = 200222, storage = 91022,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["raikage"] = {monster_race={"raikage"}, storage_start = 200223, storage = 91023,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["sanshouo taka"] = {monster_race={"sanshouo taka"}, storage_start = 200224, storage = 91024,count = 2000, exp = 16500000, money = 600000, reward = {{9970,30}}},
["salamandra"] = {monster_race={"salamandra"}, storage_start = 200225, storage = 91025,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["skeleton fury"] = {monster_race={"skeleton fury"}, storage_start = 200226, storage = 91026,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["twisted storm"] = {monster_race={"twisted storm"}, storage_start = 200227, storage = 91027,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["vespa fury"] = {monster_race={"vespa fury"}, storage_start = 200228, storage = 91028,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["white renegade"] = {monster_race={"white renegade"}, storage_start = 200229, storage = 91029,count = 2000, exp = 16500000, money = 750000, reward = {{9970,60}}},
["zetsu white"] = {monster_race={"zetsu white"}, storage_start = 200230, storage = 91030,count = 5000, exp = 252000000, money = 1200000, reward = {{9970,85}}},
["dark giant"] = {monster_race={"dark diant"}, storage_start = 200231, storage = 91031,count = 5000, exp = 252000000, money = 1500000, reward = {{9970,100}}},
["obscure spider"] = {monster_race={"obscure spider"}, storage_start = 200232, storage = 91032,count = 5000, exp = 252000000, money = 1500000, reward = {{9970,100}}},
["unknown shinobi"] = {monster_race={"unknown shinobi"}, storage_start = 200233, storage = 91033,count = 5000, exp = 252000000, money = 1500000, reward = {{9970,100}}},
["forest spider"] = {monster_race={"forest spider"}, storage_start = 200234, storage = 91034,count = 5000, exp = 252000000, money = 1500000, reward = {{9970,100}}},
["madara uchiha"] = {monster_race={"madara uchiha"}, storage_start = 200235, storage = 91035,count = 4000, exp = 222000000, money = 1000000, reward = {{9970,75}}},
["shinobi renegado"] = {monster_race={"shinobi renegado"}, storage_start = 200236, storage = 91036,count = 3000, exp = 18500000, money = 800000, reward = {{9970,50}}},
["renegade"] = {monster_race={"renegade"}, storage_start = 200237, storage = 91037,count = 1000, exp = 13000000, money = 500000, reward = {{9970,40}}},
["task anbu"] = {monster_race={"task anbu"}, storage_start = 200238, storage = 91038,count = 2, exp = 10000000, money = 500000, reward = {{9970,40}}},
["task orochimaru"] = {monster_race={"task orochimaru"}, storage_start = 200239, storage = 91039,count = 2, exp = 10000000, money = 500000, reward = {{9970,40}}}
}


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


function 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 = {true,100000},
money = {true,200000},
items ={false,{{11191,20},{11192,20}}},
premium ={false,0}
}
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>

 

Npc:

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())

 

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

@leozincorsair troca essa linha:

 

if isMonster(target) and not isSummon(target) then


por

if isMonster(target) then

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Obrigado meu rei <3

1 hora atrás, Vodkart disse:

@leozincorsair troca essa linha:

 


if isMonster(target) and not isSummon(target) then


por


if isMonster(target) then

 

 

 

Link para o post
Compartilhar em outros sites

Participe da conversa

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

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

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

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

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo