• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Npc

walkingdragon

Advanced OT User
Joined
Sep 9, 2008
Messages
3,620
Reaction score
190
I need this recoded so when a player attacks another player the monster also attacks the player.

Code:
-- Load spell area's data.
dofile(getDataDir() .. "spells/lib/spells.lua")
 
-- Basic Config
local basic = {
        ownerName = "Test"
}
 
-- Healer Config
local healer = {
        enabled = TRUE,
        sayWord = FALSE,
        healthToHeal = 2000,
        min = 300,
        max = 400
}
-- Mana Restore Config
local manaRestore = {
        enabled = TRUE,
        manaToRestore = 1500,
        min = 150,
        max = 300
}
-- Rune Config
local rune = {
        enabled = TRUE,
        lastShoot = os.clock(), -- Don't touch!
        delay = 1,
        effect = CONST_ME_MORTAREA,
        shootEffect = CONST_ANI_SUDDENDEATH,
        combat = COMBAT_DEATHDAMAGE,
        min = 750,
        max = 1100
}
-- Spell Config
local spell = {
        enabled = FALSE,
        sayWord = TRUE,
        lastCast = os.clock(), -- Don't touch!
        delay = 3,
        combat = COMBAT_ICEDAMAGE,
        area = createCombatArea(AREA_CROSS5X5),
        word = "Exevo Gran Mas Frigo",
        effect = CONST_ME_ICETORNADO,
        min = 700,
        max = 1000
}
-- Anty Paralyze
local antyPara = {
        enabled = TRUE
}
 
-- Don't touch below!
local owner = 0
local target = TRUE
 
local function findOwner()
        local list = getSpectators(getNpcPos(), 9, 9, false)
        if (#list > 0) then
                for i = 1, #list do
                        local _target = list[i]
                        if (_target ~= 0) then
                                if (getCreatureName(_target) == basic.ownerName) then
                                        selfSay("Hi ".. basic.ownerName .."!")
                                        selfFollow(_target)
                                        owner = _target
                                end
                        end
                end
        end
end
 
local function doHealOwner()
        if (getCreatureHealth(owner) < healer.healthToHeal) then
                if (healer.sayWord) then
                        doCreatureSay(getNpcCid(), "Exura Sio ".. basic.ownerName.."", TALKTYPE_ORANGE_1)
                end
                doCreatureAddHealth(owner, math.random(healer.min, healer.max))
                doSendMagicEffect(getCreaturePosition(getNpcCid()), CONST_ME_MAGIC_BLUE)
                doSendMagicEffect(getCreaturePosition(owner), CONST_ME_MAGIC_GREEN)
        end
end
 
local function doRestoreMana()
        if (getPlayerMana(owner) < manaRestore.manaToRestore) then
                doPlayerAddMana(owner, math.random(manaRestore.min, manaRestore.max))
                doSendMagicEffect(getCreaturePosition(owner), CONST_ME_MAGIC_BLUE)
        end
end
 
local function doUseRune()
        target = TRUE
        local shooted = FALSE
        local r_list = getSpectators(getNpcPos(), 9, 9, false)
        if (#r_list > 0) then
                for i = 1, #r_list do
                        local r_target = r_list[i]
                        if (isPlayer(r_target) == FALSE and isNpc(r_target) == FALSE and getNpcCid() ~= r_target and shooted == FALSE) then
                                local tPos = getCreaturePosition(r_target)
                                doSendMagicEffect(tPos, rune.effect)
                                doSendDistanceShoot(getCreaturePosition(getNpcCid()), tPos, rune.shootEffect)
                                doTargetCombatHealth(getNpcCid(), r_target, rune.combat, -rune.min, -rune.max, rune.effect)
                                shooted = TRUE
                                target = TRUE
                        end
                end
        end
end
 
local function doCastSpell()
        if (spell.sayWord) then
                doCreatureSay(getNpcCid(), spell.word, TALKTYPE_ORANGE_1)
        end
 
        doAreaCombatHealth(getNpcCid(), spell.combat, getCreaturePosition(getNpcCid()), spell.area, -spell.min, -spell.max, spell.effect)
end
 
local function doRemovePara()
        if (hasCondition(owner, CONDITION_PARALYZE)) then
                doRemoveCondition(owner, CONDITION_PARALYZE)
                doSendMagicEffect(getCreaturePosition(owner), CONST_ME_MAGIC_GREEN)
        end
end
 
function onCreatureDisappear(cid)
        if (cid == owner) then
                owner = 0
        end
end
 
function onCreatureSay(cid, type, msg)
        if (cid == owner) then
                if  (msg == "disappear") then
                        selfSay("Good bye ;)")
                        doHealOwner()
                        doRestoreMana()
                        doRemoveCreature(getNpcCid())
                end
        end
end
 
Back
Top