mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-04-29 18:59:20 +02:00
111 lines
3.0 KiB
Lua
111 lines
3.0 KiB
Lua
local context = G.botContext
|
|
|
|
context.NPC = {}
|
|
|
|
context.NPC.talk = function(text)
|
|
if g_game.getClientVersion() >= 810 then
|
|
g_game.talkChannel(11, 0, text)
|
|
else
|
|
return context.say(text)
|
|
end
|
|
end
|
|
context.NPC.say = context.NPC.talk
|
|
|
|
context.NPC.isTrading = function()
|
|
return modules.game_npctrade.npcWindow and modules.game_npctrade.npcWindow:isVisible()
|
|
end
|
|
context.NPC.hasTrade = context.NPC.isTrading
|
|
context.NPC.hasTradeWindow = context.NPC.isTrading
|
|
|
|
|
|
context.NPC.getSellItems = function()
|
|
if not context.NPC.isTrading() then return {} end
|
|
local items = {}
|
|
for i, item in ipairs(modules.game_npctrade.tradeItems[modules.game_npctrade.SELL]) do
|
|
table.insert(items, {
|
|
id = item.ptr:getId(),
|
|
name = item.name,
|
|
count = item.ptr:getCount(),
|
|
subType = item.ptr:getSubType(),
|
|
weight = item.weight / 100,
|
|
price = item.price
|
|
})
|
|
end
|
|
return items
|
|
end
|
|
|
|
context.NPC.getBuyItems = function()
|
|
if not context.NPC.isTrading() then return {} end
|
|
for i, item in ipairs(modules.game_npctrade.tradeItems[modules.game_npctrade.BUY]) do
|
|
table.insert(items, {
|
|
id = item.ptr:getId(),
|
|
name = item.name,
|
|
count = item.ptr:getCount(),
|
|
subType = item.ptr:getSubType(),
|
|
weight = item.weight / 100,
|
|
price = item.price
|
|
})
|
|
end
|
|
return items
|
|
end
|
|
|
|
context.NPC.getSellQuantity = function(item)
|
|
if not context.NPC.isTrading() then return 0 end
|
|
if type(item) == 'number' then
|
|
item = Item.create(item)
|
|
end
|
|
return modules.game_npctrade.getSellQuantity(item)
|
|
end
|
|
|
|
context.NPC.canTradeItem = function(item)
|
|
if not context.NPC.isTrading() then return false end
|
|
if type(item) == 'number' then
|
|
item = Item.create(item)
|
|
end
|
|
return modules.game_npctrade.canTradeItem(item)
|
|
end
|
|
|
|
context.NPC.sell = function(item, count, ignoreEquipped)
|
|
if type(item) == 'number' then
|
|
item = Item.create(item)
|
|
end
|
|
if count == 0 then
|
|
count = 1
|
|
end
|
|
if count == nil or count == -1 then
|
|
count = context.NPC.getSellQuantity(item)
|
|
end
|
|
if ignoreEquipped == nil then
|
|
ignoreEquipped = true
|
|
end
|
|
g_game.sellItem(item, count, ignoreEquipped)
|
|
end
|
|
|
|
context.NPC.buy = function(item, count, ignoreCapacity, withBackpack)
|
|
if type(item) == 'number' then
|
|
item = Item.create(item)
|
|
end
|
|
if count == nil or count <= 0 then
|
|
count = 1
|
|
end
|
|
if ignoreCapacity == nil then
|
|
ignoreCapacity = false
|
|
end
|
|
if withBackpack == nil then
|
|
withBackpack = false
|
|
end
|
|
g_game.buyItem(item, count, ignoreCapacity, withBackpack)
|
|
end
|
|
|
|
context.NPC.sellAll = function()
|
|
if not context.NPC.isTrading() then return false end
|
|
modules.game_npctrade.sellAll()
|
|
end
|
|
|
|
context.NPC.closeTrade = function()
|
|
modules.game_npctrade.closeNpcTrade()
|
|
end
|
|
context.NPC.close = context.NPC.closeTrade
|
|
context.NPC.finish = context.NPC.closeTrade
|
|
context.NPC.endTrade = context.NPC.closeTrade
|
|
context.NPC.finishTrade = context.NPC.closeTrade |