Ir para conteúdo
  • Cadastre-se

NPC de troca somente uma vez por player


Posts Recomendados

Alguém poderia em ajudar ou disponbilizar um NPC que faz troca de um ITEM por OUTRO ITEM somente UMA VEZ POR PLAYER? Estou tentando replicar alguns códigos de outros npcs mas sempre dá erro e não consigo nada. Uso o Canary.

 

Te ajudei? Dê um REP+! (:

 

 

@tibiaking.

Link para o post
Compartilhar em outros sites
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

local item1 = 123 -- item
local qntd1 = 1 -- quantia

local stor = 1023332

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, 'entregar')) then
        selfSay('Voce conseguiu mesmo juntar os itens? diga {sim} se deseja me entregar', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then
        if (getPlayerStorageValue(cid, stor) > 0) then
            selfSay('Voce ja realizou a troca comigo.', cid)
        else
            if getPlayerItemCount(cid, item1) >= qntd1 then
                
                doPlayerRemoveItem(cid, item1, qntd1)
                
                local bag = doPlayerAddItem(cid, 1599, 1)
                doAddContainerItem(bag, 2190, 10)
                setPlayerStorageValue(cid, stor, 1)
                
                selfSay('Obrigado! Em troca aqui esta o seu premio.', cid)
            else
                selfSay('Voce ainda nao conseguiu os requisitos, estou ansioso por eles, ha tantas utilidades.', cid)
            end
        end
        return true
    end
    
    
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites
Interface: Scripts Interface
Script ID: C:\Users\Administrator\Videos\canary-main\canary-main\data-otservbr-global/npc\yana.lua
Error Description: ...anary-main\canary-main\data-otservbr-global/npc\yana.lua:3: attempt to index global 'NpcSystem' (a nil value)
stack traceback:
        [C]: in function '__index'
        ...anary-main\canary-main\data-otservbr-global/npc\yana.lua:3: in main chunk
---------------------------------------

[2023-29-12 13:45:38.675] [error] C:\Users\Administrator\Videos\canary-main\canary-main\data-otservbr-global/npc\yana.lua
[2023-29-12 13:45:38.675] [error]

 

está dando esse erro, consegue ajudar?

Te ajudei? Dê um REP+! (:

 

 

@tibiaking.

Link para o post
Compartilhar em outros sites

@GuiltyPerdão eu não vi que você utilizava Canary, eu não estou familiarizado com as funções dessa versão, da pra você pegar outros scripts de NPC e utilizar eles pra adaptar pra sua versão.

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites
  • 4 weeks later...
  • Sub-Admin
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

local item1 = 123 -- item
local qntd1 = 1 -- quantia

local stor = 1023332

local function onCreatureAppear(cid)
    npcHandler:onCreatureAppear(cid)
end

local function onCreatureDisappear(cid)
    npcHandler:onCreatureDisappear(cid)
end

local function onCreatureSay(cid, type, msg)
    npcHandler:onCreatureSay(cid, type, msg)
end

local function onThink()
    npcHandler:onThink()
end

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

    local talkUser = npcHandler:isConvincing() and 0 or cid

    if msgcontains(msg, 'entregar') then
        selfSay('Voce conseguiu mesmo juntar os itens? Diga {sim} se deseja me entregar', cid)
        talkState[talkUser] = 1
    elseif msgcontains(msg, 'sim') and talkState[talkUser] == 1 then
        if getPlayerStorageValue(cid, stor) > 0 then
            selfSay('Voce ja realizou a troca comigo.', cid)
        else
            if getPlayerItemCount(cid, item1) >= qntd1 then
                doPlayerRemoveItem(cid, item1, qntd1)

                local bag = doPlayerAddItem(cid, 1599, 1)
                doAddContainerItem(bag, 2190, 10)
                setPlayerStorageValue(cid, stor, 1)

                selfSay('Obrigado! Em troca, aqui esta o seu premio.', cid)
            else
                selfSay('Voce ainda nao conseguiu os requisitos. Estou ansioso por eles, ha tantas utilidades.', cid)
            end
        end
        return true
    end
end

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

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites
21 horas atrás, L3K0T disse:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

local item1 = 123 -- item
local qntd1 = 1 -- quantia

local stor = 1023332

local function onCreatureAppear(cid)
    npcHandler:onCreatureAppear(cid)
end

local function onCreatureDisappear(cid)
    npcHandler:onCreatureDisappear(cid)
end

local function onCreatureSay(cid, type, msg)
    npcHandler:onCreatureSay(cid, type, msg)
end

local function onThink()
    npcHandler:onThink()
end

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

    local talkUser = npcHandler:isConvincing() and 0 or cid

    if msgcontains(msg, 'entregar') then
        selfSay('Voce conseguiu mesmo juntar os itens? Diga {sim} se deseja me entregar', cid)
        talkState[talkUser] = 1
    elseif msgcontains(msg, 'sim') and talkState[talkUser] == 1 then
        if getPlayerStorageValue(cid, stor) > 0 then
            selfSay('Voce ja realizou a troca comigo.', cid)
        else
            if getPlayerItemCount(cid, item1) >= qntd1 then
                doPlayerRemoveItem(cid, item1, qntd1)

                local bag = doPlayerAddItem(cid, 1599, 1)
                doAddContainerItem(bag, 2190, 10)
                setPlayerStorageValue(cid, stor, 1)

                selfSay('Obrigado! Em troca, aqui esta o seu premio.', cid)
            else
                selfSay('Voce ainda nao conseguiu os requisitos. Estou ansioso por eles, ha tantas utilidades.', cid)
            end
        end
        return true
    end
end

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

 

Esse NPC não é compatível com o Canary!!!

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo