Ir para conteúdo

Featured Replies

Postado

O problema é o seguinte, estou tentando criar uma sala de recompensa, porém não consigo resolver um seguinte problema.

A quest tem 8 premiações, sendo 5 armas.

 

O problema é o seguinte, o player escolher uma das 5 armas, e ainda sim, consegue pegar as demais, como resolver?

Resolvido por Vodkart

Ir para solução
  • Respostas 7
  • Visualizações 471
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado

Defina apenas uma storage para todas as quests. 

[+] BETA SERVER [+]

HAVOK X

Cliente próprio

http://www.havokx.com.br

Servidor iniciado em fase de testes dia 07/06/2017, servidor ÚNICO no mundo. Servidor totalmente dedicado ao RPG, porém sem abandonar o PVP.

[+] Sistemas exclusivos [+]

Mundo apocalíptico

50+ missões

Monstros exclusivos

Upgrade system

War System

Infection System

Task System Reformulado

Postado
  Em 04/06/2017 em 15:25, JcA disse:

O problema é o seguinte, estou tentando criar uma sala de recompensa, porém não consigo resolver um seguinte problema.

A quest tem 8 premiações, sendo 5 armas.

 

O problema é o seguinte, o player escolher uma das 5 armas, e ainda sim, consegue pegar as demais, como resolver?

Poste a script aí.

Postado
  • Autor
  Em 04/06/2017 em 18:06, Heyron disse:

Você precisa definir o mesmo storage para os scripts de cada baú, se for o caso.

As únicas coisas que precisam ser individuais são os Unique ID no RME, cada baú precisa ter um valor diferente do outro.

 

Dessa seguinte forma, aparece no distro um monte de actionid repetido.

 

Estou usando o script padrao que veio no ot.

 

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

 

 

Editado por JcA (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo