Ir para conteúdo
  • Cadastre-se

(Resolvido)Bau que da item de acordo com a % de chance


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

 

Base: TFS 1.3

 

 

Qual erro está surgindo/O que você procura?

 

Estou procurando um script de um baú que abre com uma determinada chave , após abrir este baú existe a chance em % que pode ganhar o item , em X quantidade.

 

Para exemplificar :

 

o jogador encontra um baú , após encontrar ele tenta abrir com a chave , ele clica na chave e clica no baú  pode acontecer que a chave abra o baú ele recebe a mensagem "parabéns você conseguiu abrir o baú e ganhou 5 de X itens. Após ele abrir este baú ele desaparece ! 

 

Caso o jogador não tenha o item necessário para abrir o baú ele recebe uma mensagem informando que não possui o item para abrir o baú, e caso ele tente abrir o baú com o item mas a chave falha , ele recebe a mensagem dizendo que a chave quebrou na tentativa de abrir o baú, ai é removido apenas 1 chave do inventario dele mas o baú continua ali.

 

Lembrando que o existe uma porcentagem de chance de vim o item e com uma X quantidade então a quantidade do item pode varia de 0 a 10 e a chance de ganha nem que seja 1 do item pode variar de 0 a 10 tbm

 

 

Link para o post
Compartilhar em outros sites
  • Solução

@Adventure script:

Spoiler

local items = {2148, 2152, 2160} -- Itens!
local count = 0
local sto = 23456 -- Storage!
local Key_Id = 12548 -- ID da chave que será necessária para abrir o báu.
local actId_xml = 55555 -- Mesmo action id da xml que você colocou no bau!

