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

Players can go through players when they stand at depotbox

Zippiex

Member
Joined
Nov 4, 2015
Messages
255
Solutions
2
Reaction score
20
Location
Sweden
Hello. Players can go through other players when they stand at the depotbox and I don't know how to fix that or which file that make this mess. Do you know?
 
In the extreme event that for some reason your tile is not working, or you simply don't have the tile.. you could use a simple movement script to stop it from happening.

(I'm not saying that this is the best way to accomplish this, but it is a way to do it.
Who knows.. maybe someone needed this script for a quest. :rolleyes:)


Just make the tile(s) have an ActionID on them, and register that ActionID in movements.xml

0.3.7 example.
Code:
function onStepIn(cid, item, position, fromPosition)
   if getSpectators(position, 0, 0, false) >= 1 then
       return false
   end
   return true
end
 
Try this if you are using glowing switches(those orange tiles):
Code:
<item fromid="11062" toid="11063" article="a" name="glowing switch">
        <attribute key="walkStack" value="0" />
    </item>
or just add in items.xml to a tile u want:
Code:
<attribute key="walkStack" value="0" />
Dunno if it works on all TFS, but if you don't try u'll never know.
 
Thank you I will try this out I use TFS 0.4. I also got that tiles files in movements.

Code:
local config = {
    maxLevel = getConfigInfo('maximumDoorLevel')
}

local increasingItems = {[416] = 417, [426] = 425, [446] = 447, [3216] = 3217, [3202] = 3215, [11059] = 11060}
local decreasingItems = {[417] = 416, [425] = 426, [447] = 446, [3217] = 3216, [3215] = 3202, [11060] = 11059}
local depots = {2589, 2590, 2591, 2592}

local checkCreature = {isPlayer, isMonster, isNpc}
local function pushBack(cid, position, fromPosition, displayMessage)
    doTeleportThing(cid, fromPosition, false)
    doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)
    if(displayMessage) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The tile seems to be protected against unwanted intruders.")
    end
end

function onStepIn(cid, item, position, fromPosition)
    if(not increasingItems[item.itemid]) then
        return false
    end

    if(not isPlayerGhost(cid)) then
        doTransformItem(item.uid, increasingItems[item.itemid])
    end

    if(item.actionid >= 194 and item.actionid <= 196) then
        local f = checkCreature[item.actionid - 193]
        if(f(cid)) then
            pushBack(cid, position, fromPosition, false)
        end

        return true
    end

    if(item.actionid >= 191 and item.actionid <= 193) then
        local f = checkCreature[item.actionid - 190]
        if(not f(cid)) then
            pushBack(cid, position, fromPosition, false)
        end

        return true
    end

    if(not isPlayer(cid)) then
        return true
    end

    if(item.actionid == 189 and not isPremium(cid)) then
        pushBack(cid, position, fromPosition, true)
        return true
    end

    local gender = item.actionid - 186
    if(isInArray({PLAYERSEX_FEMALE,  PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender)) then
        if(gender ~= getPlayerSex(cid)) then
            pushBack(cid, position, fromPosition, true)
        end

        return true
    end

    local skull = item.actionid - 180
    if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
        if(skull ~= getCreatureSkullType(cid)) then
            pushBack(cid, position, fromPosition, true)
        end

        return true
    end

    local group = item.actionid - 150
    if(group >= 0 and group < 30) then
        if(group > getPlayerGroupId(cid)) then
            pushBack(cid, position, fromPosition, true)
        end

        return true
    end

    local vocation = item.actionid - 100
    if(vocation >= 0 and vocation < 50) then
        local playerVocationInfo = getVocationInfo(getPlayerVocation(cid))
        if(playerVocationInfo.id ~= vocation and playerVocationInfo.fromVocation ~= vocation) then
            pushBack(cid, position, fromPosition, true)
        end

        return true
    end

    if(item.actionid >= 1000 and item.actionid <= config.maxLevel) then
        if(getPlayerLevel(cid) < item.actionid - 1000) then
            pushBack(cid, position, fromPosition, true)
        end

        return true
    end

    if(item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) <= 0) then
        pushBack(cid, position, fromPosition, true)
        return true
    end

    if(getTileInfo(position).protection) then
        local depotPos, depot = getCreatureLookPosition(cid), {}
        depotPos.stackpos = STACKPOS_GROUND
        while(true) do
            if(not getTileInfo(depotPos).depot) then
                break
            end

            depotPos.stackpos = depotPos.stackpos + 1
            depot = getThingFromPos(depotPos)
            if(depot.uid == 0) then
                break
            end

            if(isInArray(depots, depot.itemid)) then
                local depotItems = getPlayerDepotItems(cid, getDepotId(depot.uid))
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Your depot contains " .. depotItems .. " item" .. (depotItems > 1 and "s" or "") .. ".")
                break
            end
        end

        return true
    end

    return false
end

function onStepOut(cid, item, position, fromPosition)
    if(not decreasingItems[item.itemid]) then
        return false
    end

    if(not isPlayerGhost(cid)) then
        doTransformItem(item.uid, decreasingItems[item.itemid])
        return true
    end

    return false
end
 
Back
Top