• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua Npc doesn't respond when i say "trade"

Carlitos Flow

Developer (lvl*1)
Joined
Mar 2, 2011
Messages
156
Solutions
4
Reaction score
10
Hello guys, i have an error when i say trade to the npc, i haven't any error on console, just doesn't answer.

Code:
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, 'trade') or msgcontains(msg, 'How many items they should give')) then
        selfSay('Do you want to give me 5 donor coins for a .......?', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if(getPlayerItemCount(cid, 6527) >= 5) then
            if(doPlayerRemoveItem(cid, 6527, 5)) then
                doPlayerAddItem(cid, your donor item id here, 1)
                selfSay('Here you are.', cid)
            else
                selfSay('Sorry, you don\'t have enough donor coins.', cid)
            end
        else
            selfSay('Sorry, you don\'t have donor coins.', cid)
        end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then
        talkState[talkUser] = 0
        selfSay('Ok then.', cid)
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
What server? Version? Protocol?
Maybe because you dont have one shopModule and the word Trade is used for this (if its not 7.x, that havent trade window)

When you say trade, what happens? any distro error?
Maybe you can explain what you want that NPC does, and we can help you more.
 
Hello guys, i have an error when i say trade to the npc, i haven't any error on console, just doesn't answer.

Code:
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, 'trade') or msgcontains(msg, 'How many items they should give')) then
        selfSay('Do you want to give me 5 donor coins for a .......?', cid)
        talkState[talkUser] = 1
    elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if(getPlayerItemCount(cid, 6527) >= 5) then
            if(doPlayerRemoveItem(cid, 6527, 5)) then
                doPlayerAddItem(cid, your donor item id here, 1)
                selfSay('Here you are.', cid)
            else
                selfSay('Sorry, you don\'t have enough donor coins.', cid)
            end
        else
            selfSay('Sorry, you don\'t have donor coins.', cid)
        end
        talkState[talkUser] = 0
    elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then
        talkState[talkUser] = 0
        selfSay('Ok then.', cid)
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Did you test to change the msg 'trade' to something else?
If not change it to 'test' and see what happens. If you get npc response then the error has to do whit the npc system use the word trade

What server? Version? Protocol?
Maybe because you dont have one shopModule and the word Trade is used for this (if its not 7.x, that havent trade window)

When you say trade, what happens? any distro error?
Maybe you can explain what you want that NPC does, and we can help you more.
Well it explain what the npc should do quite well in the script, seems like he wont use the trade window at all, so adding shopModule is not needed.
But he dont get the script to work on the first msg input.
 
Last edited:
Back
Top