Essa verificação:
if(item.uid == 2500
É totalmente desnecessária, só faz custar mais ao servidor, mesmo que seja pouco, de grão em grão a galinha enche o papo...
Não é necessário colocar () nisso, ficaria até melhor sem , e está faltando return true no final do script, para ele poder abrir a porta caso tenha o skill.
Também poderia fazer assim:
function onUse(cid, item, fromPosition, itemEx, toPosition)
return getPlayerSkillLevel(cid, SKILL_SWORD) < 20 and doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need 20 sword fighting to open this door.") or true
end