PR

Bug Nas Doors

Por profelezio, 09 de mai. de 2012 em Scripts

script
6
2.1k
profelezioP
09 de maio de 2012 às 16:34

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

Makelin1M
09 de maio de 2012 às 17:15

posta o script da door ai que talvez eu consiga arruma

ate

profelezioP
09 de maio de 2012 às 18:38

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

Makelin1M
09 de maio de 2012 às 18:50

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

profelezioP
10 de maio de 2012 às 00:05

ta dando o mesmo erro ainda maan... que merda, pior que eu ja peguei mais uns dois scripts de outros serves de door, e continua dando a mesma coisa

Makelin1M
10 de maio de 2012 às 21:14

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