Simples, na função dowin que esta no npc você coloca para add uma storage.
depois cria um arquivo onUse para a porta.. se tiver tal storage ele consegue abrir, caso contrario não.
Espero ter ajudado
No NPC coloque isso:
local function doWinDuel(cid, npc)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 147147, 1)
local this = npc
local a = gymbadges[getCreatureName(this)] + 8
doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)
local b = getPlayerItemById(cid, true, a)
if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end
end
Porta: coloque dentro do doors.lua algo como isso:
if getPlayerStorageValue(cid, 147147) >= 1 then
doorEnter(cid, item, toPosition)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")
end