• 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!

simple npc bug

Snow

New Member
Joined
Jan 16, 2008
Messages
381
Reaction score
0
He isn't trading the piece of draconian steel + obsidian lance for obsidian knife, he's only removing one item and not giving the knife.


Lua:
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
        local cycmsg = 'Cling Clang!'
        local noimsg = 'Lil\' one no have that thing!'
        local deny      =       'Lil\' one is no sure? Okay'
        local infbolt = 35 -- change this to adjust the number of infernal bolts you want to give to the players for 1 soul orb.


--------------------MESSAGES------------------------------------------------------------------------------
    if msgcontains(msg, 'help') or msgcontains(msg, 'trade') then
                selfSay('Me can make {royal steel}, {draconian steel}, {hell steel}, {crude iron}, {blue cloth}, {red cloth}, {green cloth}, {chicken wing}, {fightning spirit}, {magic sulphur} and {warrior sweat}. Me also make lil\' {infernal bolt}. Me make good lil tools like {obsidian knife} and {blessed stake}.', cid)
       
        elseif msgcontains(msg, 'royal steel') then
        selfSay('Very noble. Shiny. Me like. But breaks so fast. Me can make from shiny armour. Lil\' one want to trade?', cid)
        talkState[talkUser] = 1
   
    elseif msgcontains(msg, 'draconian steel') then
        selfSay('Firy steel it is. Need green ones\' breath to melt. Or red even better. Me can make from shield. Lil\' one want to trade?', cid)
                talkState[talkUser] = 2

    elseif msgcontains(msg, 'hell steel') then
        selfSay('Hellsteel is. Cursed and evil. Dangerous to work with. Me can make from evil helmet. Lil\' one want to trade?', cid)
                talkState[talkUser] = 3
               
    elseif msgcontains(msg, 'crude iron') then
        selfSay('Good iron is. Me friends use it much for fight. Me can make from weapon. Lil\' one want to trade?', cid)
                talkState[talkUser] = 4
       
        elseif msgcontains(msg, 'infernal bolt') then
                selfSay('Uh. Me can make some nasty lil\' bolt from soul orbs. Lil\' one want to trade all?', cid)
                talkState[talkUser] = 5

        elseif msgcontains(msg, 'blue cloth') then
                selfSay('Uh. Me can make some lil\' blue cloth. Lil\' one want to trade turban?', cid)
                talkState[talkUser] = 6

        elseif msgcontains(msg, 'red cloth') then
                selfSay('Uh. Me can make some lil\' red cloth. Lil\' one want to trade robe?', cid)
                talkState[talkUser] = 7

        elseif msgcontains(msg, 'green cloth') then
                selfSay('Uh. Me can make some lil\' green cloth. Lil\' one want to trade some tunics?', cid)
                talkState[talkUser] = 8

        elseif msgcontains(msg, 'chicken wing') then
                selfSay('Uh. Me can make some nasty lil\' chicken wing. Lil\' one want to trade boots?', cid)
                talkState[talkUser] = 9

        elseif msgcontains(msg, 'fightning spirit') then
                selfSay('Uh. Me can make some lil\' spirit. Lil\' one want to trade helmets?', cid)
                talkState[talkUser] = 10

        elseif msgcontains(msg, 'magic sulphur') then
                selfSay('Uh. Me can make some lil\' sulphurs. Lil\' one want to trade swords?', cid)
                talkState[talkUser] = 11

        elseif msgcontains(msg, 'warrior sweat') then
                selfSay('Uh. Me can make some lil\' warrior sweat. Lil\' one want to trade helmets?', cid)
                talkState[talkUser] = 12

        elseif msgcontains(msg, 'obsidian knife') then
                selfSay('Uh. Me friends make good tool. Me can make nasty lil\' good tool. Lil\' one want to trade all?', cid)
                talkState[talkUser] = 13

        elseif msgcontains(msg, 'blessed stake') then
                selfSay('Uh. Me friends make good tool. Me can make nasty lil\' good tool. Lil\' one want to trade horns all?', cid)
                talkState[talkUser] = 14

               
-------------GETTING METALS FROM HIM-------------------
       
        -- Royal Steel
        elseif talkState[talkUser] == 1 then
                if msgcontains(msg, 'yes') then
                        if doPlayerTakeItem(cid, 2487, 1) == true then
                                doPlayerAddItem(cid, 5887, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        -- Draconian Steel
        elseif talkState[talkUser] == 2 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2516, 1) == true then
                                doPlayerAddItem(cid, 5889, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        -- Hell Steel
        elseif talkState[talkUser] == 3 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2462, 1) == true then
                                doPlayerAddItem(cid, 5888, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end            
        -- Crude Iron
        elseif talkState[talkUser] == 4 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2393, 1) == true then
                                doPlayerAddItem(cid, 5892, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end    
        elseif talkState[talkUser] == 5 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 5944, 1) == true then
                                doPlayerAddItem(cid, 6529, infbolt)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 6 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2663, 1) == true then
                                doPlayerAddItem(cid, 5912, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end 
        elseif talkState[talkUser] == 7 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2655, 1) == true then
                                doPlayerAddItem(cid, 5911, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 8 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2652, 10) == true then
                                doPlayerAddItem(cid, 5910, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 9 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2195, 1) == true then
                                doPlayerAddItem(cid, 5891, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 10 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2498, 1) == true then
                                doPlayerAddItem(cid, 5884, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 11 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2392, 3) == true then
                                doPlayerAddItem(cid, 5904, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 12 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 2475, 4) == true then
                                doPlayerAddItem(cid, 5885, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 13 then
                if msgcontains (msg, 'yes') then
                        if doPlayerRemoveItem(cid, 5889, 1) and doPlayerRemoveItem(cid, 2525, 1) then
                                doPlayerAddItem(cid, 5908, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
        elseif talkState[talkUser] == 14 then
                if msgcontains (msg, 'yes') then
                        if doPlayerTakeItem(cid, 5954, 5) == true then
                                doPlayerAddItem(cid, 5942, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
                else
                        selfSay(deny, cid)
                        talkState[talkUser] = 0
                end
           
        end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
if it's simple when why won't you fix it urself?

Lua:
                        if doPlayerRemoveItem(cid, 5889, 1) and doPlayerRemoveItem(cid, 2525, 1)  then
                                doPlayerAddItem(cid, 5908, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
Actually it is giving sth.
 
if it's simple when why won't you fix it urself?

Lua:
                        if doPlayerRemoveItem(cid, 5889, 1) and doPlayerRemoveItem(cid, 2525, 1)  then
                                doPlayerAddItem(cid, 5908, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
Actually it is giving sth.

It's simple for most people here at otland but for me it isn't.
Anyway what did you change..I didn't see any change

And the npc takes the piece of draconian steel and says that I don't have enough items.
 
Lua:
if getPlayerItemCount(cid, 5899) > 0 and getPlayerItemCount(cid, 2525) > 0 then
								doPlayerRemoveItem(cid, 5889, 1)
								doPlayerRemoveItem(cid, 2525, 1)
                                doPlayerAddItem(cid, 5908, 1)
                                selfSay(cycmsg, cid)
                                talkState[talkUser] = 0
                        else
                                selfSay(noimsg, cid)
                                talkState[talkUser] = 0
                        end
 
Back
Top Bottom