Jump to content

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

Link to comment

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
Link to comment

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?

Link to comment
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?

Link to comment
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
Link to comment
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
Link to comment
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 ?

Link to comment
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 '' .

Link to comment
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 )

 

Link to comment
  • Other Languages Moderators
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.

Link to comment
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 

Link to comment
  • Other Languages Moderators
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
Link to comment
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
Link to comment
  • Other Languages Moderators

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
Link to comment
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 .

Link to comment

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...