Sign in to follow this  
#RooTs

bloquear bind

Recommended Posts

Olá.. me lembro de ter visto uma maneira de bloquear as binds padrões do mta na hora de digitar alguma coisa no painel login
binds de paineis, por exemplo painel F1 freeroam, ou os demais paineis que vem junto com a GameMode ou de criação minha. sei bloquear com elementData

mais binds de chat ( T ) console ( F8 ) e mapa ( F11 ).. não me lembro como bloquear elas, pois está atrapalhando a digitação do usuario e senha do meu painel login em DX

o que devo fazer... alguma ideia ?

desde já agradeço...

Share this post


Link to post

Tente isto:

SERVER-SIDE

addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), function () 
	local everybody = getElementsByType ("player") 
	for i, thePlayer in ipairs (everybody) do 
		if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Console")) then  -- SOMENTE O CONSOLE PODE USAR AS BINDS.
			setElementData (thePlayer, "bindPermission", true)
		else 
			setElementData (thePlayer, "bindPermission", false) 
		end
	end
end)

addEventHandler ("onPlayerLogin", getRootElement(), function (prev, curr)
	if isObjectInACLGroup ("user."..getAccountName(curr), aclGetGroup("Console")) then 
		setElementData (source, "bindPermission", true) 
	end
end)

addEventHandler ("onPlayerLogout", getRootElement(), function (prev, curr)
	setElementData (source, "bindPermission", false) 
end)

CLIENT-SIDE

disallowedCmds = {
	"say", -- 2 EXEMPLOS DE BLOQUEIO, SE OS JOGADORES TENTAREM BINDAR COM ESSES 2 COMANDOS, IRA VERIFICAR E ENVIAR UMA MENSAGEM AVISANDO QUAL TECLA ESTA COM BIND PARA O JOGADOR DESATIVAR..
	"teamsay"
}
addEventHandler ("onClientKey", getRootElement(), function (button, state)
	if not state then return end 
	if not getElementData (localPlayer, "bindPermission") then 
		local keys = {} 
		for i, cmd in ipairs (disallowedCmds) do 
			if getBoundKeys (cmd) then 
				for ii, key in pairs (getBoundKeys (cmd)) do 
					table.insert (keys, ii) 
				end
			end
		end
		if keys then 
			for _, keyName in pairs (keys) do 
				if button == tostring (keyName) then
					outputChatBox ("Sua tecla: '"..keyName.."' contém bind proibida e não pode ser usada, por favor use: /unbind "..keyName, 255, 0, 0 ) 
					cancelEvent ()
					break 
				end
			end
		end
	end
end)

 

1 hour ago, asrzk said:

guiSetInputMode("no_binds_when_editing")
guiSetInputEnabled(false)

Os dois funcionam.

Lembrando que ele citou '' DX '' não gui creio que isso não ira funcionar no caso dele.

Edited by OverKILL

Share this post


Link to post

OverKILL

Eu acho que você não leu corretamente ou eu posso ter me interpretado mau. Eu coloquei painel login.. o que tem haver verificação do jogador na acl com o meu assunto?

Andrei

O que GUI tem haver com meu painel login dx ? O que GUI poderia bloquear as binds padrões do mta ? Eu acho que não entendi.. poderia ser mais claro?

Share this post


Link to post
1 minute ago, #RooTs said:

OverKILL

Eu acho que você não leu corretamente ou eu posso ter me interpretado mau. Eu coloquei painel login.. o que tem haver verificação do jogador na acl com o meu assunto?

Andrei

O que GUI tem haver com meu painel login dx ? O que GUI poderia bloquear as binds padrões do mta ? Eu acho que não entendi.. poderia ser mais claro?

Isso é uma verificação na ACL caso o usuário que esteja tentando usar bind esteja na acl CONSOLE, ele ira conseguir escrever com bind, você quer bloquear qual comando para não ser bindado o /login?

Share this post


Link to post
7 minutes ago, OverKILL said:

Isso é uma verificação na ACL caso o usuário que esteja tentando usar bind esteja na acl CONSOLE, ele ira conseguir escrever com bind, você quer bloquear qual comando para não ser bindado o /login?

