• 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!

Spell Swap Positions

Serginov

Onkonkoronkonk
Joined
Jun 28, 2008
Messages
1,321
Reaction score
18
Location
Sweden - Dalarna
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
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
Spells/spells.xml
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>
Guess that's all for now! Have fun :p
 
Last edited:
Hmm, wouldn't it be better to use string.find instead of isInArray, so it checks for phrases like 'Administrator', 'GM', etc..
But it's still a good script though :)
 
Hum, how do I use string.find? ;P
Code:
for i,v in ipairs(config.notAllowed) do
    if string.find(v, getCreatureName(target)) then
couldn't get it to work like that ;P Gonna check around and see how it works. hehe
 
Nice spell man! Oo'
Can you make me a Kawarimi no Jutsu Narute Spell please? :D
 
I have no idea, I don't watch naruto and neither did I watch the video, but I did watch naruto for a while and I can just tell it's a naruto jutsu/spell.
 
Great spell, too bad the notAllowed list only accepts the first monster in the list=/
Could you take look at that?
 
Back
Top