Ir para conteúdo
Propaganda

Como faço para o meu npc pegar 2 ou mais itens?


assinho

Posts Recomendados

eu tenho um script de npc que ele pegua o item e te teleporta para uma certa area, so que eu queria q ele pegasse mais de um item.

 

meu arquivo lua do npc: Alex (quest).lua

Link para o comentário
Compartilhar em outros sites

56 minutos atrás, assinho disse:

eu tenho um script de npc que ele pegua o item e te teleporta para uma certa area, so que eu queria q ele pegasse mais de um item.

 

meu arquivo lua do npc:  Alex (quest).lua 1.8 kB · 1 download

Spoiler

local tab = {
    pos = {x = 1361, y = 1276, z = 8}, -- posição x, y, z do local a teleportar o player
    items = {
        {10313, 1}, -- {itemID, count}
        {2148, 100}, -- {itemID, count} exemplo: 100 gold coins
        {2152, 10}  -- {itemID, count} exemplo: 10 platinum coins
    },
    price = 0 -- quantidade em crystal coins
}

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
    if (msgcontains(msg, 'demon')) then
        talkState[talkUser] = 1
        local itemText = ""
        for i, item in ipairs(tab.items) do
            itemText = itemText .. item[2] .. " " .. getItemNameById(item[1]) .. ", "
        end
        itemText = itemText:sub(1, -3) -- remover a última vírgula e espaço
        selfSay('Are you sure?', cid)
        selfSay('Lembre-se, você precisa de ' .. itemText .. ' para entrar na quest, digite yes se quiser entrar.', cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        local hasAllItems = true
        for i, item in ipairs(tab.items) do
            if getPlayerItemCount(cid, item[1]) < item[2] then
                hasAllItems = false
                break
            end
        end
        
        if hasAllItems and doPlayerRemoveMoney(cid, tab.price * 10000) then
            for i, item in ipairs(tab.items) do
                doPlayerRemoveItem(cid, item[1], item[2])
            end
            doTeleportThing(cid, tab.pos)
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            selfSay('Boa quest.', cid)
        else
            talkState[talkUser] = 0
            selfSay('Você não tem todos os itens necessários.', cid)
        end
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then
        talkState[talkUser] = 0
        selfSay('Okay, maybe another time.', cid)
    end
    
    return true
end

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

testa ai

Link para o comentário
Compartilhar em outros sites

Agora, guuhzei disse:
  Ocultar conteúdo

local tab = {
    pos = {x = 1361, y = 1276, z = 8}, -- posição x, y, z do local a teleportar o player
    items = {
        {10313, 1}, -- {itemID, count}
        {2148, 100}, -- {itemID, count} exemplo: 100 gold coins
        {2152, 10}  -- {itemID, count} exemplo: 10 platinum coins
    },
    price = 0 -- quantidade em crystal coins
}

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
    if (msgcontains(msg, 'demon')) then
        talkState[talkUser] = 1
        local itemText = ""
        for i, item in ipairs(tab.items) do
            itemText = itemText .. item[2] .. " " .. getItemNameById(item[1]) .. ", "
        end
        itemText = itemText:sub(1, -3) -- remover a última vírgula e espaço
        selfSay('Are you sure?', cid)
        selfSay('Lembre-se, você precisa de ' .. itemText .. ' para entrar na quest, digite yes se quiser entrar.', cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        local hasAllItems = true
        for i, item in ipairs(tab.items) do
            if getPlayerItemCount(cid, item[1]) < item[2] then
                hasAllItems = false
                break
            end
        end
        
        if hasAllItems and doPlayerRemoveMoney(cid, tab.price * 10000) then
            for i, item in ipairs(tab.items) do
                doPlayerRemoveItem(cid, item[1], item[2])
            end
            doTeleportThing(cid, tab.pos)
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            selfSay('Boa quest.', cid)
        else
            talkState[talkUser] = 0
            selfSay('Você não tem todos os itens necessários.', cid)
        end
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then
        talkState[talkUser] = 0
        selfSay('Okay, maybe another time.', cid)
    end
    
    return true
end

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

testa ai

nao deu erro mais tbm nao funcionou, eu coloquei os 3 itens e ele nao fala os 3 itens q eu tenho q ter e tbm mesmo q eu tenha os 3 itens ainda sim ele diz q nao tenho os itens 

Screenshot_1.png

Link para o comentário
Compartilhar em outros sites

local tab = {
    pos = {x = 1361, y = 1276, z = 8}, -- posição x, y, z do local a teleportar o player
    items = { -- lista de itens necessários
        {10313, 1}, -- {itemID, count}
        {10314, 1}  -- {itemID, count}
        -- Adicione um novo item abaixo, seguindo o formato {itemID, count}
        -- {novoItemID, quantidade}
    },
    price = 0 -- quantidade em crystal coins
}

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
    if (msgcontains(msg, 'demon')) then
        talkState[talkUser] = 1
        npcHandler:say('Are you sure?', cid)
        for _, item in ipairs(tab.items) do
            npcHandler:say('Lembre-se, você precisa de '..item[2]..' '..getItemNameById(item[1])..' para entrar na quest.', cid)
        end
        npcHandler:say('Digite "yes" se quiser entrar.', cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        local hasAllItems = true
        for _, item in ipairs(tab.items) do
            if getPlayerItemCount(cid, item[1]) < item[2] then
                hasAllItems = false
                break
            end
        end
        
        if hasAllItems and doPlayerRemoveMoney(cid, tab.price * 10000) then
            for _, item in ipairs(tab.items) do
                doPlayerRemoveItem(cid, item[1], item[2])
            end
            doTeleportThing(cid, tab.pos)
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            npcHandler:say('Boa quest.', cid)
        else
            talkState[talkUser] = 0
            npcHandler:say('Não vai não safado, cadê os itens?', cid)
        end
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then
        talkState[talkUser] = 0
        npcHandler:say('Okay, maybe another time.', cid)
    end
    
    return true
end

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

 

Link para o comentário
Compartilhar em outros sites

6 horas atrás, GM Vortex disse:
local tab = {
    pos = {x = 1361, y = 1276, z = 8}, -- posição x, y, z do local a teleportar o player
    items = { -- lista de itens necessários
        {10313, 1}, -- {itemID, count}
        {10314, 1}  -- {itemID, count}
        -- Adicione um novo item abaixo, seguindo o formato {itemID, count}
        -- {novoItemID, quantidade}
    },
    price = 0 -- quantidade em crystal coins
}

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
    if (msgcontains(msg, 'demon')) then
        talkState[talkUser] = 1
        npcHandler:say('Are you sure?', cid)
        for _, item in ipairs(tab.items) do
            npcHandler:say('Lembre-se, você precisa de '..item[2]..' '..getItemNameById(item[1])..' para entrar na quest.', cid)
        end
        npcHandler:say('Digite "yes" se quiser entrar.', cid)
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        local hasAllItems = true
        for _, item in ipairs(tab.items) do
            if getPlayerItemCount(cid, item[1]) < item[2] then
                hasAllItems = false
                break
            end
        end
        
        if hasAllItems and doPlayerRemoveMoney(cid, tab.price * 10000) then
            for _, item in ipairs(tab.items) do
                doPlayerRemoveItem(cid, item[1], item[2])
            end
            doTeleportThing(cid, tab.pos)
            doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
            npcHandler:say('Boa quest.', cid)
        else
            talkState[talkUser] = 0
            npcHandler:say('Não vai não safado, cadê os itens?', cid)
        end
    elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then
        talkState[talkUser] = 0
        npcHandler:say('Okay, maybe another time.', cid)
    end
    
    return true
end

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

 

Opa vortex, vlw mesmo o seu funcionou e caiu bem como uma luva.

  • Like 1
Link para o comentário
Compartilhar em outros sites

13 horas atrás, Sanzenkai disse:

o seu infelizmente ñ funcionou, eu tentei consertar mais ñ conseguir kk e o vortex conseguiu me ajudar, entao obrigado pela a ajuda <3

Link para o comentário
Compartilhar em outros sites

  • TELASKO locked this tópico
Visitante
Este tópico está impedido de receber novos posts.
×
  • Criar Novo...