Lopaskurwa
Active Member
- Joined
- Oct 6, 2017
- Messages
- 873
- Solutions
- 2
- Reaction score
- 49
So
i made i thread about craft system but since i marked as a best answer already i wont get working code even if code doesnt work.
Have last question related with this system what if i want to add ability to craft same item but with different item requirement.
As you can see it has same item name so what will happen? How to make it work properly ?
i made i thread about craft system but since i marked as a best answer already i wont get working code even if code doesnt work.
Have last question related with this system what if i want to add ability to craft same item but with different item requirement.
Lua:
['demon sword'] = {{'big sword', 1}, {'sword card', 1}, {'demon card', 3}},
['demon sword'] = {{'small sword', 1}, {'sword card', 2}, {'demon card', 4}},
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 config = { -- KEEP ALL LOWER CASE
['mage helmet'] = {{'addon doll', 1}, {'leaf', 1}, {'yalahari mask', 1}, {'outfiter', 1}, {'rs remover', 1}},
['knight donate uh'] = {{'addon doll', 1}, {'warlord sword', 1}, {'demon helmet', 1}, {'outfiter', 1}, {'rs remover', 1}},
['paladin donate uh/mr'] = {{{'addon doll', 1}, {'arbalest', 1}, {'demon helmet', 1}, {'outfiter', 1}, {'rs remover', 1}}},
}
craft_storage = craft_storage or {}
function Player:checkCraftItems(table)
for _, item in ipairs(table) do
if self:getItemCount(ItemType(item[1]):getId()) < item[2] then
return false
end
end
return true
end
function Player:removeCraftItems(table)
for _, item in ipairs(table) do
self:removeItem(ItemType(item[1]):getId(), item[2])
end
end
function creatureSayCallback(cid, type, msg)
if not npcHandler:isFocused(cid) then
return false
end
local player = Player(cid)
local msg = msg:lower()
if npcHandler.topic[cid] < 1 then
local craft_items = config[msg]
if craft_items then
local string = "To craft a " .. msg .. " you will need:"
for key, item in pairs(craft_items) do
local type = ItemType(item[1])
if not type or type:getId() < 1 then print("Type does not exist with name " .. item[1]) return true end
local article = item[2] == 1 and type:getArticle() or item[2]
local name = item[2] == 1 and item[1] or type:getPluralName()
if not next(craft_items, key) then
string = string .. " and " .. article .. " " .. name .. "."
else
string = string .. " " .. article .. " " .. name .. ","
end
end
npcHandler:say(string .. " Do you have them?", cid)
npcHandler.topic[cid] = 1
craft_storage[cid] = msg
end
elseif npcHandler.topic[cid] == 1 then
local craft_items = config[craft_storage[cid]]
if craft_items and msgcontains(msg, "yes") then
local type = ItemType(storage[cid])
if not type or type:getId() < 1 then print("Type does not exist with name " .. storage[cid]) return true end
if player:checkCraftItems(craft_items) then
player:removeCraftItems(craft_items)
player:addItem(type:getId(), 1)
npcHandler:say('Thank you very much! Come back anytime you want!!', cid)
else
npcHandler:say('You do not have the required items.', cid)
end
else
npcHandler:say('Do not waste my time.', cid)
end
npcHandler.topic[cid] = 0
craft_storage[cid] = nil
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())