Para negar entrada de players que carregam certos itens, precisa primeiramente adicionar uniqueid nos tiles da área no Remere's Map Editor. Então, abra o RME, vá na área desejada, e adicione o seguinte uniqueid para os tiles dentro da área: 18848 (certifique-se de que esse uniqueid já não está em uso, senão use outro).
Após fazer isso, vá em Data/Movements/Scripts e crie o arquivo tile_access_item.lua e adicione o código dentro:
-- ID DOS ITENS QUE VAI NEGAR O ACESSO DO PLAYER SE ELE CARREGAR NA BAG --
local items = {
2160,
2162,
15000,
}
function onStepIn(cid, item, position, fromPosition)
if not isPlayer(cid) then
return true
end
local items_forbidden = {}
for _, value in ipairs(items) do
if getPlayerItemById(value, true) then
table.insert(items_forbidden, value)
end
end
if #items_forbidden > 0 then
local items_name = ""
for _, value in ipairs(items_forbidden) do
items_name = items_name ~= "" and getItemNameById(value) or (items_name .. "\n" .. getItemNameById(value))
end
doTeleportThing(cid, fromPosition)
doPlayerSendCancel(cid, "You cannot enter here")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot enter here holding the following itens: " .. items_name .. ".")
end
return true
end
Na tabela items coloque todos os id dos itens que se o player carregar ele não terá acesso à área.
Agora abra o movements.xml e adicione a tag:
<movevent type="StepIn" uniqueid="18848" event="script" value="tile_access_item.lua"/>
Tem que colocar o uniqueid que colocou nos tiles no RME.
Agora, sobre Fly/Ride/Surf eu preciso que você coloque seu order.lua da pasta actions para entender como trabalham com essas habilidades no seu servidor, pois, dependendo da base, é diferente a forma como fizeram o script.