Ir para conteúdo

[ Fechado ] Npc Ajudante De Caça


quique

Posts Recomendados

Citação:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Mastah" script="data/npc/scripts/mastah.lua" speed="1200" walkinterval="0" floorchange="0">

<health now="1500" max="1500"/>

<look type="289" addons="3" head="0" body="0" legs="0" feet="0" corpse="2317"/>

</npc>

 

Mastah.lua:

 

 

Citação:

-- Load spell area's data.

dofile(getDataDir() .. "spells/lib/spells.lua")

 

-- Basic Config

local basic = {

ownerName = "Alissow" -- Nome do seu char.

}

 

-- Healer Config

local healer = {

enabled = TRUE,

sayWord = TRUE,

healthToHeal = 4000,

min = 700,

max = 1200

}

-- Mana Restore Config

local manaRestore = {

enabled = TRUE,

manaToRestore = 800,

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 = TRUE,

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 = FALSE

 

local function findOwner()

local list = getSpectators(getNpcPos(), 9, 9, false)

if (#list > 0) then

for i = 1, #list do

local _target = list

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 = FALSE

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

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 wink.gif")

doHealOwner()

doRestoreMana()

doRemoveCreature(getNpcCid())

elseif (msg == "kick") then

doRemoveCreature(cid)

end

end

end

 

function onThink()

-- Try to find owner, if he's not already found.

if (owner == 0) then

findOwner()

return

end

 

-- Update following

selfFollow(owner)

 

-- On floor change wink.gif

local myPos = getCreaturePosition(getNpcCid())

local ownerPos = getCreaturePosition(owner)

if (myPos.z ~= ownerPos.z) then

doSendMagicEffect(myPos, CONST_ME_POFF)

doTeleportThing(getNpcCid(), ownerPos)

doSendMagicEffect(ownerPos, CONST_ME_TELEPORT)

end

 

-- Healer

if (healer.enabled) then

doHealOwner()

end

 

-- Mana Restore

if (manaRestore.enabled) then

doRestoreMana()

end

 

-- Shoot Rune

if (rune.enabled and rune.lastShoot < os.clock()) then

rune.lastShoot = (os.clock()+rune.delay)

doUseRune()

end

 

-- Cast Spell

if (spell.enabled and target ~= FALSE and spell.lastCast < os.clock()) then

spell.lastCast = (os.clock()+spell.delay)

doCastSpell()

end

 

-- Anty Paralyze

if (antyPara.enabled) then

doRemovePara()

end

end

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...