function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.uid == 1300 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found robe of the underworld.")
doPlayerAddItem(cid,8890,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1301 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Spellbook of Dark Mysteries.")
doPlayerAddItem(cid,8918,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1302 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Fireborn Giant Armor.")
doPlayerAddItem(cid,8881,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1303 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Master Archer's Armor.")
doPlayerAddItem(cid,8888,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1304 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Royal Crossbow.")
doPlayerAddItem(cid,8851,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1305 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Hellforged Axe.")
doPlayerAddItem(cid,8924,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1306 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Obsidian Truncheon.")
doPlayerAddItem(cid,8928,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1307 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Emerald Sword.")
doPlayerAddItem(cid,8930,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
elseif item.uid == 1308 then
queststatus = getPlayerStorageValue(cid,6076)
if queststatus == -1 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found a Warsinger Bow.")
doPlayerAddItem(cid,8854,1)
setPlayerStorageValue(cid,6076,1)
if getPlayerSex(cid) == 1 then
doPlayerAddOutfit(cid, 289, 2)
doPlayerAddOutfit(cid, 289, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
elseif getPlayerSex(cid) == 0 then
doPlayerAddOutfit(cid, 288, 2)
doPlayerAddOutfit(cid, 288, 1)
doSendMagicEffect(getCreaturePosition(cid), 49)
end
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "It is empty.")
end
end
return 1
end
E Inquisition.lua (com I maiúsculo) em creaturescripts/scripts -
local config = {
timeToRemove = 120, -- seconds
message = "You now have 2 minutes to exit this room through the teleporter. It will bring you to the next room only during his time or the teleporter will disappear",
teleportId = 9773,
bosses = { -- Monster Name, Teleport Position
["Ushuriel"] = { pos={ x=33157, y=31725, z=11, stackpos=1 }, aid=1001 },
["Zugurosh"] = { pos={ x=33123, y=31689, z=11, stackpos=1 }, aid=1002},
["Madareth"] = { pos={ x=33194, y=31768, z=11, stackpos=1 }, aid=1003},
["Annihilon"] = { pos={ x=33200, y=31704, z=11, stackpos=1 }, aid=1005},
["Hellgorak"] = { pos={ x=33107, y=31735, z=11, stackpos=1 }, aid=1006}
},
brothers ={
["Golgordan"] = {pos={ x=33235, y=31734, z=11, stackpos=1 },aid=1004, brother = "Latrivan"},
["Latrivan"] = {pos={ x=33235, y=31734, z=11, stackpos=1 },aid=1004, brother = "Golgordan"},
brothersArea ={
fromPos = {x = 33224, y = 31722, z = 11},
toPos = {x = 33240, y = 31734, z = 11} } }
}
local function removal(position)
doRemoveThing(getTileItemById(position, config.teleportId).uid, 1)
return TRUE
end
function onKill(cid, target, lastHit)
if(config.bosses[getCreatureName(target)]) then
local t = config.bosses[getCreatureName(target)]
local teleport = doCreateItem(config.teleportId, t.pos)
local position = t.pos
doItemSetAttribute(teleport, "aid", t.aid)
doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1)
addEvent(removal, config.timeToRemove * 1000, position)
elseif(config.brothers[getCreatureName(target)]) then
local t = config.brothers[getCreatureName(target)]
local brother = getCreatureByName(t.brother)
if(isMonster(brother) == true) then
if(isInRange(getCreaturePosition(brother), config.brothers.brothersArea.fromPos, config.brothers.brothersArea.toPos) == true) then
return TRUE
end
else
local teleport = doCreateItem(config.teleportId, t.pos)
local position = t.pos
doItemSetAttribute(teleport, "aid", t.aid)
doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1)
addEvent(removal, config.timeToRemove * 1000, position)
end
end
return TRUE
end
A posição de teletransporte é o local onde o portal vai aparecer quando o boss for morto, também o brother bosses precisam ser mortos para o portal aparecer.
local config = {
bosses={---aid of portal, position where it sends, value it sets, text it shows
[1001] = {pos={x=33069, y=31783, z=13, stackpos=1}, value=1, text="Entering The Crystal Caves"},
[1002] = {pos={x=33371, y=31613, z=14, stackpos=1}, value=2, text="Entering The Blood Halls"},
[1003] = {pos={x=33153, y=31781, z=12, stackpos=1}, value=3, text="Entering The Vats"},
[1004] = {pos={x=33038, y=31753, z=15, stackpos=1}, value=4, text="Entering The Arcanum"},
[1005] = {pos={x=33199, y=31686, z=12, stackpos=1}, value=5, text="Entering The Hive"},
[1006] = {pos={x=33111, y=31682, z=12, stackpos=1}, value=6, text="Entering The Shadow Nexus"}
},
mainroom={---aid, position, lowest value that can use this portal, text
[2001] = {pos={x=33069, y=31783, z=13, stackpos=1}, value=1, text="Entering The Crystal Caves"},
[2002] = {pos={x=33371, y=31613, z=14, stackpos=1}, value=2, text="Entering The Blood Halls"},
[2003] = {pos={x=33153, y=31781, z=12, stackpos=1}, value=3, text="Entering The Vats"},
[2004] = {pos={x=33038, y=31753, z=15, stackpos=1}, value=4, text="Entering The Arcanum"},
[2005] = {pos={x=33199, y=31686, z=12, stackpos=1}, value=5, text="Entering The Hive"} },
portals={---aid, position, text
[3000] = {pos={x=33163, y=31708, z=14}, text="Entering Inquisition Portals Room"},
[3001] = {pos={x=33158, y=31728, z=11}, text="Entering The Ward of Ushuriel"},
[3002] = {pos={x=33169, y=31755, z=13}, text="Entering The Undersea Kingdom"},
[3003] = {pos={x=33124, y=31692, z=11}, text="Entering The Ward of Zugurosh"},
[3004] = {pos={x=33356, y=31590, z=11}, text="Entering The Foundry"},
[3005] = {pos={x=33197, y=31767, z=11}, text="Entering The Ward of Madareth"},
[3006] = {pos={x=33250, y=31632, z=13}, text="Entering The Battlefield"},
[3007] = {pos={x=33232, y=31733, z=11}, text="Entering The Ward of The Demon Twins"},
[3008] = {pos={x=33094, y=31575, z=11}, text="Entering The Soul Wells"},
[3009] = {pos={x=33197, y=31703, z=11}, text="Entering The Ward of Annihilon"},
[3010] = {pos={x=33105, y=31734, z=11}, text="Entering The Ward of Hellgorak"} },
storage=56123,---storage used in boss and mainroom portals
e={} }----dunno whats this but have to be like this to make doCreatureSayWithDelay working, DON'T TOUCH}
function onStepIn(cid, item, position, fromPosition)
if isPlayer(cid) == TRUE then
if(config.bosses[item.actionid]) then
local t= config.bosses[item.actionid]
if getPlayerStorageValue(cid, config.storage)< t.value then
setPlayerStorageValue(cid, config.storage, t.value)
end
doTeleportThing(cid, t.pos)
doSendMagicEffect(getCreaturePosition(cid),10)
doCreatureSay(cid,t.text,19,1, config.e)
elseif(config.mainroom[item.actionid]) then
local t= config.mainroom[item.actionid]
if getPlayerStorageValue(cid, config.storage)>=t.value then
doTeleportThing(cid, t.pos)
doSendMagicEffect(getCreaturePosition(cid),10)
doCreatureSay(cid,t.text,19,1,config.e)
else
doTeleportThing(cid, fromPosition)
doSendMagicEffect(getCreaturePosition(cid),10)
doCreatureSay(cid, 'You don\'t have enough energy to enter this portal', TALKTYPE_ORANGE_1)
end
elseif(config.portals[item.actionid]) then
local t= config.portals[item.actionid]
doTeleportThing(cid, t.pos)
doSendMagicEffect(getCreaturePosition(cid),10)
doCreatureSay(cid,t.text,19,1,config.e)
end
end
end
Explicação:
Bosses: O teleporte que os bosses criaram são teleporte sem destino, que recebem um action ID!! Então, se Ushuriel está morto o teleporte fica action ID 1001 que vai teleportar-lo a cordenada 1001 e mostrar o texto Entering The Crystal Caves.
Mainroom: Os teleports na mainroom terá o ID de 2001-2005 que irá verificar se você matou o primeiro boss, se você matou o bossque você pode prosseguir, se você tiver matado por exemplo Ushuriel você pode ir para as cavernas de cristal. Se você não tiver matado você não pode ir para as Caves de cristal.
Portais: Todos os portais na quest com actionj ID não é com os destinos de teleporte que você terá que adicionar o ID que nos teletransporta para que ele te teleporte para o seu destino.
Assim, por exemplo, todo o teleporte que vai para a Inquisition Portal Room terá a action ID 3000.
Estes são colocados nos bosses teletransporta para se você quiser voltar (não o que foi criado!), ou colocado no Crystal Caves quando você entra, há também um teletransporte para voltar para a sala de Portais.
info
Grupo: Conde
Registrado: 03/09/11
Posts: 703
Reputação: +191
Gênero: Masculino
Char no Tibia: Mirade
Oi pessoal,
Estes são os scripts para a quest inquisition.
Eles foram testados em 0.3.7!
Adicionar estas coisas em suas pastas de script, as posições são definidas como no tibia real, se você usar um mapa personalizado terá que mudá-los!
Este tutorial inquisition contém MoveEvents, Actions e Creaturescripts (2 de 3 são para esta seção para que eu postei aqui).
Chest Parts
Actions.xml -
inqchests.lua fica em actions/scripts/quests -
Unique id's adicionados nos baús:
--Nota: O script permite apenas um para ser escolhido!
Teleport if bosses killed part
Creaturescripts.xml -
Também adicionar -
Em login.lua que fica em creaturescripts/scripts
E Inquisition.lua (com I maiúsculo) em creaturescripts/scripts -
local config = { timeToRemove = 120, -- seconds message = "You now have 2 minutes to exit this room through the teleporter. It will bring you to the next room only during his time or the teleporter will disappear", teleportId = 9773, bosses = { -- Monster Name, Teleport Position ["Ushuriel"] = { pos={ x=33157, y=31725, z=11, stackpos=1 }, aid=1001 }, ["Zugurosh"] = { pos={ x=33123, y=31689, z=11, stackpos=1 }, aid=1002}, ["Madareth"] = { pos={ x=33194, y=31768, z=11, stackpos=1 }, aid=1003}, ["Annihilon"] = { pos={ x=33200, y=31704, z=11, stackpos=1 }, aid=1005}, ["Hellgorak"] = { pos={ x=33107, y=31735, z=11, stackpos=1 }, aid=1006} }, brothers ={ ["Golgordan"] = {pos={ x=33235, y=31734, z=11, stackpos=1 },aid=1004, brother = "Latrivan"}, ["Latrivan"] = {pos={ x=33235, y=31734, z=11, stackpos=1 },aid=1004, brother = "Golgordan"}, brothersArea ={ fromPos = {x = 33224, y = 31722, z = 11}, toPos = {x = 33240, y = 31734, z = 11} } } } local function removal(position) doRemoveThing(getTileItemById(position, config.teleportId).uid, 1) return TRUE end function onKill(cid, target, lastHit) if(config.bosses[getCreatureName(target)]) then local t = config.bosses[getCreatureName(target)] local teleport = doCreateItem(config.teleportId, t.pos) local position = t.pos doItemSetAttribute(teleport, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(removal, config.timeToRemove * 1000, position) elseif(config.brothers[getCreatureName(target)]) then local t = config.brothers[getCreatureName(target)] local brother = getCreatureByName(t.brother) if(isMonster(brother) == true) then if(isInRange(getCreaturePosition(brother), config.brothers.brothersArea.fromPos, config.brothers.brothersArea.toPos) == true) then return TRUE end else local teleport = doCreateItem(config.teleportId, t.pos) local position = t.pos doItemSetAttribute(teleport, "aid", t.aid) doCreatureSay(cid, config.message, TALKTYPE_ORANGE_1) addEvent(removal, config.timeToRemove * 1000, position) end end return TRUE endA posição de teletransporte é o local onde o portal vai aparecer quando o boss for morto, também o brother bosses precisam ser mortos para o portal aparecer.
Teleport configuration
movements.xml -
inq.lua em movements/scripts -
local config = { bosses={---aid of portal, position where it sends, value it sets, text it shows [1001] = {pos={x=33069, y=31783, z=13, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [1002] = {pos={x=33371, y=31613, z=14, stackpos=1}, value=2, text="Entering The Blood Halls"}, [1003] = {pos={x=33153, y=31781, z=12, stackpos=1}, value=3, text="Entering The Vats"}, [1004] = {pos={x=33038, y=31753, z=15, stackpos=1}, value=4, text="Entering The Arcanum"}, [1005] = {pos={x=33199, y=31686, z=12, stackpos=1}, value=5, text="Entering The Hive"}, [1006] = {pos={x=33111, y=31682, z=12, stackpos=1}, value=6, text="Entering The Shadow Nexus"} }, mainroom={---aid, position, lowest value that can use this portal, text [2001] = {pos={x=33069, y=31783, z=13, stackpos=1}, value=1, text="Entering The Crystal Caves"}, [2002] = {pos={x=33371, y=31613, z=14, stackpos=1}, value=2, text="Entering The Blood Halls"}, [2003] = {pos={x=33153, y=31781, z=12, stackpos=1}, value=3, text="Entering The Vats"}, [2004] = {pos={x=33038, y=31753, z=15, stackpos=1}, value=4, text="Entering The Arcanum"}, [2005] = {pos={x=33199, y=31686, z=12, stackpos=1}, value=5, text="Entering The Hive"} }, portals={---aid, position, text [3000] = {pos={x=33163, y=31708, z=14}, text="Entering Inquisition Portals Room"}, [3001] = {pos={x=33158, y=31728, z=11}, text="Entering The Ward of Ushuriel"}, [3002] = {pos={x=33169, y=31755, z=13}, text="Entering The Undersea Kingdom"}, [3003] = {pos={x=33124, y=31692, z=11}, text="Entering The Ward of Zugurosh"}, [3004] = {pos={x=33356, y=31590, z=11}, text="Entering The Foundry"}, [3005] = {pos={x=33197, y=31767, z=11}, text="Entering The Ward of Madareth"}, [3006] = {pos={x=33250, y=31632, z=13}, text="Entering The Battlefield"}, [3007] = {pos={x=33232, y=31733, z=11}, text="Entering The Ward of The Demon Twins"}, [3008] = {pos={x=33094, y=31575, z=11}, text="Entering The Soul Wells"}, [3009] = {pos={x=33197, y=31703, z=11}, text="Entering The Ward of Annihilon"}, [3010] = {pos={x=33105, y=31734, z=11}, text="Entering The Ward of Hellgorak"} }, storage=56123,---storage used in boss and mainroom portals e={} }----dunno whats this but have to be like this to make doCreatureSayWithDelay working, DON'T TOUCH} function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == TRUE then if(config.bosses[item.actionid]) then local t= config.bosses[item.actionid] if getPlayerStorageValue(cid, config.storage)< t.value then setPlayerStorageValue(cid, config.storage, t.value) end doTeleportThing(cid, t.pos) doSendMagicEffect(getCreaturePosition(cid),10) doCreatureSay(cid,t.text,19,1, config.e) elseif(config.mainroom[item.actionid]) then local t= config.mainroom[item.actionid] if getPlayerStorageValue(cid, config.storage)>=t.value then doTeleportThing(cid, t.pos) doSendMagicEffect(getCreaturePosition(cid),10) doCreatureSay(cid,t.text,19,1,config.e) else doTeleportThing(cid, fromPosition) doSendMagicEffect(getCreaturePosition(cid),10) doCreatureSay(cid, 'You don\'t have enough energy to enter this portal', TALKTYPE_ORANGE_1) end elseif(config.portals[item.actionid]) then local t= config.portals[item.actionid] doTeleportThing(cid, t.pos) doSendMagicEffect(getCreaturePosition(cid),10) doCreatureSay(cid,t.text,19,1,config.e) end end endExplicação:
Bosses: O teleporte que os bosses criaram são teleporte sem destino, que recebem um action ID!! Então, se Ushuriel está morto o teleporte fica action ID 1001 que vai teleportar-lo a cordenada 1001 e mostrar o texto Entering The Crystal Caves.
Mainroom: Os teleports na mainroom terá o ID de 2001-2005 que irá verificar se você matou o primeiro boss, se você matou o bossque você pode prosseguir, se você tiver matado por exemplo Ushuriel você pode ir para as cavernas de cristal. Se você não tiver matado você não pode ir para as Caves de cristal.
Portais: Todos os portais na quest com actionj ID não é com os destinos de teleporte que você terá que adicionar o ID que nos teletransporta para que ele te teleporte para o seu destino.
Assim, por exemplo, todo o teleporte que vai para a Inquisition Portal Room terá a action ID 3000.
Estes são colocados nos bosses teletransporta para se você quiser voltar (não o que foi criado!), ou colocado no Crystal Caves quando você entra, há também um teletransporte para voltar para a sala de Portais.
Espero que isso ajude vocês.
Créditos - SoloQ