• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Ayuda] NPC TASK

    Compartir:

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

    1[Ayuda] NPC TASK Empty [Ayuda] NPC TASK Miér Jun 29, 2022 5:51 pm

    Dfsuno

    Dfsuno
    Miembro
    Miembro
    Descripcion escribió:Tengo un problema con el npc de task me podrian ayudar porfavor, se los agradeceria.

    [Ayuda] NPC TASK Captura

    Código:
    local keywordHandler = KeywordHandler:new()
    local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)

    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 onCreatureDisappear(cid)
        if npcHandler:hasFocus(cid) then
            npcHandler:releaseFocus(cid)
        end
    end


    npcHandler:addModule(FocusModule:new())

    local npcMissions = {
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        [1] = {name = "Rat Killer", -- Kill monsters only
            arrayName = {"Rat", "rat", "Rats", "rats", "Pest", "pest", "Pests", "pests", "rat killer", "Rat killer", "Rat Killer"},
            storageMission = 43000, -- Mission storage should be unique even in different NPC files.
            storageRequired = nil, -- Use this to require different tasks to be done complete before this task can be started.
            messageTaskInfo = "I need you to kill 10 rats and 10 cave rats.", -- This message is said to the player when he starts the task.
            messageTaskComplete = "Thank you! Those pests have ruined my store. unfortunately they will be back. The rats aren't the main {problem}", -- This message is said to the player when he finishs the task.
            windowMsg = "Kill rats in the basement.", -- This text is shown under the title of the modal window
            monsters = { -- Monster task
                [1] = {name = "Rat", amount = 10, storage = 41000}, -- Monster storages should be unique even in different NPC files.
                [2] = {name = "Cave Rat", amount = 10, storage = 41001}
            },
            --Rewards--
            exp = 1000, -- Exp given to the player for completing the task.
            rewardItems = { -- Items given to the player for completing the task.
                [1] = {itemid = 2390, amount = 1}
            },
            setStorage = nil -- Use this to set any storages you want to when the player completes the task excluding storageNpc and storageMission
        },
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        [2] = {name = "Troll Hunter",
            arrayName = {"troll hunter", "Troll Hunter", "Troll", "troll", "Trolls", "trolls"},
            storageMission = 43001,
            storageRequired = {43000},
            messageTaskInfo = "I need you to kill 20 trolls.",
            messageTaskComplete = "You are truley a legend. There is one more thing I need. Could you {help} me one more time?",
            windowMsg = "Kill trolls in the forst to the east. Also, collect x items",
            monsters = {
                [1] = {name = "Troll", amount = 20, storage = 41002},
            },
            collectItems = { -- Collect Items task
                [1] = {itemid = 1111, amount = 1}
            },
            --Rewards--
            exp = 5000,
            rewardItems = {
                [1] = {itemid = 2390, amount = 1}
            },
            setStorage = {
                [1] = {41532, 1}
            }
        },
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        [3] = {name = "The Collector", -- Collect Items only
            arrayName = {"collector", "Collector", "collect", "Collect", "cheese", "Cheese"},
            storageMission = 43003,
            storageRequired = {43001, 43002},
            messageTaskInfo = "I need you to collect 10 cheese.",
            messageTaskComplete = "You are truley a legend. I do not need anymore help.",
            windowMsg = "Collect x items",
            collectItems = { -- Collect Items task
                [1] = {itemid = 1111, amount = 1}
            },
            --Rewards--
            exp = 5000,
            rewardItems = {
                [1] = {itemid = 2390, amount = 1}
            },
            setStorage = nil
        }
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
        --------------------------------------------------------------------------------------------------------------------------------
    }

    local npcStory = { -- This story is told when the player first talks to the npc.
        [1] = "Not now adventurer. I have to deal with these pests.",
        [2] = "Honey! Get my broom, these things are everywhere. They aren't even scared of me!?",
        [3] = "If this continues we will have to close down our business!",
        [4] = "Please god send us some {help}!"
    }

    local MESSAGES_GREET = { -- Messages are based on the npcStorage for the player. This table handles all greeting interaction between the npc and player.
      --Storage / message
      -- The player gets his storage for the npc set as soon as he talks to the npc
      -- The players stoarge is set to 0. This table is accessed by MESSAGES[player:getStorageValue(npcStorage) - 1]
      -- Everytime a player accepts and completes one of the tasks/missions his npcStorage is increased by 1. That is how the code keeps track of how the npc should respond to the player.
        [1] = "Hello again |PLAYERNAME|. Do you want to {help} me yet?",
        [2] = "I am glad you decided to help. Are those {rats} giving you a problem?",
        [3] = "Thanks for killing those rats. I have another {task} I need {help} with.",
        [4] = "The trolls are powerful. Be sure to take strong gear with you.",
        [5] = "Thank you for all your help."
    }

    local MESSAGES_GOODBYE = { -- This works the same as MESSAGES_GREET. Depending on how many tasks the player has done for the npc. The npc will say different things when he says goodbye to the player.
        [1] = "Thanks for nothing |PLAYERNAME|.",
        [2] = "Thank you for your help. Goodbye.",
        [3] = "You have helped so much. I will be sure to tell other of you."
    }

    local arrayGreetings = {"hi", "Hi", "hello", "Hello", "hey", "Hey", "oi", "Oi", "hola", "Hola"}
    local arrayFarewell = {"bye", "Bye", "goodbye", "Goodbye", "good-bye", "Good-Bye", "Good-bye", "cya", "adios", "Adios"}

    local messageHearStoryAgain = "story"
    local messageCheckTasks = {"help", "Help", "task", "Task", "tasks", "Tasks"}
    local messageShowTasks = "Here is what I need help with."

    local messageCompletedAllTasks = "Thank you for all you have done. I dont need anymore help."
    local taskWindowTitle = "Title of Modal Window"
    local taskWindowText = "Tasks"

    local npcStorage = 45000

    function onCreatureSay(cid, type, msg)
        local player = Player(cid)
        local playerGreetMessage = MESSAGES_GREET[player:getStorageValue(npcStorage)]
        local playerGoodbyeMessage = MESSAGES_GOODBYE[player:getStorageValue(npcStorage)]
     
        if isInArray(arrayGreetings, msg) and not npcHandler:isFocused(cid) and player:getStorageValue(npcStorage) == -1 then
            npcHandler:addFocus(cid)
            npcHandler:say(npcStory, player:getId(), false, true, 4000)
            player:setStorageValue(npcStorage, 1)
     
        elseif isInArray(arrayGreetings, msg) and not npcHandler:isFocused(cid) then
            npcHandler:addFocus(cid)
            if string.find(playerGreetMessage, "|PLAYERNAME|") then
                local newMsg = string.gsub(playerGreetMessage, "|PLAYERNAME|", player:getName())
                selfSay(newMsg, cid)
            else
                selfSay(playerGreetMessage, cid)
            end
      
        elseif isInArray(arrayFarewell, msg) and npcHandler:isFocused(cid) then
            if string.find(playerGoodbyeMessage, "|PLAYERNAME|") then
                local newMsg = string.gsub(playerGoodbyeMessage, "|PLAYERNAME|", player:getName())
                selfSay(newMsg, cid)
            else
                selfSay(playerGoodbyeMessage, cid)
            end
            player:setStorageValue(npcStorage, -1)
            npcHandler:releaseFocus(cid)
      
        elseif isInArray(messageCheckTasks, msg) and npcHandler:isFocused(cid) then
            local text = messageShowTasks
            local window = ModalWindow(0x10, taskWindowTitle, taskWindowText)
            local hasMissions = false
            for i = 1, #npcMissions do
                if player:getStorageValue(npcMissions[i].storageMission) < 2 then
                    if npcMissions[i].storageRequired then
                    local showTask = true
                        for x = 1, #npcMissions[i].storageRequired do
                            if player:getStorageValue(npcMissions[i].storageRequired[x]) ~= 2 then
                                showTask = false
                                break
                            end
                        end
                  
                        if showTask then
                            window:addChoice(i, npcMissions[i].name)
                            hasMissions = true
                        end
                    else
                        window:addChoice(i, npcMissions[i].name)
                        hasMissions = true
                    end
                end
            end
      
            if hasMissions then
                window:addButton(0x00, "Exit")
                window:addButton(0x01, "Select")
                window:setDefaultEnterButton(0x01)
                window:sendToPlayer(player)
                return true
            else
                selfSay(messageCompletedAllTasks, cid)
                return true
            end
          
        elseif msg == "bye" then
            selfSay("Good-bye", cid)
            npcHandler:releaseFocus(cid)
        end
    return true
    end

    Nose cual sea el error, tambien si no le digo bye no deja de hablarme.
    Captura del Error escribió:Imagen del error: [Ayuda] NPC TASK Empty
    El error radica en: Npc

    2 participantes

    2[Ayuda] NPC TASK Empty Re: [Ayuda] NPC TASK Jue Jun 30, 2022 12:14 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    en la funciones de su npc en lib cambie

    Código:
    getDistanceTo = getNpcDistanceTo

    por

    Código:
    getDistanceTo = getNpcDistanceToCreature



    [Ayuda] NPC TASK YNU5B25
    2 participantes
    http://www.tibiaface.com

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