Eu fiz diferente do que você pediu mais deve quebrar um galho até alguém fazer exatamente como você quer...
Em npc crie um arquivo com o nome npcbless.xml e adicione isso dentro:
<?xml version="1.0"?>
<npc name="Blessing" script="data/npc/scripts/npcbless.lua" walkinterval="1000" floorchange="0">
<health now="100" max="100"/>
<look type="133" head="114" body="119" legs="132" feet="114" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola {|PLAYERNAME|}, para saber o preco da bless basta digitar {valor}, se quiser comprar bless digite {bless}!" />
</parameters>
</npc>
Em npc/scripts crie um arquivo com o nome npcbless.lua e adicione isso dentro:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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
-- CONFIG --
local gold = {
p1 = 10000, -- Preço em Gold 50 ao 100
p2 = 20000, -- Preço em Gold 101 ao 150
p3 = 30000, -- Preço em Gold 151 ao 200
p4 = 50000, -- Preço em Gold 201 ao 250
p5 = 70000, -- Preço em Gold 251 ao 299
p6 = 100000 -- Preço em Gold 300 em diante
}
-- CONFIG --
if msgcontains(msg, 'valor') then
doPlayerPopupFYI(cid, "Preço blessing:\n\nLeve 50 ao 100: "..gold.p1.." gp\nLeve 101 ao 150: "..gold.p2.." gp\nLeve 151 ao 200: "..gold.p3.." gp\nLeve 201 ao 250: "..gold.p4.." gp\nLeve 251 ao 299: "..gold.p5.." gp\nLeve 300 em diante: "..gold.p6.." gp")
end
if msgcontains(msg, 'bless') then
if getPlayerBlessing(cid, 5) then
selfSay('Desculpe {'..getPlayerName(cid)..'}, você já tem full blessing!', cid)
return end
if getPlayerLevel(cid) >= 50 and getPlayerLevel(cid) <= 100 then
if getPlayerMoney(cid) >= gold.p1 then
doPlayerRemoveMoney(cid, gold.p1)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
elseif getPlayerLevel(cid) >= 101 and getPlayerLevel(cid) <= 150 then
if getPlayerMoney(cid) >= gold.p2 then
doPlayerRemoveMoney(cid, gold.p2)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
elseif getPlayerLevel(cid) >= 151 and getPlayerLevel(cid) <= 200 then
if getPlayerMoney(cid) >= gold.p3 then
doPlayerRemoveMoney(cid, gold.p3)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
elseif getPlayerLevel(cid) >= 201 and getPlayerLevel(cid) <= 250 then
if getPlayerMoney(cid) >= gold.p4 then
doPlayerRemoveMoney(cid, gold.p4)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
elseif getPlayerLevel(cid) >= 251 and getPlayerLevel(cid) <= 299 then
if getPlayerMoney(cid) >= gold.p5 then
doPlayerRemoveMoney(cid, gold.p5)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
elseif getPlayerLevel(cid) >= 300 then
if getPlayerMoney(cid) >= gold.p6 then
doPlayerRemoveMoney(cid, gold.p6)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
selfSay('Parabéns {'..getPlayerName(cid)..'}, agora você tem full blessing!', cid)
doSendMagicEffect(getPlayerPosition(cid), 28)
else
selfSay('{'..getPlayerName(cid)..'} Você não tem dinheiro suficiente para comprar full blessing!', cid)
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Quando você fala a palavra "valor" para o npc ele abre a seguinte mensagem:

- Ele verifica o level do player e vende a bless conforme o level
- Se o player já tiver bless o npc avisa ele ao falar "bless"
00:22 Blessing: Desculpe Maarkiin, você já tem full blessing!
Espero que sirva, abraço.








info
Grupo: Campones
Registrado: 20/08/11
Posts: 41
Reputação: +26
Preciso de um npc que venda todas as bless de uma vez só, e também seria preço tabelado por level:
Say: hi
Npc: Olá eu vendo bless
say: bless
npc:sua bless custa (...) deseja comprar ?
say: yes
npc: você foi abençoado.
(com isso adicionaria todas as bless no player)
Tabela de preço:
do level 50 ao lvl 100 - 10k
do level 101 ao lvl 150 - 20k
do level 151 ao 200 - 30k
do level 201 ao 250 - 50k
do level 251 ao 300 - 70k
do level 300+ - 100k
Obrigado