What's new

Skrypty & Kody skrzynka questowa tfs

Status
Not open for further replies.

Krzysieq miszcz

Active User
Joined
May 20, 2012
Messages
72
Reaction score
4
Witam mam problem ze skrzynk? questow?, jak to zawsze bywa w TFS nadaje action id 2000 a unique id id nagrody, lecz co? nie dzia?a i zamiast nagrody dostaje pusta skrzynke :/.

Oto moj skrypt:
Code:
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

Czy ktos potrafi zrobic tak, by po wpisaniu danego action id w RME i unique jako id nagrody dzia?a? quest?
Wynagrodze reputem
 

Matt

Banned
Joined
May 9, 2013
Messages
595
Reaction score
46
Odp: skrzynka questowa tfs

Ym no og?lnie to nie wiem z czym masz problem, ale skrypt dzia?a.
Ten skrypt jest napisany tak, ?e nagrody ustawiasz w skrzynce, w map editorze, do tej skrzynki wsadzasz przedmioty, nadajesz action id, ustawiasz skrypt i dzia?a.
Po prostu dodaj nagrody do tej skrzynki i b?dzie Ci je dawa? i w tej skrzynce, co ci daje, znajda sie nagrody dodatkowo.
 

Krzysieq miszcz

Active User
Joined
May 20, 2012
Messages
72
Reaction score
4
Odp: skrzynka questowa tfs

Wiem ze pytanie by?o banalne, ale jestem w tym newbie.
Dzieki za szybk? i konkretn? odpowied?, nie spodziewa?em sie tego na tym forum xD.

Leci reput, + THX wielkie! :*
 
Status
Not open for further replies.
Top