Ir para conteúdo

Npc Trade


ploshvisk

Posts Recomendados

Por exemplo

 

Player : Hi

NPC : Hi, I buy and sell Items

player : coconut

NPC: Do you want sell 10 coconuts for 10 dollars? (Dollar é moeda do meu server)

player: Yes.

NPC: Here.

 

Esse npc também vendera items. Entendeu?

Link para o comentário
Compartilhar em outros sites

Eu fiz sem testar, mas acho que deve funcionar:

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState, shopState = {}, {}
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)
if(not npcHandler:isFocused(cid)) then
return false
end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local m, stat = string.lower(msg), {}
local tables = {
sellAble = {['coconut'] = 10},
buyAble = {['coconut'] = 5}
}

function doPlayerAddHundreds(cid, itemid, count) -- By Byerne XTibia
       if count <= 100 then
               return doPlayerAddItem(cid, itemid, count)
       end
       local count_now = count
       while count_now > 100 do
               doPlayerAddItem(cid, itemid, 100)
               count_now = count_now - 100
       end
       return doPlayerAddItem(cid, itemid, count_now)
end

if talkState[talkUser] == 0 then
for table,list in ipairs(tables) do
if list[m] then
table.insert(stat[m], table)
end
end

if #stat[m] == 2 then
selfSay('Do you want to buy or sell '..m..'?', cid)
shopState[talkUser] = {getItemIdByName(m)}
talkState[talkUser] = 2
else
talkState[talkUser] = 1
if stat[m][1] == 1 then
selfSay('How many '..m..' do you want to sell?', cid)
shopState[talkUser] = {getItemIdByName(m), 'sell', sellAble[m]}
elseif stat[m][1] == 2 then
selfSay('How many '..m..' do you want to buy?', cid)
shopState[talkUser] = {getItemIdByName(m), 'buy', buyAble[m]}
end
end

elseif talkState[talkUser] == 1 then
if tonumber(msg) then
shopState[talkUser][4] = tonumber(msg)
talkState[talkUser] = 3
end
elseif talkState[talkUser] == 2 then
if msgcontains(msg, 'buy') then
shopState[talkUser][2] = 'buy'
shopState[talkUser][3] = buyAble[getItemNameById(shopState[talkUser][1])]
talkState[talkUser] = 1
elseif msgcontains(msg, 'sell') then
shopState[talkUser][2] = 'sell'
shopState[talkUser][3] = sellAble[getItemNameById(shopState[talkUser][1])]
talkState[talkUser] = 1
end
elseif(talkState[talkUser] == 3 and msgcontains(msg, 'yes')) then
local s = shopState[talkUser]
if s[2] == 'sell' then
if doPlayerRemoveItem(cid, s[1], s[4]) then
doPlayerAddMoney(cid, s[3]*100)
selfSay('Thank you very much.',cid)
end
else
if doPlayerRemoveMoney(cid, s[3]*100) then
doPlayerAddHundreds(cid, s[1], s[4])
selfSay('Here you are.', cid)
end
end
end

return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...