Cara pelo amor de Deus.. eu tenho certeza que eu não escrevi errado... leia de novo.. deixei bem claro falando sobre a digitação de usuário e senha no painel login... sendo assim usuário ou senha contendo a letra "T" ATIRAVÁ o chat e não conseguirá mais dar termino no login dele. O mesmo com a criação da conta dele

Se não for ajudar não atrapalha

Edited by #RooTs

Share this post


Link to post
7 minutes ago, #RooTs said:

Cara pelo amor de Deus.. eu tenho certeza que eu não escrevi errado... leia de novo.. deixei bem claro falando sobre a digitação de usuário e senha no painel login... sendo assim usuário ou senha contendo a letra "T" ATIRAVÁ o chat e não conseguirá mais dar termino no login dele. O mesmo com a criação da conta dele

Se não for ajudar não atrapalha

Que ignorância meu jovem.. esta com problemas pessoais? mas enfim, não quero saber. se você quiser bloquear o comando /login e o /register e o chat de ser bindado use:

bindCheck = {
	"login",
	"register",
  	"say"
}
addEventHandler ("onClientKey", getRootElement(), function (button, state)
	if not state then return end 
	if not getElementData (localPlayer, "bindPermission") then 
		local keys = {} 
		for i, cmd in ipairs (bindCheck) do 
			if getBoundKeys (cmd) then 
				for ii, key in pairs (getBoundKeys (cmd)) do 
					table.insert (keys, ii) 
				end
			end
		end
		if keys then 
			for _, keyName in pairs (keys) do 
				if button == tostring (keyName) then
					outputChatBox ("[INFO] - Sua tecla: "..keyName.." contém bind proibida e não pode ser usada, por favor use: /unbind "..keyName, 255, 0, 0 ) 
					cancelEvent ()
					break 
				end
			end
		end
	end
end)

Assim se o jogador tiver por exemplo: /bind 1 login 123 ou /bind 2 register 123 e tentar usar essas bind's e apertar a tecla correspondente não ira funcionar.

Ou qualquer bind de chat por exemplo: /bind 4 say 123. o jogador não ira conseguir, a não ser que esteja na ACL console. 

Tente melhorar sua ignorância, só estamos tentando te ajudar maninho. boa sorte aí :)

No caso se for pra bloquear uma tecla de ser usada, acho que não tem como fazer isso. tente dar uma procurada na wiki a respeito.....

Edited by OverKILL

Share this post


Link to post
5 minutes ago, OverKILL said:

Que ignorância meu jovem.. esta com problemas pessoais? mas enfim, não quero saber. se você quiser bloquear o comando /login e o /register e o chat de ser bindado use:


bindCheck = {
	"login",
	"register",
  	"say"
}
addEventHandler ("onClientKey", getRootElement(), function (button, state)
	if not state then return end 
	if not getElementData (localPlayer, "bindPermission") then 
		local keys = {} 
		for i, cmd in ipairs (bindCheck) do 
			if getBoundKeys (cmd) then 
				for ii, key in pairs (getBoundKeys (cmd)) do 
					table.insert (keys, ii) 
				end
			end
		end
		if keys then 
			for _, keyName in pairs (keys) do 
				if button == tostring (keyName) then
					outputChatBox ("[INFO] - Sua tecla: "..keyName.." contém bind proibida e não pode ser usada, por favor use: /unbind "..keyName, 255, 0, 0 ) 
					cancelEvent ()
					break 
				end
			end
		end
	end
end)

Assim se o jogador tiver por exemplo: /bind 1 login 123 ou /bind 2 register 123 e tentar usar essas bind's e apertar a tecla correspondente não ira funcionar.

Ou qualquer bind de chat por exemplo: /bind 4 say 123. o jogador não ira conseguir, a não ser que esteja na ACL console. 

Tente melhorar sua ignorância, só estamos tentando te ajudar maninho. boa sorte aí :)

No caso se for pra bloquear uma tecla de ser usada, acho que não tem como fazer isso. tente dar uma procurada na wiki a respeito.....

Não jovem... não complica meu pedido de ajuda com uma coisa nada haver.. ohhh senhoorr... 

Alguém ai entendeu ?

Share this post


Link to post

