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

Lua Quest script needed!

TKO

Syphero Owner!
Joined
Mar 10, 2008
Messages
2,252
Reaction score
27
Location
Sweden
Hello im looking for a quest script and i cant find any im using 0.4 dev
 
actions.xml

Code:
<action itemid="1740" script="quests/quest.lua" />
<action itemid="1747" script="quests/quest.lua" />
<action itemid="1748" script="quests/quest.lua" />
<action itemid="1749" script="quests/quest.lua" />
<action itemid="1770" script="quests/quest.lua" />
<action actionid="2000" event="script" value="quests/system.lua"/>
<action actionid="2001" event="script" value="quests/system.lua"/>

actions > scripts < quests
copy any .lua file and change it to: quest.lua

Lua:
  -- simple quests based on uniqueId
-- to make quest create chest on map and set its uniqueId to id of quest item

function onUse(cid, item, frompos, item2, topos)
        prize = item.uid
        count = item.actionid

        if prize > 0 and prize < 9000 then
                queststatus = getPlayerStorageValue(cid,prize)

                if queststatus == -1 then
                        if count > 1 then
                                doPlayerSendTextMessage(cid,22,'You have found '.. count ..' of ' .. getItemName(prize) .. '.')
                                doPlayerAddItem(cid,prize,count)
                                setPlayerStorageValue(cid,prize,1)
                                addPlayerRep(cid, 5, TEXTCOLOR_LIGHTBLUE)      
                        else
                                doPlayerSendTextMessage(cid,22,'You have found a ' .. getItemName(prize) .. '.')
                                doPlayerAddItem(cid,prize,1)
                                setPlayerStorageValue(cid,prize,1)
                                addPlayerRep(cid, 5, TEXTCOLOR_LIGHTBLUE)      
                        end
                else
                        doPlayerSendTextMessage(cid,22,"It is empty.")
                end

                return 1
        else
                return 0
        end
end

Copy and rename another .lua file to: system.lua

PHP:
local specialQuests = {
	[2001] = 30015 --Annihilator
}

