Jump to content

Dúvidas com ACL


Recommended Posts

Posted

Queria pedir a ajuda de vocês na seguinte situação, eu quero que, quando um player execute um determinado comando, por exemplo "adc", ele seja adicionado em uma ACL específica, nesse caso, o que eu deveria utilizar e como...

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Você quer que o usuário especifique a ACL no comando? Ou você quer que o script coloque em uma ACL já determinada?

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
9 hours ago, Lord Henry said:

Você quer que o usuário especifique a ACL no comando? Ou você quer que o script coloque em uma ACL já determinada?

Quero que seja em uma ACL já determinada

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted

Use este exemplo como base:

 

function setarGrupo (thePlayer, commandName, accountName)
	if accountName then 
		aclGroupAddObject (aclGetGroup("ACL_NAME"), "user."..accountName) 
		outputChatBox ( "Você adicionou a conta '"..accountName.."' ao grupo ACL_NAME", thePlayer) 
	else 
		outputChatBox ( "Uso correto: /adc conta", thePlayer)
	end
end
addCommandHandler ("adc", setarGrupo) 

Teste, use /adc nome da conta

Posted (edited)
12 minutes ago, OverKILL said:

Use este exemplo como base:

 


function setarGrupo (thePlayer, commandName, accountName)
	if accountName then 
		aclGroupAddObject (aclGetGroup("ACL_NAME"), "user."..accountName) 
		outputChatBox ( "Você adicionou a conta '"..accountName.."' ao grupo ACL_NAME", thePlayer) 
	else 
		outputChatBox ( "Uso correto: /adc conta", thePlayer)
	end
end
addCommandHandler ("adc", setarGrupo) 

Teste, use /adc nome da conta

function trab (source)
	if isElementWithinMarker then -- vou adicionar o marker ainda
		local getAccountName(source) = conta
		if conta then
			aclGroupAddObject (aclGetGroup("UBER"), "user. "..conta))
			outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true)
		end
	else
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true)
	end
end
addCommandHandler ("trab2", trab)

eu fiz assim mano, sera que funciona? pq eu quero que o player, no caso o que está dando o comando seja adicionado na acl, somente com o comando especificado

 

Edited by danblemes1

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted

Acho que não precisa da linha 7, No caso a linha 9 seria pra alerta que você não está no local correto no caso o marker, então não precisaria do end só mesmo o else.

Posted (edited)

Tente isto:

OBS: A resource precisa de permissão admin, adicione na acl admin: resource.nome

local NomeMark = createMarker (2737.34, -1433.672, 29.1, "cylinder", 1, 16, 102, 231, 255) -- Cria o pra testes.
function iniciarTrampo (source) -- Função propriamente dita.
	local acc = getPlayerAccount (source) -- Pega a conta do jogador
	if isElementWithinMarker (source, NomeMark) and not getPedOccupiedVehicle (source) then -- Só ira funcionar se o jogador estiver no mark informado e sem um veículo
		aclGroupAddObject(aclGetGroup ("UBER"), "user."..getAccountName(acc) ) -- Adiciona o jogador que usou o comando na acl informada (UBER)
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) -- Envia output informando
	else -- Se não estiver no mark então:
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) -- Envia output informando
	end -- Finaliza o if da verificação do mark
end -- Finaliza a função
addCommandHandler ("trab2", iniciarTrampo) -- Comando que executa a função.

 

Edited by OverKILL
  • Moderators
Posted
7 hours ago, danblemes1 said:

function trab (source)
	if isElementWithinMarker then -- vou adicionar o marker ainda
		local getAccountName(source) = conta
		if conta then
			aclGroupAddObject (aclGetGroup("UBER"), "user. "..conta))
			outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true)
		end
	else
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true)
	end
end
addCommandHandler ("trab2", trab)

eu fiz assim mano, sera que funciona? pq eu quero que o player, no caso o que está dando o comando seja adicionado na acl, somente com o comando especificado

 

Dará erro na linha 2 (mas vc justificou, então blz)

Erro na linha 3, pois você não pode usar uma função como nome de variável. Faça ao contrário. Além disso, você só pode obter o account name de uma conta e não direto do player.

local conta = getAccountName(getPlayerAccount(source))

Na linha 4 é inútil verificar se a conta existe, pois ela sempre vai existir mesmo que o player esteja deslogado (Guest account). Em vez disso verifique se ela é uma conta Guest ou não usando isGuestAccount.

if not (isGuestAccount (getPlayerAccount(source))) then -- Se a conta do jogador que usou o comando não for deslogado, então:

O resto pode continuar assim.

  • Like 1

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
4 minutes ago, Lord Henry said:

Dará erro na linha 2 (mas vc justificou, então blz)

Erro na linha 3, pois você não pode usar uma função como nome de variável. Faça ao contrário. Além disso, você só pode obter o account name de uma conta e não direto do player.


local conta = getAccountName(getPlayerAccount(source))

Na linha 4 é inútil verificar se a conta existe, pois ela sempre vai existir mesmo que o player esteja deslogado (Guest account). Em vez disso verifique se ela é uma conta Guest ou não usando isGuestAccount.


if not (isGuestAccount (getPlayerAccount(source))) then -- Se a conta do jogador que usou o comando não for deslogado, então:

O resto pode continuar assim.

Então essa última que você mandou, do guest, eu tenho que colocar esse "if not..." no lugar de "if conta then"?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Sim, pois Se NÃO for uma conta guest, então faz o que deve ser feito. Se for Guest, não dará certo.

  • Like 1

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
3 minutes ago, Lord Henry said:

Sim, pois Se NÃO for uma conta guest, então faz o que deve ser feito. Se for Guest, não dará certo.

Então depois que eu fizer todas essas alterações,  quando o player que estiver no Marker der o comando "trab2", ele será adicionado na acl?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Teste aí e descubra xD

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Tente o seguinte:

function trab ( playerSource )
	if isElementWithinMarker(marker) then -- vou adicionar o marker ainda
		local account = isGuestAccount(getPlayerAccount(playerSource)) and false or getPlayerAccount(playerSource)
		-- se for uma conta "guest" a variável retornará false
		if account then
			 if isObjectInACLGroup( "user."..getAccountName(account), aclGetGroup( "UBER" ) ) then
				return outputChatBox("Você já está neste trabalho!", playerSource, 230, 0, 0)
				-- o jogador já tá nesse grupo, então manda a msg de aviso
			end
			if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then
				outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", playerSource, 255, 255, 255, true)
				-- faz a checagem verificando se a conta foi adicionada, então envia a mensagem no chat
			end
		end
	else
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", playerSource, 255, 255, 255, true)
	end
end
addCommandHandler ("trab2", trab)

 

  • Thanks 1

Please do not PM me with scripting related question nor support, use the forums instead.

  • Moderators
Posted
2 minutes ago, DNL291 said:

Tente o seguinte:


function trab ( playerSource )
	if isElementWithinMarker(marker) then -- vou adicionar o marker ainda
		local account = isGuestAccount(getPlayerAccount(playerSource)) and false or getPlayerAccount(playerSource)
		-- se for uma conta "guest" a variável retornará false
		if account then
			 if isObjectInACLGroup( "user."..getAccountName(account), aclGetGroup( "UBER" ) ) then
				return outputChatBox("Você já está neste trabalho!", playerSource, 230, 0, 0)
				-- o jogador já tá nesse grupo, então manda a msg de aviso
			end
			if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then
				outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", playerSource, 255, 255, 255, true)
				-- faz a checagem verificando se a conta foi adicionada, então envia a mensagem no chat
			end
		end
	else
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", playerSource, 255, 255, 255, true)
	end
end
addCommandHandler ("trab2", trab)

 

Hum... Boa. Está evitando de adicionar o usuário que já está na ACL Group.

  • Thanks 1

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted
2 minutes ago, Lord Henry said:

Hum... Boa. Está evitando de adicionar o usuário que já está na ACL Group.

Tomara q dê certo hihi

Tá agora se eu quisesse que,  quando um player der o comando /uber, fosse criado um blip nele visível somente para a acl uber, como eu faria?

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

Posted (edited)

Não testei mas acho que dá certo sim, só você testar e ver :)

10 minutes ago, danblemes1 said:

Tomara q dê certo hihi

Tá agora se eu quisesse que,  quando um player der o comando /uber, fosse criado um blip nele visível somente para a acl uber, como eu faria?

createBlipAttachedTo
getElementsByType -- loop em todos jogadores
isObjectInACLGroup -- verificar se é uber
setElementVisibleTo

Edit: e quando alguém entrar na ACL, você vai precisar atualizar o jogador para que ele possa visualizar os blips dos colegas.

Edited by DNL291

Please do not PM me with scripting related question nor support, use the forums instead.

Posted

Mano, eu fiz exatamente como voces recomendaram, mas acho que deu algum problema pois o marker inicial não aparece mais...

 

entrada = createMarker (1154.66015625, -1457.9853515625, 14.796875, "cylinder", 1.1, 0, 191, 255, 150)

function trab (source)
	if isElementWithinMarker(source, mktrab) then
		local account = isGuestAccount(getPlayerAccount(source)) and false or getPlayerAccount(source)
		if account then
			if isObjectInACLGroup("user."..getAccountName(account), aclGetGroup("UBER")) then
				return outputChatBox("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você já está trabalhando de Uber", source, 255, 255, 255, true)
			end
			if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then
				outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true)
			end
		end
	else
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true)
	end
end
addCommandHandler ("trab2", trab)

 

Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR

Minha página no Facebook: Delta Scripting - MTA


"Viribus et honor"

  • Moderators
Posted

Sempre deixe o /debugscript 3 ativado para ver se há erros.

Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanksspacer.png

Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile
Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment
Discord Oficial do MTA: https://mtasa.com/discord
Blacklist e Whitelist de Scripters: Planilha

Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.

Posted

Não entendi o seu erro, eu testei aqui e funcionou, lembrando que você criou um mark com nome ' entrada ' e na função de verificação se o jogador esta no mark ou não esta 'mktrab'

Teste assim, leia os comentários nas linhas.

 

local entrada = createMarker (1154.66015625, -1457.9853515625, 14.796875, "cylinder", 1.1, 0, 191, 255, 150) -- Entrada ( não sei do que é )
local mktrab = createMarker (1151.968, -1454.409, 14.9, "cylinder", 1.1, 255, 0, 0, 150) -- Mark de pegar o trampo

function trab (source) -- Função
	if isElementWithinMarker (source, mktrab) then -- Se o jogador estiver no mark 'mktrab' então:
		local account = isGuestAccount(getPlayerAccount(source)) and false or getPlayerAccount(source) -- Verifica se o jogador não esta deslogado, se tiver retorna false
		if account then
			if isObjectInACLGroup("user."..getAccountName(account), aclGetGroup("UBER")) then -- Se o jogador já estiver na ACL uber então:
				return outputChatBox("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você já está trabalhando de Uber", source, 255, 255, 255, true) -- Retorna false enviando a output
			end
			if aclGroupAddObject (aclGetGroup("UBER"), "user. "..getAccountName(account)) then -- Se não estiver na ACL uber e usar o comando então é adicionado
				outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - Você agora está trabalhando de Uber, espere até aparecer um chamado", source, 255, 255, 255, true) -- Envia essa mensagem se ocorrer tudo bem
			end
		end
	else -- Se o jogador não estiver no mark então:
		outputChatBox ("✘ #838B83Uber Brasil #FFFFFF✘ - #ff0000Você não está no local correto para pegar o trabalho", source, 255, 255, 255, true) -- envia essa mensagem.
	end
end
addCommandHandler ("trab2", trab) -- Comando que executa a função toda.

----------------------------
-- Comando de testes pra você ir até o mark que criei pra testar, após testar pode remover.
function teleMark (thePlayer)
	setElementPosition (thePlayer, 1151.968, -1454.409, 16.1 )
end
addCommandHandler ( "1", teleMark)

 

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