nefinoo
Carnage.flv
Lua:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
local function getTable(player)
local itemsList = {
{name='mana potion', id=7620, buy=50},
{name='health potion', id=7618, buy=50},
{name='spirit rune', id=2309, buy=50}
}
local tomes = {
{
{name='strong mana potion', id=7589, buy=80},
{name='strong health potion', id=7588, buy=80},
{name='strong spirit rune', id=2312, buy=80}
}
-- {
-- {name="bone shoulderplate", id=11321, sell=150},
-- {name="broken draken mail", id=12616, sell=340},
-- {name="broken halberd", id=11335, sell=100}
-- }
}
if player:getStorageValue(123123) >= 1 then
for i = 1, #tomes[1] do
itemsList[#itemsList] = tomes[1][i]
end
end
if player:getStorageValue(123123) >= 2 then
for i = 1, #tomes[2] do
itemsList[#itemsList] = tomes[2][i]
end
end
return itemsList
end
local function setNewTradeTable(table)
local items, item = {}
for i = 1, #table do
item = table[i]
items[item.id] = {itemId = item.id, buyPrice = item.buy, sellPrice = item.sell, subType = item.subType, realName = item.name}
end
return items
end
local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
local player = Player(cid)
local items = setNewTradeTable(getTable(player))
local backpack = player:getSlotItem(CONST_SLOT_BACKPACK)
if not backpack or backpack:getEmptySlots(true) < 1 then
player:sendCancelMessage(RETURNVALUE_NOTENOUGHROOM)
return false
end
if not ignoreCap and player:getFreeCapacity() < ItemType(items[item].itemId):getWeight(amount) then
return player:sendTextMessage(MESSAGE_FAILURE, 'You don\'t have enough cap.')
end
if not player:removeMoneyNpc(items[item].buyPrice * amount) then
selfSay("You don't have enough money.", cid)
else
player:addItem(items[item].itemId, amount, true, subType)
return player:sendTextMessage(MESSAGE_TRADE, 'Bought '..amount..'x '..items[item].realName..' for '..items[item].buyPrice * amount..' gold coins.')
end
return true
end
local function onSell(cid, item, subType, amount, ignoreCap, inBackpacks)
local player = Player(cid)
local items = setNewTradeTable(getTable(player))
if items[item].sellPrice and player:removeItem(items[item].itemId, amount) then
player:addMoney(items[item].sellPrice * amount)
return player:sendTextMessage(MESSAGE_TRADE, 'Sold '..amount..'x '..items[item].realName..' for '..items[item].sellPrice * amount..' gold coins.')
else
selfSay("You don't have item to sell.", cid)
end
return true
end
local function creatureSayCallback(cid, type, msg)
if not npcHandler:isFocused(cid) then
return false
end
if msgcontains(msg, "trade") then
local player = Player(cid)
local items = setNewTradeTable(getTable(player))
openShopWindow(cid, getTable(player), onBuy, onSell)
npcHandler:say("Of course, just browse through my wares.", cid)
end
return true
end
npcHandler:setMessage(MESSAGE_GREET, 'Hello, |PLAYERNAME| and welcome to my little forge.')
npcHandler:setMessage(MESSAGE_FAREWELL, 'Bye.')
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
I am using this script to the player get more items after finish a quest and get a new storage value, but when i get the new value and trade again with the npc this one does not show me some new items.
This image are before get the storage value
This image are after get the new storage value