Ir para conteúdo
  • 0

Bug Nas Doors


profelezio

Pergunta

boa tarde galera!! Eu to com um problema nas doors do meu serv... toda vez que eu clico para abrir uma porta, no meu console aparece no meu console:

 

[16:29:22.470] [Error - Action Interface]

[16:29:22.471] data/actions/scripts/other/doors.lua:onUse

[16:29:22.471] Description:

[16:29:22.471] data/actions/scripts/other/doors.lua:13: attempt to index global

'DOORS' (a nil value)

[16:29:22.472] stack traceback:

[16:29:22.472] data/actions/scripts/other/doors.lua:13: in function <data/actio

ns/scripts/other/doors.lua:7>

 

Ai algumas portas abrem, outras ja nao abrem, mas todas alertam isso ai. Eu to usando o TSF 9.52.

Agradeço desde ja!!!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

segue o script aii:

 

local function doorEnter(cid, uid, id, position)

doTransformItem(uid, id)

doTeleportThing(cid, position)

return true

end

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

return true

end

 

local locked = DOORS[item.itemid]

if(locked) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")

return true

end

 

local door = getItemInfo(item.itemid)

if(door.levelDoor > 0) then

if(item.aid == 189) then

if(not isPremium(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local gender = item.aid - 186

if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE}, gender)) then

