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

Problem witch glowing switch

kafar1

New Member
Joined
Apr 4, 2013
Messages
78
Reaction score
1
Hi i have got problem witch my glowing switch.. when second player want stand at glowing switch putty shows me this :
Code:
[Error - MoveEvents Interface]
data/movements/scripts/tiles.lua:onStepIn
Description:
data/movements/scripts/tiles.lua:8: attempt to call global 'Player' (a nil value)
stack traceback:
data/movements/scripts/tiles.lua:8: in function <data/movements/scripts/tiles.lua:4>

my tiles.lua
Code:
local increasing = {[416] = 417, [426] = 425, [446] = 447, [3216] = 3217, [3202] = 3215, [11062] = 11063}
local decreasing = {[417] = 416, [425] = 426, [447] = 446, [3217] = 3216, [3215] = 3202, [11063] = 11062}

function onStepIn(cid, item, position, fromPosition)
if not increasing[item.itemid] then
return false
end
local player = Player(cid)
if not player or player:isInGhostMode() then
return false
end
Item(item.uid):transform(increasing[item.itemid])

if item.actionid >= 1000 then
if player:getLevel() < item.actionid - 1000 then
player:teleportTo(fromPosition, false)
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_INFO_DESCR, "The tile seems to be protected against unwanted intruders.")
end
return true
end

if item.actionid ~= 0 and player:getStorageValue(item.actionid) <= 0 then
player:teleportTo(fromPosition, false)
position:sendMagicEffect(CONST_ME_MAGIC_BLUE)
player:sendTextMessage(MESSAGE_INFO_DESCR, "The tile seems to be protected against unwanted intruders.")
return true
end

if position:getTile():hasFlag(TILESTATE_PROTECTIONZONE) then
local lookPos = player:getPosition()
lookPos:getNextPosition(player:getDirection())
local depotItem = lookPos:getTile():getItemByType(ITEM_TYPE_DEPOT)
if depotItem ~= nil then
local depotItems = player:getDepotChest(getDepotId(depotItem:getUniqueId()), true):getItemHoldingCount()
player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Your depot contains " .. depotItems .. " item" .. (depotItems > 1 and "s." or "."))
return true
end
end

return true
end

function onStepOut(cid, item, position, fromPosition)
if not decreasing[item.itemid] then
return false
end
local player = Player(cid)
if not player or player:isInGhostMode() then
return false
end
Item(item.uid):transform(decreasing[item.itemid])

return true
end

and my walkthrough
Code:
[LIST=1]
bool Player::canWalkthrough(const Creature* creature) const
{
        if(creature->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) && creature->getTile()->ground &&
                Item::items[creature->getTile()->ground->getID()].walkStack)
                return true;

        if(creature == this || hasFlag(PlayerFlag_CanPassThroughAllCreatures) || creature->isWalkable() ||
        std::find(forceWalkthrough.begin(), forceWalkthrough.end(), creature->getID()) != forceWalkthrough.end()
        || (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster())))
                return true;

        const Player* player = creature->getPlayer();
        if(!player)
                return false;

        if((((g_game.getWorldType() == WORLDTYPE_OPTIONAL && !player->isEnemy(this, true) && player->getVocation()->isAttackable())
        || player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) || (player->getVocation()->isAttackable()
        && player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL))) && player->getTile()->ground &&
        Item::items[player->getTile()->ground->getID()].walkStack) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges)
        || player->getAccess() <= getAccess()))
        return true;

return (player->isGhost() && getGhostAccess() < player->getGhostAccess())
        || (isGhost() && getGhostAccess() > player->getGhostAccess());
}
[/LIST]
 
Code:
[LIST=1]
[*]local config = {
[*]maxLevel = getConfigInfo('maximumDoorLevel')
[*]}
[*]

[*]local increasingItems = {[416] = 417, [426] = 425, [446] = 447, [3216] = 3217, [3202] = 3215, [11062] = 11063}
[*]local decreasingItems = {[417] = 416, [425] = 426, [447] = 446, [3217] = 3216, [3215] = 3202, [11063] = 11062}
[*]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 - 1000 <= 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
[/LIST]
i have got this tiles.lua too but with this doesn't work too
 
Back
Top