Obrigado por compartilhar conosco, ótimo script!
- Fórum
- OTServ
- Recursos
- Scripting
- NPCs, monsters e raids
- [TFS 1.x] NPC Bless full, Healer
2
2.1k
4 semanas depois...
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

28 de janeiro de 2016 às 23:43

info
Grupo: Marquês
Registrado: 02/07/07
Posts: 1.1k
Reputação: +287
Gênero: Masculino
Bom galera como eu não achei um npc que vendece Bless full compativel com TFS 1.x estou postando este que achei em outro forum, Assim como eu, acho que muita gente precisa. Então esta ai.
NPC.lua
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 onPlayerEndTrade(cid) npcHandler:onPlayerEndTrade(cid) end
function onPlayerCloseChannel(cid) npcHandler:onPlayerCloseChannel(cid) end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = cid
local p = Player(cid)
local heal = false
local hp = p:getHealth()
if msgcontains(msg, "heal") then
if getCreatureCondition(cid, CONDITION_FIRE) then
selfSay("You are burning. I will help you.", cid)
doRemoveCondition(cid, CONDITION_FIRE)
heal = true
elseif getCreatureCondition(cid, CONDITION_POISON) then
selfSay("You are poisoned. I will cure you.", cid)
doRemoveCondition(cid, CONDITION_POISON)
heal = true
elseif getCreatureCondition(cid, CONDITION_ENERGY) then
selfSay("You are electrificed. I will help you.", cid)
doRemoveCondition(cid, CONDITION_ENERGY)
heal = true
elseif getCreatureCondition(cid, CONDITION_PARALYZE) then
selfSay("You are paralyzed. I will cure you.", cid)
doRemoveCondition(cid, CONDITION_PARALYZE)
heal = true
elseif getCreatureCondition(cid, CONDITION_DROWN) then
selfSay("You are drowing. I will help you.", cid)
doRemoveCondition(cid, CONDITION_DROWN)
heal = true
elseif getCreatureCondition(cid, CONDITION_FREEZING) then
selfSay("You are cold! I will help you.", cid)
doRemoveCondition(cid, CONDITION_FREEZING)
heal = true
elseif getCreatureCondition(cid, CONDITION_BLEEDING) then
selfSay("You are bleeding! I will help you.", cid)
doRemoveCondition(cid, CONDITION_BLEEDING)
heal = true
elseif getCreatureCondition(cid, CONDITION_DAZZLED) then
selfSay("You are dazzled! Do not mess with holy creatures anymore!", cid)
doRemoveCondition(cid, CONDITION_DAZZLED)
heal = true
elseif getCreatureCondition(cid, CONDITION_CURSED) then
selfSay("You are cursed! I will remove it.", cid)
doRemoveCondition(cid, CONDITION_CURSED)
heal = true
elseif hp < 65 then
selfSay("You are looking really bad. Let me heal your wounds.", cid)
p:addHealth(65 - hp)
heal = true
elseif hp < 2000 then
selfSay("I did my best to fix your wounds.", cid)
p:addHealth(2000 - hp)
heal = true
end
if heal then
p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
else
local msgheal = {
"You aren't looking really bad, " .. getCreatureName(cid) .. ". I only help in cases of real emergencies. Raise your health simply by eating {food}.",
"Seriously? It's just a scratch",
"Don't be a child. You don't need any help with your health.",
"I'm not an expert. If you need help find a medic.",
"Don't even waste my time, I have bigger problems than your scratched armor."
}
selfSay("" .. msgheal[math.random(1, #msgheal)] .. "", cid)
end
return true
end
if msgcontains(msg, "yes") and talkState[talkUser] > 90 and talkState[talkUser] < 96 then
if getPlayerBlessing(cid, talkState[talkUser] - 90) then
selfSay("You already have this blessing!", cid)
else
b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
if b_price < 2000 then b_price = 2000 end
if doPlayerRemoveMoney(cid, b_price) then
selfSay("You have been blessed by one of the five gods!", cid)
doPlayerAddBlessing(cid, talkState[talkUser] - 90)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
else
selfSay("I'm sorry. We need money to keep this temple up.", cid)
end
end
talkState[talkUser] = 0
return true
end
if msgcontains(msg, "yes") and talkState[talkUser] == 96 then
havebless = {}
for i = 1, 5 do
if(getPlayerBlessing(cid, i)) then
table.insert(havebless,i)
end
end
if #havebless == 5 then
selfSay('You already have all available blessings.',cid)
talkState[talkUser] = 0
return true
end
b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
if b_price < 2000 then b_price = 2000 end
b_price = ((5 - #havebless) * b_price)
if doPlayerRemoveMoney(cid, b_price) then
selfSay("You have been blessed by the five gods!", cid)
for i = 1, 5 do doPlayerAddBlessing(cid, i) end
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
else
selfSay("I'm sorry. We need money to keep this temple up.", cid)
end
talkState[talkUser] = 0
return true
end
if msgcontains(msg, "all") then
havebless = {}
b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
if b_price < 2000 then b_price = 2000 end
for i = 1, 5 do
if(getPlayerBlessing(cid, i)) then
table.insert(havebless,i)
end
end
b_price = ((5 - #havebless) * b_price)
if b_price == 0 then
selfSay('You already have all available blessings.',cid)
talkState[talkUser] = 0
return true
end
selfSay('Do you want to receive all blessings for ' .. b_price .. ' gold?',cid)
talkState[talkUser] = 96
return true
end
local blesskeywords = {'wisdom', 'spark', 'fire', 'spiritual', 'embrace'}
local blessnames = {'Wisdom of Solitude', 'Spark of The Phoenix', 'Fire of Two Suns', 'Spiritual Shielding', 'The Embrace'}
for i = 1, #blesskeywords do
if msgcontains(msg, blesskeywords) then
b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
if b_price < 2000 then b_price = 2000 end
selfSay('Do you want me to grant you ' .. blessnames .. ' blessing for ' .. b_price .. ' gold?',cid)
talkState[talkUser] = 90 + i
return true
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
NPC.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="NPCNAME" script="bless_heal.lua" walkinterval="2000" floorchange="0" speechbubble="1"> <health now="100" max="100"/> <look type="138" head="58" body="114" legs="87" addons="3"/> <parameters> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="bless;blessings" /> <parameter key="keyword_reply1" value="I can grant you blessings such as {Wisdom} {of} {Solitude}, {Spark} {of} {The} {Phoenix}, our {Fire} {of} {Two} {Suns}, {Spiritual} {Shielding} and {The Embrace}. I can also grant you {all} of these blessings, just ask me." /> <parameter key="keyword_reply2" value="I can grant you blessings such as {Wisdom} {of} {Solitude}, {Spark} {of} {The} {Phoenix}, our {Fire} {of} {Two} {Suns}, {Spiritual} {Shielding} and {The Embrace}. I can also grant you {all} of these blessings, just ask me." /> </parameters> </npc>Estou usando ele no servidor Vanaheim do Bruno. Testado e funcionando perfeitamente.
Créditos: Flavio S