function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey)
if type(itemEx) == "userdata" then
	if itemEx:getActionId() == actId_xml then
	if player:getStorageValue(sto) == -1 then
			local chance1 = 50 -- 50% - Porcentagem da chave quebrar.
			local rand1 = math.random(1, 100)
			local item_Give = items[math.random(1, #items)] -- Item Aleatório da tabela!
			if rand1 >= chance1 then
				local rand2 = math.random(1, 100)
					if rand2 >= 5 and rand2 <= 15 then
						count = 2 -- Quantidade de item será 2x caso a chance seja maior ou igual a 5 e menor ou igual 15.
					elseif rand2 >= 16 and rand2 <= 30 then
						count = 4 -- Quantidade de item será 4x caso a chance seja maior ou igual a 16 e menor ou igual 30.
					elseif rand2 >= 31 and rand2 <= 50 then
						count = 6 -- Quantidade de item será 6x caso a chance seja maior ou igual a 31 e menor ou igual 50.
					elseif rand2 >= 51 and rand2 <= 70 then
						count = 7 -- Quantidade de item será 7x caso a chance seja maior ou igual a 51 e menor ou igual 70.
					elseif rand2 >= 71 and rand2 <= 90 then
						count = 8 -- Quantidade de item será 8x caso a chance seja maior ou igual a 71 e menor ou igual 90.
					elseif rand2 >= 91 and rand2 <= 100 then
						count = 10 -- Quantidade de item será 10x caso a chance seja maior ou igual a 91 e menor ou igual 100.
					else
						count = 1 -- Quantidade de item será 1x caso não caia em nenhuma das chances anteriores, no caso, quando a chance é menor que 5.
					end
					player:addItem(item_Give, count)
					player:sendTextMessage(MESSAGE_INFO_DESCR, "Você acabou de ganhar "..count.."x "..(ItemType(item_Give):getName())..".")
					player:setStorageValue(sto, 1)
					item:remove(1)
					itemEx:remove()
			else
				item:remove(1)
				player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua chave quebrou...")
			end
	else
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já fez essa quest.")
	end
	else
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Vocêsó pode usar essa chave no bau de tal lugar.")
	end
else
if player:getStorageValue(sto) == -1 then
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Para fazer essa quest você precisa da chave "..(ItemType(Key_Id):getName())..", clique nela e clique no baú para abri-lo!")
else
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já fez a quest.")
end
end
	
	return true
end

 

 

actions.xml:

<action actionid="55555" script="arquivo.lua" />
<action itemid="12548" script="arquivo.lua" />

A actionid, coloque no bau quando o player clicar no bau ele receberá uma mensagem dizendo que precisa de tal chave, para ele clicar na chave e clicar no bau, o motivo da action é somente para que essa mensagem ocorra naquele bau.

 

E o itemid é o id da chave, o player irá clicar nela e clicar no bau, e ocorrera todo o processo que já está descrito no script, acredito que não tem mais nada que eu possa explicar mas caso não entenda algo é só perguntar.

Abraços!!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
18 horas atrás, KotZletY disse:

@Adventure script:

  Ocultar conteúdo


local items = {2148, 2152, 2160} -- Itens!
local count = 0
local sto = 23456 -- Storage!
local Key_Id = 12548 -- ID da chave que será necessária para abrir o báu.


function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey)
if type(itemEx) == "userdata" then
	if player:getStorageValue(sto) == -1 then
			local chance1 = 50 -- 50% - Porcentagem da chave quebrar.
			local rand1 = math.random(1, 100)
			local item_Give = items[math.random(1, #items)] -- Item Aleatório da tabela!
			if rand1 >= chance1 then
				local rand2 = math.random(1, 100)
					if rand2 >= 5 and rand2 <= 15 then
						count = 2 -- Quantidade de item será 2x caso a chance seja maior ou igual a 5 e menor ou igual 15.
					elseif rand2 >= 16 and rand2 <= 30 then
						count = 4 -- Quantidade de item será 4x caso a chance seja maior ou igual a 16 e menor ou igual 30.
					elseif rand2 >= 31 and rand2 <= 50 then
						count = 6 -- Quantidade de item será 6x caso a chance seja maior ou igual a 31 e menor ou igual 50.
					elseif rand2 >= 51 and rand2 <= 70 then
						count = 7 -- Quantidade de item será 7x caso a chance seja maior ou igual a 51 e menor ou igual 70.
					elseif rand2 >= 71 and rand2 <= 90 then
						count = 8 -- Quantidade de item será 8x caso a chance seja maior ou igual a 71 e menor ou igual 90.
					elseif rand2 >= 91 and rand2 <= 100 then
						count = 10 -- Quantidade de item será 10x caso a chance seja maior ou igual a 91 e menor ou igual 100.
					else
						count = 1 -- Quantidade de item será 1x caso não caia em nenhuma das chances anteriores, no caso, quando a chance é menor que 5.
					end
					player:addItem(item_Give, count)
					player:sendTextMessage(MESSAGE_INFO_DESCR, "Você acabou de ganhar "..count.."x "..(ItemType(item_Give):getName())..".")
					player:setStorageValue(sto, 1)
					item:remove(1)
			else
				item:remove(1)
				player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua chave quebrou...")
			end
	else
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já fez essa quest.")
	end
else
if player:getStorageValue(sto) == -1 then
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Para fazer essa quest você precisa da chave "..(ItemType(Key_Id):getName())..", clique nela e clique no bau para abri-lo!")
else
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você já fez a quest.")
end
end
	
	return true
end

 

 

actions.xml:


<action actionid="55555" script="arquivo.lua" />
<action itemid="12548" script="arquivo.lua" />

A actionid, coloque no bau quando o player clicar no bau ele receberá uma mensagem dizendo que precisa de tal chave, para ele clicar na chave e clicar no bau, o motivo da action é somente para que essa mensagem ocorra naquele bau.

 

E o itemid é o id da chave, o player irá clicar nela e clicar no bau, e ocorrera todo o processo que já está descrito no script, acredito que não tem mais nada que eu possa explicar mas caso não entenda algo é só perguntar.

Abraços!!

 

Gostei hahaha, vou usar ;p

Link para o post
Compartilhar em outros sites

Fiz uma pequena correção no script, você poderia utilizar a chave em qualquer lugar, corrigir para que pudesse utilizar somente no bau desejado, basta colocar actionid que você escolheu, na variável actId_xml e assim a chave só vai funcionar no bau que tiver essa action especifica, no caso o da quest! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
Fiz uma pequena correção no script, você poderia utilizar a chave em qualquer lugar, corrigir para que pudesse utilizar somente no bau desejado, basta colocar actionid que você escolheu, na variável actId_xml e assim a chave só vai funcionar no bau que tiver essa action especifica, no caso o da quest! 
Obrigado man.
Eu ainda não testei , desculpa , mas irei testar

Enviado de meu Quantum MUV PRO usando Tapatalk

Link para o post
Compartilhar em outros sites
Spoiler

local items = {2148, 2152, 2160} -- Itens!
local count = 0
local sto = 23456 -- Storage!
local Key_Id = 12548 -- ID da chave que será necessária para abrir o báu.
local itemId_xml = 13799 -- Mesmo action id da xml que você colocou no bau!
local itemId_xml2 = 13800 -- Mesmo action id da xml que você colocou no bau!
local monster = "amazon"

function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey, monster, itemEx2)
if type(itemEx, itemEx2) == "userdata" then
	if itemEx:getId() == itemId_xml and itemEx2:getId() == itemId_xml2 then
			local chance1 = 50 -- 50% - Porcentagem da chave quebrar.
			local rand1 = math.random(1, 100)
			local item_Give = items[math.random(1, #items)] -- Item Aleatório da tabela!
			if rand1 >= chance1 then
				local rand2 = math.random(1, 100)
					if rand2 >= 5 and rand2 <= 15 then
						count = 2 -- Quantidade de item será 2x caso a chance seja maior ou igual a 5 e menor ou igual 15.
					elseif rand2 >= 16 and rand2 <= 30 then
						count = 4 -- Quantidade de item será 4x caso a chance seja maior ou igual a 16 e menor ou igual 30.
					elseif rand2 >= 31 and rand2 <= 50 then
						count = 6 -- Quantidade de item será 6x caso a chance seja maior ou igual a 31 e menor ou igual 50.
					elseif rand2 >= 51 and rand2 <= 70 then
						count = 7 -- Quantidade de item será 7x caso a chance seja maior ou igual a 51 e menor ou igual 70.
					elseif rand2 >= 71 and rand2 <= 90 then
						count = 8 -- Quantidade de item será 8x caso a chance seja maior ou igual a 71 e menor ou igual 90.
					elseif rand2 >= 91 and rand2 <= 100 then
						count = 10 -- Quantidade de item será 10x caso a chance seja maior ou igual a 91 e menor ou igual 100.
					else
						count = 1 -- Quantidade de item será 1x caso não caia em nenhuma das chances anteriores, no caso, quando a chance é menor que 5.
					end
					itemEx:transform(26628, -1)
					itemEx:decay()
					item:transform(26629, -1)
					item:decay()
					local position = player:getPosition()
					local monster = Game.createMonster("amazon guard", position, false, true)
						if not monster then
						end
					player:addItem(item_Give, count)
					player:sendTextMessage(MESSAGE_INFO_DESCR, "Você acabou de ganhar "..count.."x "..(ItemType(item_Give):getName())..".")
					item:remove(1)
			else
				item:remove(1)
				player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua chave quebrou...")
			end
else
if player:getStorageValue(sto) == -1 then
	player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Para abrir o bau você precisa da chave "..(ItemType(Key_Id):getName())..", clique nela e clique no baú para abri-lo!")
end
	return true
	end
	end
	end

 

Fiz umas modificações to tentando add mais um bau @KotZletY

 

Lua Script Error: [Action Interface]
data/actions/scripts/baus/baus.lua:onUse
data/actions/scripts/baus/baus.lua:11: attempt to index local 'itemEx2' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/actions/scripts/baus/baus.lua:11: in function <data/actions/scripts/baus/baus.lua:9>
 

 

Link para o post
Compartilhar em outros sites
  • 1 year later...

@KotZletY Você poderia me ajudar com um error que aconteceu? uso tfs 0.4 esse script é de extrema importancia para mim e está acontecendo um erro.

por favor alguém me ajuda. 

errorverde.png

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo