Jump to content

Ajuda com aclGroupAddObject


Recommended Posts

Eu fiz esse script para adicionar um player em ACL de vip, porém ele não está adicionando no ACL

Grupo = "VIP"

function Ativarvip (accountName, playerSource, commandName )
 	if accountname = getAccountName(getPlayerAccount(thePlayer)) then
 		aclGroupAddObject (aclGetGroup( Grupo ), "user."..accountName)
 		outputChatBox ("O Jogador "..accountName.." Adquiriu um VIP em nosso Servidor", playerSource)
 	else
 		outputChatBox ("Não Existe Jogador com esse Nome.", playerSource)
		outputChatBox ("Correct syntax: /ativarvip (Nome)", playerSource)
end

addCommandHandler = ("ativarvip", Ativarvip)

alguém pode me indicar qual o erro?

Link to post

Bom vamos lá, existem vários erros.
 

  1. Você criou a variável accountname dentro do IF
  2. Você não colocou o END do IF
  3. No getPlayerAccount você não colocou o argumento do jogador que você digitou o nome
Link to post
Grupo = "VIP"

function Ativarvip (playerSource, commandName, accountName )
  	local admName = getAccountName (getPlayerAccount(playerSource ))
    if not isObjectInACLGroup ("user."..admName, aclGetGroup ( "Admin" ) ) then return outputChatBox ("Comando exclusivo para staffs.", playerSource)end --Verifica se quem está dando o VIP é um Admin
  	if not accountName then return outputChatBox ("Correct syntax: /ativarvip (Nome)", playerSource) end --Se não informar um nome no comando o código para aqui
  	if not getAccount (accountName) then return outputChatBox ("Não existe jogador com esse nome de usuário.", playerSource) end --Se o nome informado não for referente a nenhuma conta cadastrada para aqui

 		aclGroupAddObject (aclGetGroup( Grupo ), "user."..accountName) --Depois de passar pelas verificações, adiciona o player no grupo
 		outputChatBox ("O Jogador "..accountName.." Adquiriu um VIP em nosso Servidor", playerSource)
end

addCommandHandler = ("ativarvip", Ativarvip)

Não testei, veja se vai funcionar.

 

Você cometeu inúmeros erros no seu código, por exemplo:

na linha 3 os parâmetros estão na ordem errada

na linha 4 o "thePlayer" não fui atribuído nenhum valor em momento algum

na linha 4 você declara o "accountname" mas no código todo você usa "accountName", note que são duas variáveis diferentes.

na linha 4 você DEFINE um valor pro accountname no lugar da condição. sinceramente não sei se isso funciona, mas definitivamente não é recomendável. Acho que o que você queria fazer é 

local accountname = getAccountName(getPlayerAccount(thePlayer)) -- mesmo assim estaria errado porque esse thePlayer não existe, o valor é nulo.
if accountname then
  ......
end


OU


if accountname == getAccountName(getPlayerAccount(thePlayer)) then --assim também está incorreto, só coloquei pra você ver a diferente. == é comparação, como se fosse um "é igual a?" e = vc está atribuindo um valor
  ......
end

 

  • Like 1
  • Thanks 1
Link to post

E não se esqueça de configurar as permissões no meta :
 

	<aclrequest>
		<right name="function.aclGroupAddObject" access="true" />
		<right name="function.aclGroupRemoveObject" access="true"/>
	</aclrequest>

assim que entrar no server pressione F8 e digite: "aclrequest" e você terá a sintaxe para a liberação das permissões.

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

    No registered users viewing this page.

×
×
  • Create New...