Resources Scripts
Blessing NPC

paste this script here
data/npcs/scripts/BlessMan.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[i]) 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[i] .. ' 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())
data/npcs/BlessMan.xml
<?xml version="1.0" encoding="UTF-8"?>
    <npc name="Willian" script="BlessMan.lua" walkinterval="2000" floorchange="0" speechbubble="1">
    <health now="100" max="100"/>
    <look type="134" 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>
**paste this script here** data/npcs/scripts/BlessMan.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, &quot;heal&quot;) then if getCreatureCondition(cid, CONDITION_FIRE) then selfSay(&quot;You are burning. I will help you.&quot;, cid) doRemoveCondition(cid, CONDITION_FIRE) heal = true elseif getCreatureCondition(cid, CONDITION_POISON) then selfSay(&quot;You are poisoned. I will cure you.&quot;, cid) doRemoveCondition(cid, CONDITION_POISON) heal = true elseif getCreatureCondition(cid, CONDITION_ENERGY) then selfSay(&quot;You are electrificed. I will help you.&quot;, cid) doRemoveCondition(cid, CONDITION_ENERGY) heal = true elseif getCreatureCondition(cid, CONDITION_PARALYZE) then selfSay(&quot;You are paralyzed. I will cure you.&quot;, cid) doRemoveCondition(cid, CONDITION_PARALYZE) heal = true elseif getCreatureCondition(cid, CONDITION_DROWN) then selfSay(&quot;You are drowing. I will help you.&quot;, cid) doRemoveCondition(cid, CONDITION_DROWN) heal = true elseif getCreatureCondition(cid, CONDITION_FREEZING) then selfSay(&quot;You are cold! I will help you.&quot;, cid) doRemoveCondition(cid, CONDITION_FREEZING) heal = true elseif getCreatureCondition(cid, CONDITION_BLEEDING) then selfSay(&quot;You are bleeding! I will help you.&quot;, cid) doRemoveCondition(cid, CONDITION_BLEEDING) heal = true elseif getCreatureCondition(cid, CONDITION_DAZZLED) then selfSay(&quot;You are dazzled! Do not mess with holy creatures anymore!&quot;, cid) doRemoveCondition(cid, CONDITION_DAZZLED) heal = true elseif getCreatureCondition(cid, CONDITION_CURSED) then selfSay(&quot;You are cursed! I will remove it.&quot;, cid) doRemoveCondition(cid, CONDITION_CURSED) heal = true elseif hp &lt; 65 then selfSay(&quot;You are looking really bad. Let me heal your wounds.&quot;, cid) p:addHealth(65 - hp) heal = true elseif hp &lt; 2000 then selfSay(&quot;I did my best to fix your wounds.&quot;, cid) p:addHealth(2000 - hp) heal = true end if heal then p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) else local msgheal = { &quot;You aren&#039;t looking really bad, &quot; .. getCreatureName(cid) .. &quot;. I only help in cases of real emergencies. Raise your health simply by eating {food}.&quot;, &quot;Seriously? It&#039;s just a scratch&quot;, &quot;Don&#039;t be a child. You don&#039;t need any help with your health.&quot;, &quot;I&#039;m not an expert. If you need help find a medic.&quot;, &quot;Don&#039;t even waste my time, I have bigger problems than your scratched armor.&quot; } selfSay(&quot;&quot; .. msgheal[math.random(1, #msgheal)] .. &quot;&quot;, cid) end return true end if msgcontains(msg, &quot;yes&quot;) and talkState[talkUser] &gt; 90 and talkState[talkUser] &lt; 96 then if getPlayerBlessing(cid, talkState[talkUser] - 90) then selfSay(&quot;You already have this blessing!&quot;, cid) else b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200)) if b_price &lt; 2000 then b_price = 2000 end if doPlayerRemoveMoney(cid, b_price) then selfSay(&quot;You have been blessed by one of the five gods!&quot;, cid) doPlayerAddBlessing(cid, talkState[talkUser] - 90) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) else selfSay(&quot;I&#039;m sorry. We need money to keep this temple up.&quot;, cid) end end talkState[talkUser] = 0 return true end if msgcontains(msg, &quot;yes&quot;) 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(&#039;You already have all available blessings.&#039;,cid) talkState[talkUser] = 0 return true end b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200)) if b_price &lt; 2000 then b_price = 2000 end b_price = ((5 - #havebless) * b_price) if doPlayerRemoveMoney(cid, b_price) then selfSay(&quot;You have been blessed by the five gods!&quot;, cid) for i = 1, 5 do doPlayerAddBlessing(cid, i) end doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) else selfSay(&quot;I&#039;m sorry. We need money to keep this temple up.&quot;, cid) end talkState[talkUser] = 0 return true end if msgcontains(msg, &quot;all&quot;) then havebless = {} b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200)) if b_price &lt; 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(&#039;You already have all available blessings.&#039;,cid) talkState[talkUser] = 0 return true end selfSay(&#039;Do you want to receive all blessings for &#039; .. b_price .. &#039; gold?&#039;,cid) talkState[talkUser] = 96 return true end local blesskeywords = {&#039;wisdom&#039;, &#039;spark&#039;, &#039;fire&#039;, &#039;spiritual&#039;, &#039;embrace&#039;} local blessnames = {&#039;Wisdom of Solitude&#039;, &#039;Spark of The Phoenix&#039;, &#039;Fire of Two Suns&#039;, &#039;Spiritual Shielding&#039;, &#039;The Embrace&#039;} for i = 1, #blesskeywords do if msgcontains(msg, blesskeywords[i]) then b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200)) if b_price &lt; 2000 then b_price = 2000 end selfSay(&#039;Do you want me to grant you &#039; .. blessnames[i] .. &#039; blessing for &#039; .. b_price .. &#039; gold?&#039;,cid) talkState[talkUser] = 90 + i return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) data/npcs/BlessMan.xml &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;npc name=&quot;Willian&quot; script=&quot;BlessMan.lua&quot; walkinterval=&quot;2000&quot; floorchange=&quot;0&quot; speechbubble=&quot;1&quot;&gt; &lt;health now=&quot;100&quot; max=&quot;100&quot;/&gt; &lt;look type=&quot;134&quot; head=&quot;58&quot; body=&quot;114&quot; legs=&quot;87&quot; addons=&quot;3&quot;/&gt; &lt;parameters&gt; &lt;parameter key=&quot;module_keywords&quot; value=&quot;1&quot; /&gt; &lt;parameter key=&quot;keywords&quot; value=&quot;bless;blessings&quot; /&gt; &lt;parameter key=&quot;keyword_reply1&quot; value=&quot;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.&quot; /&gt; &lt;parameter key=&quot;keyword_reply2&quot; value=&quot;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.&quot; /&gt; &lt;/parameters&gt; &lt;/npc&gt; ````
129
0
1
live preview
enter atleast 20 characters
WARNING: You mentioned %MENTIONS%, but they cannot see this message and will not be notified
Saving...
Saved
With selected deselect posts show selected posts
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft