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 talkState = {}
local _,_,itemName = nil,nil,''
local function getCount(str) --[[( Marcryzius )]]
return tonumber(str:match('(%d+)')) or 0
end
local function tradeSay(str) --[[( Marcryzius )]]--
local tab,str = {},str:lower()
tab[1] = str:match('sell') or str:match('buy') or '' -- Retorna se vai comprar ou vender.
tab[2] = getCount(str) < 1 and 1 or getCount(str) -- Retorna a quantidade.
tab[3] = str:match(tab[1]..(str:match('(%d+)') and "%s%d+%s" or " ").."(.+)") -- Retorna o nome do item.
if not(tab[3])then
local name = ''
for nome in str:gmatch("(%a+)") do
if(nome)then
name = name..(name ~= '' and ' ' or '')..nome
end
end
tab[3] = name
end
return unpack(tab)
end
local function getTabNames(tab) --[[( Marcryzius )]]--
-- Essa função retornar o valor dos index de uma tabela.
local str = {}
for t,v in pairs(tab) do
if v then
str[#str+1] = t
end
end
return table.concat(str,', ')..'.'
end
------------------- Configuração dos Itens -----------------------
local bonuscoin = 5984548
local tab = {
--[nome] = {qte=quantidade de bonus coin,ID=ID dos Itens}
["pokeball"] = {qte=10,ID=12683},
["greatball"] = {qte=12,ID=12682},
["superball"] = {qte=15,ID=12684},
["facebook"] = {qte=20,ID=12681},
["holding"] = {qte=25,ID=2365},
["love teddy"] = {qte=30,ID=15600},
["dogs house"] = {qte=40,ID=23828},
["music box"] = {qte=50,ID=17069},
}
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 _,_,prod = tradeSay(msg)
------------------- MESSAGES INICIAIS ----------------------------------------
if(tab[prod])then
itemName = prod
selfSay('Deseja comprar um {'..getItemNameById(tab[itemName].ID)..'} Por '..(tab[itemName].qte)..' online points?', cid)
selfSay('Para saber quantos pontos possui digite {!opshop}.', cid)
talkState[talkUser] = 1
elseif (msgcontains(msg, 'negociar') or msgcontains(msg, 'trade')) then
selfSay('No momento tenho disponivel em meu estoque os seguintes itens: '..getTabNames(tab), cid)
talkState[talkUser] = 0
---------------------- NEGOCIAÇÃO -------------------------------
elseif talkState[talkUser] == 1 then
if (msgcontains(msg, 'sim') or msgcontains(msg, 'yes')) then
if getPlayerStorageValue(cid, bonuscoin) >= tab[itemName].qte then
setPlayerStorageValue(cid, bonuscoin, getPlayerStorageValue(cid, bonuscoin) - tab[itemName].qte)
doPlayerAddItem(cid, tab[itemName].ID, 1)
selfSay('Parabéns, voce acabou de adquirir 1x '..getItemNameById(tab[itemName].ID)..'!', cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Agora voce tem: " .. getPlayerStorageValue(cid,bonuscoin) .. " Online Bonus.")
else
selfSay('Voce precisa de '..(tab[itemName].qte)..' online bonus para adquirir esse item.', cid)
end
else
selfSay('Morra! FDP!', cid)
end
talkState[talkUser] = 0
else
npcHandler:say('Foda-se! nao sei o que tu quer.', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())