Ir para conteúdo

Featured Replies

Postado

.Qual servidor ou website você utiliza como base? 

8.60

 

Estava fazendo uma "quest final" em meu servidor, e o intuito dessa quest final é entregar um item editado aleatoriamente para o player que terminar (pode pegar de 1 em 1 semana)

 

Estava até pensando em utilizar o sistema que o @Imperius fez, neste tópico: 

 

 

Só que não precisaria ser tão complexo não, ali ele fez um tanto de coisa específica, queria mesmo tipo, clicou no baú, ganhou 1 dessas 3 armas:

 

NGO Kunai (id: 12624)
NGO Shield (id: 12625)
NGO Sword (id: 12626)

 

só que editadas, por exemplo:

 

Se vier a NGO Kunai, pode vir com attack de +600 até +1200 e Distance de +10 até +50
Se vier o NGO Shield, pode vir com def de +100 até +600 e Protection all de +1 até +15

Se vier a NGO Sword, pode vir com attack de +600 até +1200 e Sword Fighting de +10 até +50

 

Alguém poderia me ajudar?

 

Postado

  

3 horas atrás, katumblo disse:

.Qual servidor ou website você utiliza como base? 

8.60

 

Estava fazendo uma "quest final" em meu servidor, e o intuito dessa quest final é entregar um item editado aleatoriamente para o player que terminar (pode pegar de 1 em 1 semana)

 

Estava até pensando em utilizar o sistema que o @Imperius fez, neste tópico: 

 

 

Só que não precisaria ser tão complexo não, ali ele fez um tanto de coisa específica, queria mesmo tipo, clicou no baú, ganhou 1 dessas 3 armas:

 

NGO Kunai (id: 12624)
NGO Shield (id: 12625)
NGO Sword (id: 12626)

 

só que editadas, por exemplo:

 

Se vier a NGO Kunai, pode vir com attack de +600 até +1200 e Distance de +10 até +50
Se vier o NGO Shield, pode vir com def de +100 até +600 e Protection all de +1 até +15

Se vier a NGO Sword, pode vir com attack de +600 até +1200 e Sword Fighting de +10 até +50

 

Alguém poderia me ajudar?

 

 

Tipo isso?

Spoiler

 

 

em data > actions > actions.xml:

 

<!-- Baú Recompensa -->
<action uniqueid="6600" script="bauRecompensa.lua" />

 

 

