Ir para conteúdo

Featured Replies

  • 3 weeks later...
  • Respostas 27
  • Visualizações 3.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma che

  • tenta isso aq: function onStepIn(cid, item, position, fromPosition, toPosition)     if isPlayer(cid) and getPlayerIp(cid) == getPlayerIp(position) then         return doTeleportThing(cid, fro

Postado
  • Autor
Em 14/02/2017 ás 04:18, Pedriinz disse:

@Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma checagem mais "avançada" aqui.

 

@Tópico

 

Creio que uma das melhores formas de se realizar isso, é realizando uma checagem de quem está participando do evento em questão.

  • Qual evento que é?

Enfim, você pode setar em uma tabela o cid de cada personagem que entrar no evento, e junto com este CID o IP do mesmo. Ao tentar entrar outro personagem com o mesmo ip deverá ter uma checagem dentro desta tabela para verificar se já existe algum jogador com este IP dentro do evento. 

 

Como fazer:

Primeiro você deve declarar uma tabela global onde ficará salvo os dados dos jogadores que entrarão no Evento. Aconselho fazer isso em uma lib. (Estarei assumindo aqui que você utiliza a versão 0.4 ou similar.)

 

Crie ou coloque uma lib qualquer a seguinte declaração:


CHECK_MC = {
	players_cache = {
		--[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}
	},
}

 

Após feito isso, você deve adicionar nesta tabela todos os jogadores que entrarem no evento em questão. Entra no arquivo de entrada do evento e adicione o seguinte código:


CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}

PS: Caso o evento seja um teleport que vai aparecer para os jogadores entrar ou um tile, você pode adicionar esta linha no código do arquivo no movements, mas ou menos assim: 

 


function onStepIn(cid, item, position, fromPosition, toPosition)
	if not isPlayer(cid) then
		return true
	end

	doTeleportThing(cid, posiçãoDoEvento)
	CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}
	return true
end

Feito isso, nossa tabela já está adicionando o CID e o IP de cada jogador que entrou dentro do evento.

Agora devemos adicionar no mesmo script da entrada do evento, uma checagem para ver se dentro da tabela, já não existe um jogador com o mesmo IP. faremos da seguinte forma:

 


for k, v in pairs(CHECK_MC.players_cache) do
	if CHECK_MC.players_cache[k].ip == getPlayerIp(cid) then
		doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!')
		return false
	end
end

Você deve adicionar esta checagem antes da ação de teleporta o jogador para dentro do evento.

Em resumo o script de entrada para o evento ficaria mais ou menos assim:

 


function onStepIn(cid, item, position, fromPosition, toPosition)
	if not isPlayer(cid) then
		return true
	end

	for k, v in pairs(CHECK_MC.players_cache) do
		if BATTLE_ENFORCE.players_cache[k].ip == getPlayerIp(cid) then
			doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!')
			return false
		end
	end

    	doTeleportThing(cid, posiçãoDoEvento)
  	CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}
    return true
end

 

@Matk, arruma essa box code<3

 

Abraços e boa sorte!

 

Está funcionando, mas não está limpando a tabela quando finaliza o evento, quando o evento abre novamente consta que o IP já está dentro do evento...

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

  • 1 year later...
Postado
Em 05/12/2016 em 06:23, Fir3element disse:

tenta isso aq:

 


function onStepIn(cid, item, position, fromPosition, toPosition)
    if isPlayer(cid) and getPlayerIp(cid) == getPlayerIp(position) then
        return doTeleportThing(cid, fromPosition, false)
    end
    return true
end

 

 

da erro player not found

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

Informação Importante

Confirmação de Termo