Ir para conteúdo

Featured Replies

Postado

Uso TFS 0.4,

 

Tenho o seguinte script, quando abro a caixa da um item aleatorio de acordo com sua porcentagem, funcionando Ok. Fiz algumas modificações que gostaria q ele desse somente certo item, mas em outras quantidades, acontece q esse item não stack, tipo o gold, q em um espaço pode ter 100x, ele somente 1 por espaço. 

 

Então tentei coloca para adicionar uma backpack junto, ele está adicionando a backpack, mas acontece q sempre vem somente 1 do item, tentei fazer apenas com uma linha para teste --- doPlayeraAddItem(cid, 8300, 20) --- mas continua somente vindo 1, acredito q seja pq ele nao stack em lotes. 

 

Teria como ajeita esse script para funcionar como quero? Ou algum outro, estou pensando em forma de fazer talvez até consigo mas com meu conhecimento acredito q gestarei muitas linhas pra algo q me parece simples.

 

local items =
{ 
--[numeração] = {id = ID DO ITEM, count = QUANTIDADE DO ITEM, c = CHANCE}
	[1]={id=8300, count=1, c=35},
	[2]={id=8300, count=5, c=30},
	[3]={id=8300, count=10, c=20},
	[4]={id=8300, count=15, c=10},
	[5]={id=8300, count=20, c=5},
}

function getRandomItem(t)
	local i = math.random(1, #t)
	i = t[i]
	if math.random(1, 100) <= i.c then
		return i
	end

	return getRandomItem(t)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local i = getRandomItem(items)
	local bp = doPlayerAddItem(cid, 1988, 1)
	local rw = doPlayerAddItem(cid, i.id, i.count)
	doAddContainerItem(bp, rw, 1)
	doSendAnimatedText(getPlayerPosition(cid), "Box!", TEXTCOLOR_GREEN)
	doPlayerSendTextMessage(cid, 27, "Você abriu uma Box e Ganhou "..i.count.."x "..getItemNameById(i.id)..(i.count > 1 and "s" or "")..".")
	doRemoveItem(item.uid, 1)
return true
end

image.thumb.png.d413e5bf79a645d3becd6d3cab1ea0b6.png Nessa imagem a recompensa foi 5, mas veio somente 1 e a bp

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

  • Respostas 5
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Naze  local t = { {chance = 10, amount = 5}, {chance = 20, amount = 4}, {chance = 40, amount = 3}, {chance = 50, amount = 2} } function GiveRewards(cid, items) local var = items[math.random(

Posted Images

Postado
local rewards = {
	{chance = 50, itemid = 8300,amount = 1},
	{chance = 10, itemid = 2494,amount = 1},
	{chance = 100, itemid = 2159,amount = 20},
	{chance = 100, itemid = 2160,amount =100}
}
function GiveRewards(cid, items)
	local backpack,str = doPlayerAddItem(cid, 1999, 1), '' -- backpackID
	for i = 1, table.maxn(items) do
		local chance, itemid, amount = items[i].chance, items[i].itemid,items[i].amount
		if chance > math.random(1, 100) then
			if isItemStackable(itemid) or amount == 1 then
				doAddContainerItem(backpack, itemid, amount)
			else
				for i = 1, amount do
					doAddContainerItem(backpack, itemid, 1)
				end
			end
			str = str .. amount .. ' ' .. getItemNameById(itemid)
			str = i ~= table.maxn(items) and str .. ', ' or str .. '.'
		end
	end
	return str
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	doSendAnimatedText(getPlayerPosition(cid), "Box!", TEXTCOLOR_GREEN)
	local t = GiveRewards(cid, rewards)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você abriu uma Box e Ganhou: "..t)
	doRemoveItem(item.uid)
	return true
end

 

OBS: Coloquei para vir mais que um item, ou seja, dependendo da sorte do player, poderá receber mais que um... ou você só quer 1 item de toda essa tabela? 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Postado
  • Autor

@Vodkart  Testei, mas tipo ta vindo exatamente 100 - 2160, e 20 - 2159, as vezes vem 1 - 8300, gostaria q somente viesse 1 item, mais especificamente 8300, e diferente quantidades deles. Mas ele não é agrupável, por isso da bag.

 

#edit

 

Ajustei ele e ta vindo as quantidade certa, agora so preciso tirar para vim apenas uma das opções de recompensa

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

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Postado

@Naze 

local t = {
	{chance = 10, amount = 5},
	{chance = 20, amount = 4},
	{chance = 40, amount = 3},
	{chance = 50, amount = 2}
}
function GiveRewards(cid, items)
	local var = items[math.random(#items)]
	local chance = var.chance
	if chance > math.random(1, 100) then
		local backpack, str = doPlayerAddItem(cid, 1999, 1), '' -- backpackID
		local amount = var.amount
		for i = 1, amount do
			doAddContainerItem(backpack, 8300, 1)
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Você abriu uma Box e Ganhou: "..amount.." "..getItemNameById(8300)..".")
	else
		GiveRewards(cid, items)
	end
	return true
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	doSendAnimatedText(getPlayerPosition(cid), "Box!", TEXTCOLOR_GREEN)
	GiveRewards(cid, t)
	doRemoveItem(item.uid)
	return true
end

 

@Zazeros sim, mas só colocar para checar se tem a cap, se nao tiver manda para o dp

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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