• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Mods] Repetir Task

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Mods] Repetir Task Miér Mar 24, 2021 3:22 pm

    SoyFabi

    SoyFabi
    Miembro
    Miembro
    Descripcion escribió:Tengo un sistema de task, que puedes escoger que task quieres hacer ya sea en matar rotworm o demon, pero una vez que haya hecho la task me da la recompensa y no la puedo repetir. Lo que quiero es hacer que pueda repetir la task sin parar.

    Codigo del MOD

    Código:
    <?xml version="1.0" encoding="UTF-8"?>

    <mod name="Simple Task" version="3.0" author="Vodkart" contact="#####.com" enabled="yes">

    <config name="task_func"><![CDATA[


    tasktabble = {

    ["bee"] = {monster_race={"bee","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 20,exp = 200,money = 250},

    ["globin"] = {monster_race={"goblin","goblin assassin","goblin leader"}, storage_start = 200202, storage = 91002,count = 150,exp = 300,money = 300},

    ["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 1000,money = 800},

    ["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},

    ["green djinn"] = {monster_race={"green djinn","efreet"}, storage_start = 200205, storage = 91005,count = 500,exp = 10000,money = 5000},

    ["blue djinn"] = {monster_race={"blue djinn","marid"}, storage_start = 200206, storage = 91006,count = 500,exp = 10000,money = 5000},

    ["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 300,exp = 10000,money = 5000},

    ["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 300,exp = 10000,money = 5000},

    ["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 20},

    ["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 400},

    ["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 150, exp = 2500},

    ["stone golem"] = {monster_race={"stone golem"}, storage_start = 200212, storage = 91012,count= 220, exp = 2000},

    ["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 12000},

    ["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 250, exp = 50000},

    ["mutated rat"] = {monster_race={"mutated rat"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, money = 10000},

    ["giant spider"] = {monster_race={"giant spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 50000, money = 15000},

    ["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 5000, exp = 2000, money = 15000, reward = {{6433,1},{7434,1},{2197,1},{2476,1}}},

    ["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 1500, exp = 70000, money = 30000},

    ["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{6391,1},{5741,1}}},

    ["serpent spawn"] = {monster_race={"serpent spawn"}, storage_start = 200220, storage = 91020,count = 1400, exp = 70000, money = 30000},

    ["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6666, exp = 70000, money = 200000, reward = {{2495,1},{2496,1},{2520,1},{2472,1}}},

    ["quara"] = {monster_race={"quara predator","quara constrictor","quara hydromancer","quara mantassin","quara pincher"}, storage_start = 200222, storage = 91022,count = 300, exp = 40000, money = 50000},

    ["quara scout"] = {monster_race={"quara predator scout","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout"}, storage_start = 200223, storage = 91023,count = 300, exp = 50000, money = 60000}

    }



    configbosses_task = {

    {race = "minotaur",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},

    {race = "necromancer",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},

    {race = "dragon",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}

    }

    function CheckTask(cid)

    for k, v in pairs(tasktabble) do

    if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end

    end

    return false

    end

    function finisheAllTask(cid)

    local config = {

    exp = {true,100000},

    money = {true,200000},

    items ={false,{{2124,2},{2173,1}}},

    premium ={true,5}

    }

    local x = true

    for k, v in pairs(tasktabble) do

    if tonumber(getPlayerStorageValue(cid,v.storage)) then

    x = false

    end

    end

    if x == true then

    setPlayerStorageValue(cid, 521456, 0)

    local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end

    if b < 11 then

    setGlobalStorageValue(63005,b+1)

    doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')

    doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)

    doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)

    doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)

    if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end

    doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")

    end

    end

    end

    function HavePlayerPosition(cid, from, to)

    return isInRange(getPlayerPosition(cid), from, to) and true or false

    end

    function getRankStorage(cid, value, max, RankName) -- by vodka

    local str =""

    str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"

    local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")

    if (query:getID() ~= -1) then k = 1 repeat if k > max then break end

    str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"

    k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)

    end

    function getItemsInContainerById(container, itemid) -- Function By Kydrai

    local items = {}

    if isContainer(container) and getContainerSize(container) > 0 then

    for slot=0, (getContainerSize(container)-1) do

    local item = getContainerItem(container, slot)

    if isContainer(item.uid) then

    local itemsbag = getItemsInContainerById(item.uid, itemid)

    for i=0, #itemsbag do

    table.insert(items, itemsbag[i])

    end

    else

    if itemid == item.itemid then

    table.insert(items, item.uid)

    end

    end

    end

    end

    return items

    end

    function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo

    local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)

    local piles = 0

    if #item > 0 then

    for i,x in pairs(item) do

    if getThing(x).type < 100 then

    local it = getThing(x)

    doTransformItem(it.uid, itemid, it.type+quant)

    if it.type+quant > 100 then

    doPlayerAddItem(cid, itemid, it.type+quant-100)

    end

    else

    piles = piles+1

    end

    end

    else

    return doPlayerAddItem(cid, itemid, quant)

    end

    if piles == #item then

    doPlayerAddItem(cid, itemid, quant)

    end

    end

    function getItemsFromList(items) -- by vodka

    local str = ''

    if table.maxn(items) > 0 then

    for i = 1, table.maxn(items) do

    str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1])

    if i ~= table.maxn(items) then str = str .. ', ' end end end

    return str

    end

    function doAddItemsFromList(cid,items) -- by vodka

    if table.maxn(items) > 0 then

    for i = 1, table.maxn(items) do

    local count = items[i][2]

    while count > 0 do

    if isItemStackable(items[i][1]) then

    doPlayerAddItemStacking(cid, items[i][1], 1)

    else

    doPlayerAddItem(cid, items[i][1],1)

    end

    count = count - 1

    end

    end

    end

    end

    function pairsByKeys(t, f)

    local a = {}

    for n in pairs(t) do table.insert(a, n) end

    table.sort(a, f)

    local i = 0

    local iter = function ()

    i = i + 1

    if a[i] == nil then return nil

    else return a[i], t[a[i]]

    end

    end

    return iter

    end

    ]]></config>

    <event type="login" name="TaskLogin" event="script"><![CDATA[

    function onLogin(cid)

    registerCreatureEvent(cid, "KillTask")

    return true

    end]]></event>

    <talkaction words="/task;!task" event="buffer"><![CDATA[

    domodlib('task_func')

    local param = string.lower(param)

    if param == "rank" then

    getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") return true

    end

    local str = ""

    str = str .. "Task Completed :\n\n"

    for k, v in pairsByKeys(tasktabble) do

    local contagem = getPlayerStorageValue(cid, v.storage)

    if (contagem == -1) then contagem = 1 end

    str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n"

    end

    str = str .. ""

    return doShowTextDialog(cid, 8983, str)

    ]]></talkaction>

    <event type="kill" name="KillTask" event="script"><![CDATA[

    domodlib('task_func')

    function onKill(cid, target, lastHit)

    if(isMonster(target) == true) then

    local n = string.lower(getCreatureName(target))

    for race, mob in pairs(tasktabble) do

    if getPlayerStorageValue(cid,mob .storage_start) >= 1 then

    for i = 1,#mob.monster_race do

    if n == mob.monster_race[i] then

    local contagem = getPlayerStorageValue(cid, mob.storage)

    if (contagem == -1) then contagem = 1 end

    if not tonumber(contagem) then return true end

    if contagem > mob.count then return true end

    if contagem > mob.count then return true end

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

    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")

    end

    end

    end

    end

    end

    return true

    end]]></event>

    </mod>


    Codigo del NPC

    Código:
    domodlib('task_func')

    local message = [[
    ----**| ->Normal Tasks<- |**----

    Normal Tasks disponibles en:
    ->Konohagakure<--


    Bee [0/50]
    Bear [0/50


    ]]

    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 list","tasks lists"}, msg) then

    npcHandler:say("Dime el nombre de la Task que quiere hacer...", cid)
     doPlayerPopupFYI(cid, message)

    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('Disculpe, usted ya termino la task de '..msg, cid) return true end

    setPlayerStorageValue(cid, tasktabble[msg].storage_start, 1)

    npcHandler:say("P, 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('Disculpe, usted ya esta haciendo una Task!', cid)

    talkState[talkUser] = 0

    end

    else

    npcHandler:say('Se ha equivicado, diga de nuevo {Task List}.', cid)

    talkState[talkUser] = 1

    end

    elseif isInArray({"Receive","receive","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('Solo puedes recebir un item por Task!', 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())
    Captura del Error escribió:Imagen del error: [Mods] Repetir Task Empty
    La config. radica en: Npc

    2default Re: [Mods] Repetir Task Miér Mar 24, 2021 10:18 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    puede dañiear algo por aqui

    Código:


    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)



    [Mods] Repetir Task YNU5B25
    https://www.tibiaface.com

    3default Re: [Mods] Repetir Task Jue Mar 25, 2021 1:04 pm

    SoyFabi

    SoyFabi
    Miembro
    Miembro
    Cuando termino la task, y al decirla de nuevo me dice que estoy metido en una task cuando en realidad ya la termine.

    [Mods] Repetir Task Screen29

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).