• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Complete Inquisition Tutorial

SoloQ

Hard With Style
Joined
Mar 12, 2009
Messages
557
Reaction score
21
Location
Netherlands ;3
Hi guys,

These are scripts for the inquisition quest.
They have been tested on 0.3.7!

Edited on 8-6-2013:
I have changed something that should allow it to work on all versions now.
-Credits to Limos for telling me.


Add these things in your script folders, positions are set as in real tibia so if you use a custom map do change them!

This inquisition tutorial contains MoveEvents, Actions and Creaturescripts (2 out of 3 are for this section so I posted it here)



Chests Part


Actions.xml
XML:
<!-- INQ Chests -->
	<action uniqueid="1300-1308" event="script" value="quests/inqchests.lua" />
'

inqchests.lua place in actions/scripts/quests
Lua:
local t = {
    [1300] = {8890, 1},
    [1301] = {8918, 1},
    [1302] = {8881, 1},
    [1303] = {8888, 1},
    [1304] = {8881, 1},
    [1305] = {8924, 1},
    [1306] = {8928, 1},
    [1307] = {8930, 1},
    [1308] = {8854, 1}
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local v, storage, outfitId = t[item.uid], 6076, 20
    if v then        
        if (getPlayerStorageValue(cid, storage) < 0) then
            doPlayerAddOutfitId(cid, outfitId, 3)
            doPlayerAddItem(cid, v[1], v[2])
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have found " .. getItemDescriptionsById(v[1]).name .. ".")
            doSendMagicEffect(getThingPos(cid), CONST_ME_HOLYAREA)
            setPlayerStorageValue(cid, storage, 1)
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have already taken your reward.")
            end
        end
    return true
end

Unique id's added on chests:
1300 = Robe of Underworld
1301 = Spellbook of Dark Mysteries
1302 = Fireborn Giant Armor
1303 = Master Archer's Armor
1304 = Royal Crossbow
1305 = Hellforged Axe
1306 = Obsidian Truncheon
1307 = Emerald Sword
1308 = Warsinger Bow

--note: script only allows one to be picked!

Teleport if bosses killed part

Creaturescripts.xml
XML:
	<event type="kill" name="Inq" event="script" value="Inquisition.lua"/>

Also add
Lua:
	registerCreatureEvent(cid, "Inq")

In the login.lua found in creaturescripts/scripts


And Inquisition.lua (with capital i) in creaturescripts/scripts
Lua:
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

The teleport position is the spot where the teleport will appear when the boss has been killed, also the brother bosses need to be killed both before the teleport will appear.

Teleport configuration

movements.xml
XML:
	<!--INQ-->
	<movevent type="StepIn" actionid="1001" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="1002" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="1003" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="1004" event="script" value="inq.lua"/>			
	<movevent type="StepIn" actionid="1005" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="1006" event="script" value="inq.lua"/>	
	
	<movevent type="StepIn" actionid="2001" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="2002" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="2003" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="2004" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="2005" event="script" value="inq.lua"/>	
	
	
	
	<movevent type="StepIn" actionid="3000" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="3001" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3002" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3003" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3004" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3005" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3006" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3007" event="script" value="inq.lua"/>
	<movevent type="StepIn" actionid="3008" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="3009" event="script" value="inq.lua"/>	
	<movevent type="StepIn" actionid="3010" event="script" value="inq.lua"/>

inq.lua in movements/scripts (this one is will small i not like the one before).
Lua:
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,TALKTYPE_ORANGE_1)
		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,TALKTYPE_ORANGE_1)
			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,TALKTYPE_ORANGE_1)
		end
	end
end

Explanation:

Bosses: The teleport that the bosses have created are teleport with no destination, they get an action id!!!! So if Ushuriel is dead the teleport gets action id 1001 what will teleport him to the 1001 coordinations and show the text Entering The Crystal Caves.

Mainroom:The teleports in the mainroom will have the id's 2001-2005 it will check if you have killed the boss first, if you have killed the boss you can proceed threw the teleport so if you have killed for instance Ushuriel and have gone threw his teleport you can go to the Crystal Caves. If you haven't killed him and gone threw his teleport you cannot go to the Crystal Caves.

Portals: All the portals in the quest work with action id's not with teleport destinations so you will have to add the id's on the teleports so they teleport you to your destination.
So for example all the teleport that will go to the Inquisition Portal Room will have the action id 3000.
These are placed in the bosses teleports for if you want to go back (NOT THE ONE CREATED!!!), or placed at Crystal Caves when you enter, there is also a teleport to get back to the Portals room there.


I hope this helped you.

-SoloQ

--note: I do not know who the original creator is.
 
Last edited:
Needs tabbing and loooooooooooooooooooooooops. Besides that it's handy. :)
 
Thanks man.

I didn't make it myself, it was from a datapack but I thought it would be handy to have a INQ tutorial here :).
 
Thank you SoloQ for the tutorial, works great! Just only last room @Nexus wasn't working for me, so I made it by my own.
Tested on on 0.3.6 pl1
 
My Tibia crashes when I enter most portals :S

The portals going FROM the portalroom seems to be working, rest is crashing

EDIT:

Ah I know what it is

Change all of the

Code:
doCreatureSay(cid,t.text,19,1, config.e)

to

Code:
doCreatureSay(cid,t.text,TALKTYPE_ORANGE_1)
 
What is the version you are using?

They have been tested on 0.3.7 so that might be the problem.
 
Last edited:
Back
Top