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

Lua Modification in a NPC

Ancore

New Member
Joined
Jul 6, 2012
Messages
216
Reaction score
1
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic = {}
 
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
                npcHandler:say("Hello, ".. getCreatureName(cid) .." and welcome to my little forge.", cid, TRUE)
                npcHandler:addFocus(cid)
        elseif(not npcHandler:isFocused(cid)) then
                return false
        elseif msgcontains(msg, "bye") or msgcontains(msg, "farewell") then
                npcHandler:say("Bye.", cid, TRUE)
                npcHandler:releaseFocus(cid)
        elseif msgcontains(msg, "trade") then
                local items = {
                        {name="axe", id=2386, buy=20, sell=7},
                        {name="battle hammer", id=2417, buy=350},
                        {name="brass armor", id=2465, buy=450, sell=150},
                        {name="chain armor", id=2464, buy=200, sell=70},
                        {name="chain helmet", id=2458, buy=52, sell=17},
                        {name="chain legs", id=2648, buy=80, sell=25},
                        {name="dagger", id=2351, buy=5},
                        {name="hand axe", id=2380, buy=8, sell=4},
                        {name="leather armor", id=2467, buy=35, sell=12},
                        {name="leather helmet", id=2461, buy=12},
                        {name="mace", id=2398, buy=90, sell=30},
                        {name="rapier", id=2384, buy=15, sell=5},
                        {name="sabre", id=2385, buy=35, sell=12},
                        {name="spear", id=2389, buy=10, sell=3},
                        {name="steel shield", id=2509, buy=240, sell=80},
                        {name="sword", id=2376, buy=85, sell=25},
                        {name="throwing knife", id=2410, buy=25},
                        {name="wooden shield", id=2512, buy=15, sell=3},
                        {name="battle axe", id=2378, sell=80},
                        {name="battle shield", id=2513, sell=95},
                        {name="halberd", id=2381, sell=400},
                        {name="morning star", id=2394, sell=90},
                        {name="plate armor", id=2463, sell=400},
                        {name="steel helmet", id=2457, sell=190},
                        {name="two handed sword", id=2377, sell=450},
                        {name="warmaster's wristguards", id=11316, sell=200}
                }
                if getPlayerStorageValue(cid, 85300) >= 3 then
                        table.insert(items, {name="lizard weapon rack kit", id=11120, buy=500})
                end
                if getPlayerStorageValue(cid, 85300) >= 9 then
                        table.insert(items, {name="twin hooks", id=11303, buy=1100, sell=500})
                        table.insert(items, {name="zaoan halberd", id=11317, buy=1200, sell=500})
                        table.insert(items, {name="bone shoulderplate", id=11315, sell=150})
                        table.insert(items, {name="broken halberd", id=11329, sell=100})
                        table.insert(items, {name="cursed shoulder spikes", id=11321, sell=320})
                        table.insert(items, {name="drachaku", id=11302, sell=10000})
                        table.insert(items, {name="drakinata", id=11299, sell=10000})
                        table.insert(items, {name="draken boots", id=12621, sell=40000})
                        table.insert(items, {name="guardian boots", id=11234, sell=35000})
                        table.insert(items, {name="high guard's shoulderplates", id=11327, sell=130})
                        table.insert(items, {name="legionnaire flags", id=11328, sell=500})
                        table.insert(items, {name="sais", id=11300, sell=16500})
                        table.insert(items, {name="spiked iron ball", id=11319, sell=100})
                        table.insert(items, {name="trashed draken boots", id=12607, sell=40000})
                        table.insert(items, {name="twiceslicer", id=12574, sell=28000})
                        table.insert(items, {name="wailing widow's necklace", id=11323, sell=3000})
                        table.insert(items, {name="zaoan armor", id=11295, sell=14000})
                        table.insert(items, {name="zaoan helmet", id=11296, sell=45000})
                        table.insert(items, {name="zaoan legs", id=11298, sell=14000})
                        table.insert(items, {name="zaoan shoes", id=11297, sell=5000})
                        table.insert(items, {name="zaoan sword", id=11301, sell=30000})
                        table.insert(items, {name="zaogun's shoulderplates", id=11325, sell=150})
                end
                openShopWindow(cid, items,
                        function(cid, itemid, subType, amount, ignoreCap, inBackpacks)
                                customCallbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks, items)
                        end,
                        function(cid, itemid, subType, amount, ignoreCap, inBackpacks)
                                customCallbackOnSell(cid, itemid, subType, amount, ignoreCap, inBackpacks, items)
                        end
                )
                npcHandler:say("Of course, just browse through my wares.", cid)
        end
        return TRUE
end
 
npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye.")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)


I want to make that the npc buy items for all players, not for just who have 9+ from X storage...
 
