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

Inquisition quest script

christiandb

Member
Joined
Feb 5, 2008
Messages
2,469
Reaction score
5
Location
010
login.lua:
Code:
-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
SQL_COMUNICATION_INTERVAL = SQL_interval * 1000
function onLogin(cid)
	if(InitShopComunication == 0) then
		local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, {})
		InitShopComunication = eventServ
	end
	registerCreatureEvent(cid, "PlayerDeath")
	registerCreatureEvent(cid, "Ushuriel")
	registerCreatureEvent(cid, "Zugurosh")
	registerCreatureEvent(cid, "Madareth")
	registerCreatureEvent(cid, "Golgordan")
	registerCreatureEvent(cid, "Annihilon")
	registerCreatureEvent(cid, "Hellgorak")
	return TRUE
end

function sql_communication(parameters)
	local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
	if(result_plr:getID() ~= -1) then
		while(true) do
			id = tonumber(result_plr:getDataInt("id"))
            action = tostring(result_plr:getDataString("action"))
			delete = tonumber(result_plr:getDataInt("delete_it"))
			cid = getPlayerByName(tostring(result_plr:getDataString("name")))
			if isPlayer(cid) == TRUE then
				local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
				local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
				local container_id = tonumber(result_plr:getDataInt("param3"))
				local container_count = tonumber(result_plr:getDataInt("param4"))
				local add_item_type = tostring(result_plr:getDataString("param5"))
				local add_item_name = tostring(result_plr:getDataString("param6"))
	            local received_item = 0
	            local full_weight = 0
	            if add_item_type == 'container' then
	                container_weight = getItemWeightById(container_id, 1)
					if isItemRune(itemtogive_id) == TRUE then
						items_weight = container_count * getItemWeightById(itemtogive_id, 1)
					else
						items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
					end
	                full_weight = items_weight + container_weight
	            else
	                full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
					if isItemRune(itemtogive_id) == TRUE then
						full_weight = getItemWeightById(itemtogive_id, 1)
					else
						full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
					end
	            end
	            local free_cap = getPlayerFreeCap(cid)
	            if full_weight <= free_cap then
	                if add_item_type == 'container' then
	                    local new_container = doCreateItemEx(container_id, 1)
	                    local iter = 0
	                    while iter ~= container_count do
	                        doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
	                        iter = iter + 1
	                    end
	                    received_item = doPlayerAddItemEx(cid, new_container)
	                else
	                    local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
	                    received_item = doPlayerAddItemEx(cid, new_item)
	                end
	                if received_item == RETURNVALUE_NOERROR then
	                    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
	                    db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
						db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
	                else
	                    doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
	                end
	            else
	                doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
	            end
	        end
			if not(result_plr:next()) then
				break
			end
		end
		result_plr:free()
    end
    local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, parameters)
end
ushuriel.lua in createscripts:
Code:
function onKill(cid, target)
local minutes = 3 -- How long people will be able to pass the teleport
local seconds = 1 -- This is in a addition with minutes
local monstername = "Ushuriel" -- Put the Monster name in there which has to be defeated
	if (isPlayer(target) ~= TRUE) then
		if (getCreatureName(target) == monstername) then
			setGlobalStorageValue(5000,1)
			addEvent(timeToPas,(1000*60*minutes) + (1000*seconds))
		else
			return FALSE
		end
	else
		return FALSE
	end
	return TRUE
end

function timeToPas()
	setGlobalStorageValue(5000,-1)
	return TRUE
end
creaturescripts.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
	<event type="login" name="PlayerLogin" script="login.lua"/>
	<event type="death" name="PlayerDeath" script="playerdeath.lua"/>
<event type="kill" name="Hellgorak" script="hellgorak.lua"/>
<event type="kill" name="Annihilon" script="annihilon.lua"/>
<event type="kill" name="Golgordan" script="golgordan.lua"/>
<event type="kill" name="Madareth" script="madareth.lua"/>
<event type="kill" name="Ushuriel" script="ushuriel.lua"/>
<event type="kill" name="Zugurosh" script="zugurosh.lua"/>
</creaturescripts>
ushuriel.lua in movements:
Code:
function onStepIn(cid, item, frompos, item2, topos)
local teleporter = 33330 -- actionid of the tp
local getValue = TRUE -- only TRUE or FALSE work on it (shall the player get a storagevalue so it can be noticed that he has defeated that boss?)
local storagevalue = 33330 -- storagevalue which he'll get if the option "getValue" is set as "TRUE"
local pos = {x=33094,y=31453,z=10} -- position where he should be teleported
	if item.actionid == teleporter then
		if getGlobalStorageValue(500) == TRUE then
			doTeleportThing(cid,pos,0)
			doPlayerSendTextMessage(cid,21,"You where granted to leave this place.")
			if (getValue == TRUE) then
				setPlayerStorageValue(cid,storagevalue,1)
			elseif (getValue == FALSE) then
				return TRUE
			end
		else
			doPlayerSendCancel(cid,"You have to defeat the Boss first to get through this.")
		end
	end
	return TRUE
end
movements.xml
Code:
    <movevent event="StepIn" actionid="33330" script="inquisition/ushuriel.lua"/>
the tp:
Code:
16:37 You see a magic forcefield.
ItemID: [1387].
ActionID: [33330].
Position: [X: 33137] [Y: 31502] [Z: 7]

It doesn't give an error :S

Thanks in advance,

Chris~
 
Back
Top Bottom