tobias89
Pikaz Liek Pikaz
- Joined
- Apr 24, 2010
- Messages
- 110
- Reaction score
- 0
Im not that good with scripting.. and ive tried for allmost 2 days now.. So im guessing it has alot of bugs...
Could somebody please help a poor guy in distress
I WILL REP++
Configuration:
XML:
LUA
Thank you
Could somebody please help a poor guy in distress
I WILL REP++
Configuration:
Code:
_- Basic -_
ownerName - Your character name.
_- Healer -_
enabled - Do you want to use healer?
sayWord - Do you want to NPC say 'exura sio "your name'?
healthToHeal - NPC will use healing spell when your health is minor than this value.
min - Min. healing damage.
max - Max. healing damage.
_- Mana Restorer -_
enabled - Do you want to use restorer?
manaToRestore - NPC will restore your mana when mana point is minor than this value.
min - Min. mana restore value.
max - Max. mana restore value.
_- Rune Shooter -_
enabled - Do you want to use rune shooter?
delay - Interval between hits. (In seconds.)
effect - Rune's hit effect.
shootEffect - Rune's shoot effect.
combat - Rune's combat type.
min - Min. rune's damage.
max - Max. rune's damage
_- Spell Caster -_
enabled - Do you want to use spell caster?
sayWord - Do you want to NPC say 'spell word'?
delay - Interval between casts.
combat - Spell's combat type.
area - Spell's area.
word - Spell word.
effect - Spell's effect.
min - Min. spell's damage.
max - Max. spell's damage.
_- Anty Paralyze -_
enabled - Do you want to use anty paralyze?
_- Magic Keywords -_
disappear - NPC will disappear.
kick - NPC will kick you.
XML:
Code:
<?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>
LUA
Code:
-- Load spell area's data.
dofile(getDataDir() .. "spells/lib/spells.lua"
-- Basic Config
local basic = {
ownerName = "Meeow" -- Your character name.
}
-- 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[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 = 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[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())
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
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
Thank you
Last edited: