Advertisement
Guest User

Untitled

a guest
Jan 30th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 130.87 KB | None | 0 0
  1. Admin_main :
  2.  
  3.  
  4. [lua]--[[**********************************
  5. *
  6. *   Multi Theft Auto - Admin Panel
  7. *
  8. *   gui\admin_main.lua
  9. *
  10. *   Original File by lil_Toady
  11. *
  12. **************************************]]
  13.  
  14. aAdminForm = nil
  15. aLastCheck = 0
  16. aCurrentVehicle = 429
  17. aCurrentWeapon = 30
  18. aCurrentAmmo = 90
  19. aCurrentSlap = 20
  20. aPlayers = {}
  21. aBans = {}
  22. aLastSync = 0
  23. aResources = {}
  24.  
  25. function aAdminMenu ()
  26.     if ( aAdminForm == nil ) then
  27.         local x, y = guiGetScreenSize()
  28.         aAdminForm          = guiCreateWindow ( x / 2 - 310, y / 2 - 260, 620, 520, "", false )
  29.                             guiWindowSetSizable ( aAdminForm, false )
  30.                           guiSetText ( aAdminForm, "Admin Panel   -   v".._version )
  31.                           guiCreateLabel ( 0.75, 0.05, 0.45, 0.04, "Admin Panel by lil_Toady", true, aAdminForm )
  32.         aTabPanel           = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm )
  33.         aTab1 = {} 
  34.         aTab1.Tab           = guiCreateTab ( "Players", aTabPanel, "players" )
  35.         aTab1.Messages      = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab )
  36.         aTab1.PlayerListSearch  = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab )
  37.                           guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab )
  38.         aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab )
  39.         aTab1.PlayerList        = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab )
  40.                           guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 )
  41.                           for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end
  42.         aTab1.Kick          = guiCreateButton ( 0.71, 0.125, 0.13, 0.04, "Kick", true, aTab1.Tab, "kick" )
  43.         aTab1.Ban           = guiCreateButton ( 0.85, 0.125, 0.13, 0.04, "Ban", true, aTab1.Tab, "ban" )
  44.         aTab1.Mute          = guiCreateButton ( 0.71, 0.170, 0.13, 0.04, "Mute", true, aTab1.Tab, "mute" )
  45.         aTab1.Freeze        = guiCreateButton ( 0.85, 0.170, 0.13, 0.04, "Freeze", true, aTab1.Tab, "freeze" )
  46.         aTab1.Spectate      = guiCreateButton ( 0.71, 0.215, 0.13, 0.04, "Spectate", true, aTab1.Tab, "spectate" )
  47.         aTab1.Slap          = guiCreateButton ( 0.85, 0.215, 0.13, 0.04, "Slap! "..aCurrentSlap.." _", true, aTab1.Tab, "slap" )
  48.         aTab1.SlapDropDown  = guiCreateStaticImage ( 0.95, 0.215, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab )
  49.         aTab1.SlapOptions       = guiCreateGridList ( 0.85, 0.215, 0.13, 0.40, true, aTab1.Tab )
  50.                           guiGridListSetSortingEnabled ( aTab1.SlapOptions, false )
  51.                           guiGridListAddColumn( aTab1.SlapOptions, "", 0.85 )
  52.                           guiSetVisible ( aTab1.SlapOptions, false )
  53.                           for i = 0, 10 do guiGridListSetItemText ( aTab1.SlapOptions, guiGridListAddRow ( aTab1.SlapOptions ), 1, tostring ( i * 10 ), false, false ) end
  54.         aTab1.Nick          = guiCreateButton ( 0.71, 0.260, 0.13, 0.04, "Set Nick", true, aTab1.Tab )
  55.         aTab1.Shout         = guiCreateButton ( 0.85, 0.260, 0.13, 0.04, "Shout!", true, aTab1.Tab, "shout" )
  56.         aTab1.Admin         = guiCreateButton ( 0.71, 0.305, 0.27, 0.04, "Give admin rights", true, aTab1.Tab, "setgroup" )
  57.    
  58.                           guiCreateHeader ( 0.25, 0.08, 0.20, 0.04, "Player:", true, aTab1.Tab )
  59.         aTab1.Name          = guiCreateLabel ( 0.26, 0.125, 0.30, 0.035, "Name: N/A", true, aTab1.Tab )
  60.         aTab1.IP            = guiCreateLabel ( 0.26, 0.170, 0.30, 0.035, "IP: N/A", true, aTab1.Tab )
  61.         aTab1.Serial        = guiCreateLabel ( 0.26, 0.215, 0.435, 0.035, "Serial: N/A", true, aTab1.Tab )
  62.         --aTab1.Username        = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Username: N/A", true, aTab1.Tab )
  63.         aTab1.Version       = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Version: N/A", true, aTab1.Tab )
  64.         aTab1.Accountname   = guiCreateLabel ( 0.26, 0.275, 0.435, 0.035, "Account Name: N/A", true, aTab1.Tab )
  65.         aTab1.Groups        = guiCreateLabel ( 0.26, 0.305, 0.435, 0.035, "Groups: N/A", true, aTab1.Tab )
  66.         aTab1.Flag          = guiCreateStaticImage ( 0.40, 0.170, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab )
  67.         aTab1.CountryCode   = guiCreateLabel ( 0.45, 0.170, 0.04, 0.035, "", true, aTab1.Tab )
  68.                           guiCreateHeader ( 0.25, 0.350, 0.20, 0.04, "Game:", true, aTab1.Tab )
  69.         aTab1.Health        = guiCreateLabel ( 0.26, 0.395, 0.20, 0.04, "Health: 0%", true, aTab1.Tab )
  70.         aTab1.Armour        = guiCreateLabel ( 0.45, 0.395, 0.20, 0.04, "Armour: 0%", true, aTab1.Tab )
  71.         aTab1.Skin          = guiCreateLabel ( 0.26, 0.440, 0.20, 0.04, "Skin: N/A", true, aTab1.Tab )
  72.         aTab1.Team          = guiCreateLabel ( 0.45, 0.440, 0.20, 0.04, "Team: None", true, aTab1.Tab )
  73.         aTab1.Weapon        = guiCreateLabel ( 0.26, 0.485, 0.35, 0.04, "Weapon: N/A", true, aTab1.Tab )
  74.         aTab1.Ping          = guiCreateLabel ( 0.26, 0.530, 0.20, 0.04, "Ping: 0", true, aTab1.Tab )
  75.         aTab1.Money         = guiCreateLabel ( 0.45, 0.530, 0.20, 0.04, "Money: 0", true, aTab1.Tab )
  76.         aTab1.Area          = guiCreateLabel ( 0.26, 0.575, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab )
  77.         aTab1.PositionX     = guiCreateLabel ( 0.26, 0.620, 0.30, 0.04, "X: 0", true, aTab1.Tab )
  78.         aTab1.PositionY     = guiCreateLabel ( 0.26, 0.665, 0.30, 0.04, "Y: 0", true, aTab1.Tab )
  79.         aTab1.PositionZ     = guiCreateLabel ( 0.26, 0.710, 0.30, 0.04, "Z: 0", true, aTab1.Tab )
  80.         aTab1.Dimension     = guiCreateLabel ( 0.26, 0.755, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab )
  81.         aTab1.Interior      = guiCreateLabel ( 0.45, 0.755, 0.20, 0.04, "Interior: 0", true, aTab1.Tab )
  82.         aTab1.SetHealth     = guiCreateButton ( 0.71, 0.395, 0.13, 0.04, "Set Health", true, aTab1.Tab, "sethealth" )
  83.         aTab1.SetArmour     = guiCreateButton ( 0.85, 0.395, 0.13, 0.04, "Set Armour", true, aTab1.Tab, "setarmour" )
  84.         aTab1.SetSkin       = guiCreateButton ( 0.71, 0.440, 0.13, 0.04, "Set Skin", true, aTab1.Tab, "setskin" )
  85.         aTab1.SetTeam       = guiCreateButton ( 0.85, 0.440, 0.13, 0.04, "Set Team", true, aTab1.Tab, "setteam" )
  86.         aTab1.SetDimension  = guiCreateButton ( 0.71, 0.755, 0.13, 0.04, "Set Dimens.", true, aTab1.Tab, "setdimension" )
  87.         aTab1.SetInterior       = guiCreateButton ( 0.85, 0.755, 0.13, 0.04, "Set Interior", true, aTab1.Tab, "setinterior" )
  88.         aTab1.GiveWeapon        = guiCreateButton ( 0.71, 0.485, 0.27, 0.04, "Give: "..getWeaponNameFromID ( aCurrentWeapon ), true, aTab1.Tab, "giveweapon" )
  89.         aTab1.WeaponDropDown    = guiCreateStaticImage ( 0.95, 0.485, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab )
  90.         aTab1.WeaponOptions = guiCreateGridList ( 0.71, 0.485, 0.27, 0.48, true, aTab1.Tab )
  91.                           guiGridListAddColumn( aTab1.WeaponOptions, "", 0.85 )
  92.                           guiSetVisible ( aTab1.WeaponOptions, false )
  93.                           for i = 1, 46 do if ( getWeaponNameFromID ( i ) ~= false ) then guiGridListSetItemText ( aTab1.WeaponOptions, guiGridListAddRow ( aTab1.WeaponOptions ), 1, getWeaponNameFromID ( i ), false, false ) end end
  94.         aTab1.SetMoney      = guiCreateButton ( 0.71, 0.530, 0.13, 0.04, "Set Money", true, aTab1.Tab, "setmoney" )
  95.         aTab1.SetStats      = guiCreateButton ( 0.85, 0.530, 0.13, 0.04, "Set Stats", true, aTab1.Tab, "setstat" )
  96.         aTab1.JetPack       = guiCreateButton ( 0.71, 0.575, 0.27, 0.04, "Give JetPack", true, aTab1.Tab, "jetpack" )
  97.         aTab1.Warp          = guiCreateButton ( 0.71, 0.620, 0.27, 0.04, "Warp to player", true, aTab1.Tab, "warp" )
  98.         aTab1.WarpTo        = guiCreateButton ( 0.71, 0.665, 0.27, 0.04, "Warp player to..", true, aTab1.Tab, "warp" )
  99.                           guiCreateHeader ( 0.25, 0.805, 0.20, 0.04, "Vehicle:", true, aTab1.Tab )
  100.         aTab1.Vehicle       = guiCreateLabel ( 0.26, 0.850, 0.35, 0.04, "Vehicle: N/A", true, aTab1.Tab )
  101.         aTab1.VehicleHealth = guiCreateLabel ( 0.26, 0.895, 0.25, 0.04, "Vehicle Health: 0%", true, aTab1.Tab )
  102.         aTab1.VehicleFix        = guiCreateButton ( 0.71, 0.84, 0.13, 0.04, "Fix", true, aTab1.Tab, "repair" )
  103.         aTab1.VehicleDestroy    = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" )
  104.         aTab1.VehicleBlow       = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" )
  105.         aTab1.VehicleCustomize  = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" )
  106.         aTab1.AnonAdmin       = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), true, aTab1.Tab )
  107.         aTab1.GiveVehicle       = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" )
  108.         aTab1.VehicleDropDown   = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab )
  109.         local gx, gy        = guiGetSize ( aTab1.GiveVehicle, false )
  110.         aTab1.VehicleOptions    = guiCreateGridList ( 0, 0, gx, 200, false )
  111.                           guiGridListAddColumn( aTab1.VehicleOptions, "", 0.85 )
  112.                           guiSetAlpha ( aTab1.VehicleOptions, 0.80 )
  113.                           guiSetVisible ( aTab1.VehicleOptions, false )
  114.                             local vehicleNames = {}
  115.                             for i = 400, 611 do
  116.                                 if ( getVehicleNameFromModel ( i ) ~= "" ) then
  117.                                     table.insert( vehicleNames, { model = i, name = getVehicleNameFromModel ( i ) } )
  118.                                 end
  119.                             end
  120.                             table.sort( vehicleNames, function(a, b) return a.name < b.name end )
  121.                             for _,info in ipairs(vehicleNames) do
  122.                                 local row = guiGridListAddRow ( aTab1.VehicleOptions )
  123.                                 guiGridListSetItemText ( aTab1.VehicleOptions, row, 1, info.name, false, false )
  124.                                 guiGridListSetItemData ( aTab1.VehicleOptions, row, 1, tostring ( info.model ) )
  125.                             end
  126.         aTab2 = {}
  127.         aTab2.Tab           = guiCreateTab ( "Resources", aTabPanel, "resources" )
  128.         aTab2.ManageACL = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "Manage ACL", true, aTab2.Tab, "ACL" )
  129.         aTab2.ResourceListSearch = guiCreateEdit ( 0.03, 0.05, 0.31, 0.04, "", true, aTab2.Tab )
  130.                           guiCreateStaticImage ( 0.34, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab2.Tab )
  131.         aTab2.ResourceList  = guiCreateGridList ( 0.03, 0.10, 0.35, 0.80, true, aTab2.Tab )
  132.                           guiGridListAddColumn( aTab2.ResourceList, "Resource", 0.55 )
  133.                           guiGridListAddColumn( aTab2.ResourceList, "", 0.05 )
  134.                           guiGridListAddColumn( aTab2.ResourceList, "State", 0.35 )
  135.                           guiGridListAddColumn( aTab2.ResourceList, "Full Name", 0.6 )
  136.                           guiGridListAddColumn( aTab2.ResourceList, "Author", 0.4 )
  137.                           guiGridListAddColumn( aTab2.ResourceList, "Version", 0.2 )
  138.         aTab2.ResourceInclMaps  = guiCreateCheckBox ( 0.03, 0.91, 0.15, 0.04, "Include Maps", false, true, aTab2.Tab )
  139.         aTab2.ResourceRefresh   = guiCreateButton ( 0.20, 0.915, 0.18, 0.04, "Refresh list", true, aTab2.Tab, "listresources" )
  140.         aTab2.ResourceSettings  = guiCreateButton ( 0.40, 0.05, 0.20, 0.04, "Settings", true, aTab2.Tab )
  141.         aTab2.ResourceStart = guiCreateButton ( 0.40, 0.10, 0.20, 0.04, "Start", true, aTab2.Tab, "start" )
  142.         aTab2.ResourceRestart   = guiCreateButton ( 0.40, 0.15, 0.20, 0.04, "Restart", true, aTab2.Tab, "restart" )
  143.         aTab2.ResourceStop  = guiCreateButton ( 0.40, 0.20, 0.20, 0.04, "Stop", true, aTab2.Tab, "stop" )
  144.         aTab2.ResourceDelete    = guiCreateButton ( 0.40, 0.25, 0.20, 0.04, "Delete", true, aTab2.Tab, "delete" )
  145.         aTab2.ResourcesStopAll  = guiCreateButton ( 0.63, 0.2, 0.20, 0.04, "Stop All Resources", true, aTab2.Tab, "stopall" )
  146.         aTab2.ResourceFailture  = guiCreateButton ( 0.63, 0.10, 0.25, 0.04, "Get Load Failture", true, aTab2.Tab )
  147.                          guiSetVisible ( aTab2.ResourceFailture, false )
  148.         --aModules          = guiCreateTabPanel ( 0.40, 0.25, 0.57, 0.38, true, aTab2.Tab ) --What's that for?
  149.                             guiCreateHeader(0.40, 0.3, 0.3, 0.04, "Resource Informations:", true, aTab2.Tab)
  150.         aTab2.ResourceName          = guiCreateLabel ( 0.41, 0.35, 0.6, 0.03, "Full Name: ", true, aTab2.Tab )
  151.         aTab2.ResourceAuthor        = guiCreateLabel ( 0.41, 0.4, 0.6, 0.03, "Author: ", true, aTab2.Tab )
  152.         aTab2.ResourceVersion       = guiCreateLabel ( 0.41, 0.45, 0.6, 0.03, "Version: ", true, aTab2.Tab )
  153.         aTab2.ResourceVersion       = guiCreateLabel ( 0.41, 0.45, 0.6, 0.03, "Version: ", true, aTab2.Tab )
  154.                           guiCreateLabel ( 0.40, 0.77, 0.20, 0.03, "Actions log:", true, aTab2.Tab )
  155.         aTab2.LogLine1      = guiCreateLabel ( 0.41, 0.81, 0.50, 0.03, "", true, aTab2.Tab )
  156.         aTab2.LogLine2      = guiCreateLabel ( 0.41, 0.84, 0.50, 0.03, "", true, aTab2.Tab )
  157.         aTab2.LogLine3      = guiCreateLabel ( 0.41, 0.87, 0.50, 0.03, "", true, aTab2.Tab )
  158.         aTab2.LogLine4      = guiCreateLabel ( 0.41, 0.90, 0.50, 0.03, "", true, aTab2.Tab )
  159.         aTab2.LogLine5      = guiCreateLabel ( 0.41, 0.93, 0.50, 0.03, "", true, aTab2.Tab )
  160.                           guiCreateLabel ( 0.41, 0.65, 0.50, 0.04, "Execute Command:", true, aTab2.Tab )
  161.         aTab2.Command       = guiCreateEdit ( 0.41, 0.70, 0.40, 0.055, "", true, aTab2.Tab )
  162.         aTab2.ExecuteClient = guiCreateButton ( 0.82, 0.70, 0.16, 0.035, "Client", true, aTab2.Tab, "execute" )
  163.         aTab2.ExecuteServer = guiCreateButton ( 0.82, 0.736, 0.16, 0.035, "Server", true, aTab2.Tab, "execute" )
  164.         aTab2.ExecuteAdvanced   = guiCreateLabel ( 0.45, 0.71, 0.50, 0.04, "For advanced users only.", true, aTab2.Tab )
  165.                           guiLabelSetColor ( aTab2.ExecuteAdvanced, 255, 0, 0 )
  166.         aLogLines = 1
  167.  
  168.         createMapTab()
  169.        
  170.         aTab3 = {}
  171.         aTab3.Tab           = guiCreateTab ( "Server", aTabPanel, "server" )
  172.         aTab3.Server        = guiCreateLabel ( 0.05, 0.05, 0.70, 0.05, "Server: Unknown", true, aTab3.Tab )
  173.         aTab3.Password      = guiCreateLabel ( 0.05, 0.10, 0.40, 0.05, "Password: None", true, aTab3.Tab )
  174.         aTab3.GameType      = guiCreateLabel ( 0.05, 0.15, 0.40, 0.05, "Game Type: None", true, aTab3.Tab )
  175.         aTab3.MapName       = guiCreateLabel ( 0.05, 0.20, 0.40, 0.05, "Map Name: None", true, aTab3.Tab )
  176.         aTab3.Players       = guiCreateLabel ( 0.05, 0.25, 0.20, 0.05, "Players: 0/0", true, aTab3.Tab )
  177.         aTab3.SetPassword       = guiCreateButton ( 0.80, 0.05, 0.18, 0.04, "Set Password", true, aTab3.Tab, "setpassword" )
  178.         aTab3.ResetPassword = guiCreateButton ( 0.80, 0.10, 0.18, 0.04, "Reset Password", true, aTab3.Tab, "setpassword" )
  179.         aTab3.SetGameType       = guiCreateButton ( 0.80, 0.15, 0.18, 0.04, "Set Game Type", true, aTab3.Tab, "setgame" )
  180.         aTab3.SetMapName        = guiCreateButton ( 0.80, 0.20, 0.18, 0.04, "Set Map Name", true, aTab3.Tab, "setmap" )
  181.         aTab3.SetWelcome        = guiCreateButton ( 0.80, 0.25, 0.18, 0.04, "Welcome Message", true, aTab3.Tab, "setwelcome" )
  182.         aTab3.Shutdown      = guiCreateButton ( 0.80, 0.3, 0.18, 0.04, "Shutdown", true, aTab3.Tab, "shutdown" )
  183.                           guiCreateStaticImage ( 0.05, 0.32, 0.50, 0.0025, "client\\images\\dot.png", true, aTab3.Tab )
  184.         aTab3.WeatherCurrent    = guiCreateLabel ( 0.05, 0.35, 0.45, 0.05, "Current Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab )
  185.         aTab3.WeatherDec        = guiCreateButton ( 0.05, 0.40, 0.035, 0.04, "<", true, aTab3.Tab )
  186.         aTab3.Weather       = guiCreateEdit ( 0.095, 0.40, 0.35, 0.04, getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab )
  187.         aTab3.WeatherInc        = guiCreateButton ( 0.45, 0.40, 0.035, 0.04, ">", true, aTab3.Tab )
  188.                           guiEditSetReadOnly ( aTab3.Weather, true )
  189.         aTab3.WeatherSet        = guiCreateButton ( 0.50, 0.40, 0.10, 0.04, "Set", true, aTab3.Tab, "setweather" )
  190.         aTab3.WeatherBlend  = guiCreateButton ( 0.61, 0.40, 0.15, 0.04, "Set Blended", true, aTab3.Tab, "blendweather" )
  191.  
  192.                           local th, tm = getTime()
  193.         aTab3.TimeCurrent       = guiCreateLabel ( 0.05, 0.45, 0.25, 0.04, "Time: "..th..":"..tm, true, aTab3.Tab )
  194.         aTab3.TimeH         = guiCreateEdit ( 0.35, 0.45, 0.055, 0.04, "12", true, aTab3.Tab )
  195.         aTab3.TimeM         = guiCreateEdit ( 0.425, 0.45, 0.055, 0.04, "00", true, aTab3.Tab )
  196.                           guiCreateLabel ( 0.415, 0.45, 0.05, 0.04, ":", true, aTab3.Tab )
  197.                           guiEditSetMaxLength ( aTab3.TimeH, 2 )
  198.                           guiEditSetMaxLength ( aTab3.TimeM, 2 )
  199.         aTab3.TimeSet       = guiCreateButton ( 0.50, 0.45, 0.10, 0.04, "Set", true, aTab3.Tab, "settime" )
  200.                           guiCreateLabel ( 0.63, 0.45, 0.12, 0.04, "( 0-23:0-59 )", true, aTab3.Tab )
  201.  
  202.         aTab3.GravityCurrent    = guiCreateLabel ( 0.05, 0.50, 0.28, 0.04, "Gravitation: "..string.sub ( getGravity(), 0, 6 ), true, aTab3.Tab )
  203.         aTab3.Gravity       = guiCreateEdit ( 0.35, 0.50, 0.135, 0.04, "0.008", true, aTab3.Tab )
  204.         aTab3.GravitySet        = guiCreateButton ( 0.50, 0.50, 0.10, 0.04, "Set", true, aTab3.Tab, "setgravity" )
  205.  
  206.         aTab3.SpeedCurrent  = guiCreateLabel ( 0.05, 0.55, 0.30, 0.04, "Game Speed: "..getGameSpeed(), true, aTab3.Tab )
  207.         aTab3.Speed         = guiCreateEdit ( 0.35, 0.55, 0.135, 0.04, "1", true, aTab3.Tab )
  208.         aTab3.SpeedSet      = guiCreateButton ( 0.50, 0.55, 0.10, 0.04, "Set", true, aTab3.Tab, "setgamespeed" )
  209.                           guiCreateLabel ( 0.63, 0.55, 0.09, 0.04, "( 0-10 )", true, aTab3.Tab )
  210.  
  211.         aTab3.WavesCurrent  = guiCreateLabel ( 0.05, 0.60, 0.25, 0.04, "Wave Height: "..getWaveHeight(), true, aTab3.Tab )
  212.         aTab3.Waves         = guiCreateEdit ( 0.35, 0.60, 0.135, 0.04, "0", true, aTab3.Tab )
  213.         aTab3.WavesSet      = guiCreateButton ( 0.50, 0.60, 0.10, 0.04, "Set", true, aTab3.Tab, "setwaveheight" )
  214.                          guiCreateLabel ( 0.63, 0.60, 0.09, 0.04, "( 0-100 )", true, aTab3.Tab )
  215.        
  216.         aTab3.FPSCurrent    = guiCreateLabel ( 0.05, 0.65, 0.25, 0.04, "FPS Limit: 38", true, aTab3.Tab )
  217.         aTab3.FPS           = guiCreateEdit ( 0.35, 0.65, 0.135, 0.04, "38", true, aTab3.Tab )
  218.         aTab3.FPSSet        = guiCreateButton ( 0.50, 0.65, 0.10, 0.04, "Set", true, aTab3.Tab, "setfpslimit" )
  219.                          guiCreateLabel ( 0.63, 0.65, 0.1, 0.04, "( 25-100 )", true, aTab3.Tab )
  220.                          
  221.  
  222.         aTab4 = {}
  223.         aTab4.Tab           = guiCreateTab ( "Bans", aTabPanel, "bans" )
  224.         aTab4.BansList      = guiCreateGridList ( 0.03, 0.05, 0.80, 0.87, true, aTab4.Tab )
  225.                           guiGridListAddColumn( aTab4.BansList, "Name", 0.22 )
  226.                           guiGridListAddColumn( aTab4.BansList, "IP", 0.22 )
  227.                           guiGridListAddColumn( aTab4.BansList, "Serial", 0.22 )
  228.                           guiGridListAddColumn( aTab4.BansList, "By", 0.22 )
  229.                           guiGridListAddColumn( aTab4.BansList, "Date", 0.17 )
  230.                           guiGridListAddColumn( aTab4.BansList, "Time", 0.13 )
  231.                           guiGridListAddColumn( aTab4.BansList, "Reason", 0.92 )
  232.                           guiGridListSetSortingEnabled( aTab4.BansList, false )
  233.         aTab4.Details       = guiCreateButton ( 0.85, 0.10, 0.13, 0.04, "Details", true, aTab4.Tab )
  234.         aTab4.Unban         = guiCreateButton ( 0.85, 0.20, 0.13, 0.04, "Unban", true, aTab4.Tab, "unban" )
  235.         aTab4.UnbanIP       = guiCreateButton ( 0.85, 0.25, 0.13, 0.04, "Unban IP", true, aTab4.Tab, "unbanip" )
  236.         aTab4.UnbanSerial       = guiCreateButton ( 0.85, 0.30, 0.13, 0.04, "Unban Serial", true, aTab4.Tab, "unbanserial" )
  237.         aTab4.BanIP         = guiCreateButton ( 0.85, 0.40, 0.13, 0.04, "Ban IP", true, aTab4.Tab, "banip" )
  238.         aTab4.BanSerial     = guiCreateButton ( 0.85, 0.45, 0.13, 0.04, "Ban Serial", true, aTab4.Tab, "banserial" )
  239.         aTab4.BansRefresh       = guiCreateButton ( 0.85, 0.85, 0.13, 0.04, "Refresh", true, aTab4.Tab, "listbans" )
  240.  
  241.         aTab4.BansTotal     = guiCreateLabel ( 0.20, 0.94, 0.31, 0.04, "Showing  0 / 0  bans", true, aTab4.Tab )
  242.         aTab4.BansMore      = guiCreateButton ( 0.50, 0.94, 0.13, 0.04, "Get more...", true, aTab4.Tab, "listbans" )
  243.  
  244.         aTab5 = {}
  245.         aTab5.Tab           = guiCreateTab ( "Admin Chat", aTabPanel, "adminchat" )
  246.         aTab5.AdminChat     = guiCreateMemo ( 0.03, 0.05, 0.75, 0.85, "", true, aTab5.Tab )
  247.                           guiSetProperty ( aTab5.AdminChat, "ReadOnly", "true" )
  248.         aTab5.AdminPlayers  = guiCreateGridList ( 0.79, 0.05, 0.18, 0.80, true, aTab5.Tab )
  249.                           guiGridListAddColumn ( aTab5.AdminPlayers, "Admins", 0.90 )
  250.         aTab5.AdminChatSound    = guiCreateCheckBox ( 0.79, 0.86, 0.18, 0.04, "Play Sound", true, true, aTab5.Tab )
  251.         aTab5.AdminText     = guiCreateEdit ( 0.03, 0.92, 0.80, 0.06, "", true, aTab5.Tab )
  252.         aTab5.AdminSay      = guiCreateButton ( 0.85, 0.92, 0.08, 0.06, "Say", true, aTab5.Tab )
  253.         aTab5.AdminChatHelp = guiCreateButton ( 0.94, 0.92, 0.03, 0.06, "?", true, aTab5.Tab )
  254.  
  255.         aTab6 = {}
  256.         aTab6.Tab           = guiCreateTab ( "Options", aTabPanel )
  257.                           guiCreateHeader ( 0.03, 0.05, 0.10, 0.05, "Main:", true, aTab6.Tab )
  258.         aTab6.OutputPlayer  = guiCreateCheckBox ( 0.05, 0.10, 0.47, 0.04, "Output player information to console on select", false, true, aTab6.Tab )
  259.                           guiCreateLabel ( 0.08, 0.15, 0.40, 0.04, "This might be useful to copy player data", true, aTab6.Tab )
  260.         aTab6.AdminChatOutput   = guiCreateCheckBox ( 0.05, 0.20, 0.47, 0.04, "Output admin messages to chat box", false, true, aTab6.Tab )
  261.                           guiCreateHeader (  0.03, 0.30, 0.47, 0.04, "Appearance:", true, aTab6.Tab )
  262.                           guiCreateHeader ( 0.63, 0.05, 0.10, 0.05, "Account:", true, aTab6.Tab )
  263.         aTab6.AutoLogin     = guiCreateCheckBox ( 0.65, 0.10, 0.47, 0.04, "Auto-login by serial", false, true, aTab6.Tab )
  264.                           guiSetVisible ( aTab6.AutoLogin, false )  -- Not used
  265.                           guiCreateHeader ( 0.63, 0.15, 0.25, 0.05, "Change Password:", true, aTab6.Tab )
  266.                           guiCreateLabel ( 0.65, 0.20, 0.15, 0.05, "Old password:", true, aTab6.Tab )
  267.                           guiCreateLabel ( 0.65, 0.25, 0.15, 0.05, "New password:", true, aTab6.Tab )
  268.                           guiCreateLabel ( 0.65, 0.30, 0.15, 0.05, "Confirm:", true, aTab6.Tab )
  269.         aTab6.PasswordOld       = guiCreateEdit ( 0.80, 0.20, 0.15, 0.045, "", true, aTab6.Tab )
  270.         aTab6.PasswordNew       = guiCreateEdit ( 0.80, 0.25, 0.15, 0.045, "", true, aTab6.Tab )
  271.         aTab6.PasswordConfirm   = guiCreateEdit ( 0.80, 0.30, 0.15, 0.045, "", true, aTab6.Tab )
  272.                           guiEditSetMasked ( aTab6.PasswordOld, true )
  273.                           guiEditSetMasked ( aTab6.PasswordNew, true )
  274.                           guiEditSetMasked ( aTab6.PasswordConfirm, true )
  275.         aTab6.PasswordChange    = guiCreateButton ( 0.85, 0.35, 0.10, 0.04, "Accept", true, aTab6.Tab )
  276.                           guiCreateHeader ( 0.03, 0.65, 0.20, 0.055, "Performance:", true, aTab6.Tab )
  277.                           guiCreateStaticImage ( 0.03, 0.69, 0.94, 0.0025, "client\\images\\dot.png", true, aTab6.Tab )
  278.                           guiCreateLabel ( 0.05, 0.71, 0.20, 0.055, "Performance priority:", true, aTab6.Tab )
  279.                           guiCreateLabel ( 0.11, 0.76, 0.10, 0.05, "Memory", true, aTab6.Tab )
  280.                           guiCreateLabel ( 0.11, 0.81, 0.10, 0.05, "Auto", true, aTab6.Tab )
  281.                           guiCreateLabel ( 0.11, 0.86, 0.10, 0.05, "Speed", true, aTab6.Tab )
  282.         aTab6.PerformanceRAM    = guiCreateRadioButton ( 0.07, 0.75, 0.05, 0.055, "", true, aTab6.Tab )
  283.         aTab6.PerformanceAuto   = guiCreateRadioButton ( 0.07, 0.80, 0.05, 0.055, "", true, aTab6.Tab )
  284.         aTab6.PerformanceCPU    = guiCreateRadioButton ( 0.07, 0.85, 0.05, 0.055, "", true, aTab6.Tab )
  285.                           if ( aGetSetting ( "performance" ) == "RAM" ) then guiRadioButtonSetSelected ( aTab6.PerformanceRAM, true )
  286.                           elseif ( aGetSetting ( "performance" ) == "CPU" ) then guiRadioButtonSetSelected ( aTab6.PerformanceCPU, true )
  287.                           else guiRadioButtonSetSelected ( aTab6.PerformanceAuto, true ) end
  288.         aTab6.PerformanceAdvanced = guiCreateButton ( 0.05, 0.91, 0.11, 0.04, "Advanced", true, aTab6.Tab )
  289.         aPerformance()
  290.                           guiCreateLabel ( 0.70, 0.90, 0.19, 0.055, "Refresh Delay(MS):", true, aTab6.Tab )
  291.         aTab6.RefreshDelay  = guiCreateEdit ( 0.89, 0.90, 0.08, 0.045, "50", true, aTab6.Tab )
  292.  
  293.         if ( aGetSetting ( "outputPlayer" ) ) then guiCheckBoxSetSelected ( aTab6.OutputPlayer, true ) end
  294.         if ( aGetSetting ( "adminChatOutput" ) ) then guiCheckBoxSetSelected ( aTab6.AdminChatOutput, true ) end
  295.         if ( aGetSetting ( "adminChatSound" ) ) then guiCheckBoxSetSelected ( aTab5.AdminChatSound, true ) end
  296.         --if ( tonumber ( aGetSetting ( "adminChatLines" ) ) ) then guiSetText ( aTab6.AdminChatLines, aGetSetting ( "adminChatLines" ) ) end
  297.         if ( ( tonumber ( aGetSetting ( "refreshDelay" ) ) ) and ( tonumber ( aGetSetting ( "refreshDelay" ) ) >= 50 ) ) then guiSetText ( aTab6.RefreshDelay, aGetSetting ( "refreshDelay" ) ) end
  298.  
  299.         addEventHandler ( "aClientLog", _root, aClientLog )
  300.         addEventHandler ( "aClientAdminChat", _root, aClientAdminChat )
  301.         addEventHandler ( "aClientSync", _root, aClientSync )
  302.         addEventHandler ( "aMessage", _root, aMessage )
  303.         addEventHandler ( "aClientResourceStart", _root, aClientResourceStart )
  304.         addEventHandler ( "aClientResourceStop", _root, aClientResourceStop )
  305.         addEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin )
  306.         addEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit )
  307.         addEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter )
  308.         addEventHandler ( "onClientGUIClick", aAdminForm, aClientClick )
  309.         addEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll )
  310.         addEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick )
  311.         addEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick )
  312.         addEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted )
  313.         addEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged )
  314.         addEventHandler ( "onClientCursorMove", _root, aClientCursorMove )
  315.         addEventHandler ( "onClientRender", _root, aClientRender )
  316.         addEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick )
  317.         addEventHandler ( "onClientResourceStop", _root, aMainSaveSettings )
  318.         addEventHandler ( "onClientGUITabSwitched", aTabPanel, aClientGUITabSwitched )
  319.  
  320.         bindKey ( "arrow_d", "down", aPlayerListScroll, 1 )
  321.         bindKey ( "arrow_u", "down", aPlayerListScroll, -1 )
  322.  
  323.         triggerServerEvent ( "aSync", getLocalPlayer(), "players" )
  324.         if ( hasPermissionTo ( "command.listmessages" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "messages" ) end
  325.         triggerServerEvent ( "aSync", getLocalPlayer(), "server" )
  326.         triggerEvent ( "onAdminInitialize", resourceRoot )
  327.         showCursor ( true )
  328.  
  329.         if getVersion().sortable and getVersion().sortable < "1.0.4-9.02436" then
  330.             guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" )
  331.             guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" )
  332.         end
  333.     end
  334.     guiSetVisible ( aAdminForm, true )
  335.     showCursor ( true )
  336.     -- If the camera target was on another player, select him in the player list
  337.     local element = getCameraTarget()
  338.     if element and getElementType(element)=="vehicle" then
  339.         element = getVehicleController(element)
  340.     end
  341.     if element and getElementType(element)=="player" and element ~= getLocalPlayer() then
  342.         for row=0,guiGridListGetRowCount( aTab1.PlayerList )-1 do
  343.             if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, row, 1 ) == getPlayerName ( element ) ) then
  344.                 guiGridListSetSelectedItem ( aTab1.PlayerList, row, 1 )
  345.                 break
  346.             end
  347.         end
  348.     end
  349. end
  350.  
  351. function aAdminMenuClose ( destroy )
  352.     if ( destroy ) then
  353.         aMainSaveSettings ()
  354.         aPlayers = {}
  355.         aWeathers = {}
  356.         aBans = {}
  357.         removeEventHandler ( "aClientLog", _root, aClientLog )
  358.         removeEventHandler ( "aClientAdminChat", _root, aClientAdminChat )
  359.         removeEventHandler ( "aClientSync", _root, aClientSync )
  360.         removeEventHandler ( "aMessage", _root, aMessage )
  361.         removeEventHandler ( "aClientResourceStart", _root, aClientResourceStart )
  362.         removeEventHandler ( "aClientResourceStop", _root, aClientResourceStop )
  363.         removeEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin )
  364.         removeEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit )
  365.         removeEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter )
  366.         removeEventHandler ( "onClientGUIClick", aAdminForm, aClientClick )
  367.         removeEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll )
  368.         removeEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick )
  369.         removeEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick )
  370.         removeEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted )
  371.         removeEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged )
  372.         removeEventHandler ( "onClientCursorMove", _root, aClientCursorMove )
  373.         removeEventHandler ( "onClientRender", _root, aClientRender )
  374.         removeEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick )
  375.         removeEventHandler ( "onClientResourceStop", _root, aMainSaveSettings )
  376.         unbindKey ( "arrow_d", "down", aPlayerListScroll )
  377.         unbindKey ( "arrow_u", "down", aPlayerListScroll )
  378.         destroyElement ( aTab1.VehicleOptions )
  379.         destroyElement ( aAdminForm )
  380.         aAdminForm = nil
  381.     else
  382.         guiSetVisible ( aTab1.VehicleOptions, false )
  383.         guiSetVisible ( aAdminForm, false )
  384.     end
  385.     showCursor ( false )
  386. end
  387.  
  388. function aMainSaveSettings ()
  389.     aSetSetting ( "outputPlayer", guiCheckBoxGetSelected ( aTab6.OutputPlayer ) )
  390.     aSetSetting ( "adminChatOutput", guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) )
  391.     aSetSetting ( "adminChatSound", guiCheckBoxGetSelected ( aTab5.AdminChatSound ) )
  392.     --aSetSetting ( "adminChatLines", guiGetText ( aTab6.AdminChatLines ) )
  393.     aSetSetting ( "refreshDelay", guiGetText ( aTab6.RefreshDelay ) )
  394.     aSetSetting ( "currentWeapon", aCurrentWeapon )
  395.     aSetSetting ( "currentAmmo", aCurrentAmmo )
  396.     aSetSetting ( "currentVehicle", aCurrentVehicle )
  397.     aSetSetting ( "currentSlap", aCurrentSlap )
  398.     if ( guiRadioButtonGetSelected ( aTab6.PerformanceRAM ) ) then aSetSetting ( "performance", "RAM" )
  399.     elseif ( guiRadioButtonGetSelected ( aTab6.PerformanceCPU ) ) then aSetSetting ( "performance", "CPU" )
  400.     else aSetSetting ( "performance", "Auto" ) end
  401. end
  402.  
  403. function aAdminRefresh ()
  404.     if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then
  405.         local player = getPlayerFromNick ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) )
  406.         if ( player and aPlayers[player] ) then
  407.             guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] )
  408.             guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) )
  409.             guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) )
  410.             --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) )
  411.             guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) )
  412.             guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) )
  413.             guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) )
  414.             if ( isPlayerDead ( player ) ) then guiSetText ( aTab1.Health, "Health: Dead" )
  415.             else guiSetText ( aTab1.Health, "Health: "..math.ceil ( getElementHealth ( player ) ).."%" ) end
  416.             guiSetText ( aTab1.Armour, "Armour: "..math.ceil ( getPedArmor ( player ) ).."%" )
  417.             guiSetText ( aTab1.Skin, "Skin: "..iif ( getElementModel ( player ), getElementModel ( player ), "N/A" ) )
  418.             if ( getPlayerTeam ( player ) ) then guiSetText ( aTab1.Team, "Team: "..getTeamName ( getPlayerTeam ( player ) ) )
  419.             else guiSetText ( aTab1.Team, "Team: None" ) end
  420.             guiSetText ( aTab1.Ping, "Ping: "..getPlayerPing ( player ) )
  421.             guiSetText ( aTab1.Money, "Money: "..( aPlayers[player]["money"] or 0 ) )
  422.             if ( getElementDimension ( player ) ) then guiSetText ( aTab1.Dimension, "Dimension: "..getElementDimension ( player ) ) end
  423.             if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end
  424.             guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) )
  425.             if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end
  426.             local x, y, z = getElementPosition ( player )
  427.             guiSetText ( aTab1.Area, "Area: "..iif ( getZoneName ( x, y, z, false ) == getZoneName ( x, y, z, true ), getZoneName ( x, y, z, false ), getZoneName ( x, y, z, false ).." ("..getZoneName ( x, y, z, true )..")" ) )
  428.             guiSetText ( aTab1.PositionX, "X: "..x )
  429.             guiSetText ( aTab1.PositionY, "Y: "..y )
  430.             guiSetText ( aTab1.PositionZ, "Z: "..z )
  431.             local vehicle = getPedOccupiedVehicle ( player )
  432.             if ( vehicle ) then
  433.                 guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" )
  434.                 guiSetText ( aTab1.VehicleHealth, "Vehicle Health: "..math.ceil ( getElementHealth ( vehicle ) ).."%" )
  435.             else
  436.                 guiSetText ( aTab1.Vehicle, "Vehicle: Foot" )
  437.                 guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" )
  438.             end
  439.             if ( aPlayers[player]["admin"] ) then
  440.                 guiSetText(aTab1.Admin, "Revoke admin rights")
  441.             else
  442.                 guiSetText(aTab1.Admin, "Give admin rights")
  443.             end
  444.             return player
  445.         end
  446.     end
  447. end
  448.  
  449. function aClientSync ( type, table )
  450.     if ( type == "player" and aPlayers[source] ) then
  451.         for type, data in pairs ( table ) do
  452.             aPlayers[source][type] = data
  453.         end
  454.     elseif ( type == "players" ) then
  455.         aPlayers = table
  456.     elseif ( type == "resources" ) then
  457.         local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps )
  458.         aResources = table
  459.         for id, resource in ipairs(table) do
  460.             if bInclMaps or resource["type"] ~= "map" then
  461.                 local row = guiGridListAddRow ( aTab2.ResourceList )
  462.                 guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false )
  463.                 guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false )
  464.                 guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false )
  465.                 guiGridListSetItemText ( aTab2.ResourceList, row, 4, resource["fullName"], false, false )
  466.                 guiGridListSetItemText ( aTab2.ResourceList, row, 5, resource["author"], false, false )
  467.                 guiGridListSetItemText ( aTab2.ResourceList, row, 6, resource["version"], false, false )
  468.             end
  469.         end
  470.     elseif ( type == "loggedout" ) then
  471.         aAdminDestroy()
  472.     elseif ( type == "admins" ) then
  473.         --if ( guiGridListGetRowCount ( aTab5.AdminPlayers ) > 0 ) then guiGridListClear ( aTab5.AdminPlayers ) end
  474.         for id, player in ipairs(getElementsByType("player")) do
  475.             if ( table[player]["admin"] == false ) and ( player == getLocalPlayer() ) then
  476.                 aAdminDestroy()
  477.                 break
  478.             elseif aPlayers[player] then
  479.                 aPlayers[player]["groups"] = table[player]["groups"]
  480.                 if ( table[player]["chat"] ) then
  481.                     local id = 0
  482.                     local exists = false
  483.                     while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do
  484.                         if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( player ) ) then
  485.                             exists = true
  486.                         end
  487.                         id = id + 1
  488.                     end
  489.                     if ( exists == false ) then guiGridListSetItemPlayerName ( aTab5.AdminPlayers, guiGridListAddRow ( aTab5.AdminPlayers ), 1, getPlayerName ( player ), false, false ) end
  490.                 end
  491.             end
  492.         end
  493.     elseif ( type == "server" ) then
  494.         guiSetText ( aTab3.Server, "Server: "..table["name"] )
  495.         guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] )
  496.         guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) )
  497.         guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) )
  498.         guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) )
  499.         guiSetText ( aTab3.FPSCurrent, "FPS Limit: "..( table["fps"] or "N/A" ) )
  500.         guiSetText ( aTab3.FPS, table["fps"] or "38" )
  501.     elseif ( type == "bansdirty" ) then
  502.         g_GotLatestBansList = false
  503.         if aAdminForm and guiGetVisible ( aAdminForm ) and guiGetSelectedTab( aTabPanel ) == aTab4.Tab then
  504.             -- Request full bans list if bans tab is displayed when 'bansdirty' is received
  505.             triggerServerEvent ( "aSync", getLocalPlayer(), "bans" )
  506.         end
  507.     elseif ( type == "bans" or type == "bansmore" ) then
  508.         if type == "bans" then
  509.             g_GotLatestBansList = true
  510.             guiGridListClear ( aTab4.BansList )
  511.             aBans = {}
  512.             aBans["Serial"] = {}
  513.             aBans["IP"] = {}
  514.         end
  515.         local total = tonumber(table.total) or 0
  516.         local amount = guiGridListGetRowCount( aTab4.BansList ) + #table
  517.         guiSetText( aTab4.BansTotal, "Showing  " .. amount .. " / " .. total .. "  bans" )
  518.         if g_GotLatestBansList then
  519.             for i=1,#table do
  520.                 local ban = table[i]
  521.                 if ban.serial then
  522.                     aBans["Serial"][ban.serial] = ban
  523.                 end
  524.                 if ban.ip then
  525.                     aBans["IP"][ban.ip] = ban
  526.                 end
  527.                 local time, date = "-", "-"
  528.                 if ban.seconds then
  529.                     local realTime = getRealTime( ban.seconds )
  530.                     time = string.format("%02d:%02d", realTime.hour, realTime.minute )
  531.                     date = string.format("%04d-%02d-%02d", realTime.year + 1900, realTime.month + 1, realTime.monthday )
  532.                 end
  533.                 local reason = ban["reason"] and ban["reason"]~="nil" and ban["reason"] or ""
  534.                 local row = guiGridListAddRow ( aTab4.BansList )
  535.                 guiGridListSetItemText ( aTab4.BansList, row, 1, ban["nick"]    or "n/a", false, false )
  536.                 guiGridListSetItemText ( aTab4.BansList, row, 2, ban.ip         or "n/a", false, false )
  537.                 guiGridListSetItemText ( aTab4.BansList, row, 3, ban.serial     or "n/a", false, false )
  538.                 guiGridListSetItemText ( aTab4.BansList, row, 4, ban["banner"]  or "n/a", false, false )
  539.                 guiGridListSetItemText ( aTab4.BansList, row, 5, date,                  false, false )
  540.                 guiGridListSetItemText ( aTab4.BansList, row, 6, time,                  false, false )
  541.                 guiGridListSetItemText ( aTab4.BansList, row, 7, reason, false, false )
  542.             end
  543.         end
  544.     elseif ( type == "messages" ) then
  545.         local prev = tonumber ( string.sub ( guiGetText ( aTab1.Messages ), 1, 1 ) )
  546.         if ( prev < table["unread"] ) then
  547.             playSoundFrontEnd ( 18 )
  548.         end
  549.         guiSetText ( aTab1.Messages, table["unread"].."/"..table["total"].." unread messages" )
  550.        
  551.     end
  552. end
  553.  
  554. function aClientGUITabSwitched( selectedTab )
  555.     if getElementParent( selectedTab ) == aTabPanel then
  556.         if selectedTab == aTab2.Tab then
  557.             -- Handle initial update of resources list
  558.             if guiGridListGetRowCount( aTab2.ResourceList ) == 0 then
  559.                 if ( hasPermissionTo ( "command.listresources" ) ) then
  560.                     triggerServerEvent ( "aSync", getLocalPlayer(), "resources" )
  561.                 end
  562.             end
  563.         elseif selectedTab == aTabMap.Tab then
  564.             -- Handle initial update of map list
  565.             if guiGridListGetRowCount( aTabMap.MapList ) == 0 then
  566.                 if ( hasPermissionTo ( "command.listresources" ) ) then
  567.                     triggerServerEvent ( "getMaps_s", getLocalPlayer(), getLocalPlayer(), true )
  568.                 end
  569.             end
  570.         elseif selectedTab == aTab4.Tab then
  571.             if not g_GotLatestBansList then
  572.                 -- Request full bans list if bans tab is selected and current list is out of date
  573.                 triggerServerEvent ( "aSync", getLocalPlayer(), "bans" )
  574.             end
  575.         end
  576.     end
  577. end
  578.  
  579. function aMessage ( )
  580.  
  581. end
  582.  
  583. function aClientResourceStart ( resource )
  584.     local id = 0
  585.     while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do
  586.         if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then
  587.             guiGridListSetItemText ( aTab2.ResourceList, id, 3, "running", false, false )
  588.         end
  589.         id = id + 1
  590.     end
  591. end
  592.  
  593. function aClientResourceStop ( resource )
  594.     local id = 0
  595.     while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do
  596.         if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then
  597.             guiGridListSetItemText ( aTab2.ResourceList, id, 3, "loaded", false, false )
  598.         end
  599.         id = id + 1
  600.     end
  601. end
  602.  
  603. function aClientPlayerJoin ( ip, username, accountname, serial, admin, country )
  604.     if ip == false and serial == false then
  605.         -- Update country only
  606.         if aPlayers[source] then
  607.             aPlayers[source]["country"] = country
  608.         end
  609.         return
  610.     end
  611.     aPlayers[source] = {}
  612.     aPlayers[source]["name"] = getPlayerName ( source )
  613.     aPlayers[source]["IP"] = ip
  614.     aPlayers[source]["username"] = username or "N/A"
  615.     aPlayers[source]["accountname"] = accountname or "N/A"
  616.     aPlayers[source]["serial"] = serial
  617.     aPlayers[source]["admin"] = admin
  618.     aPlayers[source]["country"] = country
  619.     local row = guiGridListAddRow ( aTab1.PlayerList )
  620.     guiGridListSetItemPlayerName ( aTab1.PlayerList, row, 1, getPlayerName ( source ), false, false )
  621.     if ( admin ) then
  622.         local row = guiGridListAddRow ( aTab5.AdminPlayers )
  623.         guiGridListSetItemPlayerName ( aTab5.AdminPlayers, row, 1, getPlayerName ( source ), false, false )
  624.     end
  625.     if ( aSpectator.PlayerList ) then
  626.         local row = guiGridListAddRow ( aSpectator.PlayerList )
  627.         guiGridListSetItemPlayerName ( aSpectator.PlayerList, row, 1, getPlayerName ( source ), false, false )
  628.     end
  629. end
  630.  
  631. function aClientPlayerQuit ()
  632.     local id = 0
  633.     while ( id <= guiGridListGetRowCount( aTab1.PlayerList ) ) do
  634.         if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, id, 1 ) == getPlayerName ( source ) ) then
  635.             guiGridListRemoveRow ( aTab1.PlayerList, id )
  636.         end
  637.         id = id + 1
  638.     end
  639.     if ( aPlayers[source] and aPlayers[source]["admin"] ) then
  640.         local id = 0
  641.         while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do
  642.             if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( source ) ) then
  643.                 guiGridListRemoveRow ( aTab5.AdminPlayers, id )
  644.             end
  645.             id = id + 1
  646.         end
  647.     end
  648.     if ( aSpectator.PlayerList ) then
  649.         local id = 0
  650.         while ( id <= guiGridListGetRowCount( aSpectator.PlayerList ) ) do
  651.             if ( guiGridListGetItemPlayerName ( aSpectator.PlayerList, id, 1 ) == getPlayerName ( source ) ) then
  652.                 guiGridListRemoveRow ( aSpectator.PlayerList, id )
  653.             end
  654.             id = id + 1
  655.         end
  656.     end
  657.     aPlayers[source] = nil
  658. end
  659.  
  660. function aPlayerListScroll ( key, state, inc )
  661.     if ( not guiGetVisible ( aAdminForm ) ) then return end
  662.     local max = guiGridListGetRowCount ( aTab1.PlayerList )
  663.     if ( max <= 0 ) then return end
  664.     local current = guiGridListGetSelectedItem ( aTab1.PlayerList )
  665.     local next = current + inc
  666.     max = max - 1
  667.     if ( current == -1 ) then
  668.         guiGridListSetSelectedItem ( aTab1.PlayerList, 0, 1 )
  669.     elseif ( next > max ) then return
  670.     elseif ( next < 0 ) then return
  671.     else
  672.         guiGridListSetSelectedItem ( aTab1.PlayerList, next, 1 )
  673.     end
  674.     local oldsource = source
  675.     source = aTab1.PlayerList;
  676.     aClientClick ( "left" )
  677.     source = oldsource
  678. end
  679.  
  680. function aClientPlayerChangeNick ( oldNick, newNick )
  681.     local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList }
  682.     for _,gridlist in ipairs(lists) do
  683.         for row=0,guiGridListGetRowCount(gridlist)-1 do
  684.             if ( guiGridListGetItemPlayerName ( gridlist, row, 1 ) == oldNick ) then
  685.                 guiGridListSetItemPlayerName ( gridlist, row, 1, newNick, false, false )
  686.             end
  687.         end
  688.     end
  689. end
  690.  
  691. function aClientLog ( text )
  692.     if text == "deleted" then
  693.         guiGridListClear ( aTab2.ResourceList )
  694.         triggerServerEvent ( "aSync", getLocalPlayer(), "resources" )  
  695.     end
  696.     text = "#"..aLogLines..": "..text
  697.     if ( guiGetText ( aTab2.LogLine1 ) == "" ) then guiSetText ( aTab2.LogLine1, text )
  698.     elseif ( guiGetText ( aTab2.LogLine2 ) == "" ) then guiSetText ( aTab2.LogLine2, text )
  699.     elseif ( guiGetText ( aTab2.LogLine3 ) == "" ) then guiSetText ( aTab2.LogLine3, text )
  700.     elseif ( guiGetText ( aTab2.LogLine4 ) == "" ) then guiSetText ( aTab2.LogLine4, text )
  701.     elseif ( guiGetText ( aTab2.LogLine5 ) == "" ) then guiSetText ( aTab2.LogLine5, text )
  702.     else
  703.         guiSetText ( aTab2.LogLine1, guiGetText ( aTab2.LogLine2 ) )
  704.         guiSetText ( aTab2.LogLine2, guiGetText ( aTab2.LogLine3 ) )
  705.         guiSetText ( aTab2.LogLine3, guiGetText ( aTab2.LogLine4 ) )
  706.         guiSetText ( aTab2.LogLine4, guiGetText ( aTab2.LogLine5 ) )
  707.         guiSetText ( aTab2.LogLine5, text )
  708.     end
  709.    
  710.     aLogLines = aLogLines + 1
  711. end
  712.  
  713. function aClientAdminChat ( message )
  714.     guiSetText ( aTab5.AdminChat, guiGetText ( aTab5.AdminChat )..""..getPlayerName ( source )..": "..message )
  715.     guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( guiGetText ( aTab5.AdminChat ) ) ) )
  716.     if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end
  717.     if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= getLocalPlayer() ) ) then playSoundFrontEnd ( 13 ) end
  718. end
  719.  
  720. function aSetCurrentAmmo ( ammo )
  721.     ammo = tonumber ( ammo )
  722.     if ( ( ammo ) and ( ammo > 0 ) and ( ammo < 10000 ) ) then
  723.         aCurrentAmmo = ammo
  724.         return
  725.     end
  726.     outputChatBox ( "Invalid ammo value", 255, 0, 0 )
  727. end
  728.  
  729. function aClientGUIAccepted ( element )
  730.     if ( element == aTab5.AdminText ) then
  731.         local message = guiGetText ( aTab5.AdminText )
  732.         if ( ( message ) and ( message ~= "" ) ) then
  733.             if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" )
  734.             else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end
  735.             guiSetText ( aTab5.AdminText, "" )
  736.         end
  737.     end
  738. end
  739.  
  740. function aClientGUIChanged ()
  741.     if ( source == aTab1.PlayerListSearch ) then
  742.         guiGridListClear ( aTab1.PlayerList )
  743.         local text = guiGetText ( source )
  744.         if ( text == "" ) then
  745.             for id, player in ipairs ( getElementsByType ( "player" ) ) do
  746.                 guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false )
  747.             end
  748.         else
  749.             for id, player in ipairs ( getElementsByType ( "player" ) ) do
  750.                 if ( string.find ( string.upper ( getPlayerName ( player ) ), string.upper ( text ), 1, true ) ) then
  751.                     guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false )
  752.                 end
  753.             end
  754.         end
  755.     elseif ( source == aTab2.ResourceListSearch ) then
  756.         local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps )
  757.         guiGridListClear ( aTab2.ResourceList )
  758.         local text = string.lower(guiGetText(source))
  759.         if ( text == "" ) then
  760.             for id, resource in ipairs(aResources) do
  761.                 if bInclMaps or resource["type"] ~= "map" then
  762.                     local row = guiGridListAddRow ( aTab2.ResourceList )
  763.                     guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false )
  764.                     guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false )
  765.                     guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false )
  766.                     guiGridListSetItemText ( aTab2.ResourceList, row, 4, resource["fullName"], false, false )
  767.                     guiGridListSetItemText ( aTab2.ResourceList, row, 5, resource["author"], false, false )
  768.                     guiGridListSetItemText ( aTab2.ResourceList, row, 6, resource["version"], false, false )
  769.                 end
  770.             end
  771.         else
  772.             for id, resource in ipairs(aResources) do
  773.                 if bInclMaps or resource["type"] ~= "map" then
  774.                     if string.find(string.lower(resource.name), text, 1, true) then
  775.                         local row = guiGridListAddRow ( aTab2.ResourceList )
  776.                         guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false )
  777.                         guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false )
  778.                         guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false )
  779.                         guiGridListSetItemText ( aTab2.ResourceList, row, 4, resource["fullName"], false, false )
  780.                         guiGridListSetItemText ( aTab2.ResourceList, row, 5, resource["author"], false, false )
  781.                         guiGridListSetItemText ( aTab2.ResourceList, row, 6, resource["version"], false, false )
  782.                     end
  783.                 end
  784.             end
  785.         end
  786.     end
  787. end
  788.  
  789. function aClientScroll ( element )
  790.     if ( source == aTab6.MouseSense ) then
  791.         guiSetText ( aTab6.MouseSenseCur, "Cursor sensivity: ("..string.sub ( guiScrollBarGetScrollPosition ( source ) / 50, 0, 4 )..")" )
  792.     end
  793. end
  794.  
  795. function aClientCursorMove ( rx, ry, x, y )
  796.    
  797. end
  798.  
  799. function aClientMouseEnter ( element )
  800.     if ( getElementType ( source ) == "gui-button" ) then
  801.  
  802.     end
  803. end
  804.  
  805. function aClientDoubleClick ( button )
  806.     if ( source == aTab1.WeaponOptions ) then
  807.         if ( guiGridListGetSelectedItem ( aTab1.WeaponOptions ) ~= -1 ) then
  808.             aCurrentWeapon = getWeaponIDFromName ( guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) )
  809.             local wep = guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 )
  810.             wep = string.gsub ( wep, "Combat Shotgun", "Combat SG" )
  811.             guiSetText ( aTab1.GiveWeapon, "Give: "..wep.." " )
  812.         end
  813.         guiSetVisible ( aTab1.WeaponOptions, false )
  814.     elseif ( source == aTab1.VehicleOptions ) then
  815.         local item = guiGridListGetSelectedItem ( aTab1.VehicleOptions )
  816.         if ( item ~= -1 ) then
  817.             if ( guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ) ~= "" ) then
  818.                 aCurrentVehicle = tonumber ( guiGridListGetItemData ( aTab1.VehicleOptions, item, 1 ) )
  819.                 guiSetText ( aTab1.GiveVehicle, "Give: "..guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ).." " )
  820.             end
  821.         end
  822.         guiSetVisible ( aTab1.VehicleOptions, false )
  823.     elseif ( source == aTab1.SlapOptions ) then
  824.         if ( guiGridListGetSelectedItem ( aTab1.SlapOptions ) ~= -1 ) then
  825.             aCurrentSlap = guiGridListGetItemText ( aTab1.SlapOptions, guiGridListGetSelectedItem ( aTab1.SlapOptions ), 1 )
  826.             guiSetText ( aTab1.Slap, "Slap! "..aCurrentSlap.." _" )
  827.             if ( aSpecSlap ) then guiSetText ( aSpecSlap, "Slap! "..aCurrentSlap.."hp" ) end
  828.         end
  829.         guiSetVisible ( aTab1.SlapOptions, false )
  830.     elseif ( source == aTab2.ResourceList ) then
  831.         if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then
  832.             aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) )
  833.         end
  834.     end
  835.     if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end
  836.     if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end
  837.     if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end
  838. end
  839.  
  840. function aClientClick ( button )
  841.     if ( ( source == aTab1.WeaponOptions ) or ( source == aTab1.VehicleOptions ) or ( source == aTab1.SlapOptions ) ) then return
  842.     else
  843.         if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end
  844.         if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end
  845.         if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end
  846.     end
  847.     if ( button == "left" ) then
  848.         -- TAB 1, PLAYERS
  849.         if ( getElementParent ( source ) == aTab1.Tab ) then
  850.             if ( source == aTab1.Messages ) then
  851.                 aViewMessages()
  852.             elseif ( source == aTab1.PlayerListSearch ) then
  853.                
  854.             elseif ( source == aTab1.HideColorCodes ) then
  855.                 updateColorCodes()
  856.             elseif ( source == aTab1.AnonAdmin ) then
  857.                 setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) )
  858.             elseif ( getElementType ( source ) == "gui-button" )  then
  859.                 if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown )
  860.                 elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown )
  861.                 elseif ( source == aTab1.Slap ) then guiBringToFront ( aTab1.SlapDropDown ) end
  862.                 if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) == -1 ) then
  863.                     aMessageBox ( "error", "No player selected!" )
  864.                 else
  865.                     local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 )
  866.                     local escname = string.gsub( name,"([\"])", "\\\"" )
  867.                     local player = getPlayerFromNick ( name )
  868.                     if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"kick\", $value )" )
  869.                     elseif ( source == aTab1.Ban ) then aBanInputBox ( player )
  870.                     elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "slap", aCurrentSlap )
  871.                     elseif ( source == aTab1.Mute ) then if not aPlayers[player]["mute"] then aMuteInputBox ( player ) else aMessageBox ( "question", "Are you sure to unmute "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"mute\" )" ) end
  872.                     elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "freeze" )
  873.                     elseif ( source == aTab1.Spectate ) then aSpectate ( player )
  874.                     elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setnick\", $value )" )
  875.                     elseif ( source == aTab1.Shout ) then aInputBox ( "Shout", "Enter text to be shown on player's screen", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"shout\", $value )" )
  876.                     elseif ( source == aTab1.SetHealth ) then aInputBox ( "Set Health", "Enter the health value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"sethealth\", $value )" )
  877.                     elseif ( source == aTab1.SetArmour ) then aInputBox ( "Set Armour", "Enter the armour value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setarmour\", $value )" )
  878.                     elseif ( source == aTab1.SetTeam ) then aPlayerTeam ( player )
  879.                     elseif ( source == aTab1.SetSkin ) then aPlayerSkin ( player )
  880.                     elseif ( source == aTab1.SetInterior ) then aPlayerInterior ( player )
  881.                     elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "jetpack" )
  882.                     elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setmoney\", $value )" )
  883.                     elseif ( source == aTab1.SetStats ) then aPlayerStats ( player )
  884.                     elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0  and 65535", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setdimension\", $value )" )
  885.                     elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "givevehicle", aCurrentVehicle )
  886.                     elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "giveweapon", aCurrentWeapon, aCurrentAmmo )
  887.                     elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "warp" )
  888.                     elseif ( source == aTab1.WarpTo ) then aPlayerWarp ( player )
  889.                     elseif ( source == aTab1.VehicleFix ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "repair" )
  890.                     elseif ( source == aTab1.VehicleBlow ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "blowvehicle" )
  891.                     elseif ( source == aTab1.VehicleDestroy ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "destroyvehicle" )
  892.                     elseif ( source == aTab1.VehicleCustomize ) then aVehicleCustomize ( player )
  893.                     elseif ( source == aTab1.Admin ) then
  894.                         if ( aPlayers[player]["admin"] ) then aMessageBox ( "warning", "Revoke admin rights from "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", false )" )
  895.                         else aMessageBox ( "warning", "Give admin rights to "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", true )" ) end
  896.                     end
  897.                 end
  898.             elseif ( source == aTab1.VehicleDropDown ) then
  899.                 local x1, y1 = guiGetPosition ( aAdminForm, false )
  900.                 local x2, y2 = guiGetPosition ( aTabPanel, false )
  901.                 local x3, y3 = guiGetPosition ( aTab1.Tab, false )
  902.                 local x4, y4 = guiGetPosition ( aTab1.GiveVehicle, false )
  903.                 guiSetPosition ( aTab1.VehicleOptions, x1 + x2 + x3 + x4, y1 + y2 + y3 + y4 + 20, false )
  904.                 guiSetVisible ( aTab1.VehicleOptions, true )
  905.                 guiBringToFront ( aTab1.VehicleOptions )
  906.             elseif ( source == aTab1.WeaponDropDown ) then
  907.                 guiSetVisible ( aTab1.WeaponOptions, true )
  908.                 guiBringToFront ( aTab1.WeaponOptions )
  909.             elseif ( source == aTab1.SlapDropDown ) then
  910.                 guiSetVisible ( aTab1.SlapOptions, true )
  911.                 guiBringToFront ( aTab1.SlapOptions )
  912.             elseif ( source == aTab1.PlayerList ) then
  913.                 if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then
  914.                     local player = aAdminRefresh ()
  915.                     if ( player ) then
  916.                         triggerServerEvent ( "aSync", getLocalPlayer(), "player", player )
  917.                         if ( ( guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) and ( player ) ) then outputConsole ( "Name: "..aPlayers[player]["name"]..", IP: "..aPlayers[player]["IP"]..", Serial: "..aPlayers[player]["serial"]..", Community Username: "..aPlayers[player]["username"]..", Account Name: "..aPlayers[player]["accountname"] ) end
  918.                         guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] )
  919.                         guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] )
  920.                         --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] )
  921.                         guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] )
  922.                         local countryCode = aPlayers[player]["country"]
  923.                         loadFlagImage ( aTab1.Flag, countryCode )
  924.                         if not countryCode then
  925.                             guiSetText ( aTab1.CountryCode, "" )
  926.                         else
  927.                             local x, y = guiGetPosition ( aTab1.IP, false )
  928.                             local width = guiLabelGetTextExtent ( aTab1.IP )
  929.                             guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false )
  930.                             guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false )
  931.                             guiSetText ( aTab1.CountryCode, tostring( countryCode ) )
  932.                         end
  933.                         guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) )
  934.                     end
  935.                 else
  936.                     guiSetText ( aTab1.Name, "Name: N/A" )
  937.                     guiSetText ( aTab1.IP, "IP: N/A" )
  938.                     guiSetText ( aTab1.Serial, "Serial: N/A" )
  939.                     --guiSetText ( aTab1.Username, "Community Username: N/A" )
  940.                     guiSetText ( aTab1.Version, "Version: N/A" )
  941.                     guiSetText ( aTab1.Accountname, "Account Name: N/A" )
  942.                     guiSetText ( aTab1.Groups, "Groups: N/A" )
  943.                     guiSetText ( aTab1.Mute, "Mute" )
  944.                     guiSetText ( aTab1.Freeze, "Freeze" )
  945.                     guiSetText ( aTab1.Admin, "Give admin rights" )
  946.                     guiSetText ( aTab1.Health, "Health: 0%" )
  947.                     guiSetText ( aTab1.Armour, "Armour: 0%" )
  948.                     guiSetText ( aTab1.Skin, "Skin: N/A" )
  949.                     guiSetText ( aTab1.Team, "Team: None" )
  950.                     guiSetText ( aTab1.Ping, "Ping: 0" )
  951.                     guiSetText ( aTab1.Money, "Money: 0" )
  952.                     guiSetText ( aTab1.Dimension, "Dimension: 0" )
  953.                     guiSetText ( aTab1.Interior, "Interior: 0" )
  954.                     guiSetText ( aTab1.JetPack, "Give JetPack" )
  955.                     guiSetText ( aTab1.Weapon, "Weapon: N/A" )
  956.                     guiSetText ( aTab1.Area, "Area: Unknown" )
  957.                     guiSetText ( aTab1.PositionX, "X: 0" )
  958.                     guiSetText ( aTab1.PositionY, "Y: 0" )
  959.                     guiSetText ( aTab1.PositionZ, "Z: 0" )
  960.                     guiSetText ( aTab1.Vehicle, "Vehicle: N/A" )
  961.                     guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" )
  962.                     guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" )
  963.                     guiSetText ( aTab1.CountryCode, "" )
  964.                 end
  965.             end
  966.         -- TAB 2, RESOURCES
  967.         elseif ( getElementParent ( source ) == aTab2.Tab ) then
  968.             if ( source == aTab2.ResourceListSearch ) then
  969.                
  970.             elseif ( ( source == aTab2.ResourceStart ) or ( source == aTab2.ResourceRestart ) or ( source == aTab2.ResourceStop ) or ( source == aTab2.ResourceDelete ) or ( source == aTab2.ResourceSettings ) ) then
  971.                 if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) == -1 ) then
  972.                     aMessageBox ( "error", "No resource selected!" )
  973.                 else
  974.                     if ( source == aTab2.ResourceStart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "start" )
  975.                     elseif ( source == aTab2.ResourceRestart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "restart" )
  976.                     elseif ( source == aTab2.ResourceStop ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "stop" )
  977.                     elseif ( source == aTab2.ResourceDelete ) then aMessageBox ( "warning", "Are you sure you want to stop and delete resource '" .. guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) .. "' ?", "triggerServerEvent ( \"aResource\", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), \"delete\" )" )
  978.                     elseif ( source == aTab2.ResourceSettings ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ) ) )
  979.                     end
  980.                 end            
  981.             elseif ( source == aTab2.ResourcesStopAll ) then aMessageBox ( "warning", "Are you sure you want to stop all resources? This will also stop 'admin' resource.", "triggerServerEvent ( \"aResource\", getLocalPlayer(), nil, \"stopall\" )" )
  982.             elseif ( source == aTab2.ResourceList ) then
  983.                 guiSetVisible ( aTab2.ResourceFailture, false )
  984.                 if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then
  985.                     guiSetText(aTab2.ResourceName, "Full Name: " .. guiGridListGetItemText(aTab2.ResourceList, guiGridListGetSelectedItem ( aTab2.ResourceList ), 4))
  986.                     guiSetText(aTab2.ResourceAuthor, "Author: " .. guiGridListGetItemText(aTab2.ResourceList, guiGridListGetSelectedItem ( aTab2.ResourceList ), 5))
  987.                     guiSetText(aTab2.ResourceVersion, "Version: " .. guiGridListGetItemText(aTab2.ResourceList, guiGridListGetSelectedItem ( aTab2.ResourceList ), 6))
  988.                     if ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 3 ) == "Failed to load" ) then
  989.                         guiSetVisible ( aTab2.ResourceFailture, true )
  990.                     end
  991.                 end
  992.             elseif ( source == aTab2.ManageACL ) then
  993.                 aManageACL()
  994.             elseif ( source == aTab2.ResourceRefresh or source == aTab2.ResourceInclMaps ) then
  995.                 guiGridListClear ( aTab2.ResourceList )
  996.                 triggerServerEvent ( "aSync", getLocalPlayer(), "resources" )
  997.             elseif ( source == aTab2.ExecuteClient ) then
  998.                 if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then aExecute ( guiGetText ( aTab2.Command ), true ) end
  999.             elseif ( source == aTab2.ExecuteServer ) then
  1000.                 if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then triggerServerEvent ( "aExecute", getLocalPlayer(), guiGetText ( aTab2.Command ), true ) end
  1001.             elseif ( source == aTab2.Command ) then
  1002.                
  1003.                 guiSetVisible ( aTab2.ExecuteAdvanced, false )
  1004.             elseif ( source == aTab2.ExecuteAdvanced ) then
  1005.                 guiSetVisible ( aTab2.ExecuteAdvanced, false )
  1006.             end
  1007.         -- TAB 3, WORLD
  1008.         elseif ( getElementParent ( source ) == aTab3.Tab ) then
  1009.             if ( source == aTab3.SetGameType ) then aInputBox ( "Game Type", "Enter game type:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setgame\", $value )" )
  1010.             elseif ( source == aTab3.SetMapName ) then aInputBox ( "Map Name", "Enter map name:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setmap\", $value )" )
  1011.             elseif ( source == aTab3.SetWelcome ) then aInputBox ( "Welcome Message", "Enter the server welcome message:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setwelcome\", $value )" )
  1012.             elseif ( source == aTab3.SetPassword ) then aInputBox ( "Server password", "Enter server password: (32 characters max)", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setpassword\", $value )" )
  1013.             elseif ( source == aTab3.Shutdown ) then aInputBox ( "Shutdown the server", "Enter shutdown reason:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"shutdown\", $value )" )
  1014.             elseif ( source == aTab3.ResetPassword ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setpassword", "" )
  1015.             elseif ( ( source == aTab3.WeatherInc ) or ( source == aTab3.WeatherDec ) ) then
  1016.                 local id = tonumber ( gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) )
  1017.                 if ( id ) then
  1018.                     if ( ( source == aTab3.WeatherInc ) and ( id < _weathers_max ) ) then guiSetText ( aTab3.Weather, ( id + 1 ).." ("..getWeatherNameFromID ( id + 1 )..")" )
  1019.                     elseif ( ( source == aTab3.WeatherDec ) and ( id > 0 ) ) then guiSetText ( aTab3.Weather, ( id - 1 ).." ("..getWeatherNameFromID ( id - 1 )..")" ) end
  1020.                 else
  1021.                     guiSetText ( aTab3.Weather, ( 14 ).." ("..getWeatherNameFromID ( 14 )..")" )
  1022.                 end
  1023.             elseif ( source == aTab3.WeatherSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) )
  1024.             elseif ( source == aTab3.WeatherBlend ) then triggerServerEvent ( "aServer", getLocalPlayer(), "blendweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) )
  1025.             elseif ( source == aTab3.TimeSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "settime", guiGetText ( aTab3.TimeH ), guiGetText ( aTab3.TimeM ) )
  1026.             elseif ( ( source == aTab3.SpeedInc ) or ( source == aTab3.SpeedDec ) ) then
  1027.                 local value = tonumber ( guiGetText ( aTab3.Speed ) )
  1028.                 if ( value ) then
  1029.                     if ( ( source == aTab3.SpeedInc ) and ( value < 10 ) ) then guiSetText ( aTab3.Speed, tostring ( value + 1 ) )
  1030.                     elseif ( ( source == aTab3.SpeedDec ) and ( value > 0 ) ) then guiSetText ( aTab3.Speed, tostring ( value - 1 ) ) end
  1031.                 else
  1032.                     guiSetText ( aTab3.Speed, "1" )
  1033.                 end
  1034.             elseif ( source == aTab3.SpeedSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgamespeed", guiGetText ( aTab3.Speed ) )
  1035.             elseif ( source == aTab3.GravitySet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgravity", guiGetText ( aTab3.Gravity ) )
  1036.             elseif ( source == aTab3.WavesSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setwaveheight", guiGetText ( aTab3.Waves ) )
  1037.             elseif ( source == aTab3.FPSSet ) then
  1038.             triggerServerEvent ( "aServer", getLocalPlayer(), "setfpslimit", guiGetText ( aTab3.FPS ) )
  1039.             triggerServerEvent ( "aSync", getLocalPlayer(), "server" )
  1040.             end
  1041.         -- TAB 4, BANS
  1042.         elseif ( getElementParent ( source ) == aTab4.Tab ) then
  1043.             if ( source == aTab4.Details ) then
  1044.                 if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then
  1045.                     aMessageBox ( "error", "No ban row selected!" )
  1046.                 else
  1047.                     local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 )
  1048.                     local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 )
  1049.                     aBanDetails ( aBans["Serial"][selserial] and selserial or selip )
  1050.                 end
  1051.             elseif ( source == aTab4.Unban ) then
  1052.                 if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then
  1053.                     aMessageBox ( "error", "No ban row selected!" )
  1054.                 else
  1055.                     local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 )
  1056.                     local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 )
  1057.                     if ( aBans["Serial"][selserial] ) then aMessageBox ( "question", "Unban Serial "..selserial.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", \""..selserial.."\" )" )
  1058.                     else aMessageBox ( "question", "Unban IP "..selip.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", \""..selip.."\" )" ) end
  1059.                 end
  1060.             elseif ( source == aTab4.UnbanIP ) then
  1061.                 aInputBox ( "Unban IP", "Enter IP to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", $value )" )
  1062.             elseif ( source == aTab4.UnbanSerial ) then
  1063.                 aInputBox ( "Unban Serial", "Enter Serial to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", $value )" )
  1064.             elseif ( source == aTab4.BanIP ) then
  1065.                 aInputBox ( "Add IP Ban", "Enter IP to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banip\", $value )" )
  1066.             elseif ( source == aTab4.BanSerial ) then
  1067.                 aInputBox ( "Add Serial Ban", "Enter Serial to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banserial\", $value )" )
  1068.             elseif ( source == aTab4.BansRefresh ) then
  1069.                 guiGridListClear ( aTab4.BansList )
  1070.                 triggerServerEvent ( "aSync", getLocalPlayer(), "bans" )
  1071.             elseif ( source == aTab4.BansMore ) then
  1072.                 triggerServerEvent ( "aSync", getLocalPlayer(), "bansmore", guiGridListGetRowCount( aTab4.BansList ) )
  1073.             end
  1074.         -- TAB 5, ADMIN CHAT
  1075.         elseif ( getElementParent ( source ) == aTab5.Tab ) then
  1076.             if ( source == aTab5.AdminSay ) then
  1077.                 local message = guiGetText ( aTab5.AdminText )
  1078.                 if ( ( message ) and ( message ~= "" ) ) then
  1079.                     if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" )
  1080.                     else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end
  1081.                     guiSetText ( aTab5.AdminText, "" )
  1082.                 end
  1083.             elseif ( source == aTab5.AdminText ) then
  1084.                
  1085.             end
  1086.         -- TAB 6, OPTIONS
  1087.         elseif ( getElementParent ( source ) == aTab6.Tab ) then
  1088.             if ( source == aTab6.PerformanceCPU ) then
  1089.                 for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do
  1090.                     if ( getElementType ( element ) == "gui-checkbox" ) then
  1091.                         guiCheckBoxSetSelected ( element, false )
  1092.                     end
  1093.                 end
  1094.             elseif ( source == aTab6.PerformanceRAM ) then
  1095.                 for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do
  1096.                     if ( getElementType ( element ) == "gui-checkbox" ) then
  1097.                         guiCheckBoxSetSelected ( element, true )
  1098.                     end
  1099.                 end
  1100.             elseif ( source == aTab6.PerformanceAdvanced ) then
  1101.                 aPerformance()
  1102.             elseif ( source == aTab6.AutoLogin ) then
  1103.                 triggerServerEvent ( "aAdmin", getLocalPlayer(), "autologin", guiCheckBoxGetSelected ( aTab6.AutoLogin ) )
  1104.             elseif ( source == aTab6.PasswordOld ) then
  1105.                
  1106.             elseif ( source == aTab6.PasswordNew ) then
  1107.                
  1108.             elseif ( source == aTab6.PasswordConfirm ) then
  1109.                
  1110.             elseif ( source == aTab6.PasswordChange ) then
  1111.                 local passwordNew, passwordConf = guiGetText ( aTab6.PasswordNew ), guiGetText ( aTab6.PasswordConfirm )
  1112.                 if ( passwordNew == "" ) then aMessageBox ( "error", "Enter the new password" )
  1113.                 elseif ( passwordConf == "" ) then aMessageBox ( "error", "Confirm the new password" )
  1114.                 elseif ( string.len ( passwordNew ) < 4 ) then aMessageBox ( "error", "The new password must be at least 4 characters long" )
  1115.                 elseif ( passwordNew ~= passwordConf ) then aMessageBox ( "error", "Confirmed password doesn't match" )
  1116.                 else triggerServerEvent ( "aAdmin", getLocalPlayer(), "password", guiGetText ( aTab6.PasswordOld ), passwordNew, passwordConf ) end
  1117.             end
  1118.         end
  1119.     elseif ( button == "right" ) then
  1120.         if ( source == aTab1.GiveWeapon ) then aInputBox ( "Weapon Ammo", "Ammo value from 1 to 9999", "100", "aSetCurrentAmmo ( $value )" )
  1121.         end
  1122.     end
  1123. end
  1124.  
  1125. function aClientRender ()
  1126.     if ( guiGetVisible ( aAdminForm ) ) then
  1127.         if ( getTickCount() >= aLastCheck ) then
  1128.             aAdminRefresh ()
  1129.             local th, tm = getTime()
  1130.             guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..gettok ( guiGetText ( aTab3.Players ), 2, 47 ) )
  1131.             guiSetText ( aTab3.TimeCurrent, string.format("Time: %02d:%02d", th, tm ) )
  1132.             guiSetText ( aTab3.GravityCurrent, "Gravitation: "..string.sub ( getGravity(), 0, 6 ) )
  1133.             guiSetText ( aTab3.SpeedCurrent, "Game Speed: "..getGameSpeed() )
  1134.             guiSetText ( aTab3.WeatherCurrent, "Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")" )
  1135.             local refreshTime = tonumber ( guiGetText ( aTab6.RefreshDelay ) )
  1136.             if ( ( refreshTime ) and ( refreshTime >= 20 ) ) then aLastCheck = getTickCount() + refreshTime
  1137.             else aLastCheck = getTickCount() + 50 end
  1138.         end
  1139.         if ( getTickCount() >= aLastSync ) then
  1140.             triggerServerEvent ( "aSync", getLocalPlayer(), "admins" )
  1141.             aLastSync = getTickCount() + 15000
  1142.         end
  1143.     end
  1144. end
  1145.  
  1146.  
  1147. function updateColorCodes()
  1148.     local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList }
  1149.     for _,gridlist in ipairs(lists) do
  1150.         for row=0,guiGridListGetRowCount(gridlist)-1 do
  1151.             guiGridListSetItemPlayerName( gridlist, row, 1, guiGridListGetItemPlayerName( gridlist, row, 1 ) )
  1152.         end
  1153.     end
  1154. end
  1155.  
  1156. function guiGridListSetItemPlayerName( gridlist, row, col, name )
  1157.     local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes )
  1158.     guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false )
  1159.     guiGridListSetItemData( gridlist, row, col, name )
  1160. end
  1161.  
  1162. function guiGridListGetItemPlayerName( gridlist, row, col )
  1163.     return guiGridListGetItemData( gridlist, row, col ) or guiGridListGetItemText( gridlist, row, col )
  1164. end
  1165.  
  1166. -- remove color coding from string
  1167. function removeColorCoding( name )
  1168.     return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name
  1169. end
  1170.  
  1171. -- anon admin
  1172. function isAnonAdmin()
  1173.     return getElementData( getLocalPlayer(), "AnonAdmin" ) == true
  1174. end
  1175.  
  1176. function setAnonAdmin( bOn )
  1177.     guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn )
  1178.     setElementData( getLocalPlayer(), "AnonAdmin", bOn )
  1179. end
  1180.  
  1181. function loadFlagImage( guiStaticImage, countryCode )
  1182.     if countryCode then
  1183.         local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png"
  1184.         if getVersion().sortable and getVersion().sortable > "1.1.0" then
  1185.             -- 1.1
  1186.             if fileExists( flagFilename ) then
  1187.                 if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then
  1188.                     return
  1189.                 end
  1190.             end
  1191.         else
  1192.             -- 1.0
  1193.             guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" )
  1194.             guiStaticImageLoadImage ( guiStaticImage, flagFilename )
  1195.             return
  1196.         end
  1197.     end
  1198.     guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" )
  1199. end[/lua]
  1200.  
  1201.  
  1202. ACL :
  1203.  
  1204.  
  1205. [lua]<acl>
  1206.     <group name="Everyone">
  1207.         <acl name="Default"></acl>
  1208.         <object name="user.*"></object>
  1209.         <object name="resource.*"></object>
  1210.     </group>
  1211.     <group name="Moderator">
  1212.         <acl name="Moderator"></acl>
  1213.         <object name="resource.mapcycler"></object>
  1214.         <object name="resource.mapmanager"></object>
  1215.         <object name="resource.resourcemanager"></object>
  1216.         <object name="resource.votemanager"></object>
  1217.     </group>
  1218.     <group name="SuperModerator">
  1219.         <acl name="Moderator"></acl>
  1220.         <acl name="SuperModerator"></acl>
  1221.     </group>
  1222.     <group name="Admin">
  1223.         <acl name="Moderator"></acl>
  1224.         <acl name="SuperModerator"></acl>
  1225.         <acl name="Admin"></acl>
  1226.         <acl name="RPC"></acl>
  1227.         <object name="resource.admin"></object>
  1228.         <object name="resource.webadmin"></object>
  1229.         <object name="resource.anti-Fake-Users"></object>
  1230.         <object name="resource.tactcis"></object>
  1231.         <object name="resource.acpanel"></object>
  1232.         <object name="user.basemode"></object>
  1233.         <object name="resource.anti-change-nick"></object>
  1234.         <object name="resource.serial"></object>
  1235.     </group>
  1236.     <group name="Console">
  1237.         <acl name="Moderator"></acl>
  1238.         <acl name="SuperModerator"></acl>
  1239.         <acl name="Admin"></acl>
  1240.         <acl name="RPC"></acl>
  1241.         <object name="user.basemode"></object>
  1242.         <object name="resource.anti-Fake-Users"></object>
  1243.     </group>
  1244.     <group name="RPC">
  1245.         <acl name="RPC"></acl>
  1246.     </group>
  1247.     <group name="MapEditor">
  1248.         <acl name="Default"></acl>
  1249.         <acl name="MapEditor"></acl>
  1250.         <object name="resource.editor_main"></object>
  1251.         <object name="resource.edf"></object>
  1252.     </group>
  1253.     <group name="raceACLGroup">
  1254.         <acl name="Default"></acl>
  1255.         <acl name="raceACL"></acl>
  1256.         <object name="resource.race"></object>
  1257.     </group>
  1258.     <group name="DevGroup">
  1259.         <acl name="DevACL"></acl>
  1260.     </group>
  1261.     <group name="autoGroup_tactics">
  1262.         <acl name="autoACL_tactics"></acl>
  1263.         <object name="resource.tactics"></object>
  1264.     </group>
  1265.     <group name="Tactics">
  1266.         <acl name="Tactics"></acl>
  1267.         <object name="resource.tactics"></object>
  1268.     </group>
  1269.     <group name="autoGroup_acpanel">
  1270.         <acl name="autoACL_acpanel"></acl>
  1271.         <object name="resource.acpanel"></object>
  1272.     </group>
  1273.     <acl name="Default">
  1274.         <right name="general.ModifyOtherObjects" access="false"></right>
  1275.         <right name="general.http" access="false"></right>
  1276.         <right name="command.start" access="false"></right>
  1277.         <right name="command.stop" access="false"></right>
  1278.         <right name="command.stopall" access="false"></right>
  1279.         <right name="command.gamemode" access="false"></right>
  1280.         <right name="command.changemode" access="false"></right>
  1281.         <right name="command.changemap" access="false"></right>
  1282.         <right name="command.stopmode" access="false"></right>
  1283.         <right name="command.stopmap" access="false"></right>
  1284.         <right name="command.skipmap" access="false"></right>
  1285.         <right name="command.restart" access="false"></right>
  1286.         <right name="command.refresh" access="false"></right>
  1287.         <right name="command.refreshall" access="false"></right>
  1288.         <right name="command.addaccount" access="false"></right>
  1289.         <right name="command.delaccount" access="false"></right>
  1290.         <right name="command.debugscript" access="false"></right>
  1291.         <right name="command.chgpass" access="false"></right>
  1292.         <right name="command.loadmodule" access="false"></right>
  1293.         <right name="command.upgrade" access="false"></right>
  1294.         <right name="command.mute" access="false"></right>
  1295.         <right name="command.crun" access="false"></right>
  1296.         <right name="command.srun" access="false"></right>
  1297.         <right name="command.run" access="false"></right>
  1298.         <right name="command.unmute" access="false"></right>
  1299.         <right name="command.kick" access="false"></right>
  1300.         <right name="command.ban" access="false"></right>
  1301.         <right name="command.banip" access="false"></right>
  1302.         <right name="command.unbanip" access="false"></right>
  1303.         <right name="command.reloadbans" access="false"></right>
  1304.         <right name="command.shutdown" access="false"></right>
  1305.         <right name="command.install" access="false"></right>
  1306.         <right name="command.aexec" access="false"></right>
  1307.         <right name="command.whois" access="false"></right>
  1308.         <right name="command.whowas" access="false"></right>
  1309.         <right name="function.executeCommandHandler" access="false"></right>
  1310.         <right name="function.setPlayerMuted" access="false"></right>
  1311.         <right name="function.addAccount" access="false"></right>
  1312.         <right name="function.addBan" access="false"></right>
  1313.         <right name="function.removeBan" access="false"></right>
  1314.         <right name="function.removeAccount" access="false"></right>
  1315.         <right name="function.setAccountPassword" access="false"></right>
  1316.         <right name="function.kickPlayer" access="false"></right>
  1317.         <right name="function.banIP" access="false"></right>
  1318.         <right name="function.banPlayer" access="false"></right>
  1319.         <right name="function.banSerial" access="false"></right>
  1320.         <right name="function.getBansXML" access="false"></right>
  1321.         <right name="function.unbanIP" access="false"></right>
  1322.         <right name="function.unbanSerial" access="false"></right>
  1323.         <right name="function.reloadBans" access="false"></right>
  1324.         <right name="function.getClientIP" access="false"></right>
  1325.         <right name="function.setServerPassword" access="false"></right>
  1326.         <right name="function.getServerPassword" access="false"></right>
  1327.         <right name="function.callRemote" access="false"></right>
  1328.         <right name="function.startResource" access="false"></right>
  1329.         <right name="function.stopResource" access="false"></right>
  1330.         <right name="function.restartResource" access="false"></right>
  1331.         <right name="function.createResource" access="false"></right>
  1332.         <right name="function.copyResource" access="false"></right>
  1333.         <right name="function.addResourceMap" access="false"></right>
  1334.         <right name="function.addResourceConfig" access="false"></right>
  1335.         <right name="function.removeResourceFile" access="false"></right>
  1336.         <right name="function.setResourceDefaultSetting" access="false"></right>
  1337.         <right name="function.removeResourceDefaultSetting" access="false"></right>
  1338.         <right name="function.redirectPlayer" access="false"></right>
  1339.         <right name="function.aclReload" access="false"></right>
  1340.         <right name="function.aclSave" access="false"></right>
  1341.         <right name="function.aclCreate" access="false"></right>
  1342.         <right name="function.aclDestroy" access="false"></right>
  1343.         <right name="function.aclSetRight" access="false"></right>
  1344.         <right name="function.aclRemoveRight" access="false"></right>
  1345.         <right name="function.aclCreateGroup" access="false"></right>
  1346.         <right name="function.aclDestroyGroup" access="false"></right>
  1347.         <right name="function.aclGroupAddACL" access="false"></right>
  1348.         <right name="function.aclGroupRemoveACL" access="false"></right>
  1349.         <right name="function.aclGroupAddObject" access="false"></right>
  1350.         <right name="function.aclGroupRemoveObject" access="false"></right>
  1351.         <right name="function.refreshResources" access="false"></right>
  1352.         <right name="function.setServerConfigSetting" access="false"></right>
  1353.         <right name="function.updateResourceACLRequest" access="false"></right>
  1354.         <right name="command.aclrequest" access="false"></right>
  1355.         <right name="general.adminpanel" access="false"></right>
  1356.         <right name="general.tab_players" access="false"></right>
  1357.         <right name="general.tab_resources" access="false"></right>
  1358.         <right name="general.tab_maps" access="false"></right>
  1359.         <right name="general.tab_server" access="false"></right>
  1360.         <right name="general.tab_bans" access="false"></right>
  1361.         <right name="general.tab_adminchat" access="false"></right>
  1362.         <right name="command.freeze" access="false"></right>
  1363.         <right name="command.setnick" access="false"></right>
  1364.         <right name="command.shout" access="false"></right>
  1365.         <right name="command.spectate" access="false"></right>
  1366.         <right name="command.slap" access="false"></right>
  1367.         <right name="command.setgroup" access="false"></right>
  1368.         <right name="command.sethealth" access="false"></right>
  1369.         <right name="command.setarmour" access="false"></right>
  1370.         <right name="command.setmoney" access="false"></right>
  1371.         <right name="command.setskin" access="false"></right>
  1372.         <right name="command.setteam" access="false"></right>
  1373.         <right name="command.giveweapon" access="false"></right>
  1374.         <right name="command.setstat" access="false"></right>
  1375.         <right name="command.jetpack" access="false"></right>
  1376.         <right name="command.warp" access="false"></right>
  1377.         <right name="command.setdimension" access="false"></right>
  1378.         <right name="command.setinterior" access="false"></right>
  1379.         <right name="command.givevehicle" access="false"></right>
  1380.         <right name="command.repair" access="false"></right>
  1381.         <right name="command.blow" access="false"></right>
  1382.         <right name="command.destroy" access="false"></right>
  1383.         <right name="command.customize" access="false"></right>
  1384.         <right name="command.setcolor" access="false"></right>
  1385.         <right name="command.setpaintjob" access="false"></right>
  1386.         <right name="command.listmessages" access="false"></right>
  1387.         <right name="command.readmessage" access="false"></right>
  1388.         <right name="command.listresources" access="false"></right>
  1389.         <right name="command.execute" access="false"></right>
  1390.         <right name="command.delete" access="false"></right>
  1391.         <right name="command.setpassword" access="false"></right>
  1392.         <right name="command.setwelcome" access="false"></right>
  1393.         <right name="command.setgame" access="false"></right>
  1394.         <right name="command.setmap" access="false"></right>
  1395.         <right name="command.setweather" access="false"></right>
  1396.         <right name="command.blendweather" access="false"></right>
  1397.         <right name="command.setblurlevel" access="false"></right>
  1398.         <right name="command.setwaveheight" access="false"></right>
  1399.         <right name="command.setskygradient" access="false"></right>
  1400.         <right name="command.setgamespeed" access="false"></right>
  1401.         <right name="command.setgravity" access="false"></right>
  1402.         <right name="command.settime" access="false"></right>
  1403.         <right name="function.shutdown" access="false"></right>
  1404.         <right name="command.setfpslimit" access="false"></right>
  1405.         <right name="command.unban" access="false"></right>
  1406.         <right name="command.banserial" access="false"></right>
  1407.         <right name="command.unbanserial" access="false"></right>
  1408.         <right name="command.listbans" access="false"></right>
  1409.         <right name="general.tactics_players" access="false"></right>
  1410.         <right name="general.tactics_maps" access="false"></right>
  1411.         <right name="general.tactics_configs" access="false"></right>
  1412.         <right name="general.tactics_handling" access="false"></right>
  1413.         <right name="general.tactics_teams" access="false"></right>
  1414.         <right name="general.tactics_adminchat" access="false"></right>
  1415.         <right name="general.tactics_shooting" access="false"></right>
  1416.         <right name="general.tactics_openpanel" access="false"></right>
  1417.         <right name="general.tactics_weather" access="false"></right>
  1418.         <right name="general.tactics_vehicles" access="false"></right>
  1419.         <right name="general.tactics_weapons" access="false"></right>
  1420.         <right name="general.tactics_anticheat" access="false"></right>
  1421.         <right name="general.tactics_settings" access="false"></right>
  1422.     </acl>
  1423.     <acl name="Moderator">
  1424.         <right name="general.ModifyOtherObjects" access="false"></right>
  1425.         <right name="command.gamemode" access="true"></right>
  1426.         <right name="command.changemode" access="true"></right>
  1427.         <right name="command.changemap" access="true"></right>
  1428.         <right name="command.stopmode" access="true"></right>
  1429.         <right name="command.stopmap" access="true"></right>
  1430.         <right name="command.skipmap" access="true"></right>
  1431.         <right name="command.mute" access="true"></right>
  1432.         <right name="command.unmute" access="true"></right>
  1433.         <right name="command.whois" access="true"></right>
  1434.         <right name="command.whowas" access="true"></right>
  1435.         <right name="function.setPlayerMuted" access="true"></right>
  1436.         <right name="function.kickPlayer" access="true"></right>
  1437.         <right name="function.banIP" access="true"></right>
  1438.         <right name="function.banPlayer" access="true"></right>
  1439.         <right name="function.banSerial" access="true"></right>
  1440.         <right name="function.getBansXML" access="true"></right>
  1441.         <right name="function.unbanIP" access="true"></right>
  1442.         <right name="function.unbanSerial" access="true"></right>
  1443.         <right name="function.getClientIP" access="true"></right>
  1444.         <right name="function.startResource" access="true"></right>
  1445.         <right name="function.stopResource" access="true"></right>
  1446.         <right name="function.restartResource" access="true"></right>
  1447.         <right name="function.redirectPlayer" access="true"></right>
  1448.         <right name="general.adminpanel" access="true"></right>
  1449.         <right name="general.tab_players" access="true"></right>
  1450.         <right name="general.tab_resources" access="false"></right>
  1451.         <right name="general.tab_maps" access="false"></right>
  1452.         <right name="general.tab_server" access="true"></right>
  1453.         <right name="general.tab_bans" access="false"></right>
  1454.         <right name="general.tab_adminchat" access="true"></right>
  1455.         <right name="command.kick" access="false"></right>
  1456.         <right name="command.freeze" access="true"></right>
  1457.         <right name="command.setnick" access="true"></right>
  1458.         <right name="command.shout" access="true"></right>
  1459.         <right name="command.spectate" access="true"></right>
  1460.         <right name="command.slap" access="true"></right>
  1461.         <right name="command.setgroup" access="false"></right>
  1462.         <right name="command.sethealth" access="true"></right>
  1463.         <right name="command.setarmour" access="true"></right>
  1464.         <right name="command.setmoney" access="false"></right>
  1465.         <right name="command.setskin" access="true"></right>
  1466.         <right name="command.setteam" access="true"></right>
  1467.         <right name="command.giveweapon" access="true"></right>
  1468.         <right name="command.setstat" access="true"></right>
  1469.         <right name="command.jetpack" access="true"></right>
  1470.         <right name="command.warp" access="true"></right>
  1471.         <right name="command.setdimension" access="true"></right>
  1472.         <right name="command.setinterior" access="true"></right>
  1473.         <right name="command.createteam" access="false"></right>
  1474.         <right name="command.destroyteam" access="false"></right>
  1475.         <right name="command.givevehicle" access="true"></right>
  1476.         <right name="command.repair" access="true"></right>
  1477.         <right name="command.blowvehicle" access="true"></right>
  1478.         <right name="command.destroyvehicle" access="true"></right>
  1479.         <right name="command.customize" access="true"></right>
  1480.         <right name="command.setcolor" access="true"></right>
  1481.         <right name="command.setpaintjob" access="true"></right>
  1482.         <right name="command.listmessages" access="true"></right>
  1483.         <right name="command.readmessage" access="true"></right>
  1484.         <right name="command.listresources" access="true"></right>
  1485.         <right name="command.start" access="false"></right>
  1486.         <right name="command.stop" access="false"></right>
  1487.         <right name="command.stopall" access="false"></right>
  1488.         <right name="command.restart" access="false"></right>
  1489.         <right name="command.execute" access="false"></right>
  1490.         <right name="command.setpassword" access="false"></right>
  1491.         <right name="command.setwelcome" access="false"></right>
  1492.         <right name="command.setgame" access="false"></right>
  1493.         <right name="command.setmap" access="false"></right>
  1494.         <right name="command.setweather" access="true"></right>
  1495.         <right name="command.blendweather" access="true"></right>
  1496.         <right name="command.setblurlevel" access="true"></right>
  1497.         <right name="command.setwaveheight" access="true"></right>
  1498.         <right name="command.setskygradient" access="true"></right>
  1499.         <right name="command.setgamespeed" access="true"></right>
  1500.         <right name="command.setgravity" access="true"></right>
  1501.         <right name="command.settime" access="true"></right>
  1502.         <right name="command.ban" access="false"></right>
  1503.         <right name="command.unban" access="false"></right>
  1504.         <right name="command.banip" access="false"></right>
  1505.         <right name="command.unbanip" access="false"></right>
  1506.         <right name="command.banserial" access="false"></right>
  1507.         <right name="command.unbanserial" access="false"></right>
  1508.         <right name="command.listbans" access="false"></right>
  1509.         <right name="general.tactics_players" access="true"></right>
  1510.         <right name="general.tactics_maps" access="true"></right>
  1511.         <right name="general.tactics_configs" access="false"></right>
  1512.         <right name="general.tactics_handling" access="false"></right>
  1513.         <right name="general.tactics_teams" access="false"></right>
  1514.         <right name="general.tactics_adminchat" access="true"></right>
  1515.         <right name="general.tactics_shooting" access="false"></right>
  1516.         <right name="general.tactics_openpanel" access="true"></right>
  1517.         <right name="general.tactics_weather" access="false"></right>
  1518.         <right name="general.tactics_vehicles" access="false"></right>
  1519.         <right name="general.tactics_weapons" access="false"></right>
  1520.         <right name="general.tactics_anticheat" access="false"></right>
  1521.         <right name="general.tactics_settings" access="false"></right>
  1522.     </acl>
  1523.     <acl name="SuperModerator">
  1524.         <right name="general.ModifyOtherObjects" access="false"></right>
  1525.         <right name="command.start" access="true"></right>
  1526.         <right name="command.stop" access="true"></right>
  1527.         <right name="command.restart" access="true"></right>
  1528.         <right name="command.kick" access="true"></right>
  1529.         <right name="command.ban" access="true"></right>
  1530.         <right name="command.banip" access="true"></right>
  1531.         <right name="command.unbanip" access="true"></right>
  1532.         <right name="command.reloadbans" access="true"></right>
  1533.         <right name="command.refresh" access="true"></right>
  1534.         <right name="command.refreshall" access="true"></right>
  1535.         <right name="command.loadmodule" access="true"></right>
  1536.         <right name="command.addaccount" access="true"></right>
  1537.         <right name="command.delaccount" access="true"></right>
  1538.         <right name="command.chgpass" access="true"></right>
  1539.         <right name="function.addAccount" access="true"></right>
  1540.         <right name="function.removeAccount" access="true"></right>
  1541.         <right name="function.setAccountPassword" access="true"></right>
  1542.         <right name="general.adminpanel" access="true"></right>
  1543.         <right name="general.tab_players" access="true"></right>
  1544.         <right name="general.tab_resources" access="true"></right>
  1545.         <right name="general.tab_maps" access="true"></right>
  1546.         <right name="general.tab_server" access="true"></right>
  1547.         <right name="general.tab_bans" access="true"></right>
  1548.         <right name="general.tab_adminchat" access="true"></right>
  1549.         <right name="command.freeze" access="true"></right>
  1550.         <right name="command.mute" access="true"></right>
  1551.         <right name="command.setnick" access="true"></right>
  1552.         <right name="command.shout" access="true"></right>
  1553.         <right name="command.spectate" access="true"></right>
  1554.         <right name="command.slap" access="true"></right>
  1555.         <right name="command.setgroup" access="false"></right>
  1556.         <right name="command.sethealth" access="true"></right>
  1557.         <right name="command.setarmour" access="true"></right>
  1558.         <right name="command.setmoney" access="true"></right>
  1559.         <right name="command.setskin" access="true"></right>
  1560.         <right name="command.setteam" access="true"></right>
  1561.         <right name="command.giveweapon" access="true"></right>
  1562.         <right name="command.setstat" access="true"></right>
  1563.         <right name="command.jetpack" access="true"></right>
  1564.         <right name="command.warp" access="true"></right>
  1565.         <right name="command.setdimension" access="true"></right>
  1566.         <right name="command.setinterior" access="true"></right>
  1567.         <right name="command.createteam" access="true"></right>
  1568.         <right name="command.destroyteam" access="true"></right>
  1569.         <right name="command.givevehicle" access="true"></right>
  1570.         <right name="command.repair" access="true"></right>
  1571.         <right name="command.blowvehicle" access="true"></right>
  1572.         <right name="command.destroyvehicle" access="true"></right>
  1573.         <right name="command.customize" access="true"></right>
  1574.         <right name="command.setcolor" access="true"></right>
  1575.         <right name="command.setpaintjob" access="true"></right>
  1576.         <right name="command.listmessages" access="true"></right>
  1577.         <right name="command.readmessage" access="true"></right>
  1578.         <right name="command.listresources" access="true"></right>
  1579.         <right name="command.stopall" access="false"></right>
  1580.         <right name="command.execute" access="false"></right>
  1581.         <right name="command.setpassword" access="true"></right>
  1582.         <right name="command.setwelcome" access="true"></right>
  1583.         <right name="command.setgame" access="true"></right>
  1584.         <right name="command.setmap" access="true"></right>
  1585.         <right name="command.setweather" access="true"></right>
  1586.         <right name="command.blendweather" access="true"></right>
  1587.         <right name="command.setblurlevel" access="true"></right>
  1588.         <right name="command.setwaveheight" access="true"></right>
  1589.         <right name="command.setskygradient" access="true"></right>
  1590.         <right name="command.setgamespeed" access="true"></right>
  1591.         <right name="command.setgravity" access="true"></right>
  1592.         <right name="command.settime" access="true"></right>
  1593.         <right name="command.unban" access="true"></right>
  1594.         <right name="command.banserial" access="true"></right>
  1595.         <right name="command.unbanserial" access="true"></right>
  1596.         <right name="command.listbans" access="true"></right>
  1597.         <right name="general.tactics_players" access="true"></right>
  1598.         <right name="general.tactics_maps" access="true"></right>
  1599.         <right name="general.tactics_configs" access="false"></right>
  1600.         <right name="general.tactics_handling" access="false"></right>
  1601.         <right name="general.tactics_teams" access="true"></right>
  1602.         <right name="general.tactics_adminchat" access="true"></right>
  1603.         <right name="general.tactics_shooting" access="false"></right>
  1604.         <right name="general.tactics_openpanel" access="true"></right>
  1605.         <right name="general.tactics_weather" access="true"></right>
  1606.         <right name="general.tactics_vehicles" access="true"></right>
  1607.         <right name="general.tactics_weapons" access="true"></right>
  1608.         <right name="general.tactics_anticheat" access="false"></right>
  1609.         <right name="general.tactics_settings" access="true"></right>
  1610.     </acl>
  1611.     <acl name="Admin">
  1612.         <right name="general.ModifyOtherObjects" access="true"></right>
  1613.         <right name="general.http" access="true"></right>
  1614.         <right name="command.shutdown" access="true"></right>
  1615.         <right name="command.install" access="true"></right>
  1616.         <right name="command.aexec" access="true"></right>
  1617.         <right name="command.debugscript" access="true"></right>
  1618.         <right name="command.upgrade" access="true"></right>
  1619.         <right name="command.crun" access="true"></right>
  1620.         <right name="command.srun" access="true"></right>
  1621.         <right name="command.run" access="true"></right>
  1622.         <right name="function.addBan" access="true"></right>
  1623.         <right name="function.removeBan" access="true"></right>
  1624.         <right name="function.reloadBans" access="true"></right>
  1625.         <right name="function.executeCommandHandler" access="true"></right>
  1626.         <right name="function.setServerPassword" access="true"></right>
  1627.         <right name="function.getServerPassword" access="true"></right>
  1628.         <right name="function.createResource" access="true"></right>
  1629.         <right name="function.copyResource" access="true"></right>
  1630.         <right name="function.addResourceMap" access="true"></right>
  1631.         <right name="function.addResourceConfig" access="true"></right>
  1632.         <right name="function.removeResourceFile" access="true"></right>
  1633.         <right name="function.setResourceDefaultSetting" access="true"></right>
  1634.         <right name="function.removeResourceDefaultSetting" access="true"></right>
  1635.         <right name="function.aclReload" access="true"></right>
  1636.         <right name="function.aclSave" access="true"></right>
  1637.         <right name="function.aclCreate" access="true"></right>
  1638.         <right name="function.aclDestroy" access="true"></right>
  1639.         <right name="function.aclSetRight" access="true"></right>
  1640.         <right name="function.aclRemoveRight" access="true"></right>
  1641.         <right name="function.aclCreateGroup" access="true"></right>
  1642.         <right name="function.aclDestroyGroup" access="true"></right>
  1643.         <right name="function.aclGroupAddACL" access="true"></right>
  1644.         <right name="function.aclGroupRemoveACL" access="true"></right>
  1645.         <right name="function.aclGroupAddObject" access="true"></right>
  1646.         <right name="function.aclGroupRemoveObject" access="true"></right>
  1647.         <right name="function.refreshResources" access="true"></right>
  1648.         <right name="function.setServerConfigSetting" access="true"></right>
  1649.         <right name="function.updateResourceACLRequest" access="true"></right>
  1650.         <right name="command.aclrequest" access="true"></right>
  1651.         <right name="general.adminpanel" access="true"></right>
  1652.         <right name="general.tab_players" access="true"></right>
  1653.         <right name="general.tab_resources" access="true"></right>
  1654.         <right name="general.tab_server" access="true"></right>
  1655.         <right name="general.tab_maps" access="true"></right>
  1656.         <right name="general.tab_bans" access="true"></right>
  1657.         <right name="general.tab_adminchat" access="true"></right>
  1658.         <right name="command.kick" access="true"></right>
  1659.         <right name="command.freeze" access="true"></right>
  1660.         <right name="command.mute" access="true"></right>
  1661.         <right name="command.setnick" access="true"></right>
  1662.         <right name="command.shout" access="true"></right>
  1663.         <right name="command.spectate" access="true"></right>
  1664.         <right name="command.slap" access="true"></right>
  1665.         <right name="command.setgroup" access="true"></right>
  1666.         <right name="command.sethealth" access="true"></right>
  1667.         <right name="command.setarmour" access="true"></right>
  1668.         <right name="command.setmoney" access="true"></right>
  1669.         <right name="command.setskin" access="true"></right>
  1670.         <right name="command.setteam" access="true"></right>
  1671.         <right name="command.giveweapon" access="true"></right>
  1672.         <right name="command.setstat" access="true"></right>
  1673.         <right name="command.jetpack" access="true"></right>
  1674.         <right name="command.warp" access="true"></right>
  1675.         <right name="command.setdimension" access="true"></right>
  1676.         <right name="command.setinterior" access="true"></right>
  1677.         <right name="command.createteam" access="true"></right>
  1678.         <right name="command.destroyteam" access="true"></right>
  1679.         <right name="command.givevehicle" access="true"></right>
  1680.         <right name="command.repair" access="true"></right>
  1681.         <right name="command.blowvehicle" access="true"></right>
  1682.         <right name="command.destroyvehicle" access="true"></right>
  1683.         <right name="command.customize" access="true"></right>
  1684.         <right name="command.setcolor" access="true"></right>
  1685.         <right name="command.setpaintjob" access="true"></right>
  1686.         <right name="command.listmessages" access="true"></right>
  1687.         <right name="command.readmessage" access="true"></right>
  1688.         <right name="command.listresources" access="true"></right>
  1689.         <right name="command.start" access="true"></right>
  1690.         <right name="command.stop" access="true"></right>
  1691.         <right name="command.stopall" access="false"></right>
  1692.         <right name="command.delete" access="true"></right>
  1693.         <right name="command.restart" access="true"></right>
  1694.         <right name="command.execute" access="true"></right>
  1695.         <right name="command.setpassword" access="true"></right>
  1696.         <right name="command.setwelcome" access="true"></right>
  1697.         <right name="command.setgame" access="true"></right>
  1698.         <right name="command.setmap" access="true"></right>
  1699.         <right name="command.setweather" access="true"></right>
  1700.         <right name="command.blendweather" access="true"></right>
  1701.         <right name="command.setblurlevel" access="true"></right>
  1702.         <right name="command.setwaveheight" access="true"></right>
  1703.         <right name="command.setskygradient" access="true"></right>
  1704.         <right name="command.setgamespeed" access="true"></right>
  1705.         <right name="command.setgravity" access="true"></right>
  1706.         <right name="command.settime" access="true"></right>
  1707.         <right name="command.setfpslimit" access="true"></right>
  1708.         <right name="function.shutdown" access="true"></right>
  1709.         <right name="command.ban" access="true"></right>
  1710.         <right name="command.unban" access="true"></right>
  1711.         <right name="command.banip" access="true"></right>
  1712.         <right name="command.unbanip" access="true"></right>
  1713.         <right name="command.banserial" access="true"></right>
  1714.         <right name="command.unbanserial" access="true"></right>
  1715.         <right name="command.listbans" access="true"></right>
  1716.         <right name="general.tactics_players" access="true"></right>
  1717.         <right name="general.tactics_maps" access="true"></right>
  1718.         <right name="general.tactics_configs" access="true"></right>
  1719.         <right name="general.tactics_handling" access="true"></right>
  1720.         <right name="general.tactics_teams" access="true"></right>
  1721.         <right name="general.tactics_adminchat" access="true"></right>
  1722.         <right name="general.tactics_shooting" access="true"></right>
  1723.         <right name="general.tactics_openpanel" access="true"></right>
  1724.         <right name="general.tactics_weather" access="true"></right>
  1725.         <right name="general.tactics_vehicles" access="true"></right>
  1726.         <right name="general.tactics_weapons" access="true"></right>
  1727.         <right name="general.tactics_anticheat" access="true"></right>
  1728.         <right name="general.tactics_settings" access="true"></right>
  1729.         <right name="command.ACL" access="true"></right>
  1730.     </acl>
  1731.     <acl name="RPC">
  1732.         <right name="function.callRemote" access="true"></right>
  1733.         <right name="general.adminpanel" access="false"></right>
  1734.         <right name="general.tab_players" access="false"></right>
  1735.         <right name="general.tab_resources" access="false"></right>
  1736.         <right name="general.tab_maps" access="false"></right>
  1737.         <right name="general.tab_server" access="false"></right>
  1738.         <right name="general.tab_bans" access="false"></right>
  1739.         <right name="general.tab_adminchat" access="false"></right>
  1740.         <right name="command.kick" access="false"></right>
  1741.         <right name="command.freeze" access="false"></right>
  1742.         <right name="command.mute" access="false"></right>
  1743.         <right name="command.setnick" access="false"></right>
  1744.         <right name="command.shout" access="false"></right>
  1745.         <right name="command.spectate" access="false"></right>
  1746.         <right name="command.slap" access="false"></right>
  1747.         <right name="command.setgroup" access="false"></right>
  1748.         <right name="command.sethealth" access="false"></right>
  1749.         <right name="command.setarmour" access="false"></right>
  1750.         <right name="command.setmoney" access="false"></right>
  1751.         <right name="command.setskin" access="false"></right>
  1752.         <right name="command.setteam" access="false"></right>
  1753.         <right name="command.giveweapon" access="false"></right>
  1754.         <right name="command.setstat" access="false"></right>
  1755.         <right name="command.jetpack" access="false"></right>
  1756.         <right name="command.warp" access="false"></right>
  1757.         <right name="command.setdimension" access="false"></right>
  1758.         <right name="command.setinterior" access="false"></right>
  1759.         <right name="command.givevehicle" access="false"></right>
  1760.         <right name="command.repair" access="false"></right>
  1761.         <right name="command.blow" access="false"></right>
  1762.         <right name="command.destroy" access="false"></right>
  1763.         <right name="command.customize" access="false"></right>
  1764.         <right name="command.setcolor" access="false"></right>
  1765.         <right name="command.setpaintjob" access="false"></right>
  1766.         <right name="command.listmessages" access="false"></right>
  1767.         <right name="command.readmessage" access="false"></right>
  1768.         <right name="command.listresources" access="false"></right>
  1769.         <right name="command.start" access="false"></right>
  1770.         <right name="command.stop" access="false"></right>
  1771.         <right name="command.stopall" access="false"></right>
  1772.         <right name="command.restart" access="false"></right>
  1773.         <right name="command.execute" access="false"></right>
  1774.         <right name="command.delete" access="false"></right>
  1775.         <right name="command.setpassword" access="false"></right>
  1776.         <right name="command.setwelcome" access="false"></right>
  1777.         <right name="command.setgame" access="false"></right>
  1778.         <right name="command.setmap" access="false"></right>
  1779.         <right name="command.setweather" access="false"></right>
  1780.         <right name="command.blendweather" access="false"></right>
  1781.         <right name="command.setblurlevel" access="false"></right>
  1782.         <right name="command.setwaveheight" access="false"></right>
  1783.         <right name="command.setskygradient" access="false"></right>
  1784.         <right name="command.setgamespeed" access="false"></right>
  1785.         <right name="command.setgravity" access="false"></right>
  1786.         <right name="command.settime" access="false"></right>
  1787.         <right name="function.shutdown" access="false"></right>
  1788.         <right name="command.setfpslimit" access="false"></right>
  1789.         <right name="command.ban" access="false"></right>
  1790.         <right name="command.unban" access="false"></right>
  1791.         <right name="command.banip" access="false"></right>
  1792.         <right name="command.unbanip" access="false"></right>
  1793.         <right name="command.banserial" access="false"></right>
  1794.         <right name="command.unbanserial" access="false"></right>
  1795.         <right name="command.listbans" access="false"></right>
  1796.         <right name="general.tactics_players" access="false"></right>
  1797.         <right name="general.tactics_maps" access="false"></right>
  1798.         <right name="general.tactics_configs" access="false"></right>
  1799.         <right name="general.tactics_handling" access="false"></right>
  1800.         <right name="general.tactics_teams" access="false"></right>
  1801.         <right name="general.tactics_adminchat" access="false"></right>
  1802.         <right name="general.tactics_shooting" access="false"></right>
  1803.         <right name="general.tactics_openpanel" access="false"></right>
  1804.         <right name="general.tactics_weather" access="false"></right>
  1805.         <right name="general.tactics_vehicles" access="false"></right>
  1806.         <right name="general.tactics_weapons" access="false"></right>
  1807.         <right name="general.tactics_anticheat" access="false"></right>
  1808.         <right name="general.tactics_settings" access="false"></right>
  1809.     </acl>
  1810.     <acl name="MapEditor">
  1811.         <right name="general.ModifyOtherObjects" access="true"></right>
  1812.         <right name="function.startResource" access="true"></right>
  1813.         <right name="function.stopResource" access="true"></right>
  1814.         <right name="function.restartResource" access="true"></right>
  1815.         <right name="function.createResource" access="true"></right>
  1816.         <right name="function.copyResource" access="true"></right>
  1817.         <right name="function.renameResource" access="true"></right>
  1818.         <right name="function.deleteResource" access="true"></right>
  1819.         <right name="function.addResourceMap" access="true"></right>
  1820.         <right name="function.addResourceConfig" access="true"></right>
  1821.         <right name="function.removeResourceFile" access="true"></right>
  1822.         <right name="function.setResourceDefaultSetting" access="true"></right>
  1823.         <right name="function.removeResourceDefaultSetting" access="true"></right>
  1824.         <right name="function.xmlLoadFile" access="true"></right>
  1825.         <right name="general.adminpanel" access="false"></right>
  1826.         <right name="general.tab_players" access="false"></right>
  1827.         <right name="general.tab_resources" access="false"></right>
  1828.         <right name="general.tab_maps" access="false"></right>
  1829.         <right name="general.tab_server" access="false"></right>
  1830.         <right name="general.tab_bans" access="false"></right>
  1831.         <right name="general.tab_adminchat" access="false"></right>
  1832.         <right name="command.kick" access="false"></right>
  1833.         <right name="command.freeze" access="false"></right>
  1834.         <right name="command.mute" access="false"></right>
  1835.         <right name="command.setnick" access="false"></right>
  1836.         <right name="command.shout" access="false"></right>
  1837.         <right name="command.spectate" access="false"></right>
  1838.         <right name="command.slap" access="false"></right>
  1839.         <right name="command.setgroup" access="false"></right>
  1840.         <right name="command.sethealth" access="false"></right>
  1841.         <right name="command.setarmour" access="false"></right>
  1842.         <right name="command.setmoney" access="false"></right>
  1843.         <right name="command.setskin" access="false"></right>
  1844.         <right name="command.setteam" access="false"></right>
  1845.         <right name="command.giveweapon" access="false"></right>
  1846.         <right name="command.setstat" access="false"></right>
  1847.         <right name="command.jetpack" access="false"></right>
  1848.         <right name="command.warp" access="false"></right>
  1849.         <right name="command.setdimension" access="false"></right>
  1850.         <right name="command.setinterior" access="false"></right>
  1851.         <right name="command.givevehicle" access="false"></right>
  1852.         <right name="command.repair" access="false"></right>
  1853.         <right name="command.blow" access="false"></right>
  1854.         <right name="command.destroy" access="false"></right>
  1855.         <right name="command.customize" access="false"></right>
  1856.         <right name="command.setcolor" access="false"></right>
  1857.         <right name="command.setpaintjob" access="false"></right>
  1858.         <right name="command.listmessages" access="false"></right>
  1859.         <right name="command.readmessage" access="false"></right>
  1860.         <right name="command.listresources" access="false"></right>
  1861.         <right name="command.start" access="false"></right>
  1862.         <right name="command.stop" access="false"></right>
  1863.         <right name="command.stopall" access="false"></right>
  1864.         <right name="command.restart" access="false"></right>
  1865.         <right name="command.execute" access="false"></right>
  1866.         <right name="command.delete" access="false"></right>
  1867.         <right name="command.setpassword" access="false"></right>
  1868.         <right name="command.setwelcome" access="false"></right>
  1869.         <right name="command.setgame" access="false"></right>
  1870.         <right name="command.setmap" access="false"></right>
  1871.         <right name="command.setweather" access="false"></right>
  1872.         <right name="command.blendweather" access="false"></right>
  1873.         <right name="command.setblurlevel" access="false"></right>
  1874.         <right name="command.setwaveheight" access="false"></right>
  1875.         <right name="command.setskygradient" access="false"></right>
  1876.         <right name="command.setgamespeed" access="false"></right>
  1877.         <right name="command.setgravity" access="false"></right>
  1878.         <right name="command.settime" access="false"></right>
  1879.         <right name="function.shutdown" access="false"></right>
  1880.         <right name="command.setfpslimit" access="false"></right>
  1881.         <right name="command.ban" access="false"></right>
  1882.         <right name="command.unban" access="false"></right>
  1883.         <right name="command.banip" access="false"></right>
  1884.         <right name="command.unbanip" access="false"></right>
  1885.         <right name="command.banserial" access="false"></right>
  1886.         <right name="command.unbanserial" access="false"></right>
  1887.         <right name="command.listbans" access="false"></right>
  1888.         <right name="general.tactics_players" access="false"></right>
  1889.         <right name="general.tactics_maps" access="false"></right>
  1890.         <right name="general.tactics_configs" access="false"></right>
  1891.         <right name="general.tactics_handling" access="false"></right>
  1892.         <right name="general.tactics_teams" access="false"></right>
  1893.         <right name="general.tactics_adminchat" access="false"></right>
  1894.         <right name="general.tactics_shooting" access="false"></right>
  1895.         <right name="general.tactics_openpanel" access="false"></right>
  1896.         <right name="general.tactics_weather" access="false"></right>
  1897.         <right name="general.tactics_vehicles" access="false"></right>
  1898.         <right name="general.tactics_weapons" access="false"></right>
  1899.         <right name="general.tactics_anticheat" access="false"></right>
  1900.         <right name="general.tactics_settings" access="false"></right>
  1901.     </acl>
  1902.     <acl name="raceACL">
  1903.         <right name="general.ModifyOtherObjects" access="true"></right>
  1904.         <right name="function.xmlLoadFile" access="true"></right>
  1905.         <right name="function.startResource" access="true"></right>
  1906.         <right name="function.stopResource" access="true"></right>
  1907.         <right name="function.restartResource" access="true"></right>
  1908.         <right name="general.adminpanel" access="false"></right>
  1909.         <right name="general.tab_players" access="false"></right>
  1910.         <right name="general.tab_resources" access="false"></right>
  1911.         <right name="general.tab_maps" access="false"></right>
  1912.         <right name="general.tab_server" access="false"></right>
  1913.         <right name="general.tab_bans" access="false"></right>
  1914.         <right name="general.tab_adminchat" access="false"></right>
  1915.         <right name="command.kick" access="false"></right>
  1916.         <right name="command.freeze" access="false"></right>
  1917.         <right name="command.mute" access="false"></right>
  1918.         <right name="command.setnick" access="false"></right>
  1919.         <right name="command.shout" access="false"></right>
  1920.         <right name="command.spectate" access="false"></right>
  1921.         <right name="command.slap" access="false"></right>
  1922.         <right name="command.setgroup" access="false"></right>
  1923.         <right name="command.sethealth" access="false"></right>
  1924.         <right name="command.setarmour" access="false"></right>
  1925.         <right name="command.setmoney" access="false"></right>
  1926.         <right name="command.setskin" access="false"></right>
  1927.         <right name="command.setteam" access="false"></right>
  1928.         <right name="command.giveweapon" access="false"></right>
  1929.         <right name="command.setstat" access="false"></right>
  1930.         <right name="command.jetpack" access="false"></right>
  1931.         <right name="command.warp" access="false"></right>
  1932.         <right name="command.setdimension" access="false"></right>
  1933.         <right name="command.setinterior" access="false"></right>
  1934.         <right name="command.givevehicle" access="false"></right>
  1935.         <right name="command.repair" access="false"></right>
  1936.         <right name="command.blow" access="false"></right>
  1937.         <right name="command.destroy" access="false"></right>
  1938.         <right name="command.customize" access="false"></right>
  1939.         <right name="command.setcolor" access="false"></right>
  1940.         <right name="command.setpaintjob" access="false"></right>
  1941.         <right name="command.listmessages" access="false"></right>
  1942.         <right name="command.readmessage" access="false"></right>
  1943.         <right name="command.listresources" access="false"></right>
  1944.         <right name="command.start" access="false"></right>
  1945.         <right name="command.stop" access="false"></right>
  1946.         <right name="command.stopall" access="false"></right>
  1947.         <right name="command.restart" access="false"></right>
  1948.         <right name="command.execute" access="false"></right>
  1949.         <right name="command.delete" access="false"></right>
  1950.         <right name="command.setpassword" access="false"></right>
  1951.         <right name="command.setwelcome" access="false"></right>
  1952.         <right name="command.setgame" access="false"></right>
  1953.         <right name="command.setmap" access="false"></right>
  1954.         <right name="command.setweather" access="false"></right>
  1955.         <right name="command.blendweather" access="false"></right>
  1956.         <right name="command.setblurlevel" access="false"></right>
  1957.         <right name="command.setwaveheight" access="false"></right>
  1958.         <right name="command.setskygradient" access="false"></right>
  1959.         <right name="command.setgamespeed" access="false"></right>
  1960.         <right name="command.setgravity" access="false"></right>
  1961.         <right name="command.settime" access="false"></right>
  1962.         <right name="function.shutdown" access="false"></right>
  1963.         <right name="command.setfpslimit" access="false"></right>
  1964.         <right name="command.ban" access="false"></right>
  1965.         <right name="command.unban" access="false"></right>
  1966.         <right name="command.banip" access="false"></right>
  1967.         <right name="command.unbanip" access="false"></right>
  1968.         <right name="command.banserial" access="false"></right>
  1969.         <right name="command.unbanserial" access="false"></right>
  1970.         <right name="command.listbans" access="false"></right>
  1971.         <right name="general.tactics_players" access="false"></right>
  1972.         <right name="general.tactics_maps" access="false"></right>
  1973.         <right name="general.tactics_configs" access="false"></right>
  1974.         <right name="general.tactics_handling" access="false"></right>
  1975.         <right name="general.tactics_teams" access="false"></right>
  1976.         <right name="general.tactics_adminchat" access="false"></right>
  1977.         <right name="general.tactics_shooting" access="false"></right>
  1978.         <right name="general.tactics_openpanel" access="false"></right>
  1979.         <right name="general.tactics_weather" access="false"></right>
  1980.         <right name="general.tactics_vehicles" access="false"></right>
  1981.         <right name="general.tactics_weapons" access="false"></right>
  1982.         <right name="general.tactics_anticheat" access="false"></right>
  1983.         <right name="general.tactics_settings" access="false"></right>
  1984.     </acl>
  1985.     <acl name="DevACL">
  1986.         <right name="resource.performancebrowser.http" access="true"></right>
  1987.         <right name="resource.ajax.http" access="true"></right>
  1988.         <right name="general.adminpanel" access="false"></right>
  1989.         <right name="general.tab_players" access="false"></right>
  1990.         <right name="general.tab_resources" access="false"></right>
  1991.         <right name="general.tab_maps" access="false"></right>
  1992.         <right name="general.tab_server" access="false"></right>
  1993.         <right name="general.tab_bans" access="false"></right>
  1994.         <right name="general.tab_adminchat" access="false"></right>
  1995.         <right name="command.kick" access="false"></right>
  1996.         <right name="command.freeze" access="false"></right>
  1997.         <right name="command.mute" access="false"></right>
  1998.         <right name="command.setnick" access="false"></right>
  1999.         <right name="command.shout" access="false"></right>
  2000.         <right name="command.spectate" access="false"></right>
  2001.         <right name="command.slap" access="false"></right>
  2002.         <right name="command.setgroup" access="false"></right>
  2003.         <right name="command.sethealth" access="false"></right>
  2004.         <right name="command.setarmour" access="false"></right>
  2005.         <right name="command.setmoney" access="false"></right>
  2006.         <right name="command.setskin" access="false"></right>
  2007.         <right name="command.setteam" access="false"></right>
  2008.         <right name="command.giveweapon" access="false"></right>
  2009.         <right name="command.setstat" access="false"></right>
  2010.         <right name="command.jetpack" access="false"></right>
  2011.         <right name="command.warp" access="false"></right>
  2012.         <right name="command.setdimension" access="false"></right>
  2013.         <right name="command.setinterior" access="false"></right>
  2014.         <right name="command.givevehicle" access="false"></right>
  2015.         <right name="command.repair" access="false"></right>
  2016.         <right name="command.blow" access="false"></right>
  2017.         <right name="command.destroy" access="false"></right>
  2018.         <right name="command.customize" access="false"></right>
  2019.         <right name="command.setcolor" access="false"></right>
  2020.         <right name="command.setpaintjob" access="false"></right>
  2021.         <right name="command.listmessages" access="false"></right>
  2022.         <right name="command.readmessage" access="false"></right>
  2023.         <right name="command.listresources" access="false"></right>
  2024.         <right name="command.start" access="false"></right>
  2025.         <right name="command.stop" access="false"></right>
  2026.         <right name="command.stopall" access="false"></right>
  2027.         <right name="command.restart" access="false"></right>
  2028.         <right name="command.execute" access="false"></right>
  2029.         <right name="command.delete" access="false"></right>
  2030.         <right name="command.setpassword" access="false"></right>
  2031.         <right name="command.setwelcome" access="false"></right>
  2032.         <right name="command.setgame" access="false"></right>
  2033.         <right name="command.setmap" access="false"></right>
  2034.         <right name="command.setweather" access="false"></right>
  2035.         <right name="command.blendweather" access="false"></right>
  2036.         <right name="command.setblurlevel" access="false"></right>
  2037.         <right name="command.setwaveheight" access="false"></right>
  2038.         <right name="command.setskygradient" access="false"></right>
  2039.         <right name="command.setgamespeed" access="false"></right>
  2040.         <right name="command.setgravity" access="false"></right>
  2041.         <right name="command.settime" access="false"></right>
  2042.         <right name="function.shutdown" access="false"></right>
  2043.         <right name="command.setfpslimit" access="false"></right>
  2044.         <right name="command.ban" access="false"></right>
  2045.         <right name="command.unban" access="false"></right>
  2046.         <right name="command.banip" access="false"></right>
  2047.         <right name="command.unbanip" access="false"></right>
  2048.         <right name="command.banserial" access="false"></right>
  2049.         <right name="command.unbanserial" access="false"></right>
  2050.         <right name="command.listbans" access="false"></right>
  2051.         <right name="general.tactics_players" access="false"></right>
  2052.         <right name="general.tactics_maps" access="false"></right>
  2053.         <right name="general.tactics_configs" access="false"></right>
  2054.         <right name="general.tactics_handling" access="false"></right>
  2055.         <right name="general.tactics_teams" access="false"></right>
  2056.         <right name="general.tactics_adminchat" access="false"></right>
  2057.         <right name="general.tactics_shooting" access="false"></right>
  2058.         <right name="general.tactics_openpanel" access="false"></right>
  2059.         <right name="general.tactics_weather" access="false"></right>
  2060.         <right name="general.tactics_vehicles" access="false"></right>
  2061.         <right name="general.tactics_weapons" access="false"></right>
  2062.         <right name="general.tactics_anticheat" access="false"></right>
  2063.         <right name="general.tactics_settings" access="false"></right>
  2064.     </acl>
  2065.     <acl name="autoACL_tactics">
  2066.         <right name="function.restartResource" access="false" who="" pending="true" date=""></right>
  2067.         <right name="function.startResource" access="false" who="" pending="true" date=""></right>
  2068.         <right name="function.stopResource" access="false" who="" pending="true" date=""></right>
  2069.         <right name="general.ModifyOtherObjects" access="false" who="" pending="true" date=""></right>
  2070.         <right name="function.callRemote" access="false" who="" pending="true" date=""></right>
  2071.         <right name="function.getClientIP" access="false" who="" pending="true" date=""></right>
  2072.         <right name="function.kickPlayer" access="false" who="" pending="true" date=""></right>
  2073.         <right name="function.redirectPlayer" access="false" who="" pending="true" date=""></right>
  2074.     </acl>
  2075.     <acl name="Tactics">
  2076.         <right name="function.callRemote" access="true"></right>
  2077.         <right name="function.getClientIP" access="true"></right>
  2078.         <right name="function.kickPlayer" access="true"></right>
  2079.         <right name="function.redirectPlayer" access="true"></right>
  2080.         <right name="function.restartResource" access="true"></right>
  2081.         <right name="function.startResource" access="true"></right>
  2082.         <right name="function.stopResource" access="true"></right>
  2083.         <right name="general.ModifyOtherObjects" access="true"></right>
  2084.         <right name="general.tactics_players" access="true"></right>
  2085.         <right name="general.tactics_maps" access="true"></right>
  2086.         <right name="general.tactics_configs" access="true"></right>
  2087.         <right name="general.tactics_handling" access="true"></right>
  2088.         <right name="general.tactics_teams" access="true"></right>
  2089.         <right name="general.tactics_adminchat" access="true"></right>
  2090.         <right name="general.tactics_shooting" access="true"></right>
  2091.         <right name="general.tactics_openpanel" access="true"></right>
  2092.         <right name="general.tactics_weather" access="true"></right>
  2093.         <right name="general.tactics_vehicles" access="true"></right>
  2094.         <right name="general.tactics_weapons" access="true"></right>
  2095.         <right name="general.tactics_anticheat" access="true"></right>
  2096.         <right name="general.tactics_settings" access="true"></right>
  2097.         <right name="general.adminpanel" access="false"></right>
  2098.         <right name="general.tab_players" access="false"></right>
  2099.         <right name="general.tab_resources" access="false"></right>
  2100.         <right name="general.tab_maps" access="false"></right>
  2101.         <right name="general.tab_server" access="false"></right>
  2102.         <right name="general.tab_bans" access="false"></right>
  2103.         <right name="general.tab_adminchat" access="false"></right>
  2104.         <right name="command.kick" access="false"></right>
  2105.         <right name="command.freeze" access="false"></right>
  2106.         <right name="command.mute" access="false"></right>
  2107.         <right name="command.setnick" access="false"></right>
  2108.         <right name="command.shout" access="false"></right>
  2109.         <right name="command.spectate" access="false"></right>
  2110.         <right name="command.slap" access="false"></right>
  2111.         <right name="command.setgroup" access="false"></right>
  2112.         <right name="command.sethealth" access="false"></right>
  2113.         <right name="command.setarmour" access="false"></right>
  2114.         <right name="command.setmoney" access="false"></right>
  2115.         <right name="command.setskin" access="false"></right>
  2116.         <right name="command.setteam" access="false"></right>
  2117.         <right name="command.giveweapon" access="false"></right>
  2118.         <right name="command.setstat" access="false"></right>
  2119.         <right name="command.jetpack" access="false"></right>
  2120.         <right name="command.warp" access="false"></right>
  2121.         <right name="command.setdimension" access="false"></right>
  2122.         <right name="command.setinterior" access="false"></right>
  2123.         <right name="command.givevehicle" access="false"></right>
  2124.         <right name="command.repair" access="false"></right>
  2125.         <right name="command.blow" access="false"></right>
  2126.         <right name="command.destroy" access="false"></right>
  2127.         <right name="command.customize" access="false"></right>
  2128.         <right name="command.setcolor" access="false"></right>
  2129.         <right name="command.setpaintjob" access="false"></right>
  2130.         <right name="command.listmessages" access="false"></right>
  2131.         <right name="command.readmessage" access="false"></right>
  2132.         <right name="command.listresources" access="false"></right>
  2133.         <right name="command.start" access="false"></right>
  2134.         <right name="command.stop" access="false"></right>
  2135.         <right name="command.stopall" access="false"></right>
  2136.         <right name="command.restart" access="false"></right>
  2137.         <right name="command.execute" access="false"></right>
  2138.         <right name="command.delete" access="false"></right>
  2139.         <right name="command.setpassword" access="false"></right>
  2140.         <right name="command.setwelcome" access="false"></right>
  2141.         <right name="command.setgame" access="false"></right>
  2142.         <right name="command.setmap" access="false"></right>
  2143.         <right name="command.setweather" access="false"></right>
  2144.         <right name="command.blendweather" access="false"></right>
  2145.         <right name="command.setblurlevel" access="false"></right>
  2146.         <right name="command.setwaveheight" access="false"></right>
  2147.         <right name="command.setskygradient" access="false"></right>
  2148.         <right name="command.setgamespeed" access="false"></right>
  2149.         <right name="command.setgravity" access="false"></right>
  2150.         <right name="command.settime" access="false"></right>
  2151.         <right name="function.shutdown" access="false"></right>
  2152.         <right name="command.setfpslimit" access="false"></right>
  2153.         <right name="command.ban" access="false"></right>
  2154.         <right name="command.unban" access="false"></right>
  2155.         <right name="command.banip" access="false"></right>
  2156.         <right name="command.unbanip" access="false"></right>
  2157.         <right name="command.banserial" access="false"></right>
  2158.         <right name="command.unbanserial" access="false"></right>
  2159.         <right name="command.listbans" access="false"></right>
  2160.     </acl>
  2161.     <acl name="autoACL_acpanel">
  2162.         <right name="function.setServerConfigSetting" access="true" who="ALBANDER(basemode)" pending="false" date="2013-01-10 00:38:28"></right>
  2163.         <right name="function.kickPlayer" access="true" who="ALBANDER(basemode)" pending="false" date="2013-01-10 00:38:28"></right>
  2164.     </acl>
  2165. </acl>
  2166. [/lua]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement