IsObjectInACLGroup: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Undo revision 72005 by Toliak (talk) Object is actually a string containing "user.accountName" or "resource.resourceName")
Tag: Undo
m (Updated both examples to look nicer (didn't change what they do) and not display bad practices (like global variables) so new devs can learn with good code)
 
(2 intermediate revisions by 2 users not shown)
Line 6: Line 6:
==Syntax==  
==Syntax==  
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool isObjectInACLGroup ( string theObject, aclgroup theGroup )
bool isObjectInACLGroup ( string theObjectName, aclgroup theGroup )
</syntaxhighlight>  
</syntaxhighlight>  
{{New feature/item|3.0141|1.4.0|6994|{{OOP||[[aclgroup]]:doesContainObject||}}}}
{{New feature/item|3.0141|1.4.0|6994|{{OOP||[[aclgroup]]:doesContainObject||}}}}
===Required Arguments===  
===Required Arguments===  
*'''theObject:''' the name of the object to check. Examples: "resource.ctf", "user.Jim".
*'''theObjectName:''' the name of the object to check. Examples: "resource.ctf", "user.Jim".
*'''theGroup:''' the [[ACL group]] pointer of the group from which the object should be found.
*'''theGroup:''' the [[AclGroup|ACL group]] pointer of the group from which the object should be found.


===Returns===
===Returns===
Line 19: Line 19:
''' Example 1:''' This example adds a ''jetpack'' command that is only available to admins.  When entering the command, it will toggle the player's jetpack.
''' Example 1:''' This example adds a ''jetpack'' command that is only available to admins.  When entering the command, it will toggle the player's jetpack.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
addCommandHandler ( "jetpack",
addCommandHandler ( "jetpack", function ( thePlayer )
    function ( thePlayer )
    if doesPedHaveJetPack ( thePlayer ) then -- If the player have a jetpack already, remove it
        if doesPedHaveJetPack ( thePlayer ) then -- If the player have a jetpack already, remove it
        removePedJetPack ( thePlayer ) -- Remove the jetpack
            removePedJetPack ( thePlayer ) -- Remove the jetpack
        return -- And stop the function here
            return -- And stop the function here
    end
 
    -- Otherwise, give him one if he has access
 
    local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) -- get his account name
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- Does he have access to Admin functions?
        if not doesPedHaveJetPack ( thePlayer ) then -- If the player doesn't have a jetpack give it.
            givePedJetPack ( thePlayer )  -- Give the jetpack
         end
         end
    end
    -- Otherwise, give him one if he has access
end)
 
    local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) -- get his account name
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- Does he have access to Admin functions?
          if not doesPedHaveJetPack ( thePlayer ) then -- If the player doesn't have a jetpack give it.
              givePedJetPack ( thePlayer )  -- Give the jetpack
          end
    end
end
)
</syntaxhighlight>
</syntaxhighlight>


'''Example 2:''' This example displays a list of all the online admins in the chat box (assuming your administrator's group in your ACL is called 'admin'):
'''Example 2:''' This example displays a list of all the online admins in the chat box (assuming your administrator's group in your ACL is called 'Admin'):
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
players = getElementsByType ( "player" )
local admins = ""
admins = ""
local players = getElementsByType("player")
for k,v in ipairs(players) do
for k, v in ipairs(players) do
  local accountname = ""
   if not isGuestAccount(getPlayerAccount(v)) then
   if (isGuestAccount(getPlayerAccount(v)) == false) then
       local accountName = getAccountName(getPlayerAccount(v))
       accountname = getAccountName (getPlayerAccount(v))
       if isObjectInACLGroup("user." .. accountName, aclGetGroup("Admin")) then
       if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "admin" ) ) then
         if admins == "" then
         if (admins == "") then
             admins = getPlayerName(v)
             admins = getPlayerName(v)
         else
         else
Line 55: Line 52:
   end
   end
end
end
outputChatBox( "Online Admins:", getRootElement(), 255, 255, 0)
outputChatBox("Online Admins:", getRootElement(), 255, 255, 0)
outputChatBox( " " .. tostring ( admins ), getRootElement(), 255, 255, 0)
outputChatBox(" " .. admins, getRootElement(), 255, 255, 0)
</syntaxhighlight>
</syntaxhighlight>



Latest revision as of 20:48, 13 May 2024

[[{{{image}}}|link=|]] Important Note: You must NOT to use this function to limit features to users that belong to specific groups. Instead you MUST use hasObjectPermissionTo. Using this function forces the server owner to name their group a certain way, whereas using hasObjectPermissionTo allows the owner to give permission for whatever features you restrict to whatever groups they have set up in their ACL.

This function is used to determine if an object is in a group.

Syntax

bool isObjectInACLGroup ( string theObjectName, aclgroup theGroup )

OOP Syntax Help! I don't understand this!

Method: aclgroup:doesContainObject(...)

Required Arguments

  • theObjectName: the name of the object to check. Examples: "resource.ctf", "user.Jim".
  • theGroup: the ACL group pointer of the group from which the object should be found.

Returns

Returns true if the object is in the specified group, false otherwise.

Example

Example 1: This example adds a jetpack command that is only available to admins. When entering the command, it will toggle the player's jetpack.

addCommandHandler ( "jetpack", function ( thePlayer )
    if doesPedHaveJetPack ( thePlayer ) then -- If the player have a jetpack already, remove it
        removePedJetPack ( thePlayer ) -- Remove the jetpack
        return -- And stop the function here
    end

    -- Otherwise, give him one if he has access

    local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) -- get his account name
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) then -- Does he have access to Admin functions?
        if not doesPedHaveJetPack ( thePlayer ) then -- If the player doesn't have a jetpack give it.
            givePedJetPack ( thePlayer )  -- Give the jetpack
        end
    end
end)

Example 2: This example displays a list of all the online admins in the chat box (assuming your administrator's group in your ACL is called 'Admin'):

local admins = ""
local players = getElementsByType("player")
for k, v in ipairs(players) do
   if not isGuestAccount(getPlayerAccount(v)) then
      local accountName = getAccountName(getPlayerAccount(v))
      if isObjectInACLGroup("user." .. accountName, aclGetGroup("Admin")) then
         if admins == "" then
            admins = getPlayerName(v)
         else
            admins = admins .. ", " .. getPlayerName(v)
         end
      end
   end
end
outputChatBox("Online Admins:", getRootElement(), 255, 255, 0)
outputChatBox(" " .. admins, getRootElement(), 255, 255, 0)

See Also