Acho que vc quer apenas bloquear as binds (nativas ou não) enquanto o painel DX do login estiver visível, é isso?

Share this post


Link to post
5 minutes ago, Lord Henry said:

Acho que vc quer apenas bloquear as binds (nativas ou não) enquanto o painel DX do login estiver visível, é isso?

Não adianta tentar ajudar Lord, ele esta na ignorância, não esta nem aí pra quem esta se esforçando pra tentar ajudar ele.. 

Atitude de um verdadeiro '' Moleque '' .

Share this post


Link to post
6 minutes ago, Lord Henry said:

Acho que vc quer apenas bloquear as binds (nativas ou não) enquanto o painel DX do login estiver visível, é isso?

Isso... porque quando o player vai digita o usuario no painel ex. Roots a letra T vai ativa o chat

Share this post


Link to post

Já tentou cancelar o evento onClientKey? Cancelar esse evento impede que as funções das teclas funcionem.

Share this post


Link to post
11 minutes ago, Lord Henry said:

Já tentou cancelar o evento onClientKey? Cancelar esse evento impede que as funções das teclas funcionem.

Dessa maneira iria bloquear ?

addEventHandler( "onClientKey", root, function() 
    if button == "t" then
        cancelEvent()
        return true
    end
    return false
end )

 

Share this post


Link to post
13 minutes ago, #RooTs said:

Dessa maneira iria bloquear ?


addEventHandler( "onClientKey", root, function() 
    if button == "t" then
        cancelEvent()
        return true
    end
    return false
end )

 

Não. Pois button não foi declarado em lugar nenhum.

Share this post


Link to post
addEventHandler( "onClientKey", root, function(button) 
    if button == "t" then
        cancelEvent()
        return true
    end
    return false
end )

Assim ?

Share this post


Link to post

Bom, nesse exemplo não precisa dos return.

Mas sim, isso bloqueia o binds da tecla T.

Share this post


Link to post
13 hours ago, Lord Henry said:

Bom, nesse exemplo não precisa dos return.

Mas sim, isso bloqueia o binds da tecla T.

Creio que ele queira bloquear a tecla ' t ' de ser usada, pois quando um jogador aperta ela no painel DX dele buga o painel e o jogador não consegue prosseguir com o registro, creio que seja isso.

13 hours ago, DNL291 said:

Acho que já foi respondido no post do @asrzk

Ele quer para o painel DX, acho que o que o @asrzk disse não serve para DX 

Share this post


Link to post
4 minutes ago, OverKILL said:

Creio que ele queira bloquear a tecla ' t ' de ser usada, pois quando um jogador aperta ela no painel DX dele buga o painel e o jogador não consegue prosseguir com o registro, creio que seja isso.

Mas é pra isso mesmo. Ao apertar a tecla e cancelar esse evento, não será ativado no chat.

  • Thanks 1

Share this post


Link to post
21 minutes ago, Lord Henry said:

Mas é pra isso mesmo. Ao apertar a tecla e cancelar esse evento, não será ativado no chat.

Mas aí os jogadores vão ter que usar o console para digitar comandos e etc?

Ou da pra fazer uma verificação na função: exemplo, Jogador1 esta no painel login então, envia o cancelEvent caso ele aperte a tecla ' T ' 

Edited by OverKILL

Share this post


Link to post

Ah ta. Só setar uma data true no player quando inicia o render do painel e depois setar essa data false quando a renderização do painel é cancelada. Enquanto o jogador estiver com essa data, as binds da tecla T não funcionarão.

addEventHandler ("onClientKey", root, function (button)
	if button == "t" then
		if getElementData (localPlayer, "loginPanel") then
			cancelEvent()
		end
	end
end)

 

  • Thanks 1

Share this post


Link to post
4 hours ago, Lord Henry said:

Ah ta. Só setar uma data true no player quando inicia o render do painel e depois setar essa data false quando a renderização do painel é cancelada. Enquanto o jogador estiver com essa data, as binds da tecla T não funcionarão.


addEventHandler ("onClientKey", root, function (button)
	if button == "t" then
		if getElementData (localPlayer, "loginPanel") then
			cancelEvent()
		end
	end
end)

 

Ah sim, entendi vlw Lord .

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.