• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

How do i make a swimming area?

data\movements\movements.xml
<!-- Swimming -->
<movevent type="StepIn" itemid="4828-4831;7943-7954" event="script" value="swimming.lua"/>

data\movements\scripts :
[swimming.lua]
PHP:
local outfit = {lookType = 267, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}

local BORDERS = {
    [7943] = {x = 0, y = -2, back = SOUTH},
    [7944] = {x = -2, y = 0, back = EAST},
    [7945] = {x = 0, y = 2, back = NORTH},
    [7946] = {x = 2, y = 0, back = WEST},
    [7947] = {x = 2, y = 1, back = WEST},
    [7948] = {x = -2, y = 1, back = NORTH},
    [7949] = {x = 2, y = -1, back = WEST},
    [7950] = {x = -2, y = -1, back = EAST},
    [7951] = {x = 2, y = 2, back = WEST},
    [7952] = {x = -2, y = 2, back = NORTH},
    [7953] = {x = 2, y = -2, back = WEST},
    [7954] = {x = -2, y = -2, back = SOUTH}
}

BORDERS[4828] = BORDERS[7943]
BORDERS[4829] = BORDERS[7946]
BORDERS[4830] = BORDERS[7945]
BORDERS[4831] = BORDERS[7944]

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    if(not isPlayer(cid)) then
        return true
    end

    local border = BORDERS[item.itemid]
    if(not border) then
        return false
    end

    local pos, newPos = getCreaturePosition(cid), {}
    newPos = pos
    newPos.x = pos.x + border.x
    newPos.y = pos.y + border.y

    if(hasCondition(cid, CONDITION_OUTFIT) and getCreatureOutfit(cid).lookType == outfit.lookType) then
        doMoveCreature(cid, border.back)
        doRemoveCondition(cid, CONDITION_OUTFIT)
    else
        if(doTileQueryAdd(cid, pos, 4) ~= RETURNVALUE_NOERROR) then
            return false
        end

        local tmp = getCreaturePosition(cid)
        doTeleportThing(cid, newPos)

        if(not isPlayerGhost(cid)) then
            doSendMagicEffect(tmp, CONST_ME_POFF)
            doSendMagicEffect(newPos, CONST_ME_WATERSPLASH)
        end

        doRemoveConditions(cid, true)
        doSetCreatureOutfit(cid, outfit, -1)
    end

    return true
end

then go RME and Edit Place for swimming
 
data\movements\movements.xml
<!-- Swimming -->
<movevent type="StepIn" itemid="4828-4831;7943-7954" event="script" value="swimming.lua"/>

data\movements\scripts :
[swimming.lua]
PHP:
local outfit = {lookType = 267, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}

local BORDERS = {
    [7943] = {x = 0, y = -2, back = SOUTH},
    [7944] = {x = -2, y = 0, back = EAST},
    [7945] = {x = 0, y = 2, back = NORTH},
    [7946] = {x = 2, y = 0, back = WEST},
    [7947] = {x = 2, y = 1, back = WEST},
    [7948] = {x = -2, y = 1, back = NORTH},
    [7949] = {x = 2, y = -1, back = WEST},
    [7950] = {x = -2, y = -1, back = EAST},
    [7951] = {x = 2, y = 2, back = WEST},
    [7952] = {x = -2, y = 2, back = NORTH},
    [7953] = {x = 2, y = -2, back = WEST},
    [7954] = {x = -2, y = -2, back = SOUTH}
}

BORDERS[4828] = BORDERS[7943]
BORDERS[4829] = BORDERS[7946]
BORDERS[4830] = BORDERS[7945]
BORDERS[4831] = BORDERS[7944]

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    if(not isPlayer(cid)) then
        return true
    end

    local border = BORDERS[item.itemid]
    if(not border) then
        return false
    end

    local pos, newPos = getCreaturePosition(cid), {}
    newPos = pos
    newPos.x = pos.x + border.x
    newPos.y = pos.y + border.y

    if(hasCondition(cid, CONDITION_OUTFIT) and getCreatureOutfit(cid).lookType == outfit.lookType) then
        doMoveCreature(cid, border.back)
        doRemoveCondition(cid, CONDITION_OUTFIT)
    else
        if(doTileQueryAdd(cid, pos, 4) ~= RETURNVALUE_NOERROR) then
            return false
        end

        local tmp = getCreaturePosition(cid)
        doTeleportThing(cid, newPos)

        if(not isPlayerGhost(cid)) then
            doSendMagicEffect(tmp, CONST_ME_POFF)
            doSendMagicEffect(newPos, CONST_ME_WATERSPLASH)
        end

        doRemoveConditions(cid, true)
        doSetCreatureOutfit(cid, outfit, -1)
    end

    return true
end

then go RME and Edit Place for swimming


All servers 8.60+ coming with this script.. he just need use RME to put swimming place.. :P
 
Back
Top