actions > scripts> bauRecompensa.lua:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

	local storage = 555000
	local cooldown = 7 -- tempo em (dias).
	local recompensasID = {12624, 12625, 12626}
	local randomRecompensa = recompensasID[math.random(1, #recompensasID)]

	-- function de tempo by FeeTads.
	local function getTimeString(self)
		local format = {
			{'dia', self / 60 / 60 / 24},
			{'hora', self / 60 / 60 % 24},
			{'minuto', self / 60 % 60},
			{'segundo', self % 60}
		}
	
		local out = {}
		for k, t in ipairs(format) do
			local v = math.floor(t[2])
			if(v > 0) then
				table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
			end
		end
		local ret = table.concat(out)
		if ret:len() < 16 and ret:find('segundo') then
			local a, b = ret:find(' e ')
			ret = ret:sub(b+1)
		end
		return ret
	end

	if getPlayerStorageValue(cid, storage) - os.time() >= 1 then
		doPlayerSendCancel(cid, "Voce precisa aguardar "..getTimeString((getPlayerStorageValue(cid, storage)-os.time())).." para usar o bau.")
		return true
	end

	local item = doPlayerAddItem(cid, randomRecompensa, 1)
	doSendMagicEffect(getThingPos(cid), 30)

	if randomRecompensa == 12624 then -- NGO Kunai --
		  local attack = math.random(600, 1200)
		  doItemSetAttribute(item, "attack", attack)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with attack "..attack.."")
		  
	elseif randomRecompensa == 12625 then -- NGO Shield --
		  local defense = math.random(100, 600)
		  doItemSetAttribute(item, "defense", defense)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with defense "..defense.."")

	elseif randomRecompensa == 12626 then -- NGO Sword --
		  local attack = math.random(600, 1200)
		  doItemSetAttribute(item, "attack", attack)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with attack "..attack.."")
	end

	
	setPlayerStorageValue(cid, storage, os.time() + (cooldown)*86400) -- Seta o Cooldown em (dias).

	return true
end

 

 

Só consegui fazer para setar alguns atributos, pelo que vi (não tenho certeza) os demais atributos não vem configurados, então você terá que mexer na source se quiser adiciona-los dessa forma.

Postado
  • Autor
1 hora atrás, Imperius disse:

  

 

Tipo isso?

 

 

em data > actions > actions.xml:

 


<!-- Baú Recompensa -->
<action uniqueid="6600" script="bauRecompensa.lua" />

 

 

actions > scripts> bauRecompensa.lua:

 


function onUse(cid, item, fromPosition, itemEx, toPosition)

	local storage = 555000
	local cooldown = 7 -- tempo em (dias).
	local recompensasID = {12624, 12625, 12626}
	local randomRecompensa = recompensasID[math.random(1, #recompensasID)]

	-- function de tempo by FeeTads.
	local function getTimeString(self)
		local format = {
			{'dia', self / 60 / 60 / 24},
			{'hora', self / 60 / 60 % 24},
			{'minuto', self / 60 % 60},
			{'segundo', self % 60}
		}
	
		local out = {}
		for k, t in ipairs(format) do
			local v = math.floor(t[2])
			if(v > 0) then
				table.insert(out, (k < #format and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
			end
		end
		local ret = table.concat(out)
		if ret:len() < 16 and ret:find('segundo') then
			local a, b = ret:find(' e ')
			ret = ret:sub(b+1)
		end
		return ret
	end

	if getPlayerStorageValue(cid, storage) - os.time() >= 1 then
		doPlayerSendCancel(cid, "Voce precisa aguardar "..getTimeString((getPlayerStorageValue(cid, storage)-os.time())).." para usar o bau.")
		return true
	end

	local item = doPlayerAddItem(cid, randomRecompensa, 1)
	doSendMagicEffect(getThingPos(cid), 30)

	if randomRecompensa == 12624 then -- NGO Kunai --
		  local attack = math.random(600, 1200)
		  doItemSetAttribute(item, "attack", attack)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with attack "..attack.."")
		  
	elseif randomRecompensa == 12625 then -- NGO Shield --
		  local defense = math.random(100, 600)
		  doItemSetAttribute(item, "defense", defense)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with defense "..defense.."")

	elseif randomRecompensa == 12626 then -- NGO Sword --
		  local attack = math.random(600, 1200)
		  doItemSetAttribute(item, "attack", attack)
		  doPlayerSendTextMessage(cid, 22, "Congratulations! You received a "..getItemNameById(randomRecompensa).. " with attack "..attack.."")
	end

	
	setPlayerStorageValue(cid, storage, os.time() + (cooldown)*86400) -- Seta o Cooldown em (dias).

	return true
end

 

 

Só consegui fazer para setar alguns atributos, pelo que vi (não tenho certeza) os demais atributos não vem configurados, então você terá que mexer na source se quiser adiciona-los dessa forma.

 

 

PERFEITO !!!!!

 

Mas eu realmente gostaria muuuuuuuuuuito de adicionar os outros atributos, sabe se teria como fazer isso com alguma outra função ou algo do tipo? nem que seja alguma coisa diferente, tipo, adicionar mais HP ou MANA, pq tipo, como é um item de "end game" gostaira mt que ele tivesse mais atributos que o normal

@Imperius Eu pensei numa maneira pra "burlar" essa função, sabe me dizer se funciona? 

 

A maneira que pensei é o seguinte, se o item tiver entre 600 a 800 de atk, ele da +3 de dist (ou sword, dependendo o item)

se tiver entre 800 a 1000 ele da +5 de dist (ou sword)

se tiver entre 1000 a 1200 ele da +10 de dist (ou sword)

 

Aí com isso, daria pra fazer algum script de "Equip/DeEquip" no movements.xml?

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo