• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    Ayuda con npc

    Compartir:

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

    1default Ayuda con npc Mar Sep 27, 2022 11:05 pm

    Angel92

    Angel92
    Miembro
    Miembro
    Tengo un problema con el npc cipfried, al hablarle solo responde a hi, no hace nada de lo que pone en el archivo lua, no cura, no te dice si estas muy herido o no, no responde al bye, y solo da por terminada la charla si te alejas, este es el lua que tengo:

    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 creatureSayCallback(cid, type, msg)
       local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
       if (msgcontains(msg, "hello") or msgcontains(msg, "hi")) and not npcHandler:isFocused(cid) then
          if getCreatureHealth(cid) < 65 then
             npcHandler:say("Hello, "..getCreatureName(cid).."! You are looking really bad. Let me heal your wounds.", cid)
             doCreatureAddHealth(cid, 65 - getCreatureHealth(cid))
             doSendMagicEffect(getCreaturePosition(cid), 12)
          else
             selfSay("Hello, "..getCreatureName(cid).."! I'll {heal} you if you are badly injured or poisoned. Feel free to ask me for {help} or general {hints}.", cid, TRUE)
             npcHandler:addFocus(cid)
          end
          return true
       end
       if(not npcHandler:isFocused(cid)) then
          return false
       elseif msgcontains(msg, "bye") or msgcontains(msg, "farewell") then
          selfSay("Farewell, " .. getCreatureName(cid) .. "!", cid, TRUE)
          npcHandler:releaseFocus(cid)
       elseif msgcontains(msg, "heal") then
          if getCreatureCondition(cid, CONDITION_FIRE) == TRUE then
             npcHandler:say("You are burning. I will help you.", cid)
             doRemoveCondition(cid, CONDITION_FIRE)
             doSendMagicEffect(getCreaturePosition(cid), 14)
          elseif getCreatureCondition(cid, CONDITION_POISON) == TRUE then
             npcHandler:say("You are poisoned. I will help you.", cid)
             doRemoveCondition(cid, CONDITION_POISON)
             doSendMagicEffect(getCreaturePosition(cid), 13)
          elseif getCreatureHealth(cid) < 65 then
             npcHandler:say("You are looking really bad. Let me heal your wounds.", cid)
             doCreatureAddHealth(cid, 65 - getCreatureHealth(cid))
             doSendMagicEffect(getCreaturePosition(cid), 12)
          else
             npcHandler:say("You aren't looking really bad, " .. getCreatureName(cid) .. ". I only help in cases of real emergencies. Raise your health simply by eating {food}.", cid)
          end
       end
       return TRUE
    end

    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:setMessage(MESSAGE_WALKAWAY, "Well, bye then.")


    Esta en un otx 2.x.s-3

    2 participantes

    2default Re: Ayuda con npc Miér Sep 28, 2022 10:42 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    pruebe este

    Código:

    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 onPlayerEndTrade(cid)                npcHandler:onPlayerEndTrade(cid)            end
    function onPlayerCloseChannel(cid)            npcHandler:onPlayerCloseChannel(cid)        end

    function creatureSayCallback(cid, type, msg)
        if(not npcHandler:isFocused(cid)) then
            return false
        end

        local talkUser = cid
        local p = Player(cid)
        local heal = false
        local hp = p:getHealth()
     
        if msgcontains(msg, "heal") then
            if getCreatureCondition(cid, CONDITION_FIRE) then
                selfSay("You are burning. I will help you.", cid)
                doRemoveCondition(cid, CONDITION_FIRE)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_POISON) then
                selfSay("You are poisoned. I will cure you.", cid)
                doRemoveCondition(cid, CONDITION_POISON)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_ENERGY) then
                selfSay("You are electrificed. I will help you.", cid)
                doRemoveCondition(cid, CONDITION_ENERGY)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_PARALYZE) then
                selfSay("You are paralyzed. I will cure you.", cid)
                doRemoveCondition(cid, CONDITION_PARALYZE)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_DROWN) then
                selfSay("You are drowing. I will help you.", cid)
                doRemoveCondition(cid, CONDITION_DROWN)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_FREEZING) then
                selfSay("You are cold! I will help you.", cid)
                doRemoveCondition(cid, CONDITION_FREEZING)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_BLEEDING) then
                selfSay("You are bleeding! I will help you.", cid)
                doRemoveCondition(cid, CONDITION_BLEEDING)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_DAZZLED) then
                selfSay("You are dazzled! Do not mess with holy creatures anymore!", cid)
                doRemoveCondition(cid, CONDITION_DAZZLED)
                heal = true
            elseif getCreatureCondition(cid, CONDITION_CURSED) then
                selfSay("You are cursed! I will remove it.", cid)
                doRemoveCondition(cid, CONDITION_CURSED)
                heal = true
            elseif hp < 65 then
                selfSay("You are looking really bad. Let me heal your wounds.", cid)
                p:addHealth(65 - hp)
                heal = true
            elseif hp < 2000 then
                selfSay("I did my best to fix your wounds.", cid)
                p:addHealth(2000 - hp)
                heal = true
            end
         
            if heal then
                p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
            else
                local msgheal = {
                    "You aren't looking really bad, " .. getCreatureName(cid) .. ". I only help in cases of real emergencies. Raise your health simply by eating {food}.",
                    "Seriously? It's just a scratch",
                    "Don't be a child. You don't need any help with your health.",
                    "I'm not an expert. If you need help find a medic.",
                    "Don't even waste my time, I have bigger problems than your scratched armor."
                }
                selfSay("" .. msgheal[math.random(1, #msgheal)] .. "", cid)
            end
        return true
        end
     
        if msgcontains(msg, "yes") and talkState[talkUser] > 90 and talkState[talkUser] < 96 then
            if getPlayerBlessing(cid, talkState[talkUser] - 90) then
                selfSay("You already have this blessing!", cid)
            else
                b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
                if b_price < 2000 then b_price = 2000 end
             
                if doPlayerRemoveMoney(cid, b_price) then
                    selfSay("You have been blessed by one of the five gods!", cid)
                    p:addBlessing(talkState[talkUser] - 90, 1)
                    p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
                else
                    selfSay("I'm sorry. We need money to keep this temple up.", cid)
                end
            end
            talkState[talkUser] = 0
            return true
        end
     
        if msgcontains(msg, "yes") and talkState[talkUser] == 96 then
            havebless = {}
         
            for i = 1, 5 do
                if(getPlayerBlessing(cid, i)) then
                    table.insert(havebless,i)
                end
            end
         
            if #havebless == 5 then
                selfSay('You already have all available blessings.',cid)
                talkState[talkUser] = 0
                return true
            end
         
            b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
            if b_price < 2000 then b_price = 2000 end
            b_price = ((5 - #havebless) * b_price)
         
            if doPlayerRemoveMoney(cid, b_price) then
                selfSay("You have been blessed by the five gods!", cid)
                for i = 1, 5 do p:addBlessing(i, 1) end
                p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
            else
                selfSay("I'm sorry. We need money to keep this temple up.", cid)
            end
             
            talkState[talkUser] = 0
            return true
        end
     
        if msgcontains(msg, "all") then
            havebless = {}
            b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
            if b_price < 2000 then b_price = 2000 end
         
            for i = 1, 5 do
                if(getPlayerBlessing(cid, i)) then
                    table.insert(havebless,i)
                end
            end
         
            b_price = ((5 - #havebless) * b_price)
         
            if b_price == 0 then
                selfSay('You already have all available blessings.',cid)
                talkState[talkUser] = 0
                return true
            end
         
            selfSay('Do you want to receive all blessings for ' .. b_price .. ' gold?',cid)
            talkState[talkUser] = 96
            return true
        end
     
        local blesskeywords = {'wisdom', 'spark', 'fire', 'spiritual', 'embrace'}
        local blessnames = {'Wisdom of Solitude', 'Spark of The Phoenix', 'Fire of Two Suns', 'Spiritual Shielding', 'The Embrace'}
        for i = 1, #blesskeywords do
            if msgcontains(msg, blesskeywords[i]) then
         
                b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
                if b_price < 2000 then b_price = 2000 end
             
                selfSay('Do you want me to grant you ' .. blessnames[i] .. ' blessing for ' .. b_price .. ' gold?',cid)
                talkState[talkUser] = 90 + i
                return true
            end
        end
     
        return true
    end

    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
    npcHandler:addModule(FocusModule:new())



    Ayuda con npc  YNU5B25
    2 participantes
    https://www.tibiaface.com

    3default solucionado Miér Sep 28, 2022 8:12 pm

    Angel92

    Angel92
    Miembro
    Miembro
    Very Happy  muchas gracias gracias maya funciono de maravilla Very Happy

    2 participantes

    4default Re: Ayuda con npc Miér Sep 28, 2022 9:07 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Tema solucionado



    Ayuda con npc  YNU5B25
    2 participantes
    https://www.tibiaface.com

    Contenido patrocinado


    2 participantes

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