tenta ai
Script:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local forge = {}
local recipes = {
[2158] = { -- ID DA STAMINA POTION
{2160, 1} -- ID E QUANTIDADE DOS ITENS QUE ELE VAI COBRAR
}
}
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 onGreetCallback(cid)
talkState[cid] = 0
forge[cid] = {match = nil, recipe = nil}
return true
end
function onCreatureSayCallback(cid, class, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if talkState[talkUser] == 0 then
for itemid, items in pairs(recipes) do
if msgcontains(msg, getItemNameById(itemid)) then
forge[talkUser] = {match = itemid, recipe = items}
break
end
end
if forge[talkUser].match ~= nil then
local str, sep = "Boa escolha, Eu precisarei de"
local n = 1
for _, item in ipairs(forge[talkUser].recipe) do
sep = (n == 1) and " " or (n == #forge[talkUser].recipe and " e " or ", ")
str = str .. sep .. (item[2] or 1) .." ".. getItemNameById(item[1])
n = n + 1
end
str = str ..". Concorda?"
npcHandler:say(str, cid)
talkState[talkUser] = 1
else
npcHandler:say("Desculpa, voce nao tem os itens.", cid)
end
elseif talkState[talkUser] == 1 then
if msgcontains(msg, "yes") or msgcontains(msg, "sim") then
local ret = {}
for _, item in ipairs(forge[talkUser].recipe) do
local g = getPlayerItemById(cid, true, item[1])
if g.uid > 0 and math.max(1, g.type) >= item[2] then
table.insert(ret, {g.uid, item[2]})
else
ret = {}
break
end
end
if #ret > 0 then
for _, item in ipairs(ret) do
doRemoveItem(item[1], item[2])
end
doPlayerAddItemEx(cid, doCreateItemEx(forge[talkUser].match, 1))
npcHandler:say("Foi um prazer negociar com voce, aqui esta a sua ".. getItemNameById(forge[talkUser].match) ..".", cid)
else
npcHandler:say("Desculpa, voce nao tem os itens para troca.", cid)
talkState[talkUser] = 0
forge[talkUser] = {match = nil, recipe = nil}
end
elseif msgcontains(msg, "no") or msgcontains(msg, "nao") then
npcHandler:say("Tudo bem, voce precisa de mais alguma coisa?", cid)
talkState[talkUser] = 0
forge[talkUser] = {match = nil, recipe = nil}
end
end
return true
end
local greet, sep = "Ola, |PLAYERNAME|. eu vendo bla bla bla bla...."
local n = 1
for item, recipe in pairs(recipes) do
sep = (n == 1) and " " or (n == #recipes and " e " or ", ")
greet = greet .. sep .. "{".. getItemNameById(item) .."}"
n = n + 1
end
npcHandler:setMessage(MESSAGE_GREET, greet)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, onCreatureSayCallback)
npcHandler:setCallback(CALLBACK_GREET, onGreetCallback)
npcHandler:addModule(FocusModule:new())
Npc:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NPC Stamina" script="data/npc/scripts/Stamina_Npc.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="60" head="38" body="79" legs="107" feet="114"/>
<parameters>
<parameter key="message_greet" value="Hello, |PLAYERNAME|."/>
</parameters>
</npc>





info
Grupo: Campones
Registrado: 12/03/16
Posts: 7
Reputação: 0
Fala galera do X-Tibia, esse é o meu primeiro post aqui, mas vamos direto ao assunto.
Eu gostaria de fazer no meu servidor um npc normal (npc de food) mas que ao jogador falar por exemplo. Stamina, ele te da um stamina refil. O npc é um npc normal de food e tals, mas só que quando o jogador fala a certa palavra, ele te da um item por outro.
Então como no exemplo da stamina, a conversa seria assim:
Hi
Ola jogador, eu vendo bla bla bla bla....
Stamina
Voce gostaria de receber uma stamina refil por uma scarab coin?
Yes
Aqui está sua Stamina. Foi um prazer negociar com voce.
Algo do tipo.... Os itens foram apenas exemplos.
Eu uso tfs 0.3.6
Se alguem puder me ajudar eu agradeço.