Ir para conteúdo

Featured Replies

Postado

Opa gente tudo bem?

Estou tentando aprender cada vez mais de script, e acabei de fazer 1 script legal para postar aqui pra vocês... Porém está com 1 pequeno problema nele !
A verificação de itens está com problema... eu não sei porque na verdade, fiz tudo certinho.
Não sei porque que:
1390317285_Semttulo.png.6b33f6bd670a709d890f0c26b832dbbb.png
Mesmo que o [Mdr] Henrique, não possua os 2 itens para entrar, o item de ambos é removido :/.
OU SEJA:
Se o jogador 1 possuir Crystal coin, e o 2 possuir Crystal coin, ele está sendo removido !
Se o jogador 1 possuir Scarab coin, e o jogador 2 não possuir Scarab coin, ele não é removido !

Porem eu testei com apenas 1 item, ele funciona perfeitamente:

items = { -- itens necessários para que os players entrem.
    [1] = {item = 2160, count = 1},
},

Está ai o script inteiro:

local config = {
	members = 2, -- membros ou +.
	level = 300, -- nivel que todos os membros devem ter para entrar.
	leader = false, -- sómente o leader pode entrar no teleport.
	pos_to = {x = 1143, y = 1066, z = 7}, -- posição que os jogadores serão teleportados.
	items = { -- itens necessários para que os players entrem.
    	[1] = {item = 2160, count = 1},
    	[2] = {item = 2159, count = 1}
    --	[3] = {item = ItemID, count = Quantidade}
	},
}

function onStepIn(player, item, position, fromPosition)
	
	local party = player:getParty()	

	if not party then
		player:teleportTo(fromPosition)
		player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
		position:sendMagicEffect(CONST_ME_MAGIC_RED)
		return player:sendCancelMessage("You don't have a party.")
	end

	local leader = party:getLeader()

	if config.leader then
		if player:getId() == leader:getId() then
			local member = party:getMembers()
			if #member >= config.members-1 then
				for _, var in pairs(member) do
					if var:getLevel() > config.level then
   						for tab = 1, #config.items do
							if var:getItemCount(config.items[tab].item) >= config.items[tab].count and leader:getItemCount(config.items[tab].item) >= config.items[tab].count then
								var:removeItem(config.items[tab].item, config.items[tab].count)
								leader:removeItem(config.items[tab].item, config.items[tab].count)
								var:sendTextMessage(22,"Your team join the room.")
								leader:sendTextMessage(22,"Your team join the room.")
								var:teleportTo(config.pos_to)
								leader:teleportTo(config.pos_to)
							else
								player:teleportTo(fromPosition)
								var:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.")
								leader:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.")
							end
						end
					else
						var:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".")
						leader:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".")
					end
				end
			else
				player:teleportTo(fromPosition)
				player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
				position:sendMagicEffect(CONST_ME_MAGIC_RED)
				player:sendTextMessage(20,"Somente party's com " .. config.members-1 .. " ou mais jogadores, poderao passar.")
			end
		else
			player:teleportTo(fromPosition)
			player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
			position:sendMagicEffect(CONST_ME_MAGIC_RED)
			player:sendCancelMessage("Somente o leader pode entrar por aqui.")
		end
	else
		local member = party:getMembers()
		if #member >= config.members-1 then
			for _, var in pairs(member) do
				if var:getLevel() > config.level then
   					for tab = 1, #config.items do
						if var:getItemCount(config.items[tab].item) >= config.items[tab].count and leader:getItemCount(config.items[tab].item) >= config.items[tab].count then
							var:removeItem(config.items[tab].item, config.items[tab].count)
							leader:removeItem(config.items[tab].item, config.items[tab].count)
							var:sendTextMessage(22,"Your team join the room.")
							leader:sendTextMessage(22,"Your team join the room.")
							var:teleportTo(config.pos_to)
							leader:teleportTo(config.pos_to)
						else
							player:teleportTo(fromPosition)
							var:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.")
							leader:sendTextMessage(22,"Um dos membros nao possui os itens necessarios.")
						end
					end
				else
					var:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".")
					leader:sendTextMessage(22,"Um dos membros da party nao possui nivel superior a "..config.level..".")
				end
			end
		else
			player:teleportTo(fromPosition)
			player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
			position:sendMagicEffect(CONST_ME_MAGIC_RED)
			player:sendTextMessage(20,"Somente party's com " .. config.members-1 .. " ou mais jogadores, poderao passar.")
		end
	end
end

 

O meu objetivo seria: 
Só poderá entrar se ambos os jogadores possuírem os 2 itens com suas devidas quantidades.

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

Postado

@tataboy67 lógica da programação, a menos que você crie variáveis auxiliares para lhe ajudar a identificar que todos tem os requisitos o mais simples a se fazer é uma checagem com negação.

 

Players: kot, tata e o tibiaking, 3x players.

 

Se kot não tem os itens, então 

bloqueia 

fim

 

Se tata não tem os itens, então 

bloqueia 

fim

 

Se tibiaking não tem os itens, então 

bloqueia 

fim

 

Caso ambos tenham, irão passar para a próxima sentença, remover e teleportar ambos!!

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

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.6k

Informação Importante

Confirmação de Termo