if(gender ~= getPlayerSex(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local skull = item.aid - 180

if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then

if(skull ~= getCreatureSkullType(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local group = item.aid - 150

if(group >= 0 and group < 30) then

if(group > getPlayerGroupId(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local vocation = item.aid - 100

if(vocation >= 0 and vocation < 50) then

local vocationEx = getVocationInfo(getPlayerVocation(cid))

if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

if(door.specialDoor) then

if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")

return true

end

 

toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition)

if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then

return true

end

 

local doorCreature = getThingFromPosition(toPosition)

if(doorCreature.itemid ~= 0) then

toPosition.x = toPosition.x + 1

local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles

if(query == RETURNVALUE_NOTPOSSIBLE) then

toPosition.x = toPosition.x - 1

toPosition.y = toPosition.y + 1

query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found

end

 

if(query ~= RETURNVALUE_NOERROR) then

doPlayerSendDefaultCancel(cid, query)

return true

end

 

doTeleportThing(doorCreature.uid, toPosition)

if(not door.closingDoor) then

doTransformItem(item.uid, door.transformUseTo)

end

 

return true

end

 

return false

end

Link para o comentário
Compartilhar em outros sites

  • 0

teste agr ai

acho que arrumei

 

local function doorEnter(cid, uid, id, position)

doTransformItem(uid, id)

doTeleportThing(cid, position)

return true

end

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

return true

end

 

locked = DOORS[item.itemid]

if(locked) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")

return true

end

 

local door = getItemInfo(item.itemid)

if(door.levelDoor > 0) then

if(item.aid == 189) then

if(not isPremium(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local gender = item.aid - 186

if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE}, gender)) then

if(gender ~= getPlayerSex(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local skull = item.aid - 180

if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then

if(skull ~= getCreatureSkullType(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local group = item.aid - 150

if(group >= 0 and group < 30) then

if(group > getPlayerGroupId(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

local vocation = item.aid - 100

if(vocation >= 0 and vocation < 50) then

local vocationEx = getVocationInfo(getPlayerVocation(cid))

if(vocationEx.id ~= vocation and vocationEx.fromVocation ~= vocation) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

if(item.aid == 190 or (item.aid ~= 0 and getPlayerLevel(cid) >= (item.aid - door.levelDoor))) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

return true

end

 

if(door.specialDoor) then

if(item.aid == 100 or (item.aid ~= 0 and getCreatureStorage(cid, item.aid) > 0)) then

return doorEnter(cid, item.uid, door.transformUseTo, toPosition)

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")

return true

end

 

toPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local fields, thing = getTileItemsByType(fromPosition, ITEM_TYPE_MAGICFIELD), getThingFromPosition(toPosition)

if(item.uid ~= thing.uid and thing.itemid >= 100 and table.maxn(fields) ~= 0) then

return true

end

 

local doorCreature = getThingFromPosition(toPosition)

if(doorCreature.itemid ~= 0) then

toPosition.x = toPosition.x + 1

local query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- allow to stack outside doors, but not on teleports or floor changing tiles

if(query == RETURNVALUE_NOTPOSSIBLE) then

toPosition.x = toPosition.x - 1

toPosition.y = toPosition.y + 1

query = doTileQueryAdd(doorCreature.uid, toPosition, 20) -- repeat until found

end

 

if(query ~= RETURNVALUE_NOERROR) then

doPlayerSendDefaultCancel(cid, query)

return true

end

 

doTeleportThing(doorCreature.uid, toPosition)

if(not door.closingDoor) then

doTransformItem(item.uid, door.transformUseTo)

end

 

return true

end

 

return false

end

Link para o comentário
Compartilhar em outros sites

  • 0

teste este script que axei

 

local function checkStackpos(item, position)

position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local thing = getThingfromPos(position)

position.stackpos = STACKPOS_TOP_FIELD

local field = getThingfromPos(position)

if(item.uid ~= thing.uid and thing.itemid >= 100 or field.itemid ~= 0) then

return FALSE

end

 

return TRUE

end

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local nuevas = {

{closed=10269, open=10270},

{closed=10272, open=10273},

{closed=10274, open=10275},

{closed=10276, open=10277},

{closed=10278, open=10279},

{closed=10280, open=10281},

{closed=10282, open=10283},

{closed=10284, open=10285},

{closed=10469, open=10470},

{closed=10471, open=10472},

{closed=10473, open=10474},

{closed=10475, open=10476},

{closed=10478, open=10479},

{closed=10480, open=10481},

{closed=10482, open=10483},

{closed=10484, open=10485},

}

for ia = 1,#nuevas do

if (item.itemid == nuevas[ia].closed) then

doTransformItem(item.uid, nuevas[ia].open)

elseif (item.itemid == nuevas[ia].open) then

doTransformItem(item.uid, nuevas[ia].closed)

end

end

 

if(getItemLevelDoor(item.itemid) > 0) then

if(item.actionid > 0 and getPlayerLevel(cid) >= (item.actionid - getItemLevelDoor(item.itemid))) then

doTransformItem(item.uid, item.itemid + 1)

doTeleportThing(cid, toPosition, TRUE)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")

end

 

return TRUE

end

 

if(isInArray(specialDoors, item.itemid) == TRUE) then

if(item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) ~= -1) then

doTransformItem(item.uid, item.itemid + 1)

doTeleportThing(cid, toPosition, TRUE)

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")

end

 

return TRUE

end

 

if(isInArray(keys, item.itemid) == TRUE) then

if(itemEx.actionid > 0) then

if(item.actionid == itemEx.actionid) then

if doors[itemEx.itemid] ~= nil then

doTransformItem(itemEx.uid, doors[itemEx.itemid])

return TRUE

end

end

 

doPlayerSendCancel(cid, "The key does not match.")

return TRUE

end

 

return FALSE

end

 

if(isInArray(horizontalOpenDoors, item.itemid) == TRUE and checkStackpos(item, fromPosition) == TRUE) then

local newPosition = toPosition

newPosition.y = newPosition.y + 1

local doorPosition = fromPosition

doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local doorCreature = getThingfromPos(doorPosition)

if(doorCreature.itemid ~= 0) then

if(getTilePzInfo(doorPosition) == TRUE and getTilePzInfo(newPosition) == FALSE and doorCreature.uid ~= cid) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

else

doTeleportThing(doorCreature.uid, newPosition, TRUE)

if(isInArray(closingDoors, item.itemid) ~= TRUE) then

doTransformItem(item.uid, item.itemid - 1)

end

end

 

return TRUE

end

 

doTransformItem(item.uid, item.itemid - 1)

return TRUE

end

 

if(isInArray(verticalOpenDoors, item.itemid) == TRUE and checkStackpos(item, fromPosition) == TRUE) then

local newPosition = toPosition

newPosition.x = newPosition.x + 1

local doorPosition = fromPosition

doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE

local doorCreature = getThingfromPos(doorPosition)

if(doorCreature.itemid ~= 0) then

if(getTilePzInfo(doorPosition) == TRUE and getTilePzInfo(newPosition) == FALSE and doorCreature.uid ~= cid) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

else

doTeleportThing(doorCreature.uid, newPosition, TRUE)

if(isInArray(closingDoors, item.itemid) ~= TRUE) then

doTransformItem(item.uid, item.itemid - 1)

end

end

 

return TRUE

end

 

doTransformItem(item.uid, item.itemid - 1)

return TRUE

end

 

if(doors[item.itemid] ~= nil and checkStackpos(item, fromPosition) == TRUE) then

if(item.actionid == 0) then

doTransformItem(item.uid, doors[item.itemid])

else

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")

end

 

return TRUE

end

 

return FALSE

end

 

espero ter ajudado ate

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...