• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    Task System TFS 0.3.6 cliente 8.54

    Compartir:

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

    1default Task System TFS 0.3.6 cliente 8.54 el Vie Jul 27, 2018 4:37 pm

    Roo

    avatar
    Miembro
    Miembro
    Hey! que tal a todos de Tibia Face!!

    Hoy les traigo un Sistema de task, esto funciona por medio de un Npc
    donde al hablar con el les ofrecerá las task de moustros que quieran tomar
    cada task tiene su recompensa en dinero y exp. cabe destacar que cada task tiene un tiempo de 24 horas pasando estas horas, podrán hacer las task otra vez


    Vamos a Creaturescripts.xml y ponemos esto:
    Código:
    <event type="kill" name="KillTask" event="script" value="task.lua"/>

    Despues entramos a creature escripts/scripts/login.lua y añadimos esto:
    Código:
    registerCreatureEvent(cid, "KillTask")

    Ahora creamos en craturescripts/scripts un archivo llamado task.lua y ponemos esto:

    Código:
    local tasksss = {
       [1] = {name = "Wolf",  sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
       [2] = {name = "Orc",  sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 7621, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
    }

    function onKill(cid, target)
            for _, t in ipairs(tasksss) do
                local total_count = t.count
                local m_sto = t.sto
                local count_sto = t.sto_count
                if getPlayerStorageValue(cid, m_sto) ~= -1 then
                    if getCreatureName(target) == t.name then
                     if (total_count - getPlayerStorageValue(cid, count_sto)) == 1 then
                     setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1)
                         doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." " .. t.name .. " and finished the task!")
                         return true
                        elseif (total_count - getPlayerStorageValue(cid, count_sto)) >= 1 then
                            setPlayerStorageValue(cid, count_sto, getPlayerStorageValue(cid, count_sto) + 1)
                            doPlayerSendTextMessage(cid, 20, "You are killed ".. getPlayerStorageValue(cid, count_sto) .." of ".. total_count .." " .. t.name .. " kills to finish the task.")
                            return true
                        end
                    end
                end
            end
        return true
    end

    Ahora nos vamos a crear el npc
    npc/scripts/task.lua y ponemos esto:

    Código:
    local tasksss = {
       [1] = {name = "Wolf",  sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
       [2] = {name = "Orc",  sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
    }

    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
        value = -1
        for i = 1, #tasksss do
            if msgcontains(msg, tasksss[i].name) and not value ~= -1 then
                value = i
            end
        end
        if value == -1 then
            selfSay('I don\'t have a this task!', cid)
            talkState[talkUser] = 0
            return true
        end
        local configss = tasksss[value]
        local name = configss.name
        local m_sto = configss.sto
        local time_sto = configss.time_sto
        local count_sto = configss.sto_count
        local total_count = configss.count
        local rest = total_count - getPlayerStorageValue(cid, count_sto)
            if getPlayerStorageValue(cid, time_sto) < os.time() then -- verifica se o player ainda está no prazo
                if getPlayerStorageValue(cid, m_sto) <= 0 then -- verifica se o player não pegou está task
                    selfSay('Ready! Now you need kill a '.. total_count .. ' '.. name .. '!', cid)
                    setPlayerStorageValue(cid, m_sto, 1)
                    setPlayerStorageValue(cid, total_count, 0)
                    talkState[talkUser] = 0              
                else
                    if rest <= 0 then -- Verifica se o player matou todos os monstros nescessários
                        doPlayerAddItem(cid, configss.rewardid, configss.rewardcount)
                        setPlayerStorageValue(cid, count_sto, 0)
                        setPlayerStorageValue(cid, m_sto, -1)
                        setPlayerStorageValue(cid, time_sto, os.time() + configss.time)
                        doPlayerAddExperience(cid, configss.rewardexp)
                        doSendAnimatedText(getCreaturePosition(cid), configss.rewardexp, 215)
                        selfSay(configss.text, cid)
                        talkState[talkUser] = 0
                    else
                        selfSay('You need to kill '..rest..' '..name..' to gain a reward.', cid)
                        talkState[talkUser] = 0
                    end
                end
            else
                selfSay('You already did this task, player. Wait '..math.ceil((getPlayerStorageValue(cid, time_sto) - os.time())/(60*60))..' hours to do it again.', cid)
                talkState[talkUser] = 0
            end
    end
    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())

    Hacemos un archivo Task Assignament.xml y ponemos esto:
    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <npc name="Task Assignament" script="task.lua" walkinterval="350000" floorchange="0" speed="0">
     <health now="150" max="150"/>
     <look type="153" head="115" body="31" legs="66" feet="0"/>
     <parameters>
     <parameter key="message_greet" value="You want gain a task of {Wolf}, {Orc}?"/>
     </parameters>
    </npc>

    Para poder agregar mas moustros es importante editar lo siguiente:
    Código:
    [1] = {name = "Wolf",  sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
       [2] = {name = "Orc",  sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
    }

    Es importante agregar la secuencia de los numeros en Wolf -10212, 5457, 14129
    Orc - 10213, 5458, 14130 ya que esto te permitira aumentar el storage si agregas a otro moustro quedaria algo asi:

    Código:
    [1] = {name = "Wolf",  sto = 10212, count = 3, time_sto = 5457, time = 1*24*60*60, sto_count = 14129, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
       [2] = {name = "Orc",  sto = 10213, count = 5, time_sto = 5458, time = 1*24*60*60, sto_count = 14130, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
    [3] = {name = "Troll",  sto = 10214, count = 5, time_sto = 5459, time = 1*24*60*60, sto_count = 14131, money = 100, rewardid = 2152, rewardcount = 100, rewardexp = 10000,  text = "Congratulations! You finished this task. In 24h, you will be able to do it again."},
    }

    Espero y sea de su agrado si les gusto Darle Like! (y)  Very Happy
    Que tengan un buen dia!


    QUEDA ESTRICTAMENTE PROHIBIDO RENDIRSE

    Ver perfil de usuario

    2default Re: Task System TFS 0.3.6 cliente 8.54 el Vie Jul 27, 2018 5:07 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    gran aporte mudare para el area correcta +1 (y)



    Ver perfil de usuario http://www.tibiaface.com

    3default Re: Task System TFS 0.3.6 cliente 8.54 el Vie Jul 27, 2018 5:09 pm

    Roo

    avatar
    Miembro
    Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:gran aporte mudare para el area correcta +1 (y)
    Gracias Creo que me equivoque Razz

    Ver perfil de usuario

    4default Re: Task System TFS 0.3.6 cliente 8.54 el Miér Oct 31, 2018 11:42 am

    dbdirial

    avatar
    Nuevo Miembro
    Nuevo Miembro
    hay un problema, al matar no me cuenta los monsters.

    Ver perfil de usuario

    5default Re: Task System TFS 0.3.6 cliente 8.54 el Miér Oct 31, 2018 1:59 pm

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:hay un problema, al matar no me cuenta los monsters.

    intenta usar este

    [Tienes que estar registrado y conectado para ver este vínculo]



    Ver perfil de usuario http://www.tibiaface.com

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