Bug Nas Doors

profelezio
em Scripts

profelezio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/06/07Posts: 46Char no Tibia: Eternal Brucy

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

Makelin1

Absoft User =D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/03/12Posts: 651Char no Tibia: Pussycat !

posta o script da door ai que talvez eu consiga arruma

ate

Att

Smartbox

 

 

Ajudei ? + REP

 

Absoft Map

http://www.xtibia.co...__fromsearch__1

 

2575910.gif

profelezio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/06/07Posts: 46Char no Tibia: Eternal Brucy

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

Makelin1

Absoft User =D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/03/12Posts: 651Char no Tibia: Pussycat !

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

Att

Smartbox

 

 

Ajudei ? + REP

 

Absoft Map

http://www.xtibia.co...__fromsearch__1

 

2575910.gif

profelezio

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/06/07Posts: 46Char no Tibia: Eternal Brucy

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

Makelin1

Absoft User =D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/03/12Posts: 651Char no Tibia: Pussycat !

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

Att

Smartbox

 

 

Ajudei ? + REP

 

Absoft Map

http://www.xtibia.co...__fromsearch__1

 

2575910.gif