checking lines commented
Code:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local Topic = {}
 
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
                npcHandler:say("Hello, ".. getCreatureName(cid) .." and welcome to my little forge.", cid, TRUE)
                npcHandler:addFocus(cid)
        elseif(not npcHandler:isFocused(cid)) then
                return false
        elseif msgcontains(msg, "bye") or msgcontains(msg, "farewell") then
                npcHandler:say("Bye.", cid, TRUE)
                npcHandler:releaseFocus(cid)
        elseif msgcontains(msg, "trade") then
                local items = {
                        {name="axe", id=2386, buy=20, sell=7},
                        {name="battle hammer", id=2417, buy=350},
                        {name="brass armor", id=2465, buy=450, sell=150},
                        {name="chain armor", id=2464, buy=200, sell=70},
                        {name="chain helmet", id=2458, buy=52, sell=17},
                        {name="chain legs", id=2648, buy=80, sell=25},
                        {name="dagger", id=2351, buy=5},
                        {name="hand axe", id=2380, buy=8, sell=4},
                        {name="leather armor", id=2467, buy=35, sell=12},
                        {name="leather helmet", id=2461, buy=12},
                        {name="mace", id=2398, buy=90, sell=30},
                        {name="rapier", id=2384, buy=15, sell=5},
                        {name="sabre", id=2385, buy=35, sell=12},
                        {name="spear", id=2389, buy=10, sell=3},
                        {name="steel shield", id=2509, buy=240, sell=80},
                        {name="sword", id=2376, buy=85, sell=25},
                        {name="throwing knife", id=2410, buy=25},
                        {name="wooden shield", id=2512, buy=15, sell=3},
                        {name="battle axe", id=2378, sell=80},
                        {name="battle shield", id=2513, sell=95},
                        {name="halberd", id=2381, sell=400},
                        {name="morning star", id=2394, sell=90},
                        {name="plate armor", id=2463, sell=400},
                        {name="steel helmet", id=2457, sell=190},
                        {name="two handed sword", id=2377, sell=450},
                        {name="warmaster's wristguards", id=11316, sell=200}
                }
                -- if getPlayerStorageValue(cid, 85300) >= 3 then
                        table.insert(items, {name="lizard weapon rack kit", id=11120, buy=500})
                -- end
                -- if getPlayerStorageValue(cid, 85300) >= 9 then
                        table.insert(items, {name="twin hooks", id=11303, buy=1100, sell=500})
                        table.insert(items, {name="zaoan halberd", id=11317, buy=1200, sell=500})
                        table.insert(items, {name="bone shoulderplate", id=11315, sell=150})
                        table.insert(items, {name="broken halberd", id=11329, sell=100})
                        table.insert(items, {name="cursed shoulder spikes", id=11321, sell=320})
                        table.insert(items, {name="drachaku", id=11302, sell=10000})
                        table.insert(items, {name="drakinata", id=11299, sell=10000})
                        table.insert(items, {name="draken boots", id=12621, sell=40000})
                        table.insert(items, {name="guardian boots", id=11234, sell=35000})
                        table.insert(items, {name="high guard's shoulderplates", id=11327, sell=130})
                        table.insert(items, {name="legionnaire flags", id=11328, sell=500})
                        table.insert(items, {name="sais", id=11300, sell=16500})
                        table.insert(items, {name="spiked iron ball", id=11319, sell=100})
                        table.insert(items, {name="trashed draken boots", id=12607, sell=40000})
                        table.insert(items, {name="twiceslicer", id=12574, sell=28000})
                        table.insert(items, {name="wailing widow's necklace", id=11323, sell=3000})
                        table.insert(items, {name="zaoan armor", id=11295, sell=14000})
                        table.insert(items, {name="zaoan helmet", id=11296, sell=45000})
                        table.insert(items, {name="zaoan legs", id=11298, sell=14000})
                        table.insert(items, {name="zaoan shoes", id=11297, sell=5000})
                        table.insert(items, {name="zaoan sword", id=11301, sell=30000})
                        table.insert(items, {name="zaogun's shoulderplates", id=11325, sell=150})
                -- end
                openShopWindow(cid, items,
                        function(cid, itemid, subType, amount, ignoreCap, inBackpacks)
                                customCallbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks, items)
                        end,
                        function(cid, itemid, subType, amount, ignoreCap, inBackpacks)
                                customCallbackOnSell(cid, itemid, subType, amount, ignoreCap, inBackpacks, items)
                        end
                )
                npcHandler:say("Of course, just browse through my wares.", cid)
        end
        return TRUE
end
 
npcHandler:setMessage(MESSAGE_WALKAWAY, "Bye.")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
 
Back
Top