Serginov
Onkonkoronkonk
It's time for me to release my first spell ever! woho!
I saw this some pages back and decided to make one myself but with some improvements.
In the notAllowed list you may add players, monsters or part of names that won't be swapable
There is an exhaust check inside the script so it won't affect any other spell.
When you swap positions with someone you will get slowed for 3 seconds(slow and slow time configurable at config)
Not tested on players. Can't find why that would be a problem anyway.
Spells/Support/swap.lua
Spells/spells.xml
Guess that's all for now! Have fun
I saw this some pages back and decided to make one myself but with some improvements.
In the notAllowed list you may add players, monsters or part of names that won't be swapable
There is an exhaust check inside the script so it won't affect any other spell.
When you swap positions with someone you will get slowed for 3 seconds(slow and slow time configurable at config)
Not tested on players. Can't find why that would be a problem anyway.
Spells/Support/swap.lua
Code:
local combat = createCombatObject()
local config = {
notAllowed = {"training monk", "Slaktaren", "Admin"},
exhaustStorage = 1338,
exhaustTime = 5, -- Seconds
slowStorage = 1339,
slowTime = 3, -- Seconds
slowSpeed = 100, -- Speed will be set to 100 when swaping for slowTime seconds.
}
function effect(cid, var, targetpos, mypos, target)
doSendMagicEffect(mypos, CONST_ME_ENERGYHIT)
doSendMagicEffect(targetpos, CONST_ME_ENERGYHIT)
end
function slowed(cid, speed)
doChangeSpeed(cid, getPlayerStorageValue(cid, config.slowStorage) - getCreatureSpeed(cid))
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
end
function onCastSpell(cid, var)
setPlayerStorageValue(cid, config.slowStorage, getCreatureSpeed(cid))
local mypos = getCreaturePosition(cid)
local target = getCreatureTarget(cid)
local targetpos = getCreaturePosition(target)
if not exhaustion.get(cid, config.exhaustStorage) then
for _,v in ipairs(config.notAllowed) do
if string.find(getCreatureName(target):lower(), v) then
doPlayerSendCancel(cid, "You can't swap " .. getCreatureName(target) .. "!")
doSendMagicEffect(mypos, CONST_ME_POFF)
return false
else
doTeleportThing(cid, targetpos)
doTeleportThing(target, mypos)
doChangeSpeed(cid, -getCreatureSpeed(cid)+config.slowSpeed)
doSendDistanceShoot(mypos, targetpos, CONST_ANI_ENERGYBALL)
doSendDistanceShoot(targetpos, mypos, CONST_ANI_ENERGYBALL)
addEvent(effect, 150, cid, var, targetpos, mypos, target)
addEvent(slowed, config.slowTime * 1000, cid, speed)
exhaustion.set(cid, config.exhaustStorage, config.exhaustTime)
end
end
else
doPlayerSendCancel(cid, "You have to wait " .. exhaustion.get(cid, config.exhaustStorage) .. " seconds to swap positions again!")
return false
end
doCombat(cid, combat, var)
return true
end
Code:
<instant name="Swap Position" words="swap" lvl="16" mana="20" prem="1" range="3" needtarget="1" blockwalls="1" exhaustion="100" needlearn="0" event="script" value="support/swap.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="3"/>
<vocation id="4"/>
<vocation id="5"/>
<vocation id="6"/>
<vocation id="7"/>
<vocation id="8"/>
</instant>
Last edited: