Jump to content

Dúvidas com ACL


Recommended Posts

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

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

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

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

Link to comment
  • Moderators

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

Link to comment
  • Moderators

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

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)

 

Link to comment

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)

 

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