Buenas galera do XTibia, to com um probleminha nas portas quando faço o uso de chaves, é o seguinte:
- Tanto a porta quanto a chave tem o mesmo action ID 100 adicionados pelo remeres mapeditor
- A porta vem trancada e quando uso a chave nela ela abre normalmente, até ai esta tudo certo
- Quando tento fechar com a chave, nada acontece << aqui ja esta errado
- Quando fecho "manualmente" usando o botao direito direto na porta ela fecha e ja tranca << aqui tbm está errado pois gostaria que fosse igual ao global
Essa é minha doors.lua se alguém souber me ajudar:
localfunction checkStackpos(item, position)
position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local thing = getThingFromPos(position)
position.stackpos = STACKPOS_TOP_FIELD
local field = getThingFromPos(position)return(item.uid == thing.uid or thing.itemid <100or field.itemid ==0)endlocalfunction doorEnter(cid, item, toPosition)
doTransformItem(item.uid, item.itemid +1)
doTeleportThing(cid, toPosition)endfunction onUse(cid, item, fromPosition, itemEx, toPosition)if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid)and getTileInfo(fromPosition).protection)then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)returntrueendif(getItemLevelDoor(item.itemid)>0)thenif(item.actionid ==189)thenif(not isPremium(cid))then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")returntrueend
doorEnter(cid, item, toPosition)returntrueendlocal gender = item.actionid -186if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender))thenif(gender ~= getPlayerSex(cid))then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")returntrueend
doorEnter(cid, item, toPosition)returntrueendlocal skull = item.actionid -180if(skull >= SKULL_NONE and skull <= SKULL_BLACK)thenif(skull ~= getCreatureSkullType(cid))then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")returntrueend
doorEnter(cid, item, toPosition)returntrueendlocal group = item.actionid -150if(group >=0and group <30)thenif(group > getPlayerGroupId(cid))then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")returntrueend
doorEnter(cid, item, toPosition)returntrueendlocal vocation = item.actionid -100if(vocation >=0and vocation <50)thenlocal playerVocationInfo = getVocationInfo(getPlayerVocation(cid))if(playerVocationInfo.id ~= vocation and playerVocationInfo.fromVocation ~= vocation)then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")returntrueend
doorEnter(cid, item, toPosition)returntrueendif(item.actionid ==190or(item.actionid ~=0and getPlayerLevel(cid)>=(item.actionid - getItemLevelDoor(item.itemid))))then
doorEnter(cid, item, toPosition)else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Only the worthy may pass.")endreturntrueendif(isInArray(specialDoors, item.itemid))thenif(item.actionid ==100or(item.actionid ~=0and getPlayerStorageValue(cid, item.actionid)>0))then
doorEnter(cid, item, toPosition)else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"The door seems to be sealed against unwanted intruders.")endreturntrueendif(isInArray(keys, item.itemid))thenif(itemEx.actionid >0)thenif(item.actionid == itemEx.actionid and doors[itemEx.itemid]~=nil)then
doTransformItem(itemEx.uid, doors[itemEx.itemid])returntrueend
doPlayerSendCancel(cid,"The key does not match.")returntrueendreturnfalseendif(isInArray(horizontalOpenDoors, item.itemid)and checkStackpos(item, fromPosition))thenlocal newPosition = toPosition
newPosition.y = newPosition.y +1local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)if(doorCreature.itemid ~=0)thenlocal pzDoorPosition = getTileInfo(doorPosition).protection
local pzNewPosition = getTileInfo(newPosition).protection
if((pzDoorPosition andnot pzNewPosition and doorCreature.uid ~= cid)or(not pzDoorPosition and pzNewPosition and doorCreature.uid == cid and isPlayerPzLocked(cid)))then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)else
doTeleportThing(doorCreature.uid, newPosition)if(not isInArray(closingDoors, item.itemid))then
doTransformItem(item.uid, item.itemid -1)endendreturntrueend
doTransformItem(item.uid, item.itemid -1)returntrueendif(isInArray(verticalOpenDoors, item.itemid)and checkStackpos(item, fromPosition))thenlocal newPosition = toPosition
newPosition.x = newPosition.x +1local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)if(doorCreature.itemid ~=0)thenif(getTileInfo(doorPosition).protection andnot getTileInfo(newPosition).protection and doorCreature.uid ~= cid)then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)else
doTeleportThing(doorCreature.uid, newPosition)if(not isInArray(closingDoors, item.itemid))then
doTransformItem(item.uid, item.itemid -1)endendreturntrueend
doTransformItem(item.uid, item.itemid -1)returntrueendif(doors[item.itemid]~=niland checkStackpos(item, fromPosition))thenif(item.actionid ==0)then
doTransformItem(item.uid, doors[item.itemid])else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"It is locked.")endreturntrueendreturnfalseend
Pergunta
Boguemon 3
Buenas galera do XTibia, to com um probleminha nas portas quando faço o uso de chaves, é o seguinte:
- Tanto a porta quanto a chave tem o mesmo action ID 100 adicionados pelo remeres mapeditor
- A porta vem trancada e quando uso a chave nela ela abre normalmente, até ai esta tudo certo
- Quando tento fechar com a chave, nada acontece << aqui ja esta errado
- Quando fecho "manualmente" usando o botao direito direto na porta ela fecha e ja tranca << aqui tbm está errado pois gostaria que fosse igual ao global
Essa é minha doors.lua se alguém souber me ajudar:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados