Introdução
Olá gente, eutou aqui fazendo mais um tutorial para a comunidade xTibia, e para ajudar as pessoas que nessessitam desse tutor
Primeiramente vou falar daoonde tirei essa idéia de fazer este tutor:
eu estava fazendo meu primeiro mapa estilo global pra lowrate, quando me deparei que:as portas yalahar não abriam!!!
então como sempre que acho um erro vou para o xTibia ver como concerta-lo, e assim fiz, mas nao achei nenhum tutor ensinando concertar isso, intao fui tentar eu mesmo fazer minhas próprias portas, e consegui! Mas nao quero guardar este conhecimento só para mim, quero dividir com todos os Usuários do xTibia.
Explicando o que irei ensinar
Neste tutorial eu irei ensinar a voces fazerem aquelas portas que nao abrem passar a abrir! Muitos ots nao vem com os actions de algumas doors como a yalahar, muitas pessoas ignoram isso e colocam portas diferentes dar paredes, e isso é muito feio, agora, com esse tutorial, podemos fazer um OT perfeito em relaçao a portas
Lembrando:
Essas actions podem ser utilizadas não só para portas mas para janelas tambem.
Tutorial
Primeiramente cheque se seu OT serve tem já alguma action de doors:
- vá em data>actions>actions.xml
procure por algo do genero:
<action fromid="1209" toid="1214" script="other/doors.lua"/><action fromid="1219" toid="1262" script="other/doors.lua"/>
- Para ter mais certeza disso vá em data>actions>scripts>doors.lua ou data>actions>scripts>other>doos.lua ou outro arquivo com nome parecido como porta.lua, gate.lua etc...
Se tais arquivos nao forem encontrados faça o seguinte:
vá em data>actions>scripts>other (caso não tenha a pasta others crie ela) agora copie qualquer arquivo .lua para a pasta other e renomeio para doors.lua, abra-o, delete tudo que tem lá dentro e copie exatamente isso:
function onUse(cid, item, fromPosition, itemEx, toPosition)if isInArray(questDoors, item.itemid) == TRUE then
if 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
elseif isInArray(levelDoors, item.itemid) == TRUE then
if item.actionid > 0 and getPlayerLevel(cid) >= item.actionid - 1000 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
elseif 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
elseif isInArray(horizontalOpenDoors, item.itemid) == 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
doPlayerSendCancel(cid, "Sorry, not possible.")
else
doTeleportThing(doorCreature.uid, newPosition, TRUE)
if isInArray(openSpecialDoors, item.itemid) ~= TRUE then
doTransformItem(item.uid, item.itemid - 1)
end
end
return TRUE
end
doTransformItem(item.uid, item.itemid - 1)
return TRUE
elseif isInArray(verticalOpenDoors, item.itemid) == 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
doPlayerSendCancel(cid, "Sorry, not possible.")
else
doTeleportThing(doorCreature.uid, newPosition, TRUE)
if isInArray(openSpecialDoors, item.itemid) ~= TRUE then
doTransformItem(item.uid, item.itemid - 1)
end
end
return TRUE
end
doTransformItem(item.uid, item.itemid - 1)
return TRUE
elseif doors[item.itemid] ~= nil 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
Não vou explicar exatamente o que é cada "coisa" ali em cima por que vai demorar muito e eu também não sei TUDO ali
AGORA VAMOS CONTINUAR O TUTORIAL
Caso tenha continue a seguir os passos:
Parte 1
colocando as novas doors
Agora que você já checou os arquivos abra data>actions>actions.xml
vá até o fim do bloco de notas de preferencia,
escreva :
<-----Doors by Dendem------>
pode por seu nick, não vai fazer diferença, é apenas para voce identificar onde estão as doors
agora coloque isso por exemplo:
<action fromid="1209" toid="1214" script="other/doors.lua"/><action fromid="1219" toid="1262" script="other/doors.lua"/>
<action fromid="1539" toid="1542" script="other/doors.lua"/>
<action fromid="2086" toid="2092" script="other/doors.lua"/>
<action fromid="3535" toid="3552" script="other/doors.lua"/>
agora vou explicar o que é isto acima para voce fazer suas próprias doors:
olhe essas partes :
fromid="1209" > isso será o ID da porta antes de se usar use nela
toid="1214" > isso será o ID da porta após se usar o use nela
script="other/doors.lua"> isso éonde está o script das doors , mostrando o que vai acontecer com ela após usar o USE
Parte 2
fazendo a door
para fazer a nova door abrir faça o seguinte:
escreva no actions.xml logo embaido de <-----Doors by Dendem------> :
<action fromid="ID ANTES DO USE" toid="ID APOS USE" script="other/doors.lua"/>
por exemplo: coloque no fromid o ID da porta fechada e no toid o ID da porta aberta,
depois copie de novo:
<action fromid="ID ANTES DO USE" toid="ID APOS USE" script="other/doors.lua"/>
ao contrário, no fromid coloque o ID da porta aberta , e no toid o ID da porta fechada,
assim ela poderá abrir e fechar.
TUTORIAL EXCUSIVO PARA O XTIBIA, CRÉDITOS 100% by Dendem
NÃO COPIE, USE SUA CRIATIVIDADE!
Dúvidas, criticas, sujestoes, comentarios:
POSTE, COMENTEM
Em brevo vou postar como ficou a Yalahar door
merece [fixo]
Abraços,
Dendem