local questsExperience = {
	[30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF, cid)
		return true
	end

	local storage = specialQuests[item.actionid]
	if(not storage) then
		storage = item.uid
		if(storage > 65535) then
			return false
		end
	end

	if(getPlayerStorageValue(cid, storage) > 0) then
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
		return true
	end

	local items = {}
	local reward = 0

	local size = isContainer(item.uid) and getContainerSize(item.uid) or 0
	if(size == 0) then
		reward = doCopyItem(item, false)
	else
		for i = 0, size do
			local tmp = getContainerItem(item.uid, i)
			if(tmp.itemid > 0) then
				table.insert(items, tmp)
			end
		end
	end

	size = table.maxn(items)
	if(size == 1) then
		reward = doCopyItem(items[1], true)
	end

	local result = ""
	if(reward ~= 0) then
		local ret = getItemDescriptions(reward.uid)
		if(reward.type > 0 and isItemRune(reward.itemid)) then
			result = reward.type .. " charges " .. ret.name
		elseif(reward.type > 0 and isItemStackable(reward.itemid)) then
			result = reward.type .. " " .. ret.plural
		else
			result = ret.article .. " " .. ret.name
		end
	else
		if(size > 20) then
			reward = doCopyItem(item, false)
		elseif(size > 8) then
			reward = getThing(doCreateItemEx(1988, 1))
		else
			reward = getThing(doCreateItemEx(1987, 1))
		end

		for i = 1, size do
			local tmp = doCopyItem(items[i], true)
			if(doAddContainerItemEx(reward.uid, tmp.uid) ~= RETURNVALUE_NOERROR) then
				print("[Warning] QuestSystem:", "Could not add quest reward")
			else
				local ret = ", "
				if(i == 2) then
					ret = " and "
				elseif(i == 1) then
					ret = ""
				end

				result = result .. ret
				ret = getItemDescriptions(tmp.uid)
				if(tmp.type > 0 and isItemRune(tmp.itemid)) then
					result = result .. tmp.type .. " charges " .. ret.name
				elseif(tmp.type > 0 and isItemStackable(tmp.itemid)) then
					result = result .. tmp.type .. " " .. ret.plural
				else
					result = result .. ret.article .. " " .. ret.name
				end
			end
		end
	end

	if(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
		result = "You have found a reward weighing " .. getItemWeight(reward.uid) .. " oz. It is too heavy or you have not enough space."
	else
		result = "You have found " .. result .. "."
		setPlayerStorageValue(cid, storage, 1)
		if(questsExperience[storage] ~= nil) then
			doPlayerAddExp(cid, questsExperience[storage])
			doSendAnimatedText(getCreaturePosition(cid), questsExperience[storage], TEXTCOLOR_WHITE)
		end
	end

	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
	return true
end

I hope is that what you want :huh:
 
@edit
Test this?
HTML:
function onUse(cid, item, frompos, item2, topos)


	if item.uid == 50032 then
		if getPlayerStorageValue(cid,50032) == -1 then
			doPlayerSendTextMessage(cid,25,"You have found a Crystal Coins.")
			doPlayerAddItem(cid,2160,1)
			setPlayerStorageValue(cid,50032,1)
		else
			doPlayerSendTextMessage(cid,25,"The is empty.")
		end

	end
	return TRUE
end
@Kekox
o.o
you dont are in your blackberry xDD!?
 
Last edited:
@Up
?? Thanks for exchanging gold..

@~
Here you go..
Lua:
local cfg = {
      addItem = 2112,
      amount = 5,
      storId = 41200
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if getPlayerStorageValue(cid, cfg.storId) == -1 then
            doPlayerAddItem(cid, cfg.addItem, cfg.amount)
            doPlayerSendTextMessage(cid, 22, "You have found " .. getItemArticleById(cfg.addItem) .. " " .. getItemNameById(cfg.addItem) .. ".")
            setPlayerStorageValue(cid, cfg.storId, 1)
            doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)
         else
             doPlayerSendTextMessage(cid, 22, "It is empty.")
             doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
         end
         return true
end
 
@Up
?? Thanks for exchanging gold..

@~
Here you go..
Lua:
local cfg = {
      addItem = 2112,
      amount = 5,
      storId = 41200
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if getPlayerStorageValue(cid, cfg.storId) == -1 then
            doPlayerAddItem(cid, cfg.addItem, cfg.amount)
            doPlayerSendTextMessage(cid, 22, "You have found " .. getItemArticleById(cfg.addItem) .. " " .. getItemNameById(cfg.addItem) .. ".")
            setPlayerStorageValue(cid, cfg.storId, 1)
            doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)
         else
             doPlayerSendTextMessage(cid, 22, "It is empty.")
             doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
         end
         return true
end

i like, and'll use this one :p
 
@Up
?? Thanks for exchanging gold..

@~
Here you go..
Lua:
local cfg = {
      addItem = 2112,
      amount = 5,
      storId = 41200
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if getPlayerStorageValue(cid, cfg.storId) == -1 then
            doPlayerAddItem(cid, cfg.addItem, cfg.amount)
            doPlayerSendTextMessage(cid, 22, "You have found " .. getItemArticleById(cfg.addItem) .. " " .. getItemNameById(cfg.addItem) .. ".")
            setPlayerStorageValue(cid, cfg.storId, 1)
            doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)
         else
             doPlayerSendTextMessage(cid, 22, "It is empty.")
             doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
         end
         return true
end

thanks i will test this:)
 
i dont know why this happens to me i try to make a quest and this happen to me

[15/08/2010 18:05:39] Lua Script Error: [Action Interface]
[15/08/2010 18:05:39] data/actions/scripts/quests/system.lua:eek:nUse

[15/08/2010 18:05:39] data/actions/scripts/quests/system.lua:10: attempt to call global 'getPlayerCustomFlagValue' (a nil value)
[15/08/2010 18:05:39] stack traceback:
[15/08/2010 18:05:39] data/actions/scripts/quests/system.lua:10: in function <data/actions/scripts/quests/system.lua:9>
 
System.lua
Lua:
local specialQuests = {
    [2001] = 30015 --Annihilator
}

local questsExperience = {
    [30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local storage = specialQuests[item.actionid]
    if(not storage) then
        storage = item.uid
        if(storage > 65535) then
            return false
        end
    end

    if(getPlayerStorageValue(cid, storage) > 0) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        return true
    end

    local items = {}
    local reward = 0

    local size = isContainer(item.uid) and getContainerSize(item.uid) or 0
    if(size == 0) then
        reward = doCopyItem(item, false)
    else
        for i = 0, size do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                table.insert(items, tmp)
            end
        end
    end

    size = table.maxn(items)
    if(size == 1) then
        reward = doCopyItem(items[1], true)
    end

    local result = ""
    if(reward ~= 0) then
        local ret = getItemDescriptions(reward.uid)
        if(reward.type > 0 and isItemRune(reward.itemid)) then
            result = reward.type .. " charges " .. ret.name
        elseif(reward.type > 0 and isItemStackable(reward.itemid)) then
            result = reward.type .. " " .. ret.plural
        else
            result = ret.article .. " " .. ret.name
        end
    else
        if(size > 20) then
            reward = doCopyItem(item, false)
        elseif(size > 8) then
            reward = getThing(doCreateItemEx(1988, 1))
        else
            reward = getThing(doCreateItemEx(1987, 1))
        end

        for i = 1, size do
            local tmp = doCopyItem(items[i], true)
            if(doAddContainerItemEx(reward.uid, tmp.uid) ~= RETURNVALUE_NOERROR) then
                print("[Warning] QuestSystem:", "Could not add quest reward")
            else
                local ret = ", "
                if(i == 2) then
                    ret = " and "
                elseif(i == 1) then
                    ret = ""
                end

                result = result .. ret
                ret = getItemDescriptions(tmp.uid)
                if(tmp.type > 0 and isItemRune(tmp.itemid)) then
                    result = result .. tmp.type .. " charges " .. ret.name
                elseif(tmp.type > 0 and isItemStackable(tmp.itemid)) then
                    result = result .. tmp.type .. " " .. ret.plural
                else
                    result = result .. ret.article .. " " .. ret.name
                end
            end
        end
    end

    if(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
        result = "You have found a reward weighing " .. getItemWeight(reward.uid) .. " oz. It is too heavy or you have not enough space."
    else
        result = "You have found " .. result .. "."
        setPlayerStorageValue(cid, storage, 1)
        if(questsExperience[storage] ~= nil) then
            doPlayerAddExp(cid, questsExperience[storage])
            doSendAnimatedText(getCreaturePosition(cid), questsExperience[storage], TEXTCOLOR_WHITE)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
    return true
end
Works with gods, gamemasters too. Removed that stupid line for it.
 
Back
Top