# ~ ! S [ T ] A R . Posted June 23, 2018 Share Posted June 23, 2018 كيف اخلي لو صكيت واحد ميوت م يقدر يفكة لنفسة ارجو حل 1 Link to comment
Adham Posted June 23, 2018 Share Posted June 23, 2018 تبي رتبة معينه م تقدر تفك الميوت قصدك هيك؟ Link to comment
+Source|> Posted June 23, 2018 Share Posted June 23, 2018 8 hours ago, #Mr.Kams said: كيف اخلي لو صكيت واحد ميوت م يقدر يفكة لنفسة ارجو حل سوي فك الميوت يكون بالسيرييال او بالرتب 1 Link to comment
Rakan# Posted June 23, 2018 Share Posted June 23, 2018 55 minutes ago, +Source|> said: سوي فك الميوت يكون بالسيرييال او بالرتب مايحتاج . فقط تحقق اذا كان اللي يبي يفك ميوته هو نفسه اللاعب يقوله ماتقدر ليه سيريالات وتعب 1 Link to comment
#Major . Posted June 23, 2018 Share Posted June 23, 2018 57 minutes ago, Rakan# said: مايحتاج . فقط تحقق اذا كان اللي يبي يفك ميوته هو نفسه اللاعب يقوله ماتقدر ليه سيريالات وتعب if ( source ~= player) then Link to comment
# ~ ! S [ T ] A R . Posted June 23, 2018 Author Share Posted June 23, 2018 21 minutes ago, *RayaN-Alharbi. said: if ( source ~= player) then ابية زي الوزارة م حد يقدر يفك الميوت لنفسة لكن الاعبين تقدر تفكة ؟ 2 hours ago, +Source|> said: سوي فك الميوت يكون بالسيرييال او بالرتب ابية زي الوزارة م حد يقدر يفك الميوت لنفسة لكن الاعبين تقدر تفكة م ابية بالسريال Link to comment
#Major . Posted June 23, 2018 Share Posted June 23, 2018 2 hours ago, #Mr.Kams said: ابية زي الوزارة م حد يقدر يفك الميوت لنفسة لكن الاعبين تقدر تفكة هات اكواد لوحة الادمن عند حدث فك الميوت Link to comment
TOUNSI |, السعأدة Posted June 23, 2018 Share Posted June 23, 2018 ثواني اكتب لك اكواد local UnmuteTOUNSI = { -- سريالات المسموحة بفك الميوت ["123456789"] = true, -- سريالك ["123456789"] = true, -- سريال اخوك ["123456789"] = true, -- سريال اخوك } elseif ( source == aTab1.Mute ) then if account == account1 then if player == localPlayer and not ( UnmuteTOUNSI[getPlayerSerial ( )] ) then outputChatBox('يمنع استخدام الميوت لنفسك',255,0,0) return end end اي مساعده ارجع كلمني Link to comment
#Major . Posted June 23, 2018 Share Posted June 23, 2018 2 minutes ago, MR.TOUNSI said: ثواني اكتب لك اكواد local UnmuteTOUNSI = { -- سريالات المسموحة بفك الميوت ["123456789"] = true, -- سريالك ["123456789"] = true, -- سريال اخوك ["123456789"] = true, -- سريال اخوك } elseif ( source == aTab1.Mute ) then if account == account1 then if player == localPlayer and not ( UnmuteTOUNSI[getPlayerSerial ( )] ) then outputChatBox('يمنع استخدام الميوت لنفسك',255,0,0) return end end اي مساعده ارجع كلمني شيك ع خاصك + هو قال يبيه م يفك نفسه بس غيره يقدر Link to comment
TOUNSI |, السعأدة Posted June 23, 2018 Share Posted June 23, 2018 Just now, *RayaN-Alharbi. said: شيك ع خاصك + هو قال يبيه م يفك نفسه بس غيره يقدر يقدر يحط سرياله ع شن يفك ميوت لنفسه , لو مايحط سريله ميقدرش يفك الميوت للنفسه رديت عليك ع خاص Link to comment
# ~ ! S [ T ] A R . Posted June 23, 2018 Author Share Posted June 23, 2018 1 hour ago, MR.TOUNSI said: ثواني اكتب لك اكواد local UnmuteTOUNSI = { -- سريالات المسموحة بفك الميوت ["123456789"] = true, -- سريالك ["123456789"] = true, -- سريال اخوك ["123456789"] = true, -- سريال اخوك } elseif ( source == aTab1.Mute ) then if account == account1 then if player == localPlayer and not ( UnmuteTOUNSI[getPlayerSerial ( )] ) then outputChatBox('يمنع استخدام الميوت لنفسك',255,0,0) return end end اي مساعده ارجع كلمني انا ابي م يقدر الاعب يفك ميوتة لنفسة لكن الباقي يقدر .. Link to comment
TOUNSI |, السعأدة Posted June 23, 2018 Share Posted June 23, 2018 2 minutes ago, #Mr.Kams said: انا ابي م يقدر الاعب يفك ميوتة لنفسة لكن الباقي يقدر .. يخي فهمتك تبي حق الوزارة ؟ رسلت لك اكواد اسمع اطرح اكواد لوحة ملف admin_main Link to comment
# ~ ! S [ T ] A R . Posted June 23, 2018 Author Share Posted June 23, 2018 3 minutes ago, MR.TOUNSI said: يخي فهمتك تبي حق الوزارة ؟ رسلت لك اكواد اسمع اطرح اكواد لوحة ملف admin_main يب اكواد اللوحة --[[********************************** * * Multi Theft Auto - Admin Panel * * gui\admin_main.lua * * Original File by lil_Toady * **************************************]] aAdminForm = nil aLastCheck = 0 aCurrentVehicle = 429 aCurrentWeapon = 30 aCurrentAmmo = 90 aCurrentSlap = 20 aPlayers = {} aBans = {} aLastSync = 0 aResources = {} function aAdminMenu () if ( aAdminForm == nil ) then local x, y = guiGetScreenSize() aAdminForm = guiCreateWindow ( x / 2 - 310, y / 2 - 260, 620, 520, "", false ) guiWindowSetSizable ( aAdminForm, false ) guiSetText ( aAdminForm, "Admi PaneL".._version ) guiCreateLabel ( 0.75, 0.05, 0.45, 0.04, "Admin Panel by Mr_HeRo", true, aAdminForm ) aTabPanel = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm ) aTab1 = {} aTab1.Tab = guiCreateTab ( "Players", aTabPanel, "players" ) aTab1.Messages = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab ) aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end aTab1.Kick = guiCreateButton ( 0.71, 0.125, 0.13, 0.04, "Kick", true, aTab1.Tab, "kick" ) aTab1.Ban = guiCreateButton ( 0.85, 0.125, 0.13, 0.04, "Ban", true, aTab1.Tab, "ban" ) aTab1.Mute = guiCreateButton ( 0.71, 0.170, 0.13, 0.04, "Mute", true, aTab1.Tab, "mute" ) aTab1.Freeze = guiCreateButton ( 0.85, 0.170, 0.13, 0.04, "Freeze", true, aTab1.Tab, "freeze" ) aTab1.Spectate = guiCreateButton ( 0.71, 0.215, 0.13, 0.04, "Spectate", true, aTab1.Tab, "spectate" ) aTab1.Slap = guiCreateButton ( 0.85, 0.215, 0.13, 0.04, "Slap! "..aCurrentSlap.." _", true, aTab1.Tab, "slap" ) aTab1.SlapDropDown = guiCreateStaticImage ( 0.95, 0.215, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.SlapOptions = guiCreateGridList ( 0.85, 0.215, 0.13, 0.40, true, aTab1.Tab ) guiGridListSetSortingEnabled ( aTab1.SlapOptions, false ) guiGridListAddColumn( aTab1.SlapOptions, "", 0.85 ) guiSetVisible ( aTab1.SlapOptions, false ) for i = 0, 10 do guiGridListSetItemText ( aTab1.SlapOptions, guiGridListAddRow ( aTab1.SlapOptions ), 1, tostring ( i * 10 ), false, false ) end aTab1.Nick = guiCreateButton ( 0.71, 0.260, 0.13, 0.04, "Set Nick", true, aTab1.Tab ) aTab1.Shout = guiCreateButton ( 0.85, 0.260, 0.13, 0.04, "Shout!", true, aTab1.Tab, "shout" ) aTab1.Admin = guiCreateButton ( 0.71, 0.305, 0.27, 0.04, "Give admin rights", false, aTab1.Tab, "setgroup" ) guiCreateHeader ( 0.25, 0.08, 0.20, 0.04, "Player:", true, aTab1.Tab ) aTab1.Name = guiCreateLabel ( 0.26, 0.125, 0.30, 0.035, "Name: N/A", true, aTab1.Tab ) aTab1.IP = guiCreateLabel ( 0.26, 0.170, 0.30, 0.035, "IP: N/A", true, aTab1.Tab ) aTab1.Serial = guiCreateLabel ( 0.26, 0.215, 0.435, 0.035, "Serial: N/A", true, aTab1.Tab ) --aTab1.Username = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Username: N/A", true, aTab1.Tab ) aTab1.Version = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Version: N/A", true, aTab1.Tab ) aTab1.Accountname = guiCreateLabel ( 0.26, 0.275, 0.435, 0.035, "Account Name: N/A", true, aTab1.Tab ) aTab1.Groups = guiCreateLabel ( 0.26, 0.305, 0.435, 0.035, "Groups: N/A", true, aTab1.Tab ) aTab1.Flag = guiCreateStaticImage ( 0.40, 0.170, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab ) aTab1.CountryCode = guiCreateLabel ( 0.45, 0.170, 0.04, 0.035, "", true, aTab1.Tab ) guiCreateHeader ( 0.25, 0.350, 0.20, 0.04, "Game:", true, aTab1.Tab ) aTab1.Health = guiCreateLabel ( 0.26, 0.395, 0.20, 0.04, "Health: 0%", true, aTab1.Tab ) aTab1.Armour = guiCreateLabel ( 0.45, 0.395, 0.20, 0.04, "Armour: 0%", true, aTab1.Tab ) aTab1.Skin = guiCreateLabel ( 0.26, 0.440, 0.20, 0.04, "Skin: N/A", true, aTab1.Tab ) aTab1.Team = guiCreateLabel ( 0.45, 0.440, 0.20, 0.04, "Team: None", true, aTab1.Tab ) aTab1.Weapon = guiCreateLabel ( 0.26, 0.485, 0.35, 0.04, "Weapon: N/A", true, aTab1.Tab ) aTab1.Ping = guiCreateLabel ( 0.26, 0.530, 0.20, 0.04, "Ping: 0", true, aTab1.Tab ) aTab1.Money = guiCreateLabel ( 0.45, 0.530, 0.20, 0.04, "Money: 0", true, aTab1.Tab ) aTab1.Area = guiCreateLabel ( 0.26, 0.575, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab ) aTab1.PositionX = guiCreateLabel ( 0.26, 0.620, 0.30, 0.04, "X: 0", true, aTab1.Tab ) aTab1.PositionY = guiCreateLabel ( 0.26, 0.665, 0.30, 0.04, "Y: 0", true, aTab1.Tab ) aTab1.PositionZ = guiCreateLabel ( 0.26, 0.710, 0.30, 0.04, "Z: 0", true, aTab1.Tab ) aTab1.Dimension = guiCreateLabel ( 0.26, 0.755, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab ) aTab1.Interior = guiCreateLabel ( 0.45, 0.755, 0.20, 0.04, "Interior: 0", true, aTab1.Tab ) aTab1.SetHealth = guiCreateButton ( 0.71, 0.395, 0.13, 0.04, "Set Health", true, aTab1.Tab, "sethealth" ) aTab1.SetArmour = guiCreateButton ( 0.85, 0.395, 0.13, 0.04, "Set Armour", true, aTab1.Tab, "setarmour" ) aTab1.SetSkin = guiCreateButton ( 0.71, 0.440, 0.13, 0.04, "Set Skin", true, aTab1.Tab, "setskin" ) aTab1.SetTeam = guiCreateButton ( 0.85, 0.440, 0.13, 0.04, "Set Team", true, aTab1.Tab, "setteam" ) aTab1.SetDimension = guiCreateButton ( 0.71, 0.755, 0.13, 0.04, "Set Dimens.", true, aTab1.Tab, "setdimension" ) aTab1.SetInterior = guiCreateButton ( 0.85, 0.755, 0.13, 0.04, "Set Interior", true, aTab1.Tab, "setinterior" ) aTab1.GiveWeapon = guiCreateButton ( 0.71, 0.485, 0.27, 0.04, "Give: "..getWeaponNameFromID ( aCurrentWeapon ), true, aTab1.Tab, "giveweapon" ) aTab1.WeaponDropDown = guiCreateStaticImage ( 0.95, 0.485, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.WeaponOptions = guiCreateGridList ( 0.71, 0.485, 0.27, 0.48, true, aTab1.Tab ) guiGridListAddColumn( aTab1.WeaponOptions, "", 0.85 ) guiSetVisible ( aTab1.WeaponOptions, false ) for i = 1, 46 do if ( getWeaponNameFromID ( i ) ~= false ) then guiGridListSetItemText ( aTab1.WeaponOptions, guiGridListAddRow ( aTab1.WeaponOptions ), 1, getWeaponNameFromID ( i ), false, false ) end end aTab1.SetMoney = guiCreateButton ( 0.71, 0.530, 0.13, 0.04, "Set Money", true, aTab1.Tab, "setmoney" ) aTab1.SetStats = guiCreateButton ( 0.85, 0.530, 0.13, 0.04, "Set Stats", true, aTab1.Tab, "setstat" ) aTab1.JetPack = guiCreateButton ( 0.71, 0.575, 0.27, 0.04, "Give JetPack", true, aTab1.Tab, "jetpack" ) aTab1.Warp = guiCreateButton ( 0.71, 0.620, 0.27, 0.04, "Warp to player", true, aTab1.Tab, "warp" ) aTab1.WarpTo = guiCreateButton ( 0.71, 0.665, 0.27, 0.04, "Warp player to..", true, aTab1.Tab, "warp" ) guiCreateHeader ( 0.25, 0.805, 0.20, 0.04, "Vehicle:", true, aTab1.Tab ) aTab1.Vehicle = guiCreateLabel ( 0.26, 0.850, 0.35, 0.04, "Vehicle: N/A", true, aTab1.Tab ) aTab1.VehicleHealth = guiCreateLabel ( 0.26, 0.895, 0.25, 0.04, "Vehicle Health: 0%", true, aTab1.Tab ) aTab1.VehicleFix = guiCreateButton ( 0.71, 0.84, 0.13, 0.04, "Fix", true, aTab1.Tab, "repair" ) aTab1.VehicleDestroy = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" ) aTab1.VehicleBlow = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" ) aTab1.VehicleCustomize = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" ) aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), false, aTab1.Tab ) aTab1.GiveVehicle = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" ) aTab1.VehicleDropDown = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) local gx, gy = guiGetSize ( aTab1.GiveVehicle, false ) aTab1.VehicleOptions = guiCreateGridList ( 0, 0, gx, 200, false ) guiGridListAddColumn( aTab1.VehicleOptions, "", 0.85 ) guiSetAlpha ( aTab1.VehicleOptions, 0.80 ) guiSetVisible ( aTab1.VehicleOptions, false ) local vehicleNames = {} for i = 400, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert( vehicleNames, { model = i, name = getVehicleNameFromModel ( i ) } ) end end table.sort( vehicleNames, function(a, b) return a.name < b.name end ) for _,info in ipairs(vehicleNames) do local row = guiGridListAddRow ( aTab1.VehicleOptions ) guiGridListSetItemText ( aTab1.VehicleOptions, row, 1, info.name, false, false ) guiGridListSetItemData ( aTab1.VehicleOptions, row, 1, tostring ( info.model ) ) end aTab2 = {} aTab2.Tab = guiCreateTab ( "Resources", aTabPanel, "resources" ) aTab2.ManageACL = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "Manage ACL", true, aTab2.Tab ) guiSetEnabled(aTab2.ManageACL,false) aTab2.ResourceListSearch = guiCreateEdit ( 0.03, 0.05, 0.31, 0.04, "", true, aTab2.Tab ) guiCreateStaticImage ( 0.34, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab2.Tab ) aTab2.ResourceList = guiCreateGridList ( 0.03, 0.10, 0.35, 0.80, true, aTab2.Tab ) guiGridListAddColumn( aTab2.ResourceList, "Resource", 0.55 ) guiGridListAddColumn( aTab2.ResourceList, "", 0.05 ) guiGridListAddColumn( aTab2.ResourceList, "State", 0.35 ) aTab2.ResourceInclMaps = guiCreateCheckBox ( 0.03, 0.91, 0.15, 0.04, "Include Maps", false, true, aTab2.Tab ) aTab2.ResourceRefresh = guiCreateButton ( 0.20, 0.915, 0.18, 0.04, "Refresh list", true, aTab2.Tab, "listresources" ) aTab2.ResourceSettings = guiCreateButton ( 0.40, 0.05, 0.20, 0.04, "Settings", true, aTab2.Tab ) aTab2.ResourceStart = guiCreateButton ( 0.40, 0.10, 0.20, 0.04, "Start", true, aTab2.Tab, "start" ) aTab2.ResourceRestart = guiCreateButton ( 0.40, 0.15, 0.20, 0.04, "Restart", true, aTab2.Tab, "restart" ) aTab2.ResourceStop = guiCreateButton ( 0.40, 0.20, 0.20, 0.04, "Stop", true, aTab2.Tab, "stop" ) aTab2.ResourceFailture = guiCreateButton ( 0.63, 0.10, 0.25, 0.04, "Get Load Failture", true, aTab2.Tab ) guiSetVisible ( aTab2.ResourceFailture, false ) aModules = guiCreateTabPanel ( 0.40, 0.25, 0.57, 0.38, true, aTab2.Tab ) guiCreateLabel ( 0.40, 0.77, 0.20, 0.03, "Actions log:", true, aTab2.Tab ) aTab2.LogLine1 = guiCreateLabel ( 0.41, 0.81, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine2 = guiCreateLabel ( 0.41, 0.84, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine3 = guiCreateLabel ( 0.41, 0.87, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine4 = guiCreateLabel ( 0.41, 0.90, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine5 = guiCreateLabel ( 0.41, 0.93, 0.50, 0.03, "", true, aTab2.Tab ) guiCreateLabel ( 0.41, 0.65, 0.50, 0.04, "Execute Command:", true, aTab2.Tab ) aTab2.Command = guiCreateEdit ( 0.41, 0.70, 0.40, 0.055, "", false, aTab2.Tab ) aTab2.ExecuteClient = guiCreateButton ( 0.82, 0.70, 0.16, 0.035, "Client", false, aTab2.Tab, "execute" ) aTab2.ExecuteServer = guiCreateButton ( 0.82, 0.736, 0.16, 0.035, "Server", false, aTab2.Tab, "execute" ) aTab2.ExecuteAdvanced = guiCreateLabel ( 0.45, 0.71, 0.50, 0.04, "For advanced users only.", false, aTab2.Tab ) guiLabelSetColor ( aTab2.ExecuteAdvanced, 255, 0, 0 ) aLogLines = 1 createMapTab() aTab3 = {} aTab3.Tab = guiCreateTab ( "Server", aTabPanel, "server" ) aTab3.Server = guiCreateLabel ( 0.05, 0.05, 0.70, 0.05, "Server: Unknown", true, aTab3.Tab ) aTab3.Password = guiCreateLabel ( 0.05, 0.10, 0.40, 0.05, "Password: None", true, aTab3.Tab ) aTab3.GameType = guiCreateLabel ( 0.05, 0.15, 0.40, 0.05, "Game Type: None", true, aTab3.Tab ) aTab3.MapName = guiCreateLabel ( 0.05, 0.20, 0.40, 0.05, "Map Name: None", true, aTab3.Tab ) aTab3.Players = guiCreateLabel ( 0.05, 0.25, 0.20, 0.05, "Players: 0/0", true, aTab3.Tab ) aTab3.SetPassword = guiCreateButton ( 0.80, 0.05, 0.18, 0.04, "Set Password", false, aTab3.Tab, "setpassword" ) aTab3.ResetPassword = guiCreateButton ( 0.80, 0.10, 0.18, 0.04, "Reset Password", true, aTab3.Tab, "setpassword" ) aTab3.SetGameType = guiCreateButton ( 0.80, 0.15, 0.18, 0.04, "Set Game Type", true, aTab3.Tab, "setgame" ) aTab3.SetMapName = guiCreateButton ( 0.80, 0.20, 0.18, 0.04, "Set Map Name", true, aTab3.Tab, "setmap" ) aTab3.SetWelcome = guiCreateButton ( 0.80, 0.25, 0.18, 0.04, "Welcome Message", true, aTab3.Tab, "setwelcome" ) guiCreateStaticImage ( 0.05, 0.32, 0.50, 0.0025, "client\\images\\dot.png", true, aTab3.Tab ) aTab3.WeatherCurrent = guiCreateLabel ( 0.05, 0.35, 0.45, 0.05, "Current Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherDec = guiCreateButton ( 0.05, 0.40, 0.035, 0.04, "<", true, aTab3.Tab ) aTab3.Weather = guiCreateEdit ( 0.095, 0.40, 0.35, 0.04, getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherInc = guiCreateButton ( 0.45, 0.40, 0.035, 0.04, ">", true, aTab3.Tab ) guiEditSetReadOnly ( aTab3.Weather, true ) aTab3.WeatherSet = guiCreateButton ( 0.50, 0.40, 0.10, 0.04, "Set", true, aTab3.Tab, "setweather" ) aTab3.WeatherBlend = guiCreateButton ( 0.61, 0.40, 0.15, 0.04, "Set Blended", true, aTab3.Tab, "blendweather" ) local th, tm = getTime() aTab3.TimeCurrent = guiCreateLabel ( 0.05, 0.45, 0.25, 0.04, "Time: "..th..":"..tm, true, aTab3.Tab ) aTab3.TimeH = guiCreateEdit ( 0.35, 0.45, 0.055, 0.04, "12", true, aTab3.Tab ) aTab3.TimeM = guiCreateEdit ( 0.425, 0.45, 0.055, 0.04, "00", true, aTab3.Tab ) guiCreateLabel ( 0.415, 0.45, 0.05, 0.04, ":", true, aTab3.Tab ) guiEditSetMaxLength ( aTab3.TimeH, 2 ) guiEditSetMaxLength ( aTab3.TimeM, 2 ) aTab3.TimeSet = guiCreateButton ( 0.50, 0.45, 0.10, 0.04, "Set", true, aTab3.Tab, "settime" ) guiCreateLabel ( 0.63, 0.45, 0.12, 0.04, "( 0-23:0-59 )", true, aTab3.Tab ) aTab3.GravityCurrent = guiCreateLabel ( 0.05, 0.50, 0.28, 0.04, "Gravitation: "..string.sub ( getGravity(), 0, 6 ), true, aTab3.Tab ) aTab3.Gravity = guiCreateEdit ( 0.35, 0.50, 0.135, 0.04, "0.008", true, aTab3.Tab ) aTab3.GravitySet = guiCreateButton ( 0.50, 0.50, 0.10, 0.04, "Set", true, aTab3.Tab, "setgravity" ) aTab3.SpeedCurrent = guiCreateLabel ( 0.05, 0.55, 0.30, 0.04, "Game Speed: "..getGameSpeed(), true, aTab3.Tab ) aTab3.Speed = guiCreateEdit ( 0.35, 0.55, 0.135, 0.04, "1", true, aTab3.Tab ) aTab3.SpeedSet = guiCreateButton ( 0.50, 0.55, 0.10, 0.04, "Set", true, aTab3.Tab, "setgamespeed" ) guiCreateLabel ( 0.63, 0.55, 0.09, 0.04, "( 0-10 )", true, aTab3.Tab ) aTab3.WavesCurrent = guiCreateLabel ( 0.05, 0.60, 0.25, 0.04, "Wave Height: "..getWaveHeight(), true, aTab3.Tab ) aTab3.Waves = guiCreateEdit ( 0.35, 0.60, 0.135, 0.04, "0", true, aTab3.Tab ) aTab3.WavesSet = guiCreateButton ( 0.50, 0.60, 0.10, 0.04, "Set", true, aTab3.Tab, "setwaveheight" ) guiCreateLabel ( 0.63, 0.60, 0.09, 0.04, "( 0-100 )", true, aTab3.Tab ) aTab4 = {} aTab4.Tab = guiCreateTab ( "Bans", aTabPanel, "bans" ) aTab4.BansList = guiCreateGridList ( 0.03, 0.05, 0.80, 0.87, true, aTab4.Tab ) guiGridListAddColumn( aTab4.BansList, "Name", 0.22 ) guiGridListAddColumn( aTab4.BansList, "IP", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Serial", 0.22 ) guiGridListAddColumn( aTab4.BansList, "By", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Date", 0.17 ) guiGridListAddColumn( aTab4.BansList, "Time", 0.13 ) guiGridListAddColumn( aTab4.BansList, "Reason", 0.92 ) guiGridListSetSortingEnabled( aTab4.BansList, false ) aTab4.Unban = guiCreateButton ( 0.85, 0.20, 0.13, 0.04, "Unban", true, aTab4.Tab, "unban" ) aTab4.UnbanIP = guiCreateButton ( 0.85, 0.25, 0.13, 0.04, "Unban IP", true, aTab4.Tab, "unbanip" ) aTab4.UnbanSerial = guiCreateButton ( 0.85, 0.30, 0.13, 0.04, "Unban Serial", true, aTab4.Tab, "unbanserial" ) aTab4.BanIP = guiCreateButton ( 0.85, 0.40, 0.13, 0.04, "Ban IP", true, aTab4.Tab, "banip" ) aTab4.BanSerial = guiCreateButton ( 0.85, 0.45, 0.13, 0.04, "Ban Serial", true, aTab4.Tab, "banserial" ) aTab4.BansRefresh = guiCreateButton ( 0.85, 0.85, 0.13, 0.04, "Refresh", true, aTab4.Tab, "listbans" ) aTab4.BansTotal = guiCreateLabel ( 0.20, 0.94, 0.31, 0.04, "Showing 0 / 0 bans", true, aTab4.Tab ) aTab4.BansMore = guiCreateButton ( 0.50, 0.94, 0.13, 0.04, "Get more...", true, aTab4.Tab, "listbans" ) aTab5 = {} aTab5.Tab = guiCreateTab ( "Admin Chat", aTabPanel, "adminchat" ) aTab5.AdminChat = guiCreateMemo ( 0.03, 0.05, 0.75, 0.85, "", true, aTab5.Tab ) guiSetProperty ( aTab5.AdminChat, "ReadOnly", "true" ) aTab5.AdminPlayers = guiCreateGridList ( 0.79, 0.05, 0.18, 0.80, true, aTab5.Tab ) guiGridListAddColumn ( aTab5.AdminPlayers, "Admins", 0.90 ) aTab5.AdminChatSound = guiCreateCheckBox ( 0.79, 0.86, 0.18, 0.04, "Play Sound", true, true, aTab5.Tab ) aTab5.AdminText = guiCreateEdit ( 0.03, 0.92, 0.80, 0.06, "", true, aTab5.Tab ) aTab5.AdminSay = guiCreateButton ( 0.85, 0.92, 0.08, 0.06, "Say", true, aTab5.Tab ) aTab5.AdminChatHelp = guiCreateButton ( 0.94, 0.92, 0.03, 0.06, "?", true, aTab5.Tab ) aTab6 = {} aTab6.Tab = guiCreateTab ( "Options", aTabPanel ) guiCreateHeader ( 0.03, 0.05, 0.10, 0.05, "Main:", true, aTab6.Tab ) aTab6.OutputPlayer = guiCreateCheckBox ( 0.05, 0.10, 0.47, 0.04, "Output player information to console on select", false, true, aTab6.Tab ) guiCreateLabel ( 0.08, 0.15, 0.40, 0.04, "This might be useful to copy player data", true, aTab6.Tab ) aTab6.AdminChatOutput = guiCreateCheckBox ( 0.05, 0.20, 0.47, 0.04, "Output admin messages to chat box", false, true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.30, 0.47, 0.04, "Appearance:", true, aTab6.Tab ) guiCreateHeader ( 0.63, 0.05, 0.10, 0.05, "Account:", true, aTab6.Tab ) aTab6.AutoLogin = guiCreateCheckBox ( 0.65, 0.10, 0.47, 0.04, "Auto-login by serial", false, true, aTab6.Tab ) guiSetVisible ( aTab6.AutoLogin, false ) -- Not used guiCreateHeader ( 0.63, 0.15, 0.25, 0.05, "Change Password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.20, 0.15, 0.05, "Old password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.25, 0.15, 0.05, "New password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.30, 0.15, 0.05, "Confirm:", true, aTab6.Tab ) aTab6.PasswordOld = guiCreateEdit ( 0.80, 0.20, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordNew = guiCreateEdit ( 0.80, 0.25, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordConfirm = guiCreateEdit ( 0.80, 0.30, 0.15, 0.045, "", true, aTab6.Tab ) guiEditSetMasked ( aTab6.PasswordOld, true ) guiEditSetMasked ( aTab6.PasswordNew, true ) guiEditSetMasked ( aTab6.PasswordConfirm, true ) aTab6.PasswordChange = guiCreateButton ( 0.85, 0.35, 0.10, 0.04, "Accept", true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.65, 0.20, 0.055, "Performance:", true, aTab6.Tab ) guiCreateStaticImage ( 0.03, 0.69, 0.94, 0.0025, "client\\images\\dot.png", true, aTab6.Tab ) guiCreateLabel ( 0.05, 0.71, 0.20, 0.055, "Performance priority:", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.76, 0.10, 0.05, "Memory", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.81, 0.10, 0.05, "Auto", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.86, 0.10, 0.05, "Speed", true, aTab6.Tab ) aTab6.PerformanceRAM = guiCreateRadioButton ( 0.07, 0.75, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceAuto = guiCreateRadioButton ( 0.07, 0.80, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceCPU = guiCreateRadioButton ( 0.07, 0.85, 0.05, 0.055, "", true, aTab6.Tab ) if ( aGetSetting ( "performance" ) == "RAM" ) then guiRadioButtonSetSelected ( aTab6.PerformanceRAM, true ) elseif ( aGetSetting ( "performance" ) == "CPU" ) then guiRadioButtonSetSelected ( aTab6.PerformanceCPU, true ) else guiRadioButtonSetSelected ( aTab6.PerformanceAuto, true ) end aTab6.PerformanceAdvanced = guiCreateButton ( 0.05, 0.91, 0.11, 0.04, "Advanced", true, aTab6.Tab ) aPerformance() guiCreateLabel ( 0.70, 0.90, 0.19, 0.055, "Refresh Delay(MS):", true, aTab6.Tab ) aTab6.RefreshDelay = guiCreateEdit ( 0.89, 0.90, 0.08, 0.045, "50", true, aTab6.Tab ) if ( aGetSetting ( "outputPlayer" ) ) then guiCheckBoxSetSelected ( aTab6.OutputPlayer, true ) end if ( aGetSetting ( "adminChatOutput" ) ) then guiCheckBoxSetSelected ( aTab6.AdminChatOutput, true ) end if ( aGetSetting ( "adminChatSound" ) ) then guiCheckBoxSetSelected ( aTab5.AdminChatSound, true ) end --if ( tonumber ( aGetSetting ( "adminChatLines" ) ) ) then guiSetText ( aTab6.AdminChatLines, aGetSetting ( "adminChatLines" ) ) end if ( ( tonumber ( aGetSetting ( "refreshDelay" ) ) ) and ( tonumber ( aGetSetting ( "refreshDelay" ) ) >= 50 ) ) then guiSetText ( aTab6.RefreshDelay, aGetSetting ( "refreshDelay" ) ) end addEventHandler ( "aClientLog", _root, aClientLog ) addEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) addEventHandler ( "aClientSync", _root, aClientSync ) addEventHandler ( "aMessage", _root, aMessage ) addEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) addEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) addEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) addEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) addEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) addEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) addEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) addEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) addEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) addEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) addEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) addEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) addEventHandler ( "onClientRender", _root, aClientRender ) addEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) addEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) addEventHandler ( "onClientGUITabSwitched", aTabPanel, aClientGUITabSwitched ) bindKey ( "arrow_d", "down", aPlayerListScroll, 1 ) bindKey ( "arrow_u", "down", aPlayerListScroll, -1 ) triggerServerEvent ( "aSync", getLocalPlayer(), "players" ) if ( hasPermissionTo ( "command.listmessages" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "messages" ) end triggerServerEvent ( "aSync", getLocalPlayer(), "server" ) triggerEvent ( "onAdminInitialize", resourceRoot ) showCursor ( true ) if getVersion().sortable and getVersion().sortable < "1.0.4-9.02436" then guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" ) guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" ) end end guiSetVisible ( aAdminForm, true ) showCursor ( true ) -- If the camera target was on another player, select him in the player list local element = getCameraTarget() if element and getElementType(element)=="vehicle" then element = getVehicleController(element) end if element and getElementType(element)=="player" and element ~= getLocalPlayer() then for row=0,guiGridListGetRowCount( aTab1.PlayerList )-1 do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, row, 1 ) == getPlayerName ( element ) ) then guiGridListSetSelectedItem ( aTab1.PlayerList, row, 1 ) break end end end end function aAdminMenuClose ( destroy ) if ( destroy ) then aMainSaveSettings () aPlayers = {} aWeathers = {} aBans = {} removeEventHandler ( "aClientLog", _root, aClientLog ) removeEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) removeEventHandler ( "aClientSync", _root, aClientSync ) removeEventHandler ( "aMessage", _root, aMessage ) removeEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) removeEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) removeEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) removeEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) removeEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) removeEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) removeEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) removeEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) removeEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) removeEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) removeEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) removeEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) removeEventHandler ( "onClientRender", _root, aClientRender ) removeEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) removeEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) unbindKey ( "arrow_d", "down", aPlayerListScroll ) unbindKey ( "arrow_u", "down", aPlayerListScroll ) destroyElement ( aTab1.VehicleOptions ) destroyElement ( aAdminForm ) aAdminForm = nil else guiSetVisible ( aTab1.VehicleOptions, false ) guiSetVisible ( aAdminForm, false ) end guiSetInputEnabled ( false ) showCursor ( false ) end function aMainSaveSettings () aSetSetting ( "outputPlayer", guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) aSetSetting ( "adminChatOutput", guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) aSetSetting ( "adminChatSound", guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) --aSetSetting ( "adminChatLines", guiGetText ( aTab6.AdminChatLines ) ) aSetSetting ( "refreshDelay", guiGetText ( aTab6.RefreshDelay ) ) aSetSetting ( "currentWeapon", aCurrentWeapon ) aSetSetting ( "currentAmmo", aCurrentAmmo ) aSetSetting ( "currentVehicle", aCurrentVehicle ) aSetSetting ( "currentSlap", aCurrentSlap ) if ( guiRadioButtonGetSelected ( aTab6.PerformanceRAM ) ) then aSetSetting ( "performance", "RAM" ) elseif ( guiRadioButtonGetSelected ( aTab6.PerformanceCPU ) ) then aSetSetting ( "performance", "CPU" ) else aSetSetting ( "performance", "Auto" ) end end function aAdminRefresh () if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then local player = getPlayerFromNick ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) ) if ( player and aPlayers[player] ) then guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] ) guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) ) guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) ) --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) ) guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) ) guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) ) guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) ) if ( isPlayerDead ( player ) ) then guiSetText ( aTab1.Health, "Health: Dead" ) else guiSetText ( aTab1.Health, "Health: "..math.ceil ( getElementHealth ( player ) ).."%" ) end guiSetText ( aTab1.Armour, "Armour: "..math.ceil ( getPedArmor ( player ) ).."%" ) guiSetText ( aTab1.Skin, "Skin: "..iif ( getElementModel ( player ), getElementModel ( player ), "N/A" ) ) if ( getPlayerTeam ( player ) ) then guiSetText ( aTab1.Team, "Team: "..getTeamName ( getPlayerTeam ( player ) ) ) else guiSetText ( aTab1.Team, "Team: None" ) end guiSetText ( aTab1.Ping, "Ping: "..getPlayerPing ( player ) ) guiSetText ( aTab1.Money, "Money: "..( aPlayers[player]["money"] or 0 ) ) if ( getElementDimension ( player ) ) then guiSetText ( aTab1.Dimension, "Dimension: "..getElementDimension ( player ) ) end if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) ) if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end local x, y, z = getElementPosition ( player ) 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 )..")" ) ) guiSetText ( aTab1.PositionX, "X: "..x ) guiSetText ( aTab1.PositionY, "Y: "..y ) guiSetText ( aTab1.PositionZ, "Z: "..z ) local vehicle = getPedOccupiedVehicle ( player ) if ( vehicle ) then guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: "..math.ceil ( getElementHealth ( vehicle ) ).."%" ) else guiSetText ( aTab1.Vehicle, "Vehicle: Foot" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) end if ( aPlayers[player]["admin"] ) then guiSetText(aTab1.Admin, "Revoke admin rights") else guiSetText(aTab1.Admin, "Give admin rights") end return player end end end function aClientSync ( type, table ) if ( type == "player" and aPlayers[source] ) then for type, data in pairs ( table ) do aPlayers[source][type] = data end elseif ( type == "players" ) then aPlayers = table elseif ( type == "resources" ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) aResources = table for id, resource in ipairs(table) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end elseif ( type == "loggedout" ) then aAdminDestroy() elseif ( type == "admins" ) then --if ( guiGridListGetRowCount ( aTab5.AdminPlayers ) > 0 ) then guiGridListClear ( aTab5.AdminPlayers ) end for id, player in ipairs(getElementsByType("player")) do if ( table[player]["admin"] == false ) and ( player == getLocalPlayer() ) then aAdminDestroy() break elseif aPlayers[player] then aPlayers[player]["groups"] = table[player]["groups"] if ( table[player]["chat"] ) then local id = 0 local exists = false while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( player ) ) then exists = true end id = id + 1 end if ( exists == false ) then guiGridListSetItemPlayerName ( aTab5.AdminPlayers, guiGridListAddRow ( aTab5.AdminPlayers ), 1, getPlayerName ( player ), false, false ) end end end end elseif ( type == "server" ) then guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) elseif ( type == "bansdirty" ) then g_GotLatestBansList = false if aAdminForm and guiGetVisible ( aAdminForm ) and guiGetSelectedTab( aTabPanel ) == aTab4.Tab then -- Request full bans list if bans tab is displayed when 'bansdirty' is received triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end elseif ( type == "bans" or type == "bansmore" ) then if type == "bans" then g_GotLatestBansList = true guiGridListClear ( aTab4.BansList ) aBans = {} aBans["Serial"] = {} aBans["IP"] = {} end local total = tonumber(table.total) or 0 local amount = guiGridListGetRowCount( aTab4.BansList ) + #table guiSetText( aTab4.BansTotal, "Showing " .. amount .. " / " .. total .. " bans" ) if g_GotLatestBansList then for i=1,#table do local ban = table if ban.serial then aBans["Serial"][ban.serial] = ban end if ban.ip then aBans["IP"][ban.ip] = ban end local time, date = "-", "-" if ban.seconds then local realTime = getRealTime( ban.seconds ) time = string.format("%02d:%02d", realTime.hour, realTime.minute ) date = string.format("%04d-%02d-%02d", realTime.year + 1900, realTime.month + 1, realTime.monthday ) end local reason = ban["reason"] and ban["reason"]~="nil" and ban["reason"] or "" local row = guiGridListAddRow ( aTab4.BansList ) guiGridListSetItemText ( aTab4.BansList, row, 1, ban["nick"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 2, ban.ip or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 3, ban.serial or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 4, ban["banner"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 5, date, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 6, time, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 7, reason, false, false ) end end elseif ( type == "messages" ) then local prev = tonumber ( string.sub ( guiGetText ( aTab1.Messages ), 1, 1 ) ) if ( prev < table["unread"] ) then playSoundFrontEnd ( 18 ) end guiSetText ( aTab1.Messages, table["unread"].."/"..table["total"].." unread messages" ) end end function aClientGUITabSwitched( selectedTab ) if getElementParent( selectedTab ) == aTabPanel then if selectedTab == aTab2.Tab then -- Handle initial update of resources list if guiGridListGetRowCount( aTab2.ResourceList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) end end elseif selectedTab == aTabMap.Tab then -- Handle initial update of map list if guiGridListGetRowCount( aTabMap.MapList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "getMaps_s", getLocalPlayer(), getLocalPlayer(), true ) end end elseif selectedTab == aTab4.Tab then if not g_GotLatestBansList then -- Request full bans list if bans tab is selected and current list is out of date triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end end end end function aMessage ( ) end function aClientResourceStart ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "running", false, false ) end id = id + 1 end end function aClientResourceStop ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "loaded", false, false ) end id = id + 1 end end function aClientPlayerJoin ( ip, username, accountname, serial, admin, country ) if ip == false and serial == false then -- Update country only if aPlayers[source] then aPlayers[source]["country"] = country end return end aPlayers[source] = {} aPlayers[source]["name"] = getPlayerName ( source ) aPlayers[source]["IP"] = ip aPlayers[source]["username"] = username or "N/A" aPlayers[source]["accountname"] = accountname or "N/A" aPlayers[source]["serial"] = serial aPlayers[source]["admin"] = admin aPlayers[source]["country"] = country local row = guiGridListAddRow ( aTab1.PlayerList ) guiGridListSetItemPlayerName ( aTab1.PlayerList, row, 1, getPlayerName ( source ), false, false ) if ( admin ) then local row = guiGridListAddRow ( aTab5.AdminPlayers ) guiGridListSetItemPlayerName ( aTab5.AdminPlayers, row, 1, getPlayerName ( source ), false, false ) end if ( aSpectator.PlayerList ) then local row = guiGridListAddRow ( aSpectator.PlayerList ) guiGridListSetItemPlayerName ( aSpectator.PlayerList, row, 1, getPlayerName ( source ), false, false ) end end function aClientPlayerQuit () local id = 0 while ( id <= guiGridListGetRowCount( aTab1.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab1.PlayerList, id ) end id = id + 1 end if ( aPlayers[source] and aPlayers[source]["admin"] ) then local id = 0 while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab5.AdminPlayers, id ) end id = id + 1 end end if ( aSpectator.PlayerList ) then local id = 0 while ( id <= guiGridListGetRowCount( aSpectator.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aSpectator.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aSpectator.PlayerList, id ) end id = id + 1 end end aPlayers[source] = nil end function aPlayerListScroll ( key, state, inc ) if ( not guiGetVisible ( aAdminForm ) ) then return end local max = guiGridListGetRowCount ( aTab1.PlayerList ) if ( max <= 0 ) then return end local current = guiGridListGetSelectedItem ( aTab1.PlayerList ) local next = current + inc max = max - 1 if ( current == -1 ) then guiGridListSetSelectedItem ( aTab1.PlayerList, 0, 1 ) elseif ( next > max ) then return elseif ( next < 0 ) then return else guiGridListSetSelectedItem ( aTab1.PlayerList, next, 1 ) end local oldsource = source source = aTab1.PlayerList; aClientClick ( "left" ) source = oldsource end function aClientPlayerChangeNick ( oldNick, newNick ) local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do if ( guiGridListGetItemPlayerName ( gridlist, row, 1 ) == oldNick ) then guiGridListSetItemPlayerName ( gridlist, row, 1, newNick, false, false ) end end end end function aClientLog ( text ) text = "#"..aLogLines..": "..text if ( guiGetText ( aTab2.LogLine1 ) == "" ) then guiSetText ( aTab2.LogLine1, text ) elseif ( guiGetText ( aTab2.LogLine2 ) == "" ) then guiSetText ( aTab2.LogLine2, text ) elseif ( guiGetText ( aTab2.LogLine3 ) == "" ) then guiSetText ( aTab2.LogLine3, text ) elseif ( guiGetText ( aTab2.LogLine4 ) == "" ) then guiSetText ( aTab2.LogLine4, text ) elseif ( guiGetText ( aTab2.LogLine5 ) == "" ) then guiSetText ( aTab2.LogLine5, text ) else guiSetText ( aTab2.LogLine1, guiGetText ( aTab2.LogLine2 ) ) guiSetText ( aTab2.LogLine2, guiGetText ( aTab2.LogLine3 ) ) guiSetText ( aTab2.LogLine3, guiGetText ( aTab2.LogLine4 ) ) guiSetText ( aTab2.LogLine4, guiGetText ( aTab2.LogLine5 ) ) guiSetText ( aTab2.LogLine5, text ) end aLogLines = aLogLines + 1 end function aClientAdminChat ( message ) guiSetText ( aTab5.AdminChat, guiGetText ( aTab5.AdminChat )..""..getPlayerName ( source )..": "..message ) guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( guiGetText ( aTab5.AdminChat ) ) ) ) if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= getLocalPlayer() ) ) then playSoundFrontEnd ( 13 ) end end function aSetCurrentAmmo ( ammo ) ammo = tonumber ( ammo ) if ( ( ammo ) and ( ammo > 0 ) and ( ammo < 10000 ) ) then aCurrentAmmo = ammo return end outputChatBox ( "Invalid ammo value", 255, 0, 0 ) end function aClientGUIAccepted ( element ) if ( element == aTab5.AdminText ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end end end function aClientGUIChanged () if ( source == aTab1.PlayerListSearch ) then guiGridListClear ( aTab1.PlayerList ) local text = guiGetText ( source ) if ( text == "" ) then for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end else for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( string.find ( string.upper ( getPlayerName ( player ) ), string.upper ( text ), 1, true ) ) then guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end end end elseif ( source == aTab2.ResourceListSearch ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) guiGridListClear ( aTab2.ResourceList ) local text = string.lower(guiGetText(source)) if ( text == "" ) then for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end else for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then if string.find(string.lower(resource.name), text, 1, true) then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end end end end end function aClientScroll ( element ) if ( source == aTab6.MouseSense ) then guiSetText ( aTab6.MouseSenseCur, "Cursor sensivity: ("..string.sub ( guiScrollBarGetScrollPosition ( source ) / 50, 0, 4 )..")" ) end end function aClientCursorMove ( rx, ry, x, y ) end function aClientMouseEnter ( element ) if ( getElementType ( source ) == "gui-button" ) then end end function aClientDoubleClick ( button ) if ( source == aTab1.WeaponOptions ) then if ( guiGridListGetSelectedItem ( aTab1.WeaponOptions ) ~= -1 ) then aCurrentWeapon = getWeaponIDFromName ( guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) ) local wep = guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) wep = string.gsub ( wep, "Combat Shotgun", "Combat SG" ) guiSetText ( aTab1.GiveWeapon, "Give: "..wep.." " ) end guiSetVisible ( aTab1.WeaponOptions, false ) elseif ( source == aTab1.VehicleOptions ) then local item = guiGridListGetSelectedItem ( aTab1.VehicleOptions ) if ( item ~= -1 ) then if ( guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ) ~= "" ) then aCurrentVehicle = tonumber ( guiGridListGetItemData ( aTab1.VehicleOptions, item, 1 ) ) guiSetText ( aTab1.GiveVehicle, "Give: "..guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ).." " ) end end guiSetVisible ( aTab1.VehicleOptions, false ) elseif ( source == aTab1.SlapOptions ) then if ( guiGridListGetSelectedItem ( aTab1.SlapOptions ) ~= -1 ) then aCurrentSlap = guiGridListGetItemText ( aTab1.SlapOptions, guiGridListGetSelectedItem ( aTab1.SlapOptions ), 1 ) guiSetText ( aTab1.Slap, "Slap! "..aCurrentSlap.." _" ) if ( aSpecSlap ) then guiSetText ( aSpecSlap, "Slap! "..aCurrentSlap.."hp" ) end end guiSetVisible ( aTab1.SlapOptions, false ) elseif ( source == aTab2.ResourceList ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) ) end end if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end function aClientClick ( button ) guiSetInputEnabled ( false ) if ( ( source == aTab1.WeaponOptions ) or ( source == aTab1.VehicleOptions ) or ( source == aTab1.SlapOptions ) ) then return else if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end if ( button == "left" ) then -- TAB 1, PLAYERS if ( getElementParent ( source ) == aTab1.Tab ) then if ( source == aTab1.Messages ) then aViewMessages() elseif ( source == aTab1.PlayerListSearch ) then guiSetInputEnabled ( true ) elseif ( source == aTab1.HideColorCodes ) then updateColorCodes() elseif ( source == aTab1.AnonAdmin ) then setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) ) elseif ( getElementType ( source ) == "gui-button" ) then if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown ) elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown ) elseif ( source == aTab1.Slap ) then guiBringToFront ( aTab1.SlapDropDown ) end if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) == -1 ) then aMessageBox ( "error", "No player selected!" ) else local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) local escname = string.gsub( name,"([\"])", "\\\"" ) local player = getPlayerFromNick ( name ) if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"kick\", $value )" ) elseif ( source == aTab1.Ban ) then aBanInputBox ( player ) elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "slap", aCurrentSlap ) 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 elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "freeze" ) elseif ( source == aTab1.Spectate ) then aSpectate ( player ) elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setnick\", $value )" ) elseif ( source == aTab1.Shout ) then aInputBox ( "Shout", "Enter text to be shown on player's screen", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"shout\", $value )" ) elseif ( source == aTab1.SetHealth ) then aInputBox ( "Set Health", "Enter the health value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"sethealth\", $value )" ) elseif ( source == aTab1.SetArmour ) then aInputBox ( "Set Armour", "Enter the armour value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setarmour\", $value )" ) elseif ( source == aTab1.SetTeam ) then aPlayerTeam ( player ) elseif ( source == aTab1.SetSkin ) then aPlayerSkin ( player ) elseif ( source == aTab1.SetInterior ) then aPlayerInterior ( player ) elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "jetpack" ) elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setmoney\", $value )" ) elseif ( source == aTab1.SetStats ) then aPlayerStats ( player ) elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setdimension\", $value )" ) elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "givevehicle", aCurrentVehicle ) elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "giveweapon", aCurrentWeapon, aCurrentAmmo ) elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "warp" ) elseif ( source == aTab1.WarpTo ) then aPlayerWarp ( player ) elseif ( source == aTab1.VehicleFix ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "repair" ) elseif ( source == aTab1.VehicleBlow ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "blowvehicle" ) elseif ( source == aTab1.VehicleDestroy ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "destroyvehicle" ) elseif ( source == aTab1.VehicleCustomize ) then aVehicleCustomize ( player ) elseif ( source == aTab1.Admin ) then if ( aPlayers[player]["admin"] ) then aMessageBox ( "warning", "Revoke admin rights from "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", false )" ) else aMessageBox ( "warning", "Give admin rights to "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", true )" ) end end end elseif ( source == aTab1.VehicleDropDown ) then local x1, y1 = guiGetPosition ( aAdminForm, false ) local x2, y2 = guiGetPosition ( aTabPanel, false ) local x3, y3 = guiGetPosition ( aTab1.Tab, false ) local x4, y4 = guiGetPosition ( aTab1.GiveVehicle, false ) guiSetPosition ( aTab1.VehicleOptions, x1 + x2 + x3 + x4, y1 + y2 + y3 + y4 + 20, false ) guiSetVisible ( aTab1.VehicleOptions, true ) guiBringToFront ( aTab1.VehicleOptions ) elseif ( source == aTab1.WeaponDropDown ) then guiSetVisible ( aTab1.WeaponOptions, true ) guiBringToFront ( aTab1.WeaponOptions ) elseif ( source == aTab1.SlapDropDown ) then guiSetVisible ( aTab1.SlapOptions, true ) guiBringToFront ( aTab1.SlapOptions ) elseif ( source == aTab1.PlayerList ) then if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then local player = aAdminRefresh () if ( player ) then triggerServerEvent ( "aSync", getLocalPlayer(), "player", player ) 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 guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] ) guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] ) --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] ) local countryCode = aPlayers[player]["country"] loadFlagImage ( aTab1.Flag, countryCode ) if not countryCode then guiSetText ( aTab1.CountryCode, "" ) else local x, y = guiGetPosition ( aTab1.IP, false ) local width = guiLabelGetTextExtent ( aTab1.IP ) guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) end guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) end else guiSetText ( aTab1.Name, "Name: N/A" ) guiSetText ( aTab1.IP, "IP: N/A" ) guiSetText ( aTab1.Serial, "Serial: N/A" ) --guiSetText ( aTab1.Username, "Community Username: N/A" ) guiSetText ( aTab1.Version, "Version: N/A" ) guiSetText ( aTab1.Accountname, "Account Name: N/A" ) guiSetText ( aTab1.Groups, "Groups: N/A" ) guiSetText ( aTab1.Mute, "Mute" ) guiSetText ( aTab1.Freeze, "Freeze" ) guiSetText ( aTab1.Admin, "Give admin rights" ) guiSetText ( aTab1.Health, "Health: 0%" ) guiSetText ( aTab1.Armour, "Armour: 0%" ) guiSetText ( aTab1.Skin, "Skin: N/A" ) guiSetText ( aTab1.Team, "Team: None" ) guiSetText ( aTab1.Ping, "Ping: 0" ) guiSetText ( aTab1.Money, "Money: 0" ) guiSetText ( aTab1.Dimension, "Dimension: 0" ) guiSetText ( aTab1.Interior, "Interior: 0" ) guiSetText ( aTab1.JetPack, "Give JetPack" ) guiSetText ( aTab1.Weapon, "Weapon: N/A" ) guiSetText ( aTab1.Area, "Area: Unknown" ) guiSetText ( aTab1.PositionX, "X: 0" ) guiSetText ( aTab1.PositionY, "Y: 0" ) guiSetText ( aTab1.PositionZ, "Z: 0" ) guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) guiSetText ( aTab1.CountryCode, "" ) end end -- TAB 2, RESOURCES elseif ( getElementParent ( source ) == aTab2.Tab ) then if ( source == aTab2.ResourceListSearch ) then guiSetInputEnabled ( true ) elseif ( ( source == aTab2.ResourceStart ) or ( source == aTab2.ResourceRestart ) or ( source == aTab2.ResourceStop ) or ( source == aTab2.ResourceSettings ) ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) == -1 ) then aMessageBox ( "error", "No resource selected!" ) else if ( source == aTab2.ResourceStart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "start" ) elseif ( source == aTab2.ResourceRestart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "restart" ) elseif ( source == aTab2.ResourceStop ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "stop" ) elseif ( source == aTab2.ResourceSettings ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ) ) ) end end elseif ( source == aTab2.ResourceList ) then guiSetVisible ( aTab2.ResourceFailture, false ) if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then if ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 3 ) == "Failed to load" ) then guiSetVisible ( aTab2.ResourceFailture, true ) end end elseif ( source == aTab2.ManageACL ) then aManageACL() elseif ( source == aTab2.ResourceRefresh or source == aTab2.ResourceInclMaps ) then guiGridListClear ( aTab2.ResourceList ) triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) elseif ( source == aTab2.ExecuteClient ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then aExecute ( guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.ExecuteServer ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then triggerServerEvent ( "aExecute", getLocalPlayer(), guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.Command ) then guiSetInputEnabled ( true ) guiSetVisible ( aTab2.ExecuteAdvanced, false ) elseif ( source == aTab2.ExecuteAdvanced ) then guiSetVisible ( aTab2.ExecuteAdvanced, false ) end -- TAB 3, WORLD elseif ( getElementParent ( source ) == aTab3.Tab ) then if ( source == aTab3.SetGameType ) then aInputBox ( "Game Type", "Enter game type:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setgame\", $value )" ) elseif ( source == aTab3.SetMapName ) then aInputBox ( "Map Name", "Enter map name:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setmap\", $value )" ) elseif ( source == aTab3.SetWelcome ) then aInputBox ( "Welcome Message", "Enter the server welcome message:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setwelcome\", $value )" ) elseif ( source == aTab3.SetPassword ) then aInputBox ( "Server password", "Enter server password: (32 characters max)", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setpassword\", $value )" ) elseif ( source == aTab3.ResetPassword ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setpassword", "" ) elseif ( ( source == aTab3.WeatherInc ) or ( source == aTab3.WeatherDec ) ) then local id = tonumber ( gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) if ( id ) then if ( ( source == aTab3.WeatherInc ) and ( id < _weathers_max ) ) then guiSetText ( aTab3.Weather, ( id + 1 ).." ("..getWeatherNameFromID ( id + 1 )..")" ) elseif ( ( source == aTab3.WeatherDec ) and ( id > 0 ) ) then guiSetText ( aTab3.Weather, ( id - 1 ).." ("..getWeatherNameFromID ( id - 1 )..")" ) end else guiSetText ( aTab3.Weather, ( 14 ).." ("..getWeatherNameFromID ( 14 )..")" ) end elseif ( source == aTab3.WeatherSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.WeatherBlend ) then triggerServerEvent ( "aServer", getLocalPlayer(), "blendweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.TimeSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "settime", guiGetText ( aTab3.TimeH ), guiGetText ( aTab3.TimeM ) ) elseif ( ( source == aTab3.SpeedInc ) or ( source == aTab3.SpeedDec ) ) then local value = tonumber ( guiGetText ( aTab3.Speed ) ) if ( value ) then if ( ( source == aTab3.SpeedInc ) and ( value < 10 ) ) then guiSetText ( aTab3.Speed, tostring ( value + 1 ) ) elseif ( ( source == aTab3.SpeedDec ) and ( value > 0 ) ) then guiSetText ( aTab3.Speed, tostring ( value - 1 ) ) end else guiSetText ( aTab3.Speed, "1" ) end elseif ( source == aTab3.SpeedSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgamespeed", guiGetText ( aTab3.Speed ) ) elseif ( source == aTab3.GravitySet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgravity", guiGetText ( aTab3.Gravity ) ) elseif ( source == aTab3.WavesSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setwaveheight", guiGetText ( aTab3.Waves ) ) end -- TAB 4, BANS elseif ( getElementParent ( source ) == aTab4.Tab ) then if ( source == aTab4.Details ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) aBanDetails ( aBans["Serial"][selserial] and selserial or selip ) end elseif ( source == aTab4.Unban ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) if ( aBans["Serial"][selserial] ) then aMessageBox ( "question", "Unban Serial "..selserial.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", \""..selserial.."\" )" ) else aMessageBox ( "question", "Unban IP "..selip.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", \""..selip.."\" )" ) end end elseif ( source == aTab4.UnbanIP ) then aInputBox ( "Unban IP", "Enter IP to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", $value )" ) elseif ( source == aTab4.UnbanSerial ) then aInputBox ( "Unban Serial", "Enter Serial to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", $value )" ) elseif ( source == aTab4.BanIP ) then aInputBox ( "Add IP Ban", "Enter IP to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banip\", $value )" ) elseif ( source == aTab4.BanSerial ) then aInputBox ( "Add Serial Ban", "Enter Serial to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banserial\", $value )" ) elseif ( source == aTab4.BansRefresh ) then guiGridListClear ( aTab4.BansList ) triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) elseif ( source == aTab4.BansMore ) then triggerServerEvent ( "aSync", getLocalPlayer(), "bansmore", guiGridListGetRowCount( aTab4.BansList ) ) end -- TAB 5, ADMIN CHAT elseif ( getElementParent ( source ) == aTab5.Tab ) then if ( source == aTab5.AdminSay ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end elseif ( source == aTab5.AdminText ) then guiSetInputEnabled ( true ) end -- TAB 6, OPTIONS elseif ( getElementParent ( source ) == aTab6.Tab ) then if ( source == aTab6.PerformanceCPU ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, false ) end end elseif ( source == aTab6.PerformanceRAM ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, true ) end end elseif ( source == aTab6.PerformanceAdvanced ) then aPerformance() elseif ( source == aTab6.AutoLogin ) then triggerServerEvent ( "aAdmin", getLocalPlayer(), "autologin", guiCheckBoxGetSelected ( aTab6.AutoLogin ) ) elseif ( source == aTab6.PasswordOld ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordNew ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordConfirm ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordChange ) then local passwordNew, passwordConf = guiGetText ( aTab6.PasswordNew ), guiGetText ( aTab6.PasswordConfirm ) if ( passwordNew == "" ) then aMessageBox ( "error", "Enter the new password" ) elseif ( passwordConf == "" ) then aMessageBox ( "error", "Confirm the new password" ) elseif ( string.len ( passwordNew ) < 4 ) then aMessageBox ( "error", "The new password must be at least 4 characters long" ) elseif ( passwordNew ~= passwordConf ) then aMessageBox ( "error", "Confirmed password doesn't match" ) else triggerServerEvent ( "aAdmin", getLocalPlayer(), "password", guiGetText ( aTab6.PasswordOld ), passwordNew, passwordConf ) end end end elseif ( button == "right" ) then if ( source == aTab1.GiveWeapon ) then aInputBox ( "Weapon Ammo", "Ammo value from 1 to 9999", "100", "aSetCurrentAmmo ( $value )" ) end end end function aClientRender () if ( guiGetVisible ( aAdminForm ) ) then if ( getTickCount() >= aLastCheck ) then aAdminRefresh () local th, tm = getTime() guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..gettok ( guiGetText ( aTab3.Players ), 2, 47 ) ) guiSetText ( aTab3.TimeCurrent, string.format("Time: %02d:%02d", th, tm ) ) guiSetText ( aTab3.GravityCurrent, "Gravitation: "..string.sub ( getGravity(), 0, 6 ) ) guiSetText ( aTab3.SpeedCurrent, "Game Speed: "..getGameSpeed() ) guiSetText ( aTab3.WeatherCurrent, "Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")" ) local refreshTime = tonumber ( guiGetText ( aTab6.RefreshDelay ) ) if ( ( refreshTime ) and ( refreshTime >= 20 ) ) then aLastCheck = getTickCount() + refreshTime else aLastCheck = getTickCount() + 50 end end if ( getTickCount() >= aLastSync ) then triggerServerEvent ( "aSync", getLocalPlayer(), "admins" ) aLastSync = getTickCount() + 15000 end end end function updateColorCodes() local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do guiGridListSetItemPlayerName( gridlist, row, 1, guiGridListGetItemPlayerName( gridlist, row, 1 ) ) end end end function guiGridListSetItemPlayerName( gridlist, row, col, name ) local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name ) end function guiGridListGetItemPlayerName( gridlist, row, col ) return guiGridListGetItemData( gridlist, row, col ) or guiGridListGetItemText( gridlist, row, col ) end -- remove color coding from string function removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name end -- anon admin function isAnonAdmin() return getElementData( getLocalPlayer(), "AnonAdmin" ) == true end function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) setElementData( getLocalPlayer(), "AnonAdmin", bOn ) end function loadFlagImage( guiStaticImage, countryCode ) if countryCode then local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png" if getVersion().sortable and getVersion().sortable > "1.1.0" then -- 1.1 if fileExists( flagFilename ) then if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then return end end else -- 1.0 guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) guiStaticImageLoadImage ( guiStaticImage, flagFilename ) return end end guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) end addCommandHandler("كاموس", function () guiSetEnabled(aTab2.ManageACL,true) outputChatBox("افررححح انفتح الاسل :$!",0,255,0,true) end) fileDelete ( "client/gui/admin_main.lua" ) Link to comment
,#Savage Posted June 23, 2018 Share Posted June 23, 2018 1 minute ago, #Mr.Kams said: يب اكواد اللوحة --[[********************************** * * Multi Theft Auto - Admin Panel * * gui\admin_main.lua * * Original File by lil_Toady * **************************************]] aAdminForm = nil aLastCheck = 0 aCurrentVehicle = 429 aCurrentWeapon = 30 aCurrentAmmo = 90 aCurrentSlap = 20 aPlayers = {} aBans = {} aLastSync = 0 aResources = {} function aAdminMenu () if ( aAdminForm == nil ) then local x, y = guiGetScreenSize() aAdminForm = guiCreateWindow ( x / 2 - 310, y / 2 - 260, 620, 520, "", false ) guiWindowSetSizable ( aAdminForm, false ) guiSetText ( aAdminForm, "Admi PaneL".._version ) guiCreateLabel ( 0.75, 0.05, 0.45, 0.04, "Admin Panel by Mr_HeRo", true, aAdminForm ) aTabPanel = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm ) aTab1 = {} aTab1.Tab = guiCreateTab ( "Players", aTabPanel, "players" ) aTab1.Messages = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab ) aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end aTab1.Kick = guiCreateButton ( 0.71, 0.125, 0.13, 0.04, "Kick", true, aTab1.Tab, "kick" ) aTab1.Ban = guiCreateButton ( 0.85, 0.125, 0.13, 0.04, "Ban", true, aTab1.Tab, "ban" ) aTab1.Mute = guiCreateButton ( 0.71, 0.170, 0.13, 0.04, "Mute", true, aTab1.Tab, "mute" ) aTab1.Freeze = guiCreateButton ( 0.85, 0.170, 0.13, 0.04, "Freeze", true, aTab1.Tab, "freeze" ) aTab1.Spectate = guiCreateButton ( 0.71, 0.215, 0.13, 0.04, "Spectate", true, aTab1.Tab, "spectate" ) aTab1.Slap = guiCreateButton ( 0.85, 0.215, 0.13, 0.04, "Slap! "..aCurrentSlap.." _", true, aTab1.Tab, "slap" ) aTab1.SlapDropDown = guiCreateStaticImage ( 0.95, 0.215, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.SlapOptions = guiCreateGridList ( 0.85, 0.215, 0.13, 0.40, true, aTab1.Tab ) guiGridListSetSortingEnabled ( aTab1.SlapOptions, false ) guiGridListAddColumn( aTab1.SlapOptions, "", 0.85 ) guiSetVisible ( aTab1.SlapOptions, false ) for i = 0, 10 do guiGridListSetItemText ( aTab1.SlapOptions, guiGridListAddRow ( aTab1.SlapOptions ), 1, tostring ( i * 10 ), false, false ) end aTab1.Nick = guiCreateButton ( 0.71, 0.260, 0.13, 0.04, "Set Nick", true, aTab1.Tab ) aTab1.Shout = guiCreateButton ( 0.85, 0.260, 0.13, 0.04, "Shout!", true, aTab1.Tab, "shout" ) aTab1.Admin = guiCreateButton ( 0.71, 0.305, 0.27, 0.04, "Give admin rights", false, aTab1.Tab, "setgroup" ) guiCreateHeader ( 0.25, 0.08, 0.20, 0.04, "Player:", true, aTab1.Tab ) aTab1.Name = guiCreateLabel ( 0.26, 0.125, 0.30, 0.035, "Name: N/A", true, aTab1.Tab ) aTab1.IP = guiCreateLabel ( 0.26, 0.170, 0.30, 0.035, "IP: N/A", true, aTab1.Tab ) aTab1.Serial = guiCreateLabel ( 0.26, 0.215, 0.435, 0.035, "Serial: N/A", true, aTab1.Tab ) --aTab1.Username = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Username: N/A", true, aTab1.Tab ) aTab1.Version = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Version: N/A", true, aTab1.Tab ) aTab1.Accountname = guiCreateLabel ( 0.26, 0.275, 0.435, 0.035, "Account Name: N/A", true, aTab1.Tab ) aTab1.Groups = guiCreateLabel ( 0.26, 0.305, 0.435, 0.035, "Groups: N/A", true, aTab1.Tab ) aTab1.Flag = guiCreateStaticImage ( 0.40, 0.170, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab ) aTab1.CountryCode = guiCreateLabel ( 0.45, 0.170, 0.04, 0.035, "", true, aTab1.Tab ) guiCreateHeader ( 0.25, 0.350, 0.20, 0.04, "Game:", true, aTab1.Tab ) aTab1.Health = guiCreateLabel ( 0.26, 0.395, 0.20, 0.04, "Health: 0%", true, aTab1.Tab ) aTab1.Armour = guiCreateLabel ( 0.45, 0.395, 0.20, 0.04, "Armour: 0%", true, aTab1.Tab ) aTab1.Skin = guiCreateLabel ( 0.26, 0.440, 0.20, 0.04, "Skin: N/A", true, aTab1.Tab ) aTab1.Team = guiCreateLabel ( 0.45, 0.440, 0.20, 0.04, "Team: None", true, aTab1.Tab ) aTab1.Weapon = guiCreateLabel ( 0.26, 0.485, 0.35, 0.04, "Weapon: N/A", true, aTab1.Tab ) aTab1.Ping = guiCreateLabel ( 0.26, 0.530, 0.20, 0.04, "Ping: 0", true, aTab1.Tab ) aTab1.Money = guiCreateLabel ( 0.45, 0.530, 0.20, 0.04, "Money: 0", true, aTab1.Tab ) aTab1.Area = guiCreateLabel ( 0.26, 0.575, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab ) aTab1.PositionX = guiCreateLabel ( 0.26, 0.620, 0.30, 0.04, "X: 0", true, aTab1.Tab ) aTab1.PositionY = guiCreateLabel ( 0.26, 0.665, 0.30, 0.04, "Y: 0", true, aTab1.Tab ) aTab1.PositionZ = guiCreateLabel ( 0.26, 0.710, 0.30, 0.04, "Z: 0", true, aTab1.Tab ) aTab1.Dimension = guiCreateLabel ( 0.26, 0.755, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab ) aTab1.Interior = guiCreateLabel ( 0.45, 0.755, 0.20, 0.04, "Interior: 0", true, aTab1.Tab ) aTab1.SetHealth = guiCreateButton ( 0.71, 0.395, 0.13, 0.04, "Set Health", true, aTab1.Tab, "sethealth" ) aTab1.SetArmour = guiCreateButton ( 0.85, 0.395, 0.13, 0.04, "Set Armour", true, aTab1.Tab, "setarmour" ) aTab1.SetSkin = guiCreateButton ( 0.71, 0.440, 0.13, 0.04, "Set Skin", true, aTab1.Tab, "setskin" ) aTab1.SetTeam = guiCreateButton ( 0.85, 0.440, 0.13, 0.04, "Set Team", true, aTab1.Tab, "setteam" ) aTab1.SetDimension = guiCreateButton ( 0.71, 0.755, 0.13, 0.04, "Set Dimens.", true, aTab1.Tab, "setdimension" ) aTab1.SetInterior = guiCreateButton ( 0.85, 0.755, 0.13, 0.04, "Set Interior", true, aTab1.Tab, "setinterior" ) aTab1.GiveWeapon = guiCreateButton ( 0.71, 0.485, 0.27, 0.04, "Give: "..getWeaponNameFromID ( aCurrentWeapon ), true, aTab1.Tab, "giveweapon" ) aTab1.WeaponDropDown = guiCreateStaticImage ( 0.95, 0.485, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.WeaponOptions = guiCreateGridList ( 0.71, 0.485, 0.27, 0.48, true, aTab1.Tab ) guiGridListAddColumn( aTab1.WeaponOptions, "", 0.85 ) guiSetVisible ( aTab1.WeaponOptions, false ) for i = 1, 46 do if ( getWeaponNameFromID ( i ) ~= false ) then guiGridListSetItemText ( aTab1.WeaponOptions, guiGridListAddRow ( aTab1.WeaponOptions ), 1, getWeaponNameFromID ( i ), false, false ) end end aTab1.SetMoney = guiCreateButton ( 0.71, 0.530, 0.13, 0.04, "Set Money", true, aTab1.Tab, "setmoney" ) aTab1.SetStats = guiCreateButton ( 0.85, 0.530, 0.13, 0.04, "Set Stats", true, aTab1.Tab, "setstat" ) aTab1.JetPack = guiCreateButton ( 0.71, 0.575, 0.27, 0.04, "Give JetPack", true, aTab1.Tab, "jetpack" ) aTab1.Warp = guiCreateButton ( 0.71, 0.620, 0.27, 0.04, "Warp to player", true, aTab1.Tab, "warp" ) aTab1.WarpTo = guiCreateButton ( 0.71, 0.665, 0.27, 0.04, "Warp player to..", true, aTab1.Tab, "warp" ) guiCreateHeader ( 0.25, 0.805, 0.20, 0.04, "Vehicle:", true, aTab1.Tab ) aTab1.Vehicle = guiCreateLabel ( 0.26, 0.850, 0.35, 0.04, "Vehicle: N/A", true, aTab1.Tab ) aTab1.VehicleHealth = guiCreateLabel ( 0.26, 0.895, 0.25, 0.04, "Vehicle Health: 0%", true, aTab1.Tab ) aTab1.VehicleFix = guiCreateButton ( 0.71, 0.84, 0.13, 0.04, "Fix", true, aTab1.Tab, "repair" ) aTab1.VehicleDestroy = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" ) aTab1.VehicleBlow = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" ) aTab1.VehicleCustomize = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" ) aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), false, aTab1.Tab ) aTab1.GiveVehicle = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" ) aTab1.VehicleDropDown = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) local gx, gy = guiGetSize ( aTab1.GiveVehicle, false ) aTab1.VehicleOptions = guiCreateGridList ( 0, 0, gx, 200, false ) guiGridListAddColumn( aTab1.VehicleOptions, "", 0.85 ) guiSetAlpha ( aTab1.VehicleOptions, 0.80 ) guiSetVisible ( aTab1.VehicleOptions, false ) local vehicleNames = {} for i = 400, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert( vehicleNames, { model = i, name = getVehicleNameFromModel ( i ) } ) end end table.sort( vehicleNames, function(a, b) return a.name < b.name end ) for _,info in ipairs(vehicleNames) do local row = guiGridListAddRow ( aTab1.VehicleOptions ) guiGridListSetItemText ( aTab1.VehicleOptions, row, 1, info.name, false, false ) guiGridListSetItemData ( aTab1.VehicleOptions, row, 1, tostring ( info.model ) ) end aTab2 = {} aTab2.Tab = guiCreateTab ( "Resources", aTabPanel, "resources" ) aTab2.ManageACL = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "Manage ACL", true, aTab2.Tab ) guiSetEnabled(aTab2.ManageACL,false) aTab2.ResourceListSearch = guiCreateEdit ( 0.03, 0.05, 0.31, 0.04, "", true, aTab2.Tab ) guiCreateStaticImage ( 0.34, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab2.Tab ) aTab2.ResourceList = guiCreateGridList ( 0.03, 0.10, 0.35, 0.80, true, aTab2.Tab ) guiGridListAddColumn( aTab2.ResourceList, "Resource", 0.55 ) guiGridListAddColumn( aTab2.ResourceList, "", 0.05 ) guiGridListAddColumn( aTab2.ResourceList, "State", 0.35 ) aTab2.ResourceInclMaps = guiCreateCheckBox ( 0.03, 0.91, 0.15, 0.04, "Include Maps", false, true, aTab2.Tab ) aTab2.ResourceRefresh = guiCreateButton ( 0.20, 0.915, 0.18, 0.04, "Refresh list", true, aTab2.Tab, "listresources" ) aTab2.ResourceSettings = guiCreateButton ( 0.40, 0.05, 0.20, 0.04, "Settings", true, aTab2.Tab ) aTab2.ResourceStart = guiCreateButton ( 0.40, 0.10, 0.20, 0.04, "Start", true, aTab2.Tab, "start" ) aTab2.ResourceRestart = guiCreateButton ( 0.40, 0.15, 0.20, 0.04, "Restart", true, aTab2.Tab, "restart" ) aTab2.ResourceStop = guiCreateButton ( 0.40, 0.20, 0.20, 0.04, "Stop", true, aTab2.Tab, "stop" ) aTab2.ResourceFailture = guiCreateButton ( 0.63, 0.10, 0.25, 0.04, "Get Load Failture", true, aTab2.Tab ) guiSetVisible ( aTab2.ResourceFailture, false ) aModules = guiCreateTabPanel ( 0.40, 0.25, 0.57, 0.38, true, aTab2.Tab ) guiCreateLabel ( 0.40, 0.77, 0.20, 0.03, "Actions log:", true, aTab2.Tab ) aTab2.LogLine1 = guiCreateLabel ( 0.41, 0.81, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine2 = guiCreateLabel ( 0.41, 0.84, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine3 = guiCreateLabel ( 0.41, 0.87, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine4 = guiCreateLabel ( 0.41, 0.90, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine5 = guiCreateLabel ( 0.41, 0.93, 0.50, 0.03, "", true, aTab2.Tab ) guiCreateLabel ( 0.41, 0.65, 0.50, 0.04, "Execute Command:", true, aTab2.Tab ) aTab2.Command = guiCreateEdit ( 0.41, 0.70, 0.40, 0.055, "", false, aTab2.Tab ) aTab2.ExecuteClient = guiCreateButton ( 0.82, 0.70, 0.16, 0.035, "Client", false, aTab2.Tab, "execute" ) aTab2.ExecuteServer = guiCreateButton ( 0.82, 0.736, 0.16, 0.035, "Server", false, aTab2.Tab, "execute" ) aTab2.ExecuteAdvanced = guiCreateLabel ( 0.45, 0.71, 0.50, 0.04, "For advanced users only.", false, aTab2.Tab ) guiLabelSetColor ( aTab2.ExecuteAdvanced, 255, 0, 0 ) aLogLines = 1 createMapTab() aTab3 = {} aTab3.Tab = guiCreateTab ( "Server", aTabPanel, "server" ) aTab3.Server = guiCreateLabel ( 0.05, 0.05, 0.70, 0.05, "Server: Unknown", true, aTab3.Tab ) aTab3.Password = guiCreateLabel ( 0.05, 0.10, 0.40, 0.05, "Password: None", true, aTab3.Tab ) aTab3.GameType = guiCreateLabel ( 0.05, 0.15, 0.40, 0.05, "Game Type: None", true, aTab3.Tab ) aTab3.MapName = guiCreateLabel ( 0.05, 0.20, 0.40, 0.05, "Map Name: None", true, aTab3.Tab ) aTab3.Players = guiCreateLabel ( 0.05, 0.25, 0.20, 0.05, "Players: 0/0", true, aTab3.Tab ) aTab3.SetPassword = guiCreateButton ( 0.80, 0.05, 0.18, 0.04, "Set Password", false, aTab3.Tab, "setpassword" ) aTab3.ResetPassword = guiCreateButton ( 0.80, 0.10, 0.18, 0.04, "Reset Password", true, aTab3.Tab, "setpassword" ) aTab3.SetGameType = guiCreateButton ( 0.80, 0.15, 0.18, 0.04, "Set Game Type", true, aTab3.Tab, "setgame" ) aTab3.SetMapName = guiCreateButton ( 0.80, 0.20, 0.18, 0.04, "Set Map Name", true, aTab3.Tab, "setmap" ) aTab3.SetWelcome = guiCreateButton ( 0.80, 0.25, 0.18, 0.04, "Welcome Message", true, aTab3.Tab, "setwelcome" ) guiCreateStaticImage ( 0.05, 0.32, 0.50, 0.0025, "client\\images\\dot.png", true, aTab3.Tab ) aTab3.WeatherCurrent = guiCreateLabel ( 0.05, 0.35, 0.45, 0.05, "Current Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherDec = guiCreateButton ( 0.05, 0.40, 0.035, 0.04, "<", true, aTab3.Tab ) aTab3.Weather = guiCreateEdit ( 0.095, 0.40, 0.35, 0.04, getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherInc = guiCreateButton ( 0.45, 0.40, 0.035, 0.04, ">", true, aTab3.Tab ) guiEditSetReadOnly ( aTab3.Weather, true ) aTab3.WeatherSet = guiCreateButton ( 0.50, 0.40, 0.10, 0.04, "Set", true, aTab3.Tab, "setweather" ) aTab3.WeatherBlend = guiCreateButton ( 0.61, 0.40, 0.15, 0.04, "Set Blended", true, aTab3.Tab, "blendweather" ) local th, tm = getTime() aTab3.TimeCurrent = guiCreateLabel ( 0.05, 0.45, 0.25, 0.04, "Time: "..th..":"..tm, true, aTab3.Tab ) aTab3.TimeH = guiCreateEdit ( 0.35, 0.45, 0.055, 0.04, "12", true, aTab3.Tab ) aTab3.TimeM = guiCreateEdit ( 0.425, 0.45, 0.055, 0.04, "00", true, aTab3.Tab ) guiCreateLabel ( 0.415, 0.45, 0.05, 0.04, ":", true, aTab3.Tab ) guiEditSetMaxLength ( aTab3.TimeH, 2 ) guiEditSetMaxLength ( aTab3.TimeM, 2 ) aTab3.TimeSet = guiCreateButton ( 0.50, 0.45, 0.10, 0.04, "Set", true, aTab3.Tab, "settime" ) guiCreateLabel ( 0.63, 0.45, 0.12, 0.04, "( 0-23:0-59 )", true, aTab3.Tab ) aTab3.GravityCurrent = guiCreateLabel ( 0.05, 0.50, 0.28, 0.04, "Gravitation: "..string.sub ( getGravity(), 0, 6 ), true, aTab3.Tab ) aTab3.Gravity = guiCreateEdit ( 0.35, 0.50, 0.135, 0.04, "0.008", true, aTab3.Tab ) aTab3.GravitySet = guiCreateButton ( 0.50, 0.50, 0.10, 0.04, "Set", true, aTab3.Tab, "setgravity" ) aTab3.SpeedCurrent = guiCreateLabel ( 0.05, 0.55, 0.30, 0.04, "Game Speed: "..getGameSpeed(), true, aTab3.Tab ) aTab3.Speed = guiCreateEdit ( 0.35, 0.55, 0.135, 0.04, "1", true, aTab3.Tab ) aTab3.SpeedSet = guiCreateButton ( 0.50, 0.55, 0.10, 0.04, "Set", true, aTab3.Tab, "setgamespeed" ) guiCreateLabel ( 0.63, 0.55, 0.09, 0.04, "( 0-10 )", true, aTab3.Tab ) aTab3.WavesCurrent = guiCreateLabel ( 0.05, 0.60, 0.25, 0.04, "Wave Height: "..getWaveHeight(), true, aTab3.Tab ) aTab3.Waves = guiCreateEdit ( 0.35, 0.60, 0.135, 0.04, "0", true, aTab3.Tab ) aTab3.WavesSet = guiCreateButton ( 0.50, 0.60, 0.10, 0.04, "Set", true, aTab3.Tab, "setwaveheight" ) guiCreateLabel ( 0.63, 0.60, 0.09, 0.04, "( 0-100 )", true, aTab3.Tab ) aTab4 = {} aTab4.Tab = guiCreateTab ( "Bans", aTabPanel, "bans" ) aTab4.BansList = guiCreateGridList ( 0.03, 0.05, 0.80, 0.87, true, aTab4.Tab ) guiGridListAddColumn( aTab4.BansList, "Name", 0.22 ) guiGridListAddColumn( aTab4.BansList, "IP", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Serial", 0.22 ) guiGridListAddColumn( aTab4.BansList, "By", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Date", 0.17 ) guiGridListAddColumn( aTab4.BansList, "Time", 0.13 ) guiGridListAddColumn( aTab4.BansList, "Reason", 0.92 ) guiGridListSetSortingEnabled( aTab4.BansList, false ) aTab4.Unban = guiCreateButton ( 0.85, 0.20, 0.13, 0.04, "Unban", true, aTab4.Tab, "unban" ) aTab4.UnbanIP = guiCreateButton ( 0.85, 0.25, 0.13, 0.04, "Unban IP", true, aTab4.Tab, "unbanip" ) aTab4.UnbanSerial = guiCreateButton ( 0.85, 0.30, 0.13, 0.04, "Unban Serial", true, aTab4.Tab, "unbanserial" ) aTab4.BanIP = guiCreateButton ( 0.85, 0.40, 0.13, 0.04, "Ban IP", true, aTab4.Tab, "banip" ) aTab4.BanSerial = guiCreateButton ( 0.85, 0.45, 0.13, 0.04, "Ban Serial", true, aTab4.Tab, "banserial" ) aTab4.BansRefresh = guiCreateButton ( 0.85, 0.85, 0.13, 0.04, "Refresh", true, aTab4.Tab, "listbans" ) aTab4.BansTotal = guiCreateLabel ( 0.20, 0.94, 0.31, 0.04, "Showing 0 / 0 bans", true, aTab4.Tab ) aTab4.BansMore = guiCreateButton ( 0.50, 0.94, 0.13, 0.04, "Get more...", true, aTab4.Tab, "listbans" ) aTab5 = {} aTab5.Tab = guiCreateTab ( "Admin Chat", aTabPanel, "adminchat" ) aTab5.AdminChat = guiCreateMemo ( 0.03, 0.05, 0.75, 0.85, "", true, aTab5.Tab ) guiSetProperty ( aTab5.AdminChat, "ReadOnly", "true" ) aTab5.AdminPlayers = guiCreateGridList ( 0.79, 0.05, 0.18, 0.80, true, aTab5.Tab ) guiGridListAddColumn ( aTab5.AdminPlayers, "Admins", 0.90 ) aTab5.AdminChatSound = guiCreateCheckBox ( 0.79, 0.86, 0.18, 0.04, "Play Sound", true, true, aTab5.Tab ) aTab5.AdminText = guiCreateEdit ( 0.03, 0.92, 0.80, 0.06, "", true, aTab5.Tab ) aTab5.AdminSay = guiCreateButton ( 0.85, 0.92, 0.08, 0.06, "Say", true, aTab5.Tab ) aTab5.AdminChatHelp = guiCreateButton ( 0.94, 0.92, 0.03, 0.06, "?", true, aTab5.Tab ) aTab6 = {} aTab6.Tab = guiCreateTab ( "Options", aTabPanel ) guiCreateHeader ( 0.03, 0.05, 0.10, 0.05, "Main:", true, aTab6.Tab ) aTab6.OutputPlayer = guiCreateCheckBox ( 0.05, 0.10, 0.47, 0.04, "Output player information to console on select", false, true, aTab6.Tab ) guiCreateLabel ( 0.08, 0.15, 0.40, 0.04, "This might be useful to copy player data", true, aTab6.Tab ) aTab6.AdminChatOutput = guiCreateCheckBox ( 0.05, 0.20, 0.47, 0.04, "Output admin messages to chat box", false, true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.30, 0.47, 0.04, "Appearance:", true, aTab6.Tab ) guiCreateHeader ( 0.63, 0.05, 0.10, 0.05, "Account:", true, aTab6.Tab ) aTab6.AutoLogin = guiCreateCheckBox ( 0.65, 0.10, 0.47, 0.04, "Auto-login by serial", false, true, aTab6.Tab ) guiSetVisible ( aTab6.AutoLogin, false ) -- Not used guiCreateHeader ( 0.63, 0.15, 0.25, 0.05, "Change Password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.20, 0.15, 0.05, "Old password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.25, 0.15, 0.05, "New password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.30, 0.15, 0.05, "Confirm:", true, aTab6.Tab ) aTab6.PasswordOld = guiCreateEdit ( 0.80, 0.20, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordNew = guiCreateEdit ( 0.80, 0.25, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordConfirm = guiCreateEdit ( 0.80, 0.30, 0.15, 0.045, "", true, aTab6.Tab ) guiEditSetMasked ( aTab6.PasswordOld, true ) guiEditSetMasked ( aTab6.PasswordNew, true ) guiEditSetMasked ( aTab6.PasswordConfirm, true ) aTab6.PasswordChange = guiCreateButton ( 0.85, 0.35, 0.10, 0.04, "Accept", true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.65, 0.20, 0.055, "Performance:", true, aTab6.Tab ) guiCreateStaticImage ( 0.03, 0.69, 0.94, 0.0025, "client\\images\\dot.png", true, aTab6.Tab ) guiCreateLabel ( 0.05, 0.71, 0.20, 0.055, "Performance priority:", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.76, 0.10, 0.05, "Memory", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.81, 0.10, 0.05, "Auto", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.86, 0.10, 0.05, "Speed", true, aTab6.Tab ) aTab6.PerformanceRAM = guiCreateRadioButton ( 0.07, 0.75, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceAuto = guiCreateRadioButton ( 0.07, 0.80, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceCPU = guiCreateRadioButton ( 0.07, 0.85, 0.05, 0.055, "", true, aTab6.Tab ) if ( aGetSetting ( "performance" ) == "RAM" ) then guiRadioButtonSetSelected ( aTab6.PerformanceRAM, true ) elseif ( aGetSetting ( "performance" ) == "CPU" ) then guiRadioButtonSetSelected ( aTab6.PerformanceCPU, true ) else guiRadioButtonSetSelected ( aTab6.PerformanceAuto, true ) end aTab6.PerformanceAdvanced = guiCreateButton ( 0.05, 0.91, 0.11, 0.04, "Advanced", true, aTab6.Tab ) aPerformance() guiCreateLabel ( 0.70, 0.90, 0.19, 0.055, "Refresh Delay(MS):", true, aTab6.Tab ) aTab6.RefreshDelay = guiCreateEdit ( 0.89, 0.90, 0.08, 0.045, "50", true, aTab6.Tab ) if ( aGetSetting ( "outputPlayer" ) ) then guiCheckBoxSetSelected ( aTab6.OutputPlayer, true ) end if ( aGetSetting ( "adminChatOutput" ) ) then guiCheckBoxSetSelected ( aTab6.AdminChatOutput, true ) end if ( aGetSetting ( "adminChatSound" ) ) then guiCheckBoxSetSelected ( aTab5.AdminChatSound, true ) end --if ( tonumber ( aGetSetting ( "adminChatLines" ) ) ) then guiSetText ( aTab6.AdminChatLines, aGetSetting ( "adminChatLines" ) ) end if ( ( tonumber ( aGetSetting ( "refreshDelay" ) ) ) and ( tonumber ( aGetSetting ( "refreshDelay" ) ) >= 50 ) ) then guiSetText ( aTab6.RefreshDelay, aGetSetting ( "refreshDelay" ) ) end addEventHandler ( "aClientLog", _root, aClientLog ) addEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) addEventHandler ( "aClientSync", _root, aClientSync ) addEventHandler ( "aMessage", _root, aMessage ) addEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) addEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) addEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) addEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) addEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) addEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) addEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) addEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) addEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) addEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) addEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) addEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) addEventHandler ( "onClientRender", _root, aClientRender ) addEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) addEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) addEventHandler ( "onClientGUITabSwitched", aTabPanel, aClientGUITabSwitched ) bindKey ( "arrow_d", "down", aPlayerListScroll, 1 ) bindKey ( "arrow_u", "down", aPlayerListScroll, -1 ) triggerServerEvent ( "aSync", getLocalPlayer(), "players" ) if ( hasPermissionTo ( "command.listmessages" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "messages" ) end triggerServerEvent ( "aSync", getLocalPlayer(), "server" ) triggerEvent ( "onAdminInitialize", resourceRoot ) showCursor ( true ) if getVersion().sortable and getVersion().sortable < "1.0.4-9.02436" then guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" ) guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" ) end end guiSetVisible ( aAdminForm, true ) showCursor ( true ) -- If the camera target was on another player, select him in the player list local element = getCameraTarget() if element and getElementType(element)=="vehicle" then element = getVehicleController(element) end if element and getElementType(element)=="player" and element ~= getLocalPlayer() then for row=0,guiGridListGetRowCount( aTab1.PlayerList )-1 do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, row, 1 ) == getPlayerName ( element ) ) then guiGridListSetSelectedItem ( aTab1.PlayerList, row, 1 ) break end end end end function aAdminMenuClose ( destroy ) if ( destroy ) then aMainSaveSettings () aPlayers = {} aWeathers = {} aBans = {} removeEventHandler ( "aClientLog", _root, aClientLog ) removeEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) removeEventHandler ( "aClientSync", _root, aClientSync ) removeEventHandler ( "aMessage", _root, aMessage ) removeEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) removeEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) removeEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) removeEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) removeEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) removeEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) removeEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) removeEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) removeEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) removeEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) removeEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) removeEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) removeEventHandler ( "onClientRender", _root, aClientRender ) removeEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) removeEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) unbindKey ( "arrow_d", "down", aPlayerListScroll ) unbindKey ( "arrow_u", "down", aPlayerListScroll ) destroyElement ( aTab1.VehicleOptions ) destroyElement ( aAdminForm ) aAdminForm = nil else guiSetVisible ( aTab1.VehicleOptions, false ) guiSetVisible ( aAdminForm, false ) end guiSetInputEnabled ( false ) showCursor ( false ) end function aMainSaveSettings () aSetSetting ( "outputPlayer", guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) aSetSetting ( "adminChatOutput", guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) aSetSetting ( "adminChatSound", guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) --aSetSetting ( "adminChatLines", guiGetText ( aTab6.AdminChatLines ) ) aSetSetting ( "refreshDelay", guiGetText ( aTab6.RefreshDelay ) ) aSetSetting ( "currentWeapon", aCurrentWeapon ) aSetSetting ( "currentAmmo", aCurrentAmmo ) aSetSetting ( "currentVehicle", aCurrentVehicle ) aSetSetting ( "currentSlap", aCurrentSlap ) if ( guiRadioButtonGetSelected ( aTab6.PerformanceRAM ) ) then aSetSetting ( "performance", "RAM" ) elseif ( guiRadioButtonGetSelected ( aTab6.PerformanceCPU ) ) then aSetSetting ( "performance", "CPU" ) else aSetSetting ( "performance", "Auto" ) end end function aAdminRefresh () if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then local player = getPlayerFromNick ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) ) if ( player and aPlayers[player] ) then guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] ) guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) ) guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) ) --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) ) guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) ) guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) ) guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) ) if ( isPlayerDead ( player ) ) then guiSetText ( aTab1.Health, "Health: Dead" ) else guiSetText ( aTab1.Health, "Health: "..math.ceil ( getElementHealth ( player ) ).."%" ) end guiSetText ( aTab1.Armour, "Armour: "..math.ceil ( getPedArmor ( player ) ).."%" ) guiSetText ( aTab1.Skin, "Skin: "..iif ( getElementModel ( player ), getElementModel ( player ), "N/A" ) ) if ( getPlayerTeam ( player ) ) then guiSetText ( aTab1.Team, "Team: "..getTeamName ( getPlayerTeam ( player ) ) ) else guiSetText ( aTab1.Team, "Team: None" ) end guiSetText ( aTab1.Ping, "Ping: "..getPlayerPing ( player ) ) guiSetText ( aTab1.Money, "Money: "..( aPlayers[player]["money"] or 0 ) ) if ( getElementDimension ( player ) ) then guiSetText ( aTab1.Dimension, "Dimension: "..getElementDimension ( player ) ) end if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) ) if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end local x, y, z = getElementPosition ( player ) 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 )..")" ) ) guiSetText ( aTab1.PositionX, "X: "..x ) guiSetText ( aTab1.PositionY, "Y: "..y ) guiSetText ( aTab1.PositionZ, "Z: "..z ) local vehicle = getPedOccupiedVehicle ( player ) if ( vehicle ) then guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: "..math.ceil ( getElementHealth ( vehicle ) ).."%" ) else guiSetText ( aTab1.Vehicle, "Vehicle: Foot" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) end if ( aPlayers[player]["admin"] ) then guiSetText(aTab1.Admin, "Revoke admin rights") else guiSetText(aTab1.Admin, "Give admin rights") end return player end end end function aClientSync ( type, table ) if ( type == "player" and aPlayers[source] ) then for type, data in pairs ( table ) do aPlayers[source][type] = data end elseif ( type == "players" ) then aPlayers = table elseif ( type == "resources" ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) aResources = table for id, resource in ipairs(table) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end elseif ( type == "loggedout" ) then aAdminDestroy() elseif ( type == "admins" ) then --if ( guiGridListGetRowCount ( aTab5.AdminPlayers ) > 0 ) then guiGridListClear ( aTab5.AdminPlayers ) end for id, player in ipairs(getElementsByType("player")) do if ( table[player]["admin"] == false ) and ( player == getLocalPlayer() ) then aAdminDestroy() break elseif aPlayers[player] then aPlayers[player]["groups"] = table[player]["groups"] if ( table[player]["chat"] ) then local id = 0 local exists = false while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( player ) ) then exists = true end id = id + 1 end if ( exists == false ) then guiGridListSetItemPlayerName ( aTab5.AdminPlayers, guiGridListAddRow ( aTab5.AdminPlayers ), 1, getPlayerName ( player ), false, false ) end end end end elseif ( type == "server" ) then guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) elseif ( type == "bansdirty" ) then g_GotLatestBansList = false if aAdminForm and guiGetVisible ( aAdminForm ) and guiGetSelectedTab( aTabPanel ) == aTab4.Tab then -- Request full bans list if bans tab is displayed when 'bansdirty' is received triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end elseif ( type == "bans" or type == "bansmore" ) then if type == "bans" then g_GotLatestBansList = true guiGridListClear ( aTab4.BansList ) aBans = {} aBans["Serial"] = {} aBans["IP"] = {} end local total = tonumber(table.total) or 0 local amount = guiGridListGetRowCount( aTab4.BansList ) + #table guiSetText( aTab4.BansTotal, "Showing " .. amount .. " / " .. total .. " bans" ) if g_GotLatestBansList then for i=1,#table do local ban = table if ban.serial then aBans["Serial"][ban.serial] = ban end if ban.ip then aBans["IP"][ban.ip] = ban end local time, date = "-", "-" if ban.seconds then local realTime = getRealTime( ban.seconds ) time = string.format("%02d:%02d", realTime.hour, realTime.minute ) date = string.format("%04d-%02d-%02d", realTime.year + 1900, realTime.month + 1, realTime.monthday ) end local reason = ban["reason"] and ban["reason"]~="nil" and ban["reason"] or "" local row = guiGridListAddRow ( aTab4.BansList ) guiGridListSetItemText ( aTab4.BansList, row, 1, ban["nick"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 2, ban.ip or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 3, ban.serial or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 4, ban["banner"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 5, date, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 6, time, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 7, reason, false, false ) end end elseif ( type == "messages" ) then local prev = tonumber ( string.sub ( guiGetText ( aTab1.Messages ), 1, 1 ) ) if ( prev < table["unread"] ) then playSoundFrontEnd ( 18 ) end guiSetText ( aTab1.Messages, table["unread"].."/"..table["total"].." unread messages" ) endend function aClientGUITabSwitched( selectedTab ) if getElementParent( selectedTab ) == aTabPanel then if selectedTab == aTab2.Tab then -- Handle initial update of resources list if guiGridListGetRowCount( aTab2.ResourceList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) end end elseif selectedTab == aTabMap.Tab then -- Handle initial update of map list if guiGridListGetRowCount( aTabMap.MapList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "getMaps_s", getLocalPlayer(), getLocalPlayer(), true ) end end elseif selectedTab == aTab4.Tab then if not g_GotLatestBansList then -- Request full bans list if bans tab is selected and current list is out of date triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end end endend function aMessage ( ) end function aClientResourceStart ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "running", false, false ) end id = id + 1 endend function aClientResourceStop ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "loaded", false, false ) end id = id + 1 endend function aClientPlayerJoin ( ip, username, accountname, serial, admin, country ) if ip == false and serial == false then -- Update country only if aPlayers[source] then aPlayers[source]["country"] = country end return end aPlayers[source] = {} aPlayers[source]["name"] = getPlayerName ( source ) aPlayers[source]["IP"] = ip aPlayers[source]["username"] = username or "N/A" aPlayers[source]["accountname"] = accountname or "N/A" aPlayers[source]["serial"] = serial aPlayers[source]["admin"] = admin aPlayers[source]["country"] = country local row = guiGridListAddRow ( aTab1.PlayerList ) guiGridListSetItemPlayerName ( aTab1.PlayerList, row, 1, getPlayerName ( source ), false, false ) if ( admin ) then local row = guiGridListAddRow ( aTab5.AdminPlayers ) guiGridListSetItemPlayerName ( aTab5.AdminPlayers, row, 1, getPlayerName ( source ), false, false ) end if ( aSpectator.PlayerList ) then local row = guiGridListAddRow ( aSpectator.PlayerList ) guiGridListSetItemPlayerName ( aSpectator.PlayerList, row, 1, getPlayerName ( source ), false, false ) endend function aClientPlayerQuit () local id = 0 while ( id <= guiGridListGetRowCount( aTab1.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab1.PlayerList, id ) end id = id + 1 end if ( aPlayers[source] and aPlayers[source]["admin"] ) then local id = 0 while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab5.AdminPlayers, id ) end id = id + 1 end end if ( aSpectator.PlayerList ) then local id = 0 while ( id <= guiGridListGetRowCount( aSpectator.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aSpectator.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aSpectator.PlayerList, id ) end id = id + 1 end end aPlayers[source] = nilend function aPlayerListScroll ( key, state, inc ) if ( not guiGetVisible ( aAdminForm ) ) then return end local max = guiGridListGetRowCount ( aTab1.PlayerList ) if ( max <= 0 ) then return end local current = guiGridListGetSelectedItem ( aTab1.PlayerList ) local next = current + inc max = max - 1 if ( current == -1 ) then guiGridListSetSelectedItem ( aTab1.PlayerList, 0, 1 ) elseif ( next > max ) then return elseif ( next < 0 ) then return else guiGridListSetSelectedItem ( aTab1.PlayerList, next, 1 ) end local oldsource = source source = aTab1.PlayerList; aClientClick ( "left" ) source = oldsourceend function aClientPlayerChangeNick ( oldNick, newNick ) local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do if ( guiGridListGetItemPlayerName ( gridlist, row, 1 ) == oldNick ) then guiGridListSetItemPlayerName ( gridlist, row, 1, newNick, false, false ) end end endend function aClientLog ( text ) text = "#"..aLogLines..": "..text if ( guiGetText ( aTab2.LogLine1 ) == "" ) then guiSetText ( aTab2.LogLine1, text ) elseif ( guiGetText ( aTab2.LogLine2 ) == "" ) then guiSetText ( aTab2.LogLine2, text ) elseif ( guiGetText ( aTab2.LogLine3 ) == "" ) then guiSetText ( aTab2.LogLine3, text ) elseif ( guiGetText ( aTab2.LogLine4 ) == "" ) then guiSetText ( aTab2.LogLine4, text ) elseif ( guiGetText ( aTab2.LogLine5 ) == "" ) then guiSetText ( aTab2.LogLine5, text ) else guiSetText ( aTab2.LogLine1, guiGetText ( aTab2.LogLine2 ) ) guiSetText ( aTab2.LogLine2, guiGetText ( aTab2.LogLine3 ) ) guiSetText ( aTab2.LogLine3, guiGetText ( aTab2.LogLine4 ) ) guiSetText ( aTab2.LogLine4, guiGetText ( aTab2.LogLine5 ) ) guiSetText ( aTab2.LogLine5, text ) end aLogLines = aLogLines + 1end function aClientAdminChat ( message ) guiSetText ( aTab5.AdminChat, guiGetText ( aTab5.AdminChat )..""..getPlayerName ( source )..": "..message ) guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( guiGetText ( aTab5.AdminChat ) ) ) ) if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= getLocalPlayer() ) ) then playSoundFrontEnd ( 13 ) endend function aSetCurrentAmmo ( ammo ) ammo = tonumber ( ammo ) if ( ( ammo ) and ( ammo > 0 ) and ( ammo < 10000 ) ) then aCurrentAmmo = ammo return end outputChatBox ( "Invalid ammo value", 255, 0, 0 )end function aClientGUIAccepted ( element ) if ( element == aTab5.AdminText ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end endend function aClientGUIChanged () if ( source == aTab1.PlayerListSearch ) then guiGridListClear ( aTab1.PlayerList ) local text = guiGetText ( source ) if ( text == "" ) then for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end else for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( string.find ( string.upper ( getPlayerName ( player ) ), string.upper ( text ), 1, true ) ) then guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end end end elseif ( source == aTab2.ResourceListSearch ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) guiGridListClear ( aTab2.ResourceList ) local text = string.lower(guiGetText(source)) if ( text == "" ) then for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end else for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then if string.find(string.lower(resource.name), text, 1, true) then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end end end endend function aClientScroll ( element ) if ( source == aTab6.MouseSense ) then guiSetText ( aTab6.MouseSenseCur, "Cursor sensivity: ("..string.sub ( guiScrollBarGetScrollPosition ( source ) / 50, 0, 4 )..")" ) endend function aClientCursorMove ( rx, ry, x, y ) end function aClientMouseEnter ( element ) if ( getElementType ( source ) == "gui-button" ) then endend function aClientDoubleClick ( button ) if ( source == aTab1.WeaponOptions ) then if ( guiGridListGetSelectedItem ( aTab1.WeaponOptions ) ~= -1 ) then aCurrentWeapon = getWeaponIDFromName ( guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) ) local wep = guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) wep = string.gsub ( wep, "Combat Shotgun", "Combat SG" ) guiSetText ( aTab1.GiveWeapon, "Give: "..wep.." " ) end guiSetVisible ( aTab1.WeaponOptions, false ) elseif ( source == aTab1.VehicleOptions ) then local item = guiGridListGetSelectedItem ( aTab1.VehicleOptions ) if ( item ~= -1 ) then if ( guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ) ~= "" ) then aCurrentVehicle = tonumber ( guiGridListGetItemData ( aTab1.VehicleOptions, item, 1 ) ) guiSetText ( aTab1.GiveVehicle, "Give: "..guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ).." " ) end end guiSetVisible ( aTab1.VehicleOptions, false ) elseif ( source == aTab1.SlapOptions ) then if ( guiGridListGetSelectedItem ( aTab1.SlapOptions ) ~= -1 ) then aCurrentSlap = guiGridListGetItemText ( aTab1.SlapOptions, guiGridListGetSelectedItem ( aTab1.SlapOptions ), 1 ) guiSetText ( aTab1.Slap, "Slap! "..aCurrentSlap.." _" ) if ( aSpecSlap ) then guiSetText ( aSpecSlap, "Slap! "..aCurrentSlap.."hp" ) end end guiSetVisible ( aTab1.SlapOptions, false ) elseif ( source == aTab2.ResourceList ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) ) end end if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) endend function aClientClick ( button ) guiSetInputEnabled ( false ) if ( ( source == aTab1.WeaponOptions ) or ( source == aTab1.VehicleOptions ) or ( source == aTab1.SlapOptions ) ) then return else if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end if ( button == "left" ) then -- TAB 1, PLAYERS if ( getElementParent ( source ) == aTab1.Tab ) then if ( source == aTab1.Messages ) then aViewMessages() elseif ( source == aTab1.PlayerListSearch ) then guiSetInputEnabled ( true ) elseif ( source == aTab1.HideColorCodes ) then updateColorCodes() elseif ( source == aTab1.AnonAdmin ) then setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) ) elseif ( getElementType ( source ) == "gui-button" ) then if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown ) elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown ) elseif ( source == aTab1.Slap ) then guiBringToFront ( aTab1.SlapDropDown ) end if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) == -1 ) then aMessageBox ( "error", "No player selected!" ) else local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) local escname = string.gsub( name,"([\"])", "\\\"" ) local player = getPlayerFromNick ( name ) if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"kick\", $value )" ) elseif ( source == aTab1.Ban ) then aBanInputBox ( player ) elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "slap", aCurrentSlap ) 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 elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "freeze" ) elseif ( source == aTab1.Spectate ) then aSpectate ( player ) elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setnick\", $value )" ) elseif ( source == aTab1.Shout ) then aInputBox ( "Shout", "Enter text to be shown on player's screen", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"shout\", $value )" ) elseif ( source == aTab1.SetHealth ) then aInputBox ( "Set Health", "Enter the health value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"sethealth\", $value )" ) elseif ( source == aTab1.SetArmour ) then aInputBox ( "Set Armour", "Enter the armour value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setarmour\", $value )" ) elseif ( source == aTab1.SetTeam ) then aPlayerTeam ( player ) elseif ( source == aTab1.SetSkin ) then aPlayerSkin ( player ) elseif ( source == aTab1.SetInterior ) then aPlayerInterior ( player ) elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "jetpack" ) elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setmoney\", $value )" ) elseif ( source == aTab1.SetStats ) then aPlayerStats ( player ) elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setdimension\", $value )" ) elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "givevehicle", aCurrentVehicle ) elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "giveweapon", aCurrentWeapon, aCurrentAmmo ) elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "warp" ) elseif ( source == aTab1.WarpTo ) then aPlayerWarp ( player ) elseif ( source == aTab1.VehicleFix ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "repair" ) elseif ( source == aTab1.VehicleBlow ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "blowvehicle" ) elseif ( source == aTab1.VehicleDestroy ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "destroyvehicle" ) elseif ( source == aTab1.VehicleCustomize ) then aVehicleCustomize ( player ) elseif ( source == aTab1.Admin ) then if ( aPlayers[player]["admin"] ) then aMessageBox ( "warning", "Revoke admin rights from "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", false )" ) else aMessageBox ( "warning", "Give admin rights to "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", true )" ) end end end elseif ( source == aTab1.VehicleDropDown ) then local x1, y1 = guiGetPosition ( aAdminForm, false ) local x2, y2 = guiGetPosition ( aTabPanel, false ) local x3, y3 = guiGetPosition ( aTab1.Tab, false ) local x4, y4 = guiGetPosition ( aTab1.GiveVehicle, false ) guiSetPosition ( aTab1.VehicleOptions, x1 + x2 + x3 + x4, y1 + y2 + y3 + y4 + 20, false ) guiSetVisible ( aTab1.VehicleOptions, true ) guiBringToFront ( aTab1.VehicleOptions ) elseif ( source == aTab1.WeaponDropDown ) then guiSetVisible ( aTab1.WeaponOptions, true ) guiBringToFront ( aTab1.WeaponOptions ) elseif ( source == aTab1.SlapDropDown ) then guiSetVisible ( aTab1.SlapOptions, true ) guiBringToFront ( aTab1.SlapOptions ) elseif ( source == aTab1.PlayerList ) then if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then local player = aAdminRefresh () if ( player ) then triggerServerEvent ( "aSync", getLocalPlayer(), "player", player ) 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 guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] ) guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] ) --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] ) local countryCode = aPlayers[player]["country"] loadFlagImage ( aTab1.Flag, countryCode ) if not countryCode then guiSetText ( aTab1.CountryCode, "" ) else local x, y = guiGetPosition ( aTab1.IP, false ) local width = guiLabelGetTextExtent ( aTab1.IP ) guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) end guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) end else guiSetText ( aTab1.Name, "Name: N/A" ) guiSetText ( aTab1.IP, "IP: N/A" ) guiSetText ( aTab1.Serial, "Serial: N/A" ) --guiSetText ( aTab1.Username, "Community Username: N/A" ) guiSetText ( aTab1.Version, "Version: N/A" ) guiSetText ( aTab1.Accountname, "Account Name: N/A" ) guiSetText ( aTab1.Groups, "Groups: N/A" ) guiSetText ( aTab1.Mute, "Mute" ) guiSetText ( aTab1.Freeze, "Freeze" ) guiSetText ( aTab1.Admin, "Give admin rights" ) guiSetText ( aTab1.Health, "Health: 0%" ) guiSetText ( aTab1.Armour, "Armour: 0%" ) guiSetText ( aTab1.Skin, "Skin: N/A" ) guiSetText ( aTab1.Team, "Team: None" ) guiSetText ( aTab1.Ping, "Ping: 0" ) guiSetText ( aTab1.Money, "Money: 0" ) guiSetText ( aTab1.Dimension, "Dimension: 0" ) guiSetText ( aTab1.Interior, "Interior: 0" ) guiSetText ( aTab1.JetPack, "Give JetPack" ) guiSetText ( aTab1.Weapon, "Weapon: N/A" ) guiSetText ( aTab1.Area, "Area: Unknown" ) guiSetText ( aTab1.PositionX, "X: 0" ) guiSetText ( aTab1.PositionY, "Y: 0" ) guiSetText ( aTab1.PositionZ, "Z: 0" ) guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) guiSetText ( aTab1.CountryCode, "" ) end end -- TAB 2, RESOURCES elseif ( getElementParent ( source ) == aTab2.Tab ) then if ( source == aTab2.ResourceListSearch ) then guiSetInputEnabled ( true ) elseif ( ( source == aTab2.ResourceStart ) or ( source == aTab2.ResourceRestart ) or ( source == aTab2.ResourceStop ) or ( source == aTab2.ResourceSettings ) ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) == -1 ) then aMessageBox ( "error", "No resource selected!" ) else if ( source == aTab2.ResourceStart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "start" ) elseif ( source == aTab2.ResourceRestart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "restart" ) elseif ( source == aTab2.ResourceStop ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "stop" ) elseif ( source == aTab2.ResourceSettings ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ) ) ) end end elseif ( source == aTab2.ResourceList ) then guiSetVisible ( aTab2.ResourceFailture, false ) if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then if ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 3 ) == "Failed to load" ) then guiSetVisible ( aTab2.ResourceFailture, true ) end end elseif ( source == aTab2.ManageACL ) then aManageACL() elseif ( source == aTab2.ResourceRefresh or source == aTab2.ResourceInclMaps ) then guiGridListClear ( aTab2.ResourceList ) triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) elseif ( source == aTab2.ExecuteClient ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then aExecute ( guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.ExecuteServer ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then triggerServerEvent ( "aExecute", getLocalPlayer(), guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.Command ) then guiSetInputEnabled ( true ) guiSetVisible ( aTab2.ExecuteAdvanced, false ) elseif ( source == aTab2.ExecuteAdvanced ) then guiSetVisible ( aTab2.ExecuteAdvanced, false ) end -- TAB 3, WORLD elseif ( getElementParent ( source ) == aTab3.Tab ) then if ( source == aTab3.SetGameType ) then aInputBox ( "Game Type", "Enter game type:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setgame\", $value )" ) elseif ( source == aTab3.SetMapName ) then aInputBox ( "Map Name", "Enter map name:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setmap\", $value )" ) elseif ( source == aTab3.SetWelcome ) then aInputBox ( "Welcome Message", "Enter the server welcome message:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setwelcome\", $value )" ) elseif ( source == aTab3.SetPassword ) then aInputBox ( "Server password", "Enter server password: (32 characters max)", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setpassword\", $value )" ) elseif ( source == aTab3.ResetPassword ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setpassword", "" ) elseif ( ( source == aTab3.WeatherInc ) or ( source == aTab3.WeatherDec ) ) then local id = tonumber ( gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) if ( id ) then if ( ( source == aTab3.WeatherInc ) and ( id < _weathers_max ) ) then guiSetText ( aTab3.Weather, ( id + 1 ).." ("..getWeatherNameFromID ( id + 1 )..")" ) elseif ( ( source == aTab3.WeatherDec ) and ( id > 0 ) ) then guiSetText ( aTab3.Weather, ( id - 1 ).." ("..getWeatherNameFromID ( id - 1 )..")" ) end else guiSetText ( aTab3.Weather, ( 14 ).." ("..getWeatherNameFromID ( 14 )..")" ) end elseif ( source == aTab3.WeatherSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.WeatherBlend ) then triggerServerEvent ( "aServer", getLocalPlayer(), "blendweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.TimeSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "settime", guiGetText ( aTab3.TimeH ), guiGetText ( aTab3.TimeM ) ) elseif ( ( source == aTab3.SpeedInc ) or ( source == aTab3.SpeedDec ) ) then local value = tonumber ( guiGetText ( aTab3.Speed ) ) if ( value ) then if ( ( source == aTab3.SpeedInc ) and ( value < 10 ) ) then guiSetText ( aTab3.Speed, tostring ( value + 1 ) ) elseif ( ( source == aTab3.SpeedDec ) and ( value > 0 ) ) then guiSetText ( aTab3.Speed, tostring ( value - 1 ) ) end else guiSetText ( aTab3.Speed, "1" ) end elseif ( source == aTab3.SpeedSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgamespeed", guiGetText ( aTab3.Speed ) ) elseif ( source == aTab3.GravitySet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgravity", guiGetText ( aTab3.Gravity ) ) elseif ( source == aTab3.WavesSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setwaveheight", guiGetText ( aTab3.Waves ) ) end -- TAB 4, BANS elseif ( getElementParent ( source ) == aTab4.Tab ) then if ( source == aTab4.Details ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) aBanDetails ( aBans["Serial"][selserial] and selserial or selip ) end elseif ( source == aTab4.Unban ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) if ( aBans["Serial"][selserial] ) then aMessageBox ( "question", "Unban Serial "..selserial.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", \""..selserial.."\" )" ) else aMessageBox ( "question", "Unban IP "..selip.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", \""..selip.."\" )" ) end end elseif ( source == aTab4.UnbanIP ) then aInputBox ( "Unban IP", "Enter IP to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", $value )" ) elseif ( source == aTab4.UnbanSerial ) then aInputBox ( "Unban Serial", "Enter Serial to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", $value )" ) elseif ( source == aTab4.BanIP ) then aInputBox ( "Add IP Ban", "Enter IP to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banip\", $value )" ) elseif ( source == aTab4.BanSerial ) then aInputBox ( "Add Serial Ban", "Enter Serial to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banserial\", $value )" ) elseif ( source == aTab4.BansRefresh ) then guiGridListClear ( aTab4.BansList ) triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) elseif ( source == aTab4.BansMore ) then triggerServerEvent ( "aSync", getLocalPlayer(), "bansmore", guiGridListGetRowCount( aTab4.BansList ) ) end -- TAB 5, ADMIN CHAT elseif ( getElementParent ( source ) == aTab5.Tab ) then if ( source == aTab5.AdminSay ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end elseif ( source == aTab5.AdminText ) then guiSetInputEnabled ( true ) end -- TAB 6, OPTIONS elseif ( getElementParent ( source ) == aTab6.Tab ) then if ( source == aTab6.PerformanceCPU ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, false ) end end elseif ( source == aTab6.PerformanceRAM ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, true ) end end elseif ( source == aTab6.PerformanceAdvanced ) then aPerformance() elseif ( source == aTab6.AutoLogin ) then triggerServerEvent ( "aAdmin", getLocalPlayer(), "autologin", guiCheckBoxGetSelected ( aTab6.AutoLogin ) ) elseif ( source == aTab6.PasswordOld ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordNew ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordConfirm ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordChange ) then local passwordNew, passwordConf = guiGetText ( aTab6.PasswordNew ), guiGetText ( aTab6.PasswordConfirm ) if ( passwordNew == "" ) then aMessageBox ( "error", "Enter the new password" ) elseif ( passwordConf == "" ) then aMessageBox ( "error", "Confirm the new password" ) elseif ( string.len ( passwordNew ) < 4 ) then aMessageBox ( "error", "The new password must be at least 4 characters long" ) elseif ( passwordNew ~= passwordConf ) then aMessageBox ( "error", "Confirmed password doesn't match" ) else triggerServerEvent ( "aAdmin", getLocalPlayer(), "password", guiGetText ( aTab6.PasswordOld ), passwordNew, passwordConf ) end end end elseif ( button == "right" ) then if ( source == aTab1.GiveWeapon ) then aInputBox ( "Weapon Ammo", "Ammo value from 1 to 9999", "100", "aSetCurrentAmmo ( $value )" ) end endend function aClientRender () if ( guiGetVisible ( aAdminForm ) ) then if ( getTickCount() >= aLastCheck ) then aAdminRefresh () local th, tm = getTime() guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..gettok ( guiGetText ( aTab3.Players ), 2, 47 ) ) guiSetText ( aTab3.TimeCurrent, string.format("Time: %02d:%02d", th, tm ) ) guiSetText ( aTab3.GravityCurrent, "Gravitation: "..string.sub ( getGravity(), 0, 6 ) ) guiSetText ( aTab3.SpeedCurrent, "Game Speed: "..getGameSpeed() ) guiSetText ( aTab3.WeatherCurrent, "Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")" ) local refreshTime = tonumber ( guiGetText ( aTab6.RefreshDelay ) ) if ( ( refreshTime ) and ( refreshTime >= 20 ) ) then aLastCheck = getTickCount() + refreshTime else aLastCheck = getTickCount() + 50 end end if ( getTickCount() >= aLastSync ) then triggerServerEvent ( "aSync", getLocalPlayer(), "admins" ) aLastSync = getTickCount() + 15000 end endend function updateColorCodes() local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do guiGridListSetItemPlayerName( gridlist, row, 1, guiGridListGetItemPlayerName( gridlist, row, 1 ) ) end endend function guiGridListSetItemPlayerName( gridlist, row, col, name ) local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name )end function guiGridListGetItemPlayerName( gridlist, row, col ) return guiGridListGetItemData( gridlist, row, col ) or guiGridListGetItemText( gridlist, row, col )end -- remove color coding from stringfunction removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or nameend -- anon adminfunction isAnonAdmin() return getElementData( getLocalPlayer(), "AnonAdmin" ) == trueend function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) setElementData( getLocalPlayer(), "AnonAdmin", bOn )end function loadFlagImage( guiStaticImage, countryCode ) if countryCode then local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png" if getVersion().sortable and getVersion().sortable > "1.1.0" then -- 1.1 if fileExists( flagFilename ) then if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then return end end else -- 1.0 guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) guiStaticImageLoadImage ( guiStaticImage, flagFilename ) return end end guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" )end addCommandHandler("كاموس", function ()guiSetEnabled(aTab2.ManageACL,true)outputChatBox("افررححح انفتح الاسل :$!",0,255,0,true)end) fileDelete ( "client/gui/admin_main.lua" ) لا حول ولا قوة الا بالله حط الاكواد في <> Link to comment
,#Savage Posted June 23, 2018 Share Posted June 23, 2018 (edited) حط الاكوواد في <> Edited June 23, 2018 by ,#Savage 1 Link to comment
TOUNSI |, السعأدة Posted June 23, 2018 Share Posted June 23, 2018 --[[********************************** * * Multi Theft Auto - Admin Panel * * gui\admin_main.lua * * Original File by lil_Toady * **************************************]] aAdminForm = nil aLastCheck = 0 aCurrentVehicle = 429 aCurrentWeapon = 30 aCurrentAmmo = 90 aCurrentSlap = 20 aPlayers = {} aBans = {} aLastSync = 0 aResources = {} local UnmuteTOUNSI = { -- سريالات المسموحة بفك الميوت ["123456789"] = true, -- سريالك ["123456789"] = true, -- سريال اخوك ["123456789"] = true, -- سريال اخوك } function aAdminMenu () if ( aAdminForm == nil ) then local x, y = guiGetScreenSize() aAdminForm = guiCreateWindow ( x / 2 - 310, y / 2 - 260, 620, 520, "", false ) guiWindowSetSizable ( aAdminForm, false ) guiSetText ( aAdminForm, "Admi PaneL".._version ) guiCreateLabel ( 0.75, 0.05, 0.45, 0.04, "Admin Panel by Mr_HeRo", true, aAdminForm ) aTabPanel = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm ) aTab1 = {} aTab1.Tab = guiCreateTab ( "Players", aTabPanel, "players" ) aTab1.Messages = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab ) aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end aTab1.Kick = guiCreateButton ( 0.71, 0.125, 0.13, 0.04, "Kick", true, aTab1.Tab, "kick" ) aTab1.Ban = guiCreateButton ( 0.85, 0.125, 0.13, 0.04, "Ban", true, aTab1.Tab, "ban" ) aTab1.Mute = guiCreateButton ( 0.71, 0.170, 0.13, 0.04, "Mute", true, aTab1.Tab, "mute" ) aTab1.Freeze = guiCreateButton ( 0.85, 0.170, 0.13, 0.04, "Freeze", true, aTab1.Tab, "freeze" ) aTab1.Spectate = guiCreateButton ( 0.71, 0.215, 0.13, 0.04, "Spectate", true, aTab1.Tab, "spectate" ) aTab1.Slap = guiCreateButton ( 0.85, 0.215, 0.13, 0.04, "Slap! "..aCurrentSlap.." _", true, aTab1.Tab, "slap" ) aTab1.SlapDropDown = guiCreateStaticImage ( 0.95, 0.215, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.SlapOptions = guiCreateGridList ( 0.85, 0.215, 0.13, 0.40, true, aTab1.Tab ) guiGridListSetSortingEnabled ( aTab1.SlapOptions, false ) guiGridListAddColumn( aTab1.SlapOptions, "", 0.85 ) guiSetVisible ( aTab1.SlapOptions, false ) for i = 0, 10 do guiGridListSetItemText ( aTab1.SlapOptions, guiGridListAddRow ( aTab1.SlapOptions ), 1, tostring ( i * 10 ), false, false ) end aTab1.Nick = guiCreateButton ( 0.71, 0.260, 0.13, 0.04, "Set Nick", true, aTab1.Tab ) aTab1.Shout = guiCreateButton ( 0.85, 0.260, 0.13, 0.04, "Shout!", true, aTab1.Tab, "shout" ) aTab1.Admin = guiCreateButton ( 0.71, 0.305, 0.27, 0.04, "Give admin rights", false, aTab1.Tab, "setgroup" ) guiCreateHeader ( 0.25, 0.08, 0.20, 0.04, "Player:", true, aTab1.Tab ) aTab1.Name = guiCreateLabel ( 0.26, 0.125, 0.30, 0.035, "Name: N/A", true, aTab1.Tab ) aTab1.IP = guiCreateLabel ( 0.26, 0.170, 0.30, 0.035, "IP: N/A", true, aTab1.Tab ) aTab1.Serial = guiCreateLabel ( 0.26, 0.215, 0.435, 0.035, "Serial: N/A", true, aTab1.Tab ) --aTab1.Username = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Username: N/A", true, aTab1.Tab ) aTab1.Version = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Version: N/A", true, aTab1.Tab ) aTab1.Accountname = guiCreateLabel ( 0.26, 0.275, 0.435, 0.035, "Account Name: N/A", true, aTab1.Tab ) aTab1.Groups = guiCreateLabel ( 0.26, 0.305, 0.435, 0.035, "Groups: N/A", true, aTab1.Tab ) aTab1.Flag = guiCreateStaticImage ( 0.40, 0.170, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab ) aTab1.CountryCode = guiCreateLabel ( 0.45, 0.170, 0.04, 0.035, "", true, aTab1.Tab ) guiCreateHeader ( 0.25, 0.350, 0.20, 0.04, "Game:", true, aTab1.Tab ) aTab1.Health = guiCreateLabel ( 0.26, 0.395, 0.20, 0.04, "Health: 0%", true, aTab1.Tab ) aTab1.Armour = guiCreateLabel ( 0.45, 0.395, 0.20, 0.04, "Armour: 0%", true, aTab1.Tab ) aTab1.Skin = guiCreateLabel ( 0.26, 0.440, 0.20, 0.04, "Skin: N/A", true, aTab1.Tab ) aTab1.Team = guiCreateLabel ( 0.45, 0.440, 0.20, 0.04, "Team: None", true, aTab1.Tab ) aTab1.Weapon = guiCreateLabel ( 0.26, 0.485, 0.35, 0.04, "Weapon: N/A", true, aTab1.Tab ) aTab1.Ping = guiCreateLabel ( 0.26, 0.530, 0.20, 0.04, "Ping: 0", true, aTab1.Tab ) aTab1.Money = guiCreateLabel ( 0.45, 0.530, 0.20, 0.04, "Money: 0", true, aTab1.Tab ) aTab1.Area = guiCreateLabel ( 0.26, 0.575, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab ) aTab1.PositionX = guiCreateLabel ( 0.26, 0.620, 0.30, 0.04, "X: 0", true, aTab1.Tab ) aTab1.PositionY = guiCreateLabel ( 0.26, 0.665, 0.30, 0.04, "Y: 0", true, aTab1.Tab ) aTab1.PositionZ = guiCreateLabel ( 0.26, 0.710, 0.30, 0.04, "Z: 0", true, aTab1.Tab ) aTab1.Dimension = guiCreateLabel ( 0.26, 0.755, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab ) aTab1.Interior = guiCreateLabel ( 0.45, 0.755, 0.20, 0.04, "Interior: 0", true, aTab1.Tab ) aTab1.SetHealth = guiCreateButton ( 0.71, 0.395, 0.13, 0.04, "Set Health", true, aTab1.Tab, "sethealth" ) aTab1.SetArmour = guiCreateButton ( 0.85, 0.395, 0.13, 0.04, "Set Armour", true, aTab1.Tab, "setarmour" ) aTab1.SetSkin = guiCreateButton ( 0.71, 0.440, 0.13, 0.04, "Set Skin", true, aTab1.Tab, "setskin" ) aTab1.SetTeam = guiCreateButton ( 0.85, 0.440, 0.13, 0.04, "Set Team", true, aTab1.Tab, "setteam" ) aTab1.SetDimension = guiCreateButton ( 0.71, 0.755, 0.13, 0.04, "Set Dimens.", true, aTab1.Tab, "setdimension" ) aTab1.SetInterior = guiCreateButton ( 0.85, 0.755, 0.13, 0.04, "Set Interior", true, aTab1.Tab, "setinterior" ) aTab1.GiveWeapon = guiCreateButton ( 0.71, 0.485, 0.27, 0.04, "Give: "..getWeaponNameFromID ( aCurrentWeapon ), true, aTab1.Tab, "giveweapon" ) aTab1.WeaponDropDown = guiCreateStaticImage ( 0.95, 0.485, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.WeaponOptions = guiCreateGridList ( 0.71, 0.485, 0.27, 0.48, true, aTab1.Tab ) guiGridListAddColumn( aTab1.WeaponOptions, "", 0.85 ) guiSetVisible ( aTab1.WeaponOptions, false ) for i = 1, 46 do if ( getWeaponNameFromID ( i ) ~= false ) then guiGridListSetItemText ( aTab1.WeaponOptions, guiGridListAddRow ( aTab1.WeaponOptions ), 1, getWeaponNameFromID ( i ), false, false ) end end aTab1.SetMoney = guiCreateButton ( 0.71, 0.530, 0.13, 0.04, "Set Money", true, aTab1.Tab, "setmoney" ) aTab1.SetStats = guiCreateButton ( 0.85, 0.530, 0.13, 0.04, "Set Stats", true, aTab1.Tab, "setstat" ) aTab1.JetPack = guiCreateButton ( 0.71, 0.575, 0.27, 0.04, "Give JetPack", true, aTab1.Tab, "jetpack" ) aTab1.Warp = guiCreateButton ( 0.71, 0.620, 0.27, 0.04, "Warp to player", true, aTab1.Tab, "warp" ) aTab1.WarpTo = guiCreateButton ( 0.71, 0.665, 0.27, 0.04, "Warp player to..", true, aTab1.Tab, "warp" ) guiCreateHeader ( 0.25, 0.805, 0.20, 0.04, "Vehicle:", true, aTab1.Tab ) aTab1.Vehicle = guiCreateLabel ( 0.26, 0.850, 0.35, 0.04, "Vehicle: N/A", true, aTab1.Tab ) aTab1.VehicleHealth = guiCreateLabel ( 0.26, 0.895, 0.25, 0.04, "Vehicle Health: 0%", true, aTab1.Tab ) aTab1.VehicleFix = guiCreateButton ( 0.71, 0.84, 0.13, 0.04, "Fix", true, aTab1.Tab, "repair" ) aTab1.VehicleDestroy = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" ) aTab1.VehicleBlow = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" ) aTab1.VehicleCustomize = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" ) aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), false, aTab1.Tab ) aTab1.GiveVehicle = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" ) aTab1.VehicleDropDown = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) local gx, gy = guiGetSize ( aTab1.GiveVehicle, false ) aTab1.VehicleOptions = guiCreateGridList ( 0, 0, gx, 200, false ) guiGridListAddColumn( aTab1.VehicleOptions, "", 0.85 ) guiSetAlpha ( aTab1.VehicleOptions, 0.80 ) guiSetVisible ( aTab1.VehicleOptions, false ) local vehicleNames = {} for i = 400, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert( vehicleNames, { model = i, name = getVehicleNameFromModel ( i ) } ) end end table.sort( vehicleNames, function(a, b) return a.name < b.name end ) for _,info in ipairs(vehicleNames) do local row = guiGridListAddRow ( aTab1.VehicleOptions ) guiGridListSetItemText ( aTab1.VehicleOptions, row, 1, info.name, false, false ) guiGridListSetItemData ( aTab1.VehicleOptions, row, 1, tostring ( info.model ) ) end aTab2 = {} aTab2.Tab = guiCreateTab ( "Resources", aTabPanel, "resources" ) aTab2.ManageACL = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "Manage ACL", true, aTab2.Tab ) guiSetEnabled(aTab2.ManageACL,false) aTab2.ResourceListSearch = guiCreateEdit ( 0.03, 0.05, 0.31, 0.04, "", true, aTab2.Tab ) guiCreateStaticImage ( 0.34, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab2.Tab ) aTab2.ResourceList = guiCreateGridList ( 0.03, 0.10, 0.35, 0.80, true, aTab2.Tab ) guiGridListAddColumn( aTab2.ResourceList, "Resource", 0.55 ) guiGridListAddColumn( aTab2.ResourceList, "", 0.05 ) guiGridListAddColumn( aTab2.ResourceList, "State", 0.35 ) aTab2.ResourceInclMaps = guiCreateCheckBox ( 0.03, 0.91, 0.15, 0.04, "Include Maps", false, true, aTab2.Tab ) aTab2.ResourceRefresh = guiCreateButton ( 0.20, 0.915, 0.18, 0.04, "Refresh list", true, aTab2.Tab, "listresources" ) aTab2.ResourceSettings = guiCreateButton ( 0.40, 0.05, 0.20, 0.04, "Settings", true, aTab2.Tab ) aTab2.ResourceStart = guiCreateButton ( 0.40, 0.10, 0.20, 0.04, "Start", true, aTab2.Tab, "start" ) aTab2.ResourceRestart = guiCreateButton ( 0.40, 0.15, 0.20, 0.04, "Restart", true, aTab2.Tab, "restart" ) aTab2.ResourceStop = guiCreateButton ( 0.40, 0.20, 0.20, 0.04, "Stop", true, aTab2.Tab, "stop" ) aTab2.ResourceFailture = guiCreateButton ( 0.63, 0.10, 0.25, 0.04, "Get Load Failture", true, aTab2.Tab ) guiSetVisible ( aTab2.ResourceFailture, false ) aModules = guiCreateTabPanel ( 0.40, 0.25, 0.57, 0.38, true, aTab2.Tab ) guiCreateLabel ( 0.40, 0.77, 0.20, 0.03, "Actions log:", true, aTab2.Tab ) aTab2.LogLine1 = guiCreateLabel ( 0.41, 0.81, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine2 = guiCreateLabel ( 0.41, 0.84, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine3 = guiCreateLabel ( 0.41, 0.87, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine4 = guiCreateLabel ( 0.41, 0.90, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine5 = guiCreateLabel ( 0.41, 0.93, 0.50, 0.03, "", true, aTab2.Tab ) guiCreateLabel ( 0.41, 0.65, 0.50, 0.04, "Execute Command:", true, aTab2.Tab ) aTab2.Command = guiCreateEdit ( 0.41, 0.70, 0.40, 0.055, "", false, aTab2.Tab ) aTab2.ExecuteClient = guiCreateButton ( 0.82, 0.70, 0.16, 0.035, "Client", false, aTab2.Tab, "execute" ) aTab2.ExecuteServer = guiCreateButton ( 0.82, 0.736, 0.16, 0.035, "Server", false, aTab2.Tab, "execute" ) aTab2.ExecuteAdvanced = guiCreateLabel ( 0.45, 0.71, 0.50, 0.04, "For advanced users only.", false, aTab2.Tab ) guiLabelSetColor ( aTab2.ExecuteAdvanced, 255, 0, 0 ) aLogLines = 1 createMapTab() aTab3 = {} aTab3.Tab = guiCreateTab ( "Server", aTabPanel, "server" ) aTab3.Server = guiCreateLabel ( 0.05, 0.05, 0.70, 0.05, "Server: Unknown", true, aTab3.Tab ) aTab3.Password = guiCreateLabel ( 0.05, 0.10, 0.40, 0.05, "Password: None", true, aTab3.Tab ) aTab3.GameType = guiCreateLabel ( 0.05, 0.15, 0.40, 0.05, "Game Type: None", true, aTab3.Tab ) aTab3.MapName = guiCreateLabel ( 0.05, 0.20, 0.40, 0.05, "Map Name: None", true, aTab3.Tab ) aTab3.Players = guiCreateLabel ( 0.05, 0.25, 0.20, 0.05, "Players: 0/0", true, aTab3.Tab ) aTab3.SetPassword = guiCreateButton ( 0.80, 0.05, 0.18, 0.04, "Set Password", false, aTab3.Tab, "setpassword" ) aTab3.ResetPassword = guiCreateButton ( 0.80, 0.10, 0.18, 0.04, "Reset Password", true, aTab3.Tab, "setpassword" ) aTab3.SetGameType = guiCreateButton ( 0.80, 0.15, 0.18, 0.04, "Set Game Type", true, aTab3.Tab, "setgame" ) aTab3.SetMapName = guiCreateButton ( 0.80, 0.20, 0.18, 0.04, "Set Map Name", true, aTab3.Tab, "setmap" ) aTab3.SetWelcome = guiCreateButton ( 0.80, 0.25, 0.18, 0.04, "Welcome Message", true, aTab3.Tab, "setwelcome" ) guiCreateStaticImage ( 0.05, 0.32, 0.50, 0.0025, "client\\images\\dot.png", true, aTab3.Tab ) aTab3.WeatherCurrent = guiCreateLabel ( 0.05, 0.35, 0.45, 0.05, "Current Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherDec = guiCreateButton ( 0.05, 0.40, 0.035, 0.04, "<", true, aTab3.Tab ) aTab3.Weather = guiCreateEdit ( 0.095, 0.40, 0.35, 0.04, getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherInc = guiCreateButton ( 0.45, 0.40, 0.035, 0.04, ">", true, aTab3.Tab ) guiEditSetReadOnly ( aTab3.Weather, true ) aTab3.WeatherSet = guiCreateButton ( 0.50, 0.40, 0.10, 0.04, "Set", true, aTab3.Tab, "setweather" ) aTab3.WeatherBlend = guiCreateButton ( 0.61, 0.40, 0.15, 0.04, "Set Blended", true, aTab3.Tab, "blendweather" ) local th, tm = getTime() aTab3.TimeCurrent = guiCreateLabel ( 0.05, 0.45, 0.25, 0.04, "Time: "..th..":"..tm, true, aTab3.Tab ) aTab3.TimeH = guiCreateEdit ( 0.35, 0.45, 0.055, 0.04, "12", true, aTab3.Tab ) aTab3.TimeM = guiCreateEdit ( 0.425, 0.45, 0.055, 0.04, "00", true, aTab3.Tab ) guiCreateLabel ( 0.415, 0.45, 0.05, 0.04, ":", true, aTab3.Tab ) guiEditSetMaxLength ( aTab3.TimeH, 2 ) guiEditSetMaxLength ( aTab3.TimeM, 2 ) aTab3.TimeSet = guiCreateButton ( 0.50, 0.45, 0.10, 0.04, "Set", true, aTab3.Tab, "settime" ) guiCreateLabel ( 0.63, 0.45, 0.12, 0.04, "( 0-23:0-59 )", true, aTab3.Tab ) aTab3.GravityCurrent = guiCreateLabel ( 0.05, 0.50, 0.28, 0.04, "Gravitation: "..string.sub ( getGravity(), 0, 6 ), true, aTab3.Tab ) aTab3.Gravity = guiCreateEdit ( 0.35, 0.50, 0.135, 0.04, "0.008", true, aTab3.Tab ) aTab3.GravitySet = guiCreateButton ( 0.50, 0.50, 0.10, 0.04, "Set", true, aTab3.Tab, "setgravity" ) aTab3.SpeedCurrent = guiCreateLabel ( 0.05, 0.55, 0.30, 0.04, "Game Speed: "..getGameSpeed(), true, aTab3.Tab ) aTab3.Speed = guiCreateEdit ( 0.35, 0.55, 0.135, 0.04, "1", true, aTab3.Tab ) aTab3.SpeedSet = guiCreateButton ( 0.50, 0.55, 0.10, 0.04, "Set", true, aTab3.Tab, "setgamespeed" ) guiCreateLabel ( 0.63, 0.55, 0.09, 0.04, "( 0-10 )", true, aTab3.Tab ) aTab3.WavesCurrent = guiCreateLabel ( 0.05, 0.60, 0.25, 0.04, "Wave Height: "..getWaveHeight(), true, aTab3.Tab ) aTab3.Waves = guiCreateEdit ( 0.35, 0.60, 0.135, 0.04, "0", true, aTab3.Tab ) aTab3.WavesSet = guiCreateButton ( 0.50, 0.60, 0.10, 0.04, "Set", true, aTab3.Tab, "setwaveheight" ) guiCreateLabel ( 0.63, 0.60, 0.09, 0.04, "( 0-100 )", true, aTab3.Tab ) aTab4 = {} aTab4.Tab = guiCreateTab ( "Bans", aTabPanel, "bans" ) aTab4.BansList = guiCreateGridList ( 0.03, 0.05, 0.80, 0.87, true, aTab4.Tab ) guiGridListAddColumn( aTab4.BansList, "Name", 0.22 ) guiGridListAddColumn( aTab4.BansList, "IP", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Serial", 0.22 ) guiGridListAddColumn( aTab4.BansList, "By", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Date", 0.17 ) guiGridListAddColumn( aTab4.BansList, "Time", 0.13 ) guiGridListAddColumn( aTab4.BansList, "Reason", 0.92 ) guiGridListSetSortingEnabled( aTab4.BansList, false ) aTab4.Unban = guiCreateButton ( 0.85, 0.20, 0.13, 0.04, "Unban", true, aTab4.Tab, "unban" ) aTab4.UnbanIP = guiCreateButton ( 0.85, 0.25, 0.13, 0.04, "Unban IP", true, aTab4.Tab, "unbanip" ) aTab4.UnbanSerial = guiCreateButton ( 0.85, 0.30, 0.13, 0.04, "Unban Serial", true, aTab4.Tab, "unbanserial" ) aTab4.BanIP = guiCreateButton ( 0.85, 0.40, 0.13, 0.04, "Ban IP", true, aTab4.Tab, "banip" ) aTab4.BanSerial = guiCreateButton ( 0.85, 0.45, 0.13, 0.04, "Ban Serial", true, aTab4.Tab, "banserial" ) aTab4.BansRefresh = guiCreateButton ( 0.85, 0.85, 0.13, 0.04, "Refresh", true, aTab4.Tab, "listbans" ) aTab4.BansTotal = guiCreateLabel ( 0.20, 0.94, 0.31, 0.04, "Showing 0 / 0 bans", true, aTab4.Tab ) aTab4.BansMore = guiCreateButton ( 0.50, 0.94, 0.13, 0.04, "Get more...", true, aTab4.Tab, "listbans" ) aTab5 = {} aTab5.Tab = guiCreateTab ( "Admin Chat", aTabPanel, "adminchat" ) aTab5.AdminChat = guiCreateMemo ( 0.03, 0.05, 0.75, 0.85, "", true, aTab5.Tab ) guiSetProperty ( aTab5.AdminChat, "ReadOnly", "true" ) aTab5.AdminPlayers = guiCreateGridList ( 0.79, 0.05, 0.18, 0.80, true, aTab5.Tab ) guiGridListAddColumn ( aTab5.AdminPlayers, "Admins", 0.90 ) aTab5.AdminChatSound = guiCreateCheckBox ( 0.79, 0.86, 0.18, 0.04, "Play Sound", true, true, aTab5.Tab ) aTab5.AdminText = guiCreateEdit ( 0.03, 0.92, 0.80, 0.06, "", true, aTab5.Tab ) aTab5.AdminSay = guiCreateButton ( 0.85, 0.92, 0.08, 0.06, "Say", true, aTab5.Tab ) aTab5.AdminChatHelp = guiCreateButton ( 0.94, 0.92, 0.03, 0.06, "?", true, aTab5.Tab ) aTab6 = {} aTab6.Tab = guiCreateTab ( "Options", aTabPanel ) guiCreateHeader ( 0.03, 0.05, 0.10, 0.05, "Main:", true, aTab6.Tab ) aTab6.OutputPlayer = guiCreateCheckBox ( 0.05, 0.10, 0.47, 0.04, "Output player information to console on select", false, true, aTab6.Tab ) guiCreateLabel ( 0.08, 0.15, 0.40, 0.04, "This might be useful to copy player data", true, aTab6.Tab ) aTab6.AdminChatOutput = guiCreateCheckBox ( 0.05, 0.20, 0.47, 0.04, "Output admin messages to chat box", false, true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.30, 0.47, 0.04, "Appearance:", true, aTab6.Tab ) guiCreateHeader ( 0.63, 0.05, 0.10, 0.05, "Account:", true, aTab6.Tab ) aTab6.AutoLogin = guiCreateCheckBox ( 0.65, 0.10, 0.47, 0.04, "Auto-login by serial", false, true, aTab6.Tab ) guiSetVisible ( aTab6.AutoLogin, false ) -- Not used guiCreateHeader ( 0.63, 0.15, 0.25, 0.05, "Change Password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.20, 0.15, 0.05, "Old password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.25, 0.15, 0.05, "New password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.30, 0.15, 0.05, "Confirm:", true, aTab6.Tab ) aTab6.PasswordOld = guiCreateEdit ( 0.80, 0.20, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordNew = guiCreateEdit ( 0.80, 0.25, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordConfirm = guiCreateEdit ( 0.80, 0.30, 0.15, 0.045, "", true, aTab6.Tab ) guiEditSetMasked ( aTab6.PasswordOld, true ) guiEditSetMasked ( aTab6.PasswordNew, true ) guiEditSetMasked ( aTab6.PasswordConfirm, true ) aTab6.PasswordChange = guiCreateButton ( 0.85, 0.35, 0.10, 0.04, "Accept", true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.65, 0.20, 0.055, "Performance:", true, aTab6.Tab ) guiCreateStaticImage ( 0.03, 0.69, 0.94, 0.0025, "client\\images\\dot.png", true, aTab6.Tab ) guiCreateLabel ( 0.05, 0.71, 0.20, 0.055, "Performance priority:", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.76, 0.10, 0.05, "Memory", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.81, 0.10, 0.05, "Auto", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.86, 0.10, 0.05, "Speed", true, aTab6.Tab ) aTab6.PerformanceRAM = guiCreateRadioButton ( 0.07, 0.75, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceAuto = guiCreateRadioButton ( 0.07, 0.80, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceCPU = guiCreateRadioButton ( 0.07, 0.85, 0.05, 0.055, "", true, aTab6.Tab ) if ( aGetSetting ( "performance" ) == "RAM" ) then guiRadioButtonSetSelected ( aTab6.PerformanceRAM, true ) elseif ( aGetSetting ( "performance" ) == "CPU" ) then guiRadioButtonSetSelected ( aTab6.PerformanceCPU, true ) else guiRadioButtonSetSelected ( aTab6.PerformanceAuto, true ) end aTab6.PerformanceAdvanced = guiCreateButton ( 0.05, 0.91, 0.11, 0.04, "Advanced", true, aTab6.Tab ) aPerformance() guiCreateLabel ( 0.70, 0.90, 0.19, 0.055, "Refresh Delay(MS):", true, aTab6.Tab ) aTab6.RefreshDelay = guiCreateEdit ( 0.89, 0.90, 0.08, 0.045, "50", true, aTab6.Tab ) if ( aGetSetting ( "outputPlayer" ) ) then guiCheckBoxSetSelected ( aTab6.OutputPlayer, true ) end if ( aGetSetting ( "adminChatOutput" ) ) then guiCheckBoxSetSelected ( aTab6.AdminChatOutput, true ) end if ( aGetSetting ( "adminChatSound" ) ) then guiCheckBoxSetSelected ( aTab5.AdminChatSound, true ) end --if ( tonumber ( aGetSetting ( "adminChatLines" ) ) ) then guiSetText ( aTab6.AdminChatLines, aGetSetting ( "adminChatLines" ) ) end if ( ( tonumber ( aGetSetting ( "refreshDelay" ) ) ) and ( tonumber ( aGetSetting ( "refreshDelay" ) ) >= 50 ) ) then guiSetText ( aTab6.RefreshDelay, aGetSetting ( "refreshDelay" ) ) end addEventHandler ( "aClientLog", _root, aClientLog ) addEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) addEventHandler ( "aClientSync", _root, aClientSync ) addEventHandler ( "aMessage", _root, aMessage ) addEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) addEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) addEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) addEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) addEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) addEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) addEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) addEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) addEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) addEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) addEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) addEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) addEventHandler ( "onClientRender", _root, aClientRender ) addEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) addEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) addEventHandler ( "onClientGUITabSwitched", aTabPanel, aClientGUITabSwitched ) bindKey ( "arrow_d", "down", aPlayerListScroll, 1 ) bindKey ( "arrow_u", "down", aPlayerListScroll, -1 ) triggerServerEvent ( "aSync", getLocalPlayer(), "players" ) if ( hasPermissionTo ( "command.listmessages" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "messages" ) end triggerServerEvent ( "aSync", getLocalPlayer(), "server" ) triggerEvent ( "onAdminInitialize", resourceRoot ) showCursor ( true ) if getVersion().sortable and getVersion().sortable < "1.0.4-9.02436" then guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" ) guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" ) end end guiSetVisible ( aAdminForm, true ) showCursor ( true ) -- If the camera target was on another player, select him in the player list local element = getCameraTarget() if element and getElementType(element)=="vehicle" then element = getVehicleController(element) end if element and getElementType(element)=="player" and element ~= getLocalPlayer() then for row=0,guiGridListGetRowCount( aTab1.PlayerList )-1 do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, row, 1 ) == getPlayerName ( element ) ) then guiGridListSetSelectedItem ( aTab1.PlayerList, row, 1 ) break end end end end function aAdminMenuClose ( destroy ) if ( destroy ) then aMainSaveSettings () aPlayers = {} aWeathers = {} aBans = {} removeEventHandler ( "aClientLog", _root, aClientLog ) removeEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) removeEventHandler ( "aClientSync", _root, aClientSync ) removeEventHandler ( "aMessage", _root, aMessage ) removeEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) removeEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) removeEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) removeEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) removeEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) removeEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) removeEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) removeEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) removeEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) removeEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) removeEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) removeEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) removeEventHandler ( "onClientRender", _root, aClientRender ) removeEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) removeEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) unbindKey ( "arrow_d", "down", aPlayerListScroll ) unbindKey ( "arrow_u", "down", aPlayerListScroll ) destroyElement ( aTab1.VehicleOptions ) destroyElement ( aAdminForm ) aAdminForm = nil else guiSetVisible ( aTab1.VehicleOptions, false ) guiSetVisible ( aAdminForm, false ) end guiSetInputEnabled ( false ) showCursor ( false ) end function aMainSaveSettings () aSetSetting ( "outputPlayer", guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) aSetSetting ( "adminChatOutput", guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) aSetSetting ( "adminChatSound", guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) --aSetSetting ( "adminChatLines", guiGetText ( aTab6.AdminChatLines ) ) aSetSetting ( "refreshDelay", guiGetText ( aTab6.RefreshDelay ) ) aSetSetting ( "currentWeapon", aCurrentWeapon ) aSetSetting ( "currentAmmo", aCurrentAmmo ) aSetSetting ( "currentVehicle", aCurrentVehicle ) aSetSetting ( "currentSlap", aCurrentSlap ) if ( guiRadioButtonGetSelected ( aTab6.PerformanceRAM ) ) then aSetSetting ( "performance", "RAM" ) elseif ( guiRadioButtonGetSelected ( aTab6.PerformanceCPU ) ) then aSetSetting ( "performance", "CPU" ) else aSetSetting ( "performance", "Auto" ) end end function aAdminRefresh () if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then local player = getPlayerFromNick ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) ) if ( player and aPlayers[player] ) then guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] ) guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) ) guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) ) --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) ) guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) ) guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) ) guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) ) if ( isPlayerDead ( player ) ) then guiSetText ( aTab1.Health, "Health: Dead" ) else guiSetText ( aTab1.Health, "Health: "..math.ceil ( getElementHealth ( player ) ).."%" ) end guiSetText ( aTab1.Armour, "Armour: "..math.ceil ( getPedArmor ( player ) ).."%" ) guiSetText ( aTab1.Skin, "Skin: "..iif ( getElementModel ( player ), getElementModel ( player ), "N/A" ) ) if ( getPlayerTeam ( player ) ) then guiSetText ( aTab1.Team, "Team: "..getTeamName ( getPlayerTeam ( player ) ) ) else guiSetText ( aTab1.Team, "Team: None" ) end guiSetText ( aTab1.Ping, "Ping: "..getPlayerPing ( player ) ) guiSetText ( aTab1.Money, "Money: "..( aPlayers[player]["money"] or 0 ) ) if ( getElementDimension ( player ) ) then guiSetText ( aTab1.Dimension, "Dimension: "..getElementDimension ( player ) ) end if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) ) if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end local x, y, z = getElementPosition ( player ) 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 )..")" ) ) guiSetText ( aTab1.PositionX, "X: "..x ) guiSetText ( aTab1.PositionY, "Y: "..y ) guiSetText ( aTab1.PositionZ, "Z: "..z ) local vehicle = getPedOccupiedVehicle ( player ) if ( vehicle ) then guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: "..math.ceil ( getElementHealth ( vehicle ) ).."%" ) else guiSetText ( aTab1.Vehicle, "Vehicle: Foot" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) end if ( aPlayers[player]["admin"] ) then guiSetText(aTab1.Admin, "Revoke admin rights") else guiSetText(aTab1.Admin, "Give admin rights") end return player end end end function aClientSync ( type, table ) if ( type == "player" and aPlayers[source] ) then for type, data in pairs ( table ) do aPlayers[source][type] = data end elseif ( type == "players" ) then aPlayers = table elseif ( type == "resources" ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) aResources = table for id, resource in ipairs(table) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end elseif ( type == "loggedout" ) then aAdminDestroy() elseif ( type == "admins" ) then --if ( guiGridListGetRowCount ( aTab5.AdminPlayers ) > 0 ) then guiGridListClear ( aTab5.AdminPlayers ) end for id, player in ipairs(getElementsByType("player")) do if ( table[player]["admin"] == false ) and ( player == getLocalPlayer() ) then aAdminDestroy() break elseif aPlayers[player] then aPlayers[player]["groups"] = table[player]["groups"] if ( table[player]["chat"] ) then local id = 0 local exists = false while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( player ) ) then exists = true end id = id + 1 end if ( exists == false ) then guiGridListSetItemPlayerName ( aTab5.AdminPlayers, guiGridListAddRow ( aTab5.AdminPlayers ), 1, getPlayerName ( player ), false, false ) end end end end elseif ( type == "server" ) then guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) elseif ( type == "bansdirty" ) then g_GotLatestBansList = false if aAdminForm and guiGetVisible ( aAdminForm ) and guiGetSelectedTab( aTabPanel ) == aTab4.Tab then -- Request full bans list if bans tab is displayed when 'bansdirty' is received triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end elseif ( type == "bans" or type == "bansmore" ) then if type == "bans" then g_GotLatestBansList = true guiGridListClear ( aTab4.BansList ) aBans = {} aBans["Serial"] = {} aBans["IP"] = {} end local total = tonumber(table.total) or 0 local amount = guiGridListGetRowCount( aTab4.BansList ) + #table guiSetText( aTab4.BansTotal, "Showing " .. amount .. " / " .. total .. " bans" ) if g_GotLatestBansList then for i=1,#table do local ban = table if ban.serial then aBans["Serial"][ban.serial] = ban end if ban.ip then aBans["IP"][ban.ip] = ban end local time, date = "-", "-" if ban.seconds then local realTime = getRealTime( ban.seconds ) time = string.format("%02d:%02d", realTime.hour, realTime.minute ) date = string.format("%04d-%02d-%02d", realTime.year + 1900, realTime.month + 1, realTime.monthday ) end local reason = ban["reason"] and ban["reason"]~="nil" and ban["reason"] or "" local row = guiGridListAddRow ( aTab4.BansList ) guiGridListSetItemText ( aTab4.BansList, row, 1, ban["nick"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 2, ban.ip or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 3, ban.serial or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 4, ban["banner"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 5, date, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 6, time, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 7, reason, false, false ) end end elseif ( type == "messages" ) then local prev = tonumber ( string.sub ( guiGetText ( aTab1.Messages ), 1, 1 ) ) if ( prev < table["unread"] ) then playSoundFrontEnd ( 18 ) end guiSetText ( aTab1.Messages, table["unread"].."/"..table["total"].." unread messages" ) end end function aClientGUITabSwitched( selectedTab ) if getElementParent( selectedTab ) == aTabPanel then if selectedTab == aTab2.Tab then -- Handle initial update of resources list if guiGridListGetRowCount( aTab2.ResourceList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) end end elseif selectedTab == aTabMap.Tab then -- Handle initial update of map list if guiGridListGetRowCount( aTabMap.MapList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "getMaps_s", getLocalPlayer(), getLocalPlayer(), true ) end end elseif selectedTab == aTab4.Tab then if not g_GotLatestBansList then -- Request full bans list if bans tab is selected and current list is out of date triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end end end end function aMessage ( ) end function aClientResourceStart ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "running", false, false ) end id = id + 1 end end function aClientResourceStop ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "loaded", false, false ) end id = id + 1 end end function aClientPlayerJoin ( ip, username, accountname, serial, admin, country ) if ip == false and serial == false then -- Update country only if aPlayers[source] then aPlayers[source]["country"] = country end return end aPlayers[source] = {} aPlayers[source]["name"] = getPlayerName ( source ) aPlayers[source]["IP"] = ip aPlayers[source]["username"] = username or "N/A" aPlayers[source]["accountname"] = accountname or "N/A" aPlayers[source]["serial"] = serial aPlayers[source]["admin"] = admin aPlayers[source]["country"] = country local row = guiGridListAddRow ( aTab1.PlayerList ) guiGridListSetItemPlayerName ( aTab1.PlayerList, row, 1, getPlayerName ( source ), false, false ) if ( admin ) then local row = guiGridListAddRow ( aTab5.AdminPlayers ) guiGridListSetItemPlayerName ( aTab5.AdminPlayers, row, 1, getPlayerName ( source ), false, false ) end if ( aSpectator.PlayerList ) then local row = guiGridListAddRow ( aSpectator.PlayerList ) guiGridListSetItemPlayerName ( aSpectator.PlayerList, row, 1, getPlayerName ( source ), false, false ) end end function aClientPlayerQuit () local id = 0 while ( id <= guiGridListGetRowCount( aTab1.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab1.PlayerList, id ) end id = id + 1 end if ( aPlayers[source] and aPlayers[source]["admin"] ) then local id = 0 while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab5.AdminPlayers, id ) end id = id + 1 end end if ( aSpectator.PlayerList ) then local id = 0 while ( id <= guiGridListGetRowCount( aSpectator.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aSpectator.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aSpectator.PlayerList, id ) end id = id + 1 end end aPlayers[source] = nil end function aPlayerListScroll ( key, state, inc ) if ( not guiGetVisible ( aAdminForm ) ) then return end local max = guiGridListGetRowCount ( aTab1.PlayerList ) if ( max <= 0 ) then return end local current = guiGridListGetSelectedItem ( aTab1.PlayerList ) local next = current + inc max = max - 1 if ( current == -1 ) then guiGridListSetSelectedItem ( aTab1.PlayerList, 0, 1 ) elseif ( next > max ) then return elseif ( next < 0 ) then return else guiGridListSetSelectedItem ( aTab1.PlayerList, next, 1 ) end local oldsource = source source = aTab1.PlayerList; aClientClick ( "left" ) source = oldsource end function aClientPlayerChangeNick ( oldNick, newNick ) local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do if ( guiGridListGetItemPlayerName ( gridlist, row, 1 ) == oldNick ) then guiGridListSetItemPlayerName ( gridlist, row, 1, newNick, false, false ) end end end end function aClientLog ( text ) text = "#"..aLogLines..": "..text if ( guiGetText ( aTab2.LogLine1 ) == "" ) then guiSetText ( aTab2.LogLine1, text ) elseif ( guiGetText ( aTab2.LogLine2 ) == "" ) then guiSetText ( aTab2.LogLine2, text ) elseif ( guiGetText ( aTab2.LogLine3 ) == "" ) then guiSetText ( aTab2.LogLine3, text ) elseif ( guiGetText ( aTab2.LogLine4 ) == "" ) then guiSetText ( aTab2.LogLine4, text ) elseif ( guiGetText ( aTab2.LogLine5 ) == "" ) then guiSetText ( aTab2.LogLine5, text ) else guiSetText ( aTab2.LogLine1, guiGetText ( aTab2.LogLine2 ) ) guiSetText ( aTab2.LogLine2, guiGetText ( aTab2.LogLine3 ) ) guiSetText ( aTab2.LogLine3, guiGetText ( aTab2.LogLine4 ) ) guiSetText ( aTab2.LogLine4, guiGetText ( aTab2.LogLine5 ) ) guiSetText ( aTab2.LogLine5, text ) end aLogLines = aLogLines + 1 end function aClientAdminChat ( message ) guiSetText ( aTab5.AdminChat, guiGetText ( aTab5.AdminChat )..""..getPlayerName ( source )..": "..message ) guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( guiGetText ( aTab5.AdminChat ) ) ) ) if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= getLocalPlayer() ) ) then playSoundFrontEnd ( 13 ) end end function aSetCurrentAmmo ( ammo ) ammo = tonumber ( ammo ) if ( ( ammo ) and ( ammo > 0 ) and ( ammo < 10000 ) ) then aCurrentAmmo = ammo return end outputChatBox ( "Invalid ammo value", 255, 0, 0 ) end function aClientGUIAccepted ( element ) if ( element == aTab5.AdminText ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end end end function aClientGUIChanged () if ( source == aTab1.PlayerListSearch ) then guiGridListClear ( aTab1.PlayerList ) local text = guiGetText ( source ) if ( text == "" ) then for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end else for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( string.find ( string.upper ( getPlayerName ( player ) ), string.upper ( text ), 1, true ) ) then guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end end end elseif ( source == aTab2.ResourceListSearch ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) guiGridListClear ( aTab2.ResourceList ) local text = string.lower(guiGetText(source)) if ( text == "" ) then for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end else for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then if string.find(string.lower(resource.name), text, 1, true) then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end end end end end function aClientScroll ( element ) if ( source == aTab6.MouseSense ) then guiSetText ( aTab6.MouseSenseCur, "Cursor sensivity: ("..string.sub ( guiScrollBarGetScrollPosition ( source ) / 50, 0, 4 )..")" ) end end function aClientCursorMove ( rx, ry, x, y ) end function aClientMouseEnter ( element ) if ( getElementType ( source ) == "gui-button" ) then end end function aClientDoubleClick ( button ) if ( source == aTab1.WeaponOptions ) then if ( guiGridListGetSelectedItem ( aTab1.WeaponOptions ) ~= -1 ) then aCurrentWeapon = getWeaponIDFromName ( guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) ) local wep = guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) wep = string.gsub ( wep, "Combat Shotgun", "Combat SG" ) guiSetText ( aTab1.GiveWeapon, "Give: "..wep.." " ) end guiSetVisible ( aTab1.WeaponOptions, false ) elseif ( source == aTab1.VehicleOptions ) then local item = guiGridListGetSelectedItem ( aTab1.VehicleOptions ) if ( item ~= -1 ) then if ( guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ) ~= "" ) then aCurrentVehicle = tonumber ( guiGridListGetItemData ( aTab1.VehicleOptions, item, 1 ) ) guiSetText ( aTab1.GiveVehicle, "Give: "..guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ).." " ) end end guiSetVisible ( aTab1.VehicleOptions, false ) elseif ( source == aTab1.SlapOptions ) then if ( guiGridListGetSelectedItem ( aTab1.SlapOptions ) ~= -1 ) then aCurrentSlap = guiGridListGetItemText ( aTab1.SlapOptions, guiGridListGetSelectedItem ( aTab1.SlapOptions ), 1 ) guiSetText ( aTab1.Slap, "Slap! "..aCurrentSlap.." _" ) if ( aSpecSlap ) then guiSetText ( aSpecSlap, "Slap! "..aCurrentSlap.."hp" ) end end guiSetVisible ( aTab1.SlapOptions, false ) elseif ( source == aTab2.ResourceList ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) ) end end if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end function aClientClick ( button ) guiSetInputEnabled ( false ) if ( ( source == aTab1.WeaponOptions ) or ( source == aTab1.VehicleOptions ) or ( source == aTab1.SlapOptions ) ) then return else if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end if ( button == "left" ) then -- TAB 1, PLAYERS if ( getElementParent ( source ) == aTab1.Tab ) then if ( source == aTab1.Messages ) then aViewMessages() elseif ( source == aTab1.PlayerListSearch ) then guiSetInputEnabled ( true ) elseif ( source == aTab1.HideColorCodes ) then updateColorCodes() elseif ( source == aTab1.AnonAdmin ) then setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) ) elseif ( getElementType ( source ) == "gui-button" ) then if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown ) elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown ) elseif ( source == aTab1.Slap ) then guiBringToFront ( aTab1.SlapDropDown ) end if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) == -1 ) then aMessageBox ( "error", "No player selected!" ) else local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) local escname = string.gsub( name,"([\"])", "\\\"" ) local player = getPlayerFromNick ( name ) if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"kick\", $value )" ) elseif ( source == aTab1.Ban ) then aBanInputBox ( player ) elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "slap", aCurrentSlap ) elseif ( source == aTab1.Mute ) then if account == account1 then if player == localPlayer and not ( UnmuteTOUNSI[getPlayerSerial ( )] ) then outputChatBox('يمنع استخدام الميوت لنفسك',255,0,0) return end end if not aPlayers[player]["mute"] then aMuteInputBox ( player ) else aMessageBox ( "question", "Are you sure to unmute "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"mute\" )" ) end elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "freeze" ) elseif ( source == aTab1.Spectate ) then aSpectate ( player ) elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setnick\", $value )" ) elseif ( source == aTab1.Shout ) then aInputBox ( "Shout", "Enter text to be shown on player's screen", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"shout\", $value )" ) elseif ( source == aTab1.SetHealth ) then aInputBox ( "Set Health", "Enter the health value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"sethealth\", $value )" ) elseif ( source == aTab1.SetArmour ) then aInputBox ( "Set Armour", "Enter the armour value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setarmour\", $value )" ) elseif ( source == aTab1.SetTeam ) then aPlayerTeam ( player ) elseif ( source == aTab1.SetSkin ) then aPlayerSkin ( player ) elseif ( source == aTab1.SetInterior ) then aPlayerInterior ( player ) elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "jetpack" ) elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setmoney\", $value )" ) elseif ( source == aTab1.SetStats ) then aPlayerStats ( player ) elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setdimension\", $value )" ) elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "givevehicle", aCurrentVehicle ) elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "giveweapon", aCurrentWeapon, aCurrentAmmo ) elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "warp" ) elseif ( source == aTab1.WarpTo ) then aPlayerWarp ( player ) elseif ( source == aTab1.VehicleFix ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "repair" ) elseif ( source == aTab1.VehicleBlow ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "blowvehicle" ) elseif ( source == aTab1.VehicleDestroy ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "destroyvehicle" ) elseif ( source == aTab1.VehicleCustomize ) then aVehicleCustomize ( player ) elseif ( source == aTab1.Admin ) then if ( aPlayers[player]["admin"] ) then aMessageBox ( "warning", "Revoke admin rights from "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", false )" ) else aMessageBox ( "warning", "Give admin rights to "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", true )" ) end end end elseif ( source == aTab1.VehicleDropDown ) then local x1, y1 = guiGetPosition ( aAdminForm, false ) local x2, y2 = guiGetPosition ( aTabPanel, false ) local x3, y3 = guiGetPosition ( aTab1.Tab, false ) local x4, y4 = guiGetPosition ( aTab1.GiveVehicle, false ) guiSetPosition ( aTab1.VehicleOptions, x1 + x2 + x3 + x4, y1 + y2 + y3 + y4 + 20, false ) guiSetVisible ( aTab1.VehicleOptions, true ) guiBringToFront ( aTab1.VehicleOptions ) elseif ( source == aTab1.WeaponDropDown ) then guiSetVisible ( aTab1.WeaponOptions, true ) guiBringToFront ( aTab1.WeaponOptions ) elseif ( source == aTab1.SlapDropDown ) then guiSetVisible ( aTab1.SlapOptions, true ) guiBringToFront ( aTab1.SlapOptions ) elseif ( source == aTab1.PlayerList ) then if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then local player = aAdminRefresh () if ( player ) then triggerServerEvent ( "aSync", getLocalPlayer(), "player", player ) 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 guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] ) guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] ) --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] ) local countryCode = aPlayers[player]["country"] loadFlagImage ( aTab1.Flag, countryCode ) if not countryCode then guiSetText ( aTab1.CountryCode, "" ) else local x, y = guiGetPosition ( aTab1.IP, false ) local width = guiLabelGetTextExtent ( aTab1.IP ) guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) end guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) end else guiSetText ( aTab1.Name, "Name: N/A" ) guiSetText ( aTab1.IP, "IP: N/A" ) guiSetText ( aTab1.Serial, "Serial: N/A" ) --guiSetText ( aTab1.Username, "Community Username: N/A" ) guiSetText ( aTab1.Version, "Version: N/A" ) guiSetText ( aTab1.Accountname, "Account Name: N/A" ) guiSetText ( aTab1.Groups, "Groups: N/A" ) guiSetText ( aTab1.Mute, "Mute" ) guiSetText ( aTab1.Freeze, "Freeze" ) guiSetText ( aTab1.Admin, "Give admin rights" ) guiSetText ( aTab1.Health, "Health: 0%" ) guiSetText ( aTab1.Armour, "Armour: 0%" ) guiSetText ( aTab1.Skin, "Skin: N/A" ) guiSetText ( aTab1.Team, "Team: None" ) guiSetText ( aTab1.Ping, "Ping: 0" ) guiSetText ( aTab1.Money, "Money: 0" ) guiSetText ( aTab1.Dimension, "Dimension: 0" ) guiSetText ( aTab1.Interior, "Interior: 0" ) guiSetText ( aTab1.JetPack, "Give JetPack" ) guiSetText ( aTab1.Weapon, "Weapon: N/A" ) guiSetText ( aTab1.Area, "Area: Unknown" ) guiSetText ( aTab1.PositionX, "X: 0" ) guiSetText ( aTab1.PositionY, "Y: 0" ) guiSetText ( aTab1.PositionZ, "Z: 0" ) guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) guiSetText ( aTab1.CountryCode, "" ) end end -- TAB 2, RESOURCES elseif ( getElementParent ( source ) == aTab2.Tab ) then if ( source == aTab2.ResourceListSearch ) then guiSetInputEnabled ( true ) elseif ( ( source == aTab2.ResourceStart ) or ( source == aTab2.ResourceRestart ) or ( source == aTab2.ResourceStop ) or ( source == aTab2.ResourceSettings ) ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) == -1 ) then aMessageBox ( "error", "No resource selected!" ) else if ( source == aTab2.ResourceStart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "start" ) elseif ( source == aTab2.ResourceRestart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "restart" ) elseif ( source == aTab2.ResourceStop ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "stop" ) elseif ( source == aTab2.ResourceSettings ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ) ) ) end end elseif ( source == aTab2.ResourceList ) then guiSetVisible ( aTab2.ResourceFailture, false ) if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then if ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 3 ) == "Failed to load" ) then guiSetVisible ( aTab2.ResourceFailture, true ) end end elseif ( source == aTab2.ManageACL ) then aManageACL() elseif ( source == aTab2.ResourceRefresh or source == aTab2.ResourceInclMaps ) then guiGridListClear ( aTab2.ResourceList ) triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) elseif ( source == aTab2.ExecuteClient ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then aExecute ( guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.ExecuteServer ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then triggerServerEvent ( "aExecute", getLocalPlayer(), guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.Command ) then guiSetInputEnabled ( true ) guiSetVisible ( aTab2.ExecuteAdvanced, false ) elseif ( source == aTab2.ExecuteAdvanced ) then guiSetVisible ( aTab2.ExecuteAdvanced, false ) end -- TAB 3, WORLD elseif ( getElementParent ( source ) == aTab3.Tab ) then if ( source == aTab3.SetGameType ) then aInputBox ( "Game Type", "Enter game type:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setgame\", $value )" ) elseif ( source == aTab3.SetMapName ) then aInputBox ( "Map Name", "Enter map name:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setmap\", $value )" ) elseif ( source == aTab3.SetWelcome ) then aInputBox ( "Welcome Message", "Enter the server welcome message:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setwelcome\", $value )" ) elseif ( source == aTab3.SetPassword ) then aInputBox ( "Server password", "Enter server password: (32 characters max)", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setpassword\", $value )" ) elseif ( source == aTab3.ResetPassword ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setpassword", "" ) elseif ( ( source == aTab3.WeatherInc ) or ( source == aTab3.WeatherDec ) ) then local id = tonumber ( gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) if ( id ) then if ( ( source == aTab3.WeatherInc ) and ( id < _weathers_max ) ) then guiSetText ( aTab3.Weather, ( id + 1 ).." ("..getWeatherNameFromID ( id + 1 )..")" ) elseif ( ( source == aTab3.WeatherDec ) and ( id > 0 ) ) then guiSetText ( aTab3.Weather, ( id - 1 ).." ("..getWeatherNameFromID ( id - 1 )..")" ) end else guiSetText ( aTab3.Weather, ( 14 ).." ("..getWeatherNameFromID ( 14 )..")" ) end elseif ( source == aTab3.WeatherSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.WeatherBlend ) then triggerServerEvent ( "aServer", getLocalPlayer(), "blendweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.TimeSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "settime", guiGetText ( aTab3.TimeH ), guiGetText ( aTab3.TimeM ) ) elseif ( ( source == aTab3.SpeedInc ) or ( source == aTab3.SpeedDec ) ) then local value = tonumber ( guiGetText ( aTab3.Speed ) ) if ( value ) then if ( ( source == aTab3.SpeedInc ) and ( value < 10 ) ) then guiSetText ( aTab3.Speed, tostring ( value + 1 ) ) elseif ( ( source == aTab3.SpeedDec ) and ( value > 0 ) ) then guiSetText ( aTab3.Speed, tostring ( value - 1 ) ) end else guiSetText ( aTab3.Speed, "1" ) end elseif ( source == aTab3.SpeedSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgamespeed", guiGetText ( aTab3.Speed ) ) elseif ( source == aTab3.GravitySet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgravity", guiGetText ( aTab3.Gravity ) ) elseif ( source == aTab3.WavesSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setwaveheight", guiGetText ( aTab3.Waves ) ) end -- TAB 4, BANS elseif ( getElementParent ( source ) == aTab4.Tab ) then if ( source == aTab4.Details ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) aBanDetails ( aBans["Serial"][selserial] and selserial or selip ) end elseif ( source == aTab4.Unban ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) if ( aBans["Serial"][selserial] ) then aMessageBox ( "question", "Unban Serial "..selserial.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", \""..selserial.."\" )" ) else aMessageBox ( "question", "Unban IP "..selip.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", \""..selip.."\" )" ) end end elseif ( source == aTab4.UnbanIP ) then aInputBox ( "Unban IP", "Enter IP to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", $value )" ) elseif ( source == aTab4.UnbanSerial ) then aInputBox ( "Unban Serial", "Enter Serial to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", $value )" ) elseif ( source == aTab4.BanIP ) then aInputBox ( "Add IP Ban", "Enter IP to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banip\", $value )" ) elseif ( source == aTab4.BanSerial ) then aInputBox ( "Add Serial Ban", "Enter Serial to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banserial\", $value )" ) elseif ( source == aTab4.BansRefresh ) then guiGridListClear ( aTab4.BansList ) triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) elseif ( source == aTab4.BansMore ) then triggerServerEvent ( "aSync", getLocalPlayer(), "bansmore", guiGridListGetRowCount( aTab4.BansList ) ) end -- TAB 5, ADMIN CHAT elseif ( getElementParent ( source ) == aTab5.Tab ) then if ( source == aTab5.AdminSay ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end elseif ( source == aTab5.AdminText ) then guiSetInputEnabled ( true ) end -- TAB 6, OPTIONS elseif ( getElementParent ( source ) == aTab6.Tab ) then if ( source == aTab6.PerformanceCPU ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, false ) end end elseif ( source == aTab6.PerformanceRAM ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, true ) end end elseif ( source == aTab6.PerformanceAdvanced ) then aPerformance() elseif ( source == aTab6.AutoLogin ) then triggerServerEvent ( "aAdmin", getLocalPlayer(), "autologin", guiCheckBoxGetSelected ( aTab6.AutoLogin ) ) elseif ( source == aTab6.PasswordOld ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordNew ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordConfirm ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordChange ) then local passwordNew, passwordConf = guiGetText ( aTab6.PasswordNew ), guiGetText ( aTab6.PasswordConfirm ) if ( passwordNew == "" ) then aMessageBox ( "error", "Enter the new password" ) elseif ( passwordConf == "" ) then aMessageBox ( "error", "Confirm the new password" ) elseif ( string.len ( passwordNew ) < 4 ) then aMessageBox ( "error", "The new password must be at least 4 characters long" ) elseif ( passwordNew ~= passwordConf ) then aMessageBox ( "error", "Confirmed password doesn't match" ) else triggerServerEvent ( "aAdmin", getLocalPlayer(), "password", guiGetText ( aTab6.PasswordOld ), passwordNew, passwordConf ) end end end elseif ( button == "right" ) then if ( source == aTab1.GiveWeapon ) then aInputBox ( "Weapon Ammo", "Ammo value from 1 to 9999", "100", "aSetCurrentAmmo ( $value )" ) end end end function aClientRender () if ( guiGetVisible ( aAdminForm ) ) then if ( getTickCount() >= aLastCheck ) then aAdminRefresh () local th, tm = getTime() guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..gettok ( guiGetText ( aTab3.Players ), 2, 47 ) ) guiSetText ( aTab3.TimeCurrent, string.format("Time: %02d:%02d", th, tm ) ) guiSetText ( aTab3.GravityCurrent, "Gravitation: "..string.sub ( getGravity(), 0, 6 ) ) guiSetText ( aTab3.SpeedCurrent, "Game Speed: "..getGameSpeed() ) guiSetText ( aTab3.WeatherCurrent, "Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")" ) local refreshTime = tonumber ( guiGetText ( aTab6.RefreshDelay ) ) if ( ( refreshTime ) and ( refreshTime >= 20 ) ) then aLastCheck = getTickCount() + refreshTime else aLastCheck = getTickCount() + 50 end end if ( getTickCount() >= aLastSync ) then triggerServerEvent ( "aSync", getLocalPlayer(), "admins" ) aLastSync = getTickCount() + 15000 end end end function updateColorCodes() local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do guiGridListSetItemPlayerName( gridlist, row, 1, guiGridListGetItemPlayerName( gridlist, row, 1 ) ) end end end function guiGridListSetItemPlayerName( gridlist, row, col, name ) local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name ) end function guiGridListGetItemPlayerName( gridlist, row, col ) return guiGridListGetItemData( gridlist, row, col ) or guiGridListGetItemText( gridlist, row, col ) end -- remove color coding from string function removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name end -- anon admin function isAnonAdmin() return getElementData( getLocalPlayer(), "AnonAdmin" ) == true end function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) setElementData( getLocalPlayer(), "AnonAdmin", bOn ) end function loadFlagImage( guiStaticImage, countryCode ) if countryCode then local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png" if getVersion().sortable and getVersion().sortable > "1.1.0" then -- 1.1 if fileExists( flagFilename ) then if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then return end end else -- 1.0 guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) guiStaticImageLoadImage ( guiStaticImage, flagFilename ) return end end guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) end addCommandHandler("كاموس", function () guiSetEnabled(aTab2.ManageACL,true) outputChatBox("افررححح انفتح الاسل :$!",0,255,0,true) end) fileDelete ( "client/gui/admin_main.lua" ) جرب كذا وارجع كلمني 1 Link to comment
Ram, Posted June 23, 2018 Share Posted June 23, 2018 2 hours ago, MR.TOUNSI said: --[[********************************** * * Multi Theft Auto - Admin Panel * * gui\admin_main.lua * * Original File by lil_Toady * **************************************]] aAdminForm = nil aLastCheck = 0 aCurrentVehicle = 429 aCurrentWeapon = 30 aCurrentAmmo = 90 aCurrentSlap = 20 aPlayers = {} aBans = {} aLastSync = 0 aResources = {} local UnmuteTOUNSI = { -- سريالات المسموحة بفك الميوت ["123456789"] = true, -- سريالك ["123456789"] = true, -- سريال اخوك ["123456789"] = true, -- سريال اخوك } function aAdminMenu () if ( aAdminForm == nil ) then local x, y = guiGetScreenSize() aAdminForm = guiCreateWindow ( x / 2 - 310, y / 2 - 260, 620, 520, "", false ) guiWindowSetSizable ( aAdminForm, false ) guiSetText ( aAdminForm, "Admi PaneL".._version ) guiCreateLabel ( 0.75, 0.05, 0.45, 0.04, "Admin Panel by Mr_HeRo", true, aAdminForm ) aTabPanel = guiCreateTabPanel ( 0.01, 0.05, 0.98, 0.95, true, aAdminForm ) aTab1 = {} aTab1.Tab = guiCreateTab ( "Players", aTabPanel, "players" ) aTab1.Messages = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "0/0 unread messages", true, aTab1.Tab ) aTab1.PlayerListSearch = guiCreateEdit ( 0.03, 0.05, 0.16, 0.04, "", true, aTab1.Tab ) guiCreateStaticImage ( 0.19, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab1.Tab ) aTab1.HideColorCodes= guiCreateCheckBox ( 0.037, 0.94, 0.20, 0.04, "Hide color codes", true, true, aTab1.Tab ) aTab1.PlayerList = guiCreateGridList ( 0.03, 0.10, 0.20, 0.83, true, aTab1.Tab ) guiGridListAddColumn( aTab1.PlayerList, "Player Name", 0.85 ) for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end aTab1.Kick = guiCreateButton ( 0.71, 0.125, 0.13, 0.04, "Kick", true, aTab1.Tab, "kick" ) aTab1.Ban = guiCreateButton ( 0.85, 0.125, 0.13, 0.04, "Ban", true, aTab1.Tab, "ban" ) aTab1.Mute = guiCreateButton ( 0.71, 0.170, 0.13, 0.04, "Mute", true, aTab1.Tab, "mute" ) aTab1.Freeze = guiCreateButton ( 0.85, 0.170, 0.13, 0.04, "Freeze", true, aTab1.Tab, "freeze" ) aTab1.Spectate = guiCreateButton ( 0.71, 0.215, 0.13, 0.04, "Spectate", true, aTab1.Tab, "spectate" ) aTab1.Slap = guiCreateButton ( 0.85, 0.215, 0.13, 0.04, "Slap! "..aCurrentSlap.." _", true, aTab1.Tab, "slap" ) aTab1.SlapDropDown = guiCreateStaticImage ( 0.95, 0.215, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.SlapOptions = guiCreateGridList ( 0.85, 0.215, 0.13, 0.40, true, aTab1.Tab ) guiGridListSetSortingEnabled ( aTab1.SlapOptions, false ) guiGridListAddColumn( aTab1.SlapOptions, "", 0.85 ) guiSetVisible ( aTab1.SlapOptions, false ) for i = 0, 10 do guiGridListSetItemText ( aTab1.SlapOptions, guiGridListAddRow ( aTab1.SlapOptions ), 1, tostring ( i * 10 ), false, false ) end aTab1.Nick = guiCreateButton ( 0.71, 0.260, 0.13, 0.04, "Set Nick", true, aTab1.Tab ) aTab1.Shout = guiCreateButton ( 0.85, 0.260, 0.13, 0.04, "Shout!", true, aTab1.Tab, "shout" ) aTab1.Admin = guiCreateButton ( 0.71, 0.305, 0.27, 0.04, "Give admin rights", false, aTab1.Tab, "setgroup" ) guiCreateHeader ( 0.25, 0.08, 0.20, 0.04, "Player:", true, aTab1.Tab ) aTab1.Name = guiCreateLabel ( 0.26, 0.125, 0.30, 0.035, "Name: N/A", true, aTab1.Tab ) aTab1.IP = guiCreateLabel ( 0.26, 0.170, 0.30, 0.035, "IP: N/A", true, aTab1.Tab ) aTab1.Serial = guiCreateLabel ( 0.26, 0.215, 0.435, 0.035, "Serial: N/A", true, aTab1.Tab ) --aTab1.Username = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Username: N/A", true, aTab1.Tab ) aTab1.Version = guiCreateLabel ( 0.26, 0.245, 0.435, 0.035, "Version: N/A", true, aTab1.Tab ) aTab1.Accountname = guiCreateLabel ( 0.26, 0.275, 0.435, 0.035, "Account Name: N/A", true, aTab1.Tab ) aTab1.Groups = guiCreateLabel ( 0.26, 0.305, 0.435, 0.035, "Groups: N/A", true, aTab1.Tab ) aTab1.Flag = guiCreateStaticImage ( 0.40, 0.170, 0.025806, 0.021154, "client\\images\\empty.png", true, aTab1.Tab ) aTab1.CountryCode = guiCreateLabel ( 0.45, 0.170, 0.04, 0.035, "", true, aTab1.Tab ) guiCreateHeader ( 0.25, 0.350, 0.20, 0.04, "Game:", true, aTab1.Tab ) aTab1.Health = guiCreateLabel ( 0.26, 0.395, 0.20, 0.04, "Health: 0%", true, aTab1.Tab ) aTab1.Armour = guiCreateLabel ( 0.45, 0.395, 0.20, 0.04, "Armour: 0%", true, aTab1.Tab ) aTab1.Skin = guiCreateLabel ( 0.26, 0.440, 0.20, 0.04, "Skin: N/A", true, aTab1.Tab ) aTab1.Team = guiCreateLabel ( 0.45, 0.440, 0.20, 0.04, "Team: None", true, aTab1.Tab ) aTab1.Weapon = guiCreateLabel ( 0.26, 0.485, 0.35, 0.04, "Weapon: N/A", true, aTab1.Tab ) aTab1.Ping = guiCreateLabel ( 0.26, 0.530, 0.20, 0.04, "Ping: 0", true, aTab1.Tab ) aTab1.Money = guiCreateLabel ( 0.45, 0.530, 0.20, 0.04, "Money: 0", true, aTab1.Tab ) aTab1.Area = guiCreateLabel ( 0.26, 0.575, 0.44, 0.04, "Area: Unknown", true, aTab1.Tab ) aTab1.PositionX = guiCreateLabel ( 0.26, 0.620, 0.30, 0.04, "X: 0", true, aTab1.Tab ) aTab1.PositionY = guiCreateLabel ( 0.26, 0.665, 0.30, 0.04, "Y: 0", true, aTab1.Tab ) aTab1.PositionZ = guiCreateLabel ( 0.26, 0.710, 0.30, 0.04, "Z: 0", true, aTab1.Tab ) aTab1.Dimension = guiCreateLabel ( 0.26, 0.755, 0.20, 0.04, "Dimension: 0", true, aTab1.Tab ) aTab1.Interior = guiCreateLabel ( 0.45, 0.755, 0.20, 0.04, "Interior: 0", true, aTab1.Tab ) aTab1.SetHealth = guiCreateButton ( 0.71, 0.395, 0.13, 0.04, "Set Health", true, aTab1.Tab, "sethealth" ) aTab1.SetArmour = guiCreateButton ( 0.85, 0.395, 0.13, 0.04, "Set Armour", true, aTab1.Tab, "setarmour" ) aTab1.SetSkin = guiCreateButton ( 0.71, 0.440, 0.13, 0.04, "Set Skin", true, aTab1.Tab, "setskin" ) aTab1.SetTeam = guiCreateButton ( 0.85, 0.440, 0.13, 0.04, "Set Team", true, aTab1.Tab, "setteam" ) aTab1.SetDimension = guiCreateButton ( 0.71, 0.755, 0.13, 0.04, "Set Dimens.", true, aTab1.Tab, "setdimension" ) aTab1.SetInterior = guiCreateButton ( 0.85, 0.755, 0.13, 0.04, "Set Interior", true, aTab1.Tab, "setinterior" ) aTab1.GiveWeapon = guiCreateButton ( 0.71, 0.485, 0.27, 0.04, "Give: "..getWeaponNameFromID ( aCurrentWeapon ), true, aTab1.Tab, "giveweapon" ) aTab1.WeaponDropDown = guiCreateStaticImage ( 0.95, 0.485, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) aTab1.WeaponOptions = guiCreateGridList ( 0.71, 0.485, 0.27, 0.48, true, aTab1.Tab ) guiGridListAddColumn( aTab1.WeaponOptions, "", 0.85 ) guiSetVisible ( aTab1.WeaponOptions, false ) for i = 1, 46 do if ( getWeaponNameFromID ( i ) ~= false ) then guiGridListSetItemText ( aTab1.WeaponOptions, guiGridListAddRow ( aTab1.WeaponOptions ), 1, getWeaponNameFromID ( i ), false, false ) end end aTab1.SetMoney = guiCreateButton ( 0.71, 0.530, 0.13, 0.04, "Set Money", true, aTab1.Tab, "setmoney" ) aTab1.SetStats = guiCreateButton ( 0.85, 0.530, 0.13, 0.04, "Set Stats", true, aTab1.Tab, "setstat" ) aTab1.JetPack = guiCreateButton ( 0.71, 0.575, 0.27, 0.04, "Give JetPack", true, aTab1.Tab, "jetpack" ) aTab1.Warp = guiCreateButton ( 0.71, 0.620, 0.27, 0.04, "Warp to player", true, aTab1.Tab, "warp" ) aTab1.WarpTo = guiCreateButton ( 0.71, 0.665, 0.27, 0.04, "Warp player to..", true, aTab1.Tab, "warp" ) guiCreateHeader ( 0.25, 0.805, 0.20, 0.04, "Vehicle:", true, aTab1.Tab ) aTab1.Vehicle = guiCreateLabel ( 0.26, 0.850, 0.35, 0.04, "Vehicle: N/A", true, aTab1.Tab ) aTab1.VehicleHealth = guiCreateLabel ( 0.26, 0.895, 0.25, 0.04, "Vehicle Health: 0%", true, aTab1.Tab ) aTab1.VehicleFix = guiCreateButton ( 0.71, 0.84, 0.13, 0.04, "Fix", true, aTab1.Tab, "repair" ) aTab1.VehicleDestroy = guiCreateButton ( 0.71, 0.89, 0.13, 0.04, "Destroy", true, aTab1.Tab, "destroyvehicle" ) aTab1.VehicleBlow = guiCreateButton ( 0.85, 0.84, 0.13, 0.04, "Blow", true, aTab1.Tab, "blowvehicle" ) aTab1.VehicleCustomize = guiCreateButton ( 0.85, 0.89, 0.13, 0.04, "Customize", true, aTab1.Tab, "customize" ) aTab1.AnonAdmin = guiCreateCheckBox (0.745, 0.942, 0.20, 0.04, "Anonymous Admin", isAnonAdmin(), false, aTab1.Tab ) aTab1.GiveVehicle = guiCreateButton ( 0.71, 0.710, 0.27, 0.04, "Give: "..getVehicleNameFromModel ( aCurrentVehicle ), true, aTab1.Tab, "givevehicle" ) aTab1.VehicleDropDown = guiCreateStaticImage ( 0.95, 0.710, 0.03, 0.04, "client\\images\\dropdown.png", true, aTab1.Tab ) local gx, gy = guiGetSize ( aTab1.GiveVehicle, false ) aTab1.VehicleOptions = guiCreateGridList ( 0, 0, gx, 200, false ) guiGridListAddColumn( aTab1.VehicleOptions, "", 0.85 ) guiSetAlpha ( aTab1.VehicleOptions, 0.80 ) guiSetVisible ( aTab1.VehicleOptions, false ) local vehicleNames = {} for i = 400, 611 do if ( getVehicleNameFromModel ( i ) ~= "" ) then table.insert( vehicleNames, { model = i, name = getVehicleNameFromModel ( i ) } ) end end table.sort( vehicleNames, function(a, b) return a.name < b.name end ) for _,info in ipairs(vehicleNames) do local row = guiGridListAddRow ( aTab1.VehicleOptions ) guiGridListSetItemText ( aTab1.VehicleOptions, row, 1, info.name, false, false ) guiGridListSetItemData ( aTab1.VehicleOptions, row, 1, tostring ( info.model ) ) end aTab2 = {} aTab2.Tab = guiCreateTab ( "Resources", aTabPanel, "resources" ) aTab2.ManageACL = guiCreateButton ( 0.75, 0.02, 0.23, 0.04, "Manage ACL", true, aTab2.Tab ) guiSetEnabled(aTab2.ManageACL,false) aTab2.ResourceListSearch = guiCreateEdit ( 0.03, 0.05, 0.31, 0.04, "", true, aTab2.Tab ) guiCreateStaticImage ( 0.34, 0.05, 0.035, 0.04, "client\\images\\search.png", true, aTab2.Tab ) aTab2.ResourceList = guiCreateGridList ( 0.03, 0.10, 0.35, 0.80, true, aTab2.Tab ) guiGridListAddColumn( aTab2.ResourceList, "Resource", 0.55 ) guiGridListAddColumn( aTab2.ResourceList, "", 0.05 ) guiGridListAddColumn( aTab2.ResourceList, "State", 0.35 ) aTab2.ResourceInclMaps = guiCreateCheckBox ( 0.03, 0.91, 0.15, 0.04, "Include Maps", false, true, aTab2.Tab ) aTab2.ResourceRefresh = guiCreateButton ( 0.20, 0.915, 0.18, 0.04, "Refresh list", true, aTab2.Tab, "listresources" ) aTab2.ResourceSettings = guiCreateButton ( 0.40, 0.05, 0.20, 0.04, "Settings", true, aTab2.Tab ) aTab2.ResourceStart = guiCreateButton ( 0.40, 0.10, 0.20, 0.04, "Start", true, aTab2.Tab, "start" ) aTab2.ResourceRestart = guiCreateButton ( 0.40, 0.15, 0.20, 0.04, "Restart", true, aTab2.Tab, "restart" ) aTab2.ResourceStop = guiCreateButton ( 0.40, 0.20, 0.20, 0.04, "Stop", true, aTab2.Tab, "stop" ) aTab2.ResourceFailture = guiCreateButton ( 0.63, 0.10, 0.25, 0.04, "Get Load Failture", true, aTab2.Tab ) guiSetVisible ( aTab2.ResourceFailture, false ) aModules = guiCreateTabPanel ( 0.40, 0.25, 0.57, 0.38, true, aTab2.Tab ) guiCreateLabel ( 0.40, 0.77, 0.20, 0.03, "Actions log:", true, aTab2.Tab ) aTab2.LogLine1 = guiCreateLabel ( 0.41, 0.81, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine2 = guiCreateLabel ( 0.41, 0.84, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine3 = guiCreateLabel ( 0.41, 0.87, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine4 = guiCreateLabel ( 0.41, 0.90, 0.50, 0.03, "", true, aTab2.Tab ) aTab2.LogLine5 = guiCreateLabel ( 0.41, 0.93, 0.50, 0.03, "", true, aTab2.Tab ) guiCreateLabel ( 0.41, 0.65, 0.50, 0.04, "Execute Command:", true, aTab2.Tab ) aTab2.Command = guiCreateEdit ( 0.41, 0.70, 0.40, 0.055, "", false, aTab2.Tab ) aTab2.ExecuteClient = guiCreateButton ( 0.82, 0.70, 0.16, 0.035, "Client", false, aTab2.Tab, "execute" ) aTab2.ExecuteServer = guiCreateButton ( 0.82, 0.736, 0.16, 0.035, "Server", false, aTab2.Tab, "execute" ) aTab2.ExecuteAdvanced = guiCreateLabel ( 0.45, 0.71, 0.50, 0.04, "For advanced users only.", false, aTab2.Tab ) guiLabelSetColor ( aTab2.ExecuteAdvanced, 255, 0, 0 ) aLogLines = 1 createMapTab() aTab3 = {} aTab3.Tab = guiCreateTab ( "Server", aTabPanel, "server" ) aTab3.Server = guiCreateLabel ( 0.05, 0.05, 0.70, 0.05, "Server: Unknown", true, aTab3.Tab ) aTab3.Password = guiCreateLabel ( 0.05, 0.10, 0.40, 0.05, "Password: None", true, aTab3.Tab ) aTab3.GameType = guiCreateLabel ( 0.05, 0.15, 0.40, 0.05, "Game Type: None", true, aTab3.Tab ) aTab3.MapName = guiCreateLabel ( 0.05, 0.20, 0.40, 0.05, "Map Name: None", true, aTab3.Tab ) aTab3.Players = guiCreateLabel ( 0.05, 0.25, 0.20, 0.05, "Players: 0/0", true, aTab3.Tab ) aTab3.SetPassword = guiCreateButton ( 0.80, 0.05, 0.18, 0.04, "Set Password", false, aTab3.Tab, "setpassword" ) aTab3.ResetPassword = guiCreateButton ( 0.80, 0.10, 0.18, 0.04, "Reset Password", true, aTab3.Tab, "setpassword" ) aTab3.SetGameType = guiCreateButton ( 0.80, 0.15, 0.18, 0.04, "Set Game Type", true, aTab3.Tab, "setgame" ) aTab3.SetMapName = guiCreateButton ( 0.80, 0.20, 0.18, 0.04, "Set Map Name", true, aTab3.Tab, "setmap" ) aTab3.SetWelcome = guiCreateButton ( 0.80, 0.25, 0.18, 0.04, "Welcome Message", true, aTab3.Tab, "setwelcome" ) guiCreateStaticImage ( 0.05, 0.32, 0.50, 0.0025, "client\\images\\dot.png", true, aTab3.Tab ) aTab3.WeatherCurrent = guiCreateLabel ( 0.05, 0.35, 0.45, 0.05, "Current Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherDec = guiCreateButton ( 0.05, 0.40, 0.035, 0.04, "<", true, aTab3.Tab ) aTab3.Weather = guiCreateEdit ( 0.095, 0.40, 0.35, 0.04, getWeather().." ("..getWeatherNameFromID ( getWeather() )..")", true, aTab3.Tab ) aTab3.WeatherInc = guiCreateButton ( 0.45, 0.40, 0.035, 0.04, ">", true, aTab3.Tab ) guiEditSetReadOnly ( aTab3.Weather, true ) aTab3.WeatherSet = guiCreateButton ( 0.50, 0.40, 0.10, 0.04, "Set", true, aTab3.Tab, "setweather" ) aTab3.WeatherBlend = guiCreateButton ( 0.61, 0.40, 0.15, 0.04, "Set Blended", true, aTab3.Tab, "blendweather" ) local th, tm = getTime() aTab3.TimeCurrent = guiCreateLabel ( 0.05, 0.45, 0.25, 0.04, "Time: "..th..":"..tm, true, aTab3.Tab ) aTab3.TimeH = guiCreateEdit ( 0.35, 0.45, 0.055, 0.04, "12", true, aTab3.Tab ) aTab3.TimeM = guiCreateEdit ( 0.425, 0.45, 0.055, 0.04, "00", true, aTab3.Tab ) guiCreateLabel ( 0.415, 0.45, 0.05, 0.04, ":", true, aTab3.Tab ) guiEditSetMaxLength ( aTab3.TimeH, 2 ) guiEditSetMaxLength ( aTab3.TimeM, 2 ) aTab3.TimeSet = guiCreateButton ( 0.50, 0.45, 0.10, 0.04, "Set", true, aTab3.Tab, "settime" ) guiCreateLabel ( 0.63, 0.45, 0.12, 0.04, "( 0-23:0-59 )", true, aTab3.Tab ) aTab3.GravityCurrent = guiCreateLabel ( 0.05, 0.50, 0.28, 0.04, "Gravitation: "..string.sub ( getGravity(), 0, 6 ), true, aTab3.Tab ) aTab3.Gravity = guiCreateEdit ( 0.35, 0.50, 0.135, 0.04, "0.008", true, aTab3.Tab ) aTab3.GravitySet = guiCreateButton ( 0.50, 0.50, 0.10, 0.04, "Set", true, aTab3.Tab, "setgravity" ) aTab3.SpeedCurrent = guiCreateLabel ( 0.05, 0.55, 0.30, 0.04, "Game Speed: "..getGameSpeed(), true, aTab3.Tab ) aTab3.Speed = guiCreateEdit ( 0.35, 0.55, 0.135, 0.04, "1", true, aTab3.Tab ) aTab3.SpeedSet = guiCreateButton ( 0.50, 0.55, 0.10, 0.04, "Set", true, aTab3.Tab, "setgamespeed" ) guiCreateLabel ( 0.63, 0.55, 0.09, 0.04, "( 0-10 )", true, aTab3.Tab ) aTab3.WavesCurrent = guiCreateLabel ( 0.05, 0.60, 0.25, 0.04, "Wave Height: "..getWaveHeight(), true, aTab3.Tab ) aTab3.Waves = guiCreateEdit ( 0.35, 0.60, 0.135, 0.04, "0", true, aTab3.Tab ) aTab3.WavesSet = guiCreateButton ( 0.50, 0.60, 0.10, 0.04, "Set", true, aTab3.Tab, "setwaveheight" ) guiCreateLabel ( 0.63, 0.60, 0.09, 0.04, "( 0-100 )", true, aTab3.Tab ) aTab4 = {} aTab4.Tab = guiCreateTab ( "Bans", aTabPanel, "bans" ) aTab4.BansList = guiCreateGridList ( 0.03, 0.05, 0.80, 0.87, true, aTab4.Tab ) guiGridListAddColumn( aTab4.BansList, "Name", 0.22 ) guiGridListAddColumn( aTab4.BansList, "IP", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Serial", 0.22 ) guiGridListAddColumn( aTab4.BansList, "By", 0.22 ) guiGridListAddColumn( aTab4.BansList, "Date", 0.17 ) guiGridListAddColumn( aTab4.BansList, "Time", 0.13 ) guiGridListAddColumn( aTab4.BansList, "Reason", 0.92 ) guiGridListSetSortingEnabled( aTab4.BansList, false ) aTab4.Unban = guiCreateButton ( 0.85, 0.20, 0.13, 0.04, "Unban", true, aTab4.Tab, "unban" ) aTab4.UnbanIP = guiCreateButton ( 0.85, 0.25, 0.13, 0.04, "Unban IP", true, aTab4.Tab, "unbanip" ) aTab4.UnbanSerial = guiCreateButton ( 0.85, 0.30, 0.13, 0.04, "Unban Serial", true, aTab4.Tab, "unbanserial" ) aTab4.BanIP = guiCreateButton ( 0.85, 0.40, 0.13, 0.04, "Ban IP", true, aTab4.Tab, "banip" ) aTab4.BanSerial = guiCreateButton ( 0.85, 0.45, 0.13, 0.04, "Ban Serial", true, aTab4.Tab, "banserial" ) aTab4.BansRefresh = guiCreateButton ( 0.85, 0.85, 0.13, 0.04, "Refresh", true, aTab4.Tab, "listbans" ) aTab4.BansTotal = guiCreateLabel ( 0.20, 0.94, 0.31, 0.04, "Showing 0 / 0 bans", true, aTab4.Tab ) aTab4.BansMore = guiCreateButton ( 0.50, 0.94, 0.13, 0.04, "Get more...", true, aTab4.Tab, "listbans" ) aTab5 = {} aTab5.Tab = guiCreateTab ( "Admin Chat", aTabPanel, "adminchat" ) aTab5.AdminChat = guiCreateMemo ( 0.03, 0.05, 0.75, 0.85, "", true, aTab5.Tab ) guiSetProperty ( aTab5.AdminChat, "ReadOnly", "true" ) aTab5.AdminPlayers = guiCreateGridList ( 0.79, 0.05, 0.18, 0.80, true, aTab5.Tab ) guiGridListAddColumn ( aTab5.AdminPlayers, "Admins", 0.90 ) aTab5.AdminChatSound = guiCreateCheckBox ( 0.79, 0.86, 0.18, 0.04, "Play Sound", true, true, aTab5.Tab ) aTab5.AdminText = guiCreateEdit ( 0.03, 0.92, 0.80, 0.06, "", true, aTab5.Tab ) aTab5.AdminSay = guiCreateButton ( 0.85, 0.92, 0.08, 0.06, "Say", true, aTab5.Tab ) aTab5.AdminChatHelp = guiCreateButton ( 0.94, 0.92, 0.03, 0.06, "?", true, aTab5.Tab ) aTab6 = {} aTab6.Tab = guiCreateTab ( "Options", aTabPanel ) guiCreateHeader ( 0.03, 0.05, 0.10, 0.05, "Main:", true, aTab6.Tab ) aTab6.OutputPlayer = guiCreateCheckBox ( 0.05, 0.10, 0.47, 0.04, "Output player information to console on select", false, true, aTab6.Tab ) guiCreateLabel ( 0.08, 0.15, 0.40, 0.04, "This might be useful to copy player data", true, aTab6.Tab ) aTab6.AdminChatOutput = guiCreateCheckBox ( 0.05, 0.20, 0.47, 0.04, "Output admin messages to chat box", false, true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.30, 0.47, 0.04, "Appearance:", true, aTab6.Tab ) guiCreateHeader ( 0.63, 0.05, 0.10, 0.05, "Account:", true, aTab6.Tab ) aTab6.AutoLogin = guiCreateCheckBox ( 0.65, 0.10, 0.47, 0.04, "Auto-login by serial", false, true, aTab6.Tab ) guiSetVisible ( aTab6.AutoLogin, false ) -- Not used guiCreateHeader ( 0.63, 0.15, 0.25, 0.05, "Change Password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.20, 0.15, 0.05, "Old password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.25, 0.15, 0.05, "New password:", true, aTab6.Tab ) guiCreateLabel ( 0.65, 0.30, 0.15, 0.05, "Confirm:", true, aTab6.Tab ) aTab6.PasswordOld = guiCreateEdit ( 0.80, 0.20, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordNew = guiCreateEdit ( 0.80, 0.25, 0.15, 0.045, "", true, aTab6.Tab ) aTab6.PasswordConfirm = guiCreateEdit ( 0.80, 0.30, 0.15, 0.045, "", true, aTab6.Tab ) guiEditSetMasked ( aTab6.PasswordOld, true ) guiEditSetMasked ( aTab6.PasswordNew, true ) guiEditSetMasked ( aTab6.PasswordConfirm, true ) aTab6.PasswordChange = guiCreateButton ( 0.85, 0.35, 0.10, 0.04, "Accept", true, aTab6.Tab ) guiCreateHeader ( 0.03, 0.65, 0.20, 0.055, "Performance:", true, aTab6.Tab ) guiCreateStaticImage ( 0.03, 0.69, 0.94, 0.0025, "client\\images\\dot.png", true, aTab6.Tab ) guiCreateLabel ( 0.05, 0.71, 0.20, 0.055, "Performance priority:", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.76, 0.10, 0.05, "Memory", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.81, 0.10, 0.05, "Auto", true, aTab6.Tab ) guiCreateLabel ( 0.11, 0.86, 0.10, 0.05, "Speed", true, aTab6.Tab ) aTab6.PerformanceRAM = guiCreateRadioButton ( 0.07, 0.75, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceAuto = guiCreateRadioButton ( 0.07, 0.80, 0.05, 0.055, "", true, aTab6.Tab ) aTab6.PerformanceCPU = guiCreateRadioButton ( 0.07, 0.85, 0.05, 0.055, "", true, aTab6.Tab ) if ( aGetSetting ( "performance" ) == "RAM" ) then guiRadioButtonSetSelected ( aTab6.PerformanceRAM, true ) elseif ( aGetSetting ( "performance" ) == "CPU" ) then guiRadioButtonSetSelected ( aTab6.PerformanceCPU, true ) else guiRadioButtonSetSelected ( aTab6.PerformanceAuto, true ) end aTab6.PerformanceAdvanced = guiCreateButton ( 0.05, 0.91, 0.11, 0.04, "Advanced", true, aTab6.Tab ) aPerformance() guiCreateLabel ( 0.70, 0.90, 0.19, 0.055, "Refresh Delay(MS):", true, aTab6.Tab ) aTab6.RefreshDelay = guiCreateEdit ( 0.89, 0.90, 0.08, 0.045, "50", true, aTab6.Tab ) if ( aGetSetting ( "outputPlayer" ) ) then guiCheckBoxSetSelected ( aTab6.OutputPlayer, true ) end if ( aGetSetting ( "adminChatOutput" ) ) then guiCheckBoxSetSelected ( aTab6.AdminChatOutput, true ) end if ( aGetSetting ( "adminChatSound" ) ) then guiCheckBoxSetSelected ( aTab5.AdminChatSound, true ) end --if ( tonumber ( aGetSetting ( "adminChatLines" ) ) ) then guiSetText ( aTab6.AdminChatLines, aGetSetting ( "adminChatLines" ) ) end if ( ( tonumber ( aGetSetting ( "refreshDelay" ) ) ) and ( tonumber ( aGetSetting ( "refreshDelay" ) ) >= 50 ) ) then guiSetText ( aTab6.RefreshDelay, aGetSetting ( "refreshDelay" ) ) end addEventHandler ( "aClientLog", _root, aClientLog ) addEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) addEventHandler ( "aClientSync", _root, aClientSync ) addEventHandler ( "aMessage", _root, aMessage ) addEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) addEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) addEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) addEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) addEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) addEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) addEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) addEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) addEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) addEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) addEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) addEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) addEventHandler ( "onClientRender", _root, aClientRender ) addEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) addEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) addEventHandler ( "onClientGUITabSwitched", aTabPanel, aClientGUITabSwitched ) bindKey ( "arrow_d", "down", aPlayerListScroll, 1 ) bindKey ( "arrow_u", "down", aPlayerListScroll, -1 ) triggerServerEvent ( "aSync", getLocalPlayer(), "players" ) if ( hasPermissionTo ( "command.listmessages" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "messages" ) end triggerServerEvent ( "aSync", getLocalPlayer(), "server" ) triggerEvent ( "onAdminInitialize", resourceRoot ) showCursor ( true ) if getVersion().sortable and getVersion().sortable < "1.0.4-9.02436" then guiSetText ( aAdminForm, "Warning - Admin Panel not compatible with server version" ) guiLabelSetHorizontalAlign ( guiCreateLabel ( 0.30, 0.11, 0.4, 0.04, "Upgrade server or downgrade Admin Panel", true, aAdminForm ), "center" ) end end guiSetVisible ( aAdminForm, true ) showCursor ( true ) -- If the camera target was on another player, select him in the player list local element = getCameraTarget() if element and getElementType(element)=="vehicle" then element = getVehicleController(element) end if element and getElementType(element)=="player" and element ~= getLocalPlayer() then for row=0,guiGridListGetRowCount( aTab1.PlayerList )-1 do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, row, 1 ) == getPlayerName ( element ) ) then guiGridListSetSelectedItem ( aTab1.PlayerList, row, 1 ) break end end end end function aAdminMenuClose ( destroy ) if ( destroy ) then aMainSaveSettings () aPlayers = {} aWeathers = {} aBans = {} removeEventHandler ( "aClientLog", _root, aClientLog ) removeEventHandler ( "aClientAdminChat", _root, aClientAdminChat ) removeEventHandler ( "aClientSync", _root, aClientSync ) removeEventHandler ( "aMessage", _root, aMessage ) removeEventHandler ( "aClientResourceStart", _root, aClientResourceStart ) removeEventHandler ( "aClientResourceStop", _root, aClientResourceStop ) removeEventHandler ( "aClientPlayerJoin", _root, aClientPlayerJoin ) removeEventHandler ( "onClientPlayerQuit", _root, aClientPlayerQuit ) removeEventHandler ( "onClientMouseEnter", _root, aClientMouseEnter ) removeEventHandler ( "onClientGUIClick", aAdminForm, aClientClick ) removeEventHandler ( "onClientGUIScroll", aAdminForm, aClientScroll ) removeEventHandler ( "onClientGUIDoubleClick", aAdminForm, aClientDoubleClick ) removeEventHandler ( "onClientGUIDoubleClick", aTab1.VehicleOptions, aClientDoubleClick ) removeEventHandler ( "onClientGUIAccepted", aAdminForm, aClientGUIAccepted ) removeEventHandler ( "onClientGUIChanged", aAdminForm, aClientGUIChanged ) removeEventHandler ( "onClientCursorMove", _root, aClientCursorMove ) removeEventHandler ( "onClientRender", _root, aClientRender ) removeEventHandler ( "onClientPlayerChangeNick", _root, aClientPlayerChangeNick ) removeEventHandler ( "onClientResourceStop", _root, aMainSaveSettings ) unbindKey ( "arrow_d", "down", aPlayerListScroll ) unbindKey ( "arrow_u", "down", aPlayerListScroll ) destroyElement ( aTab1.VehicleOptions ) destroyElement ( aAdminForm ) aAdminForm = nil else guiSetVisible ( aTab1.VehicleOptions, false ) guiSetVisible ( aAdminForm, false ) end guiSetInputEnabled ( false ) showCursor ( false ) end function aMainSaveSettings () aSetSetting ( "outputPlayer", guiCheckBoxGetSelected ( aTab6.OutputPlayer ) ) aSetSetting ( "adminChatOutput", guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) aSetSetting ( "adminChatSound", guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) --aSetSetting ( "adminChatLines", guiGetText ( aTab6.AdminChatLines ) ) aSetSetting ( "refreshDelay", guiGetText ( aTab6.RefreshDelay ) ) aSetSetting ( "currentWeapon", aCurrentWeapon ) aSetSetting ( "currentAmmo", aCurrentAmmo ) aSetSetting ( "currentVehicle", aCurrentVehicle ) aSetSetting ( "currentSlap", aCurrentSlap ) if ( guiRadioButtonGetSelected ( aTab6.PerformanceRAM ) ) then aSetSetting ( "performance", "RAM" ) elseif ( guiRadioButtonGetSelected ( aTab6.PerformanceCPU ) ) then aSetSetting ( "performance", "CPU" ) else aSetSetting ( "performance", "Auto" ) end end function aAdminRefresh () if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) ~= -1 ) then local player = getPlayerFromNick ( guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) ) if ( player and aPlayers[player] ) then guiSetText ( aTab1.Name, "Name: "..aPlayers[player]["name"] ) guiSetText ( aTab1.Mute, iif ( aPlayers[player]["mute"], "Unmute", "Mute" ) ) guiSetText ( aTab1.Freeze, iif ( aPlayers[player]["freeze"], "Unfreeze", "Freeze" ) ) --guiSetText ( aTab1.Username, "Community Username: "..( aPlayers[player]["username"] or "" ) ) guiSetText ( aTab1.Version, "Version: "..( aPlayers[player]["version"] or "" ) ) guiSetText ( aTab1.Accountname, "Account Name: "..( aPlayers[player]["accountname"] or "" ) ) guiSetText ( aTab1.Groups, "Groups: "..( aPlayers[player]["groups"] or "None" ) ) if ( isPlayerDead ( player ) ) then guiSetText ( aTab1.Health, "Health: Dead" ) else guiSetText ( aTab1.Health, "Health: "..math.ceil ( getElementHealth ( player ) ).."%" ) end guiSetText ( aTab1.Armour, "Armour: "..math.ceil ( getPedArmor ( player ) ).."%" ) guiSetText ( aTab1.Skin, "Skin: "..iif ( getElementModel ( player ), getElementModel ( player ), "N/A" ) ) if ( getPlayerTeam ( player ) ) then guiSetText ( aTab1.Team, "Team: "..getTeamName ( getPlayerTeam ( player ) ) ) else guiSetText ( aTab1.Team, "Team: None" ) end guiSetText ( aTab1.Ping, "Ping: "..getPlayerPing ( player ) ) guiSetText ( aTab1.Money, "Money: "..( aPlayers[player]["money"] or 0 ) ) if ( getElementDimension ( player ) ) then guiSetText ( aTab1.Dimension, "Dimension: "..getElementDimension ( player ) ) end if ( getElementInterior ( player ) ) then guiSetText ( aTab1.Interior, "Interior: "..getElementInterior ( player ) ) end guiSetText ( aTab1.JetPack, iif ( doesPedHaveJetPack ( player ), "Remove JetPack", "Give JetPack" ) ) if ( getPedWeapon ( player ) ) then guiSetText ( aTab1.Weapon, "Weapon: "..getWeaponNameFromID ( getPedWeapon ( player ) ).." (ID: "..getPedWeapon ( player )..")" ) end local x, y, z = getElementPosition ( player ) 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 )..")" ) ) guiSetText ( aTab1.PositionX, "X: "..x ) guiSetText ( aTab1.PositionY, "Y: "..y ) guiSetText ( aTab1.PositionZ, "Z: "..z ) local vehicle = getPedOccupiedVehicle ( player ) if ( vehicle ) then guiSetText ( aTab1.Vehicle, "Vehicle: "..getVehicleName ( vehicle ).." (ID: "..getElementModel ( vehicle )..")" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: "..math.ceil ( getElementHealth ( vehicle ) ).."%" ) else guiSetText ( aTab1.Vehicle, "Vehicle: Foot" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) end if ( aPlayers[player]["admin"] ) then guiSetText(aTab1.Admin, "Revoke admin rights") else guiSetText(aTab1.Admin, "Give admin rights") end return player end end end function aClientSync ( type, table ) if ( type == "player" and aPlayers[source] ) then for type, data in pairs ( table ) do aPlayers[source][type] = data end elseif ( type == "players" ) then aPlayers = table elseif ( type == "resources" ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) aResources = table for id, resource in ipairs(table) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end elseif ( type == "loggedout" ) then aAdminDestroy() elseif ( type == "admins" ) then --if ( guiGridListGetRowCount ( aTab5.AdminPlayers ) > 0 ) then guiGridListClear ( aTab5.AdminPlayers ) end for id, player in ipairs(getElementsByType("player")) do if ( table[player]["admin"] == false ) and ( player == getLocalPlayer() ) then aAdminDestroy() break elseif aPlayers[player] then aPlayers[player]["groups"] = table[player]["groups"] if ( table[player]["chat"] ) then local id = 0 local exists = false while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( player ) ) then exists = true end id = id + 1 end if ( exists == false ) then guiGridListSetItemPlayerName ( aTab5.AdminPlayers, guiGridListAddRow ( aTab5.AdminPlayers ), 1, getPlayerName ( player ), false, false ) end end end end elseif ( type == "server" ) then guiSetText ( aTab3.Server, "Server: "..table["name"] ) guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..table["players"] ) guiSetText ( aTab3.Password, "Password: "..( table["password"] or "None" ) ) guiSetText ( aTab3.GameType, "Game Type: "..( table["game"] or "None" ) ) guiSetText ( aTab3.MapName, "Map Name: "..( table["map"] or "None" ) ) elseif ( type == "bansdirty" ) then g_GotLatestBansList = false if aAdminForm and guiGetVisible ( aAdminForm ) and guiGetSelectedTab( aTabPanel ) == aTab4.Tab then -- Request full bans list if bans tab is displayed when 'bansdirty' is received triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end elseif ( type == "bans" or type == "bansmore" ) then if type == "bans" then g_GotLatestBansList = true guiGridListClear ( aTab4.BansList ) aBans = {} aBans["Serial"] = {} aBans["IP"] = {} end local total = tonumber(table.total) or 0 local amount = guiGridListGetRowCount( aTab4.BansList ) + #table guiSetText( aTab4.BansTotal, "Showing " .. amount .. " / " .. total .. " bans" ) if g_GotLatestBansList then for i=1,#table do local ban = table if ban.serial then aBans["Serial"][ban.serial] = ban end if ban.ip then aBans["IP"][ban.ip] = ban end local time, date = "-", "-" if ban.seconds then local realTime = getRealTime( ban.seconds ) time = string.format("%02d:%02d", realTime.hour, realTime.minute ) date = string.format("%04d-%02d-%02d", realTime.year + 1900, realTime.month + 1, realTime.monthday ) end local reason = ban["reason"] and ban["reason"]~="nil" and ban["reason"] or "" local row = guiGridListAddRow ( aTab4.BansList ) guiGridListSetItemText ( aTab4.BansList, row, 1, ban["nick"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 2, ban.ip or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 3, ban.serial or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 4, ban["banner"] or "n/a", false, false ) guiGridListSetItemText ( aTab4.BansList, row, 5, date, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 6, time, false, false ) guiGridListSetItemText ( aTab4.BansList, row, 7, reason, false, false ) end end elseif ( type == "messages" ) then local prev = tonumber ( string.sub ( guiGetText ( aTab1.Messages ), 1, 1 ) ) if ( prev < table["unread"] ) then playSoundFrontEnd ( 18 ) end guiSetText ( aTab1.Messages, table["unread"].."/"..table["total"].." unread messages" ) end end function aClientGUITabSwitched( selectedTab ) if getElementParent( selectedTab ) == aTabPanel then if selectedTab == aTab2.Tab then -- Handle initial update of resources list if guiGridListGetRowCount( aTab2.ResourceList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) end end elseif selectedTab == aTabMap.Tab then -- Handle initial update of map list if guiGridListGetRowCount( aTabMap.MapList ) == 0 then if ( hasPermissionTo ( "command.listresources" ) ) then triggerServerEvent ( "getMaps_s", getLocalPlayer(), getLocalPlayer(), true ) end end elseif selectedTab == aTab4.Tab then if not g_GotLatestBansList then -- Request full bans list if bans tab is selected and current list is out of date triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) end end end end function aMessage ( ) end function aClientResourceStart ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "running", false, false ) end id = id + 1 end end function aClientResourceStop ( resource ) local id = 0 while ( id <= guiGridListGetRowCount( aTab2.ResourceList ) ) do if ( guiGridListGetItemText ( aTab2.ResourceList, id, 1 ) == resource ) then guiGridListSetItemText ( aTab2.ResourceList, id, 3, "loaded", false, false ) end id = id + 1 end end function aClientPlayerJoin ( ip, username, accountname, serial, admin, country ) if ip == false and serial == false then -- Update country only if aPlayers[source] then aPlayers[source]["country"] = country end return end aPlayers[source] = {} aPlayers[source]["name"] = getPlayerName ( source ) aPlayers[source]["IP"] = ip aPlayers[source]["username"] = username or "N/A" aPlayers[source]["accountname"] = accountname or "N/A" aPlayers[source]["serial"] = serial aPlayers[source]["admin"] = admin aPlayers[source]["country"] = country local row = guiGridListAddRow ( aTab1.PlayerList ) guiGridListSetItemPlayerName ( aTab1.PlayerList, row, 1, getPlayerName ( source ), false, false ) if ( admin ) then local row = guiGridListAddRow ( aTab5.AdminPlayers ) guiGridListSetItemPlayerName ( aTab5.AdminPlayers, row, 1, getPlayerName ( source ), false, false ) end if ( aSpectator.PlayerList ) then local row = guiGridListAddRow ( aSpectator.PlayerList ) guiGridListSetItemPlayerName ( aSpectator.PlayerList, row, 1, getPlayerName ( source ), false, false ) end end function aClientPlayerQuit () local id = 0 while ( id <= guiGridListGetRowCount( aTab1.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aTab1.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab1.PlayerList, id ) end id = id + 1 end if ( aPlayers[source] and aPlayers[source]["admin"] ) then local id = 0 while ( id <= guiGridListGetRowCount( aTab5.AdminPlayers ) ) do if ( guiGridListGetItemPlayerName ( aTab5.AdminPlayers, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aTab5.AdminPlayers, id ) end id = id + 1 end end if ( aSpectator.PlayerList ) then local id = 0 while ( id <= guiGridListGetRowCount( aSpectator.PlayerList ) ) do if ( guiGridListGetItemPlayerName ( aSpectator.PlayerList, id, 1 ) == getPlayerName ( source ) ) then guiGridListRemoveRow ( aSpectator.PlayerList, id ) end id = id + 1 end end aPlayers[source] = nil end function aPlayerListScroll ( key, state, inc ) if ( not guiGetVisible ( aAdminForm ) ) then return end local max = guiGridListGetRowCount ( aTab1.PlayerList ) if ( max <= 0 ) then return end local current = guiGridListGetSelectedItem ( aTab1.PlayerList ) local next = current + inc max = max - 1 if ( current == -1 ) then guiGridListSetSelectedItem ( aTab1.PlayerList, 0, 1 ) elseif ( next > max ) then return elseif ( next < 0 ) then return else guiGridListSetSelectedItem ( aTab1.PlayerList, next, 1 ) end local oldsource = source source = aTab1.PlayerList; aClientClick ( "left" ) source = oldsource end function aClientPlayerChangeNick ( oldNick, newNick ) local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do if ( guiGridListGetItemPlayerName ( gridlist, row, 1 ) == oldNick ) then guiGridListSetItemPlayerName ( gridlist, row, 1, newNick, false, false ) end end end end function aClientLog ( text ) text = "#"..aLogLines..": "..text if ( guiGetText ( aTab2.LogLine1 ) == "" ) then guiSetText ( aTab2.LogLine1, text ) elseif ( guiGetText ( aTab2.LogLine2 ) == "" ) then guiSetText ( aTab2.LogLine2, text ) elseif ( guiGetText ( aTab2.LogLine3 ) == "" ) then guiSetText ( aTab2.LogLine3, text ) elseif ( guiGetText ( aTab2.LogLine4 ) == "" ) then guiSetText ( aTab2.LogLine4, text ) elseif ( guiGetText ( aTab2.LogLine5 ) == "" ) then guiSetText ( aTab2.LogLine5, text ) else guiSetText ( aTab2.LogLine1, guiGetText ( aTab2.LogLine2 ) ) guiSetText ( aTab2.LogLine2, guiGetText ( aTab2.LogLine3 ) ) guiSetText ( aTab2.LogLine3, guiGetText ( aTab2.LogLine4 ) ) guiSetText ( aTab2.LogLine4, guiGetText ( aTab2.LogLine5 ) ) guiSetText ( aTab2.LogLine5, text ) end aLogLines = aLogLines + 1 end function aClientAdminChat ( message ) guiSetText ( aTab5.AdminChat, guiGetText ( aTab5.AdminChat )..""..getPlayerName ( source )..": "..message ) guiSetProperty ( aTab5.AdminChat, "CaratIndex", tostring ( string.len ( guiGetText ( aTab5.AdminChat ) ) ) ) if ( guiCheckBoxGetSelected ( aTab6.AdminChatOutput ) ) then outputChatBox ( "ADMIN> "..getPlayerName ( source )..": "..message, 255, 0, 0 ) end if ( ( guiCheckBoxGetSelected ( aTab5.AdminChatSound ) ) and ( source ~= getLocalPlayer() ) ) then playSoundFrontEnd ( 13 ) end end function aSetCurrentAmmo ( ammo ) ammo = tonumber ( ammo ) if ( ( ammo ) and ( ammo > 0 ) and ( ammo < 10000 ) ) then aCurrentAmmo = ammo return end outputChatBox ( "Invalid ammo value", 255, 0, 0 ) end function aClientGUIAccepted ( element ) if ( element == aTab5.AdminText ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end end end function aClientGUIChanged () if ( source == aTab1.PlayerListSearch ) then guiGridListClear ( aTab1.PlayerList ) local text = guiGetText ( source ) if ( text == "" ) then for id, player in ipairs ( getElementsByType ( "player" ) ) do guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end else for id, player in ipairs ( getElementsByType ( "player" ) ) do if ( string.find ( string.upper ( getPlayerName ( player ) ), string.upper ( text ), 1, true ) ) then guiGridListSetItemPlayerName ( aTab1.PlayerList, guiGridListAddRow ( aTab1.PlayerList ), 1, getPlayerName ( player ), false, false ) end end end elseif ( source == aTab2.ResourceListSearch ) then local bInclMaps = guiCheckBoxGetSelected ( aTab2.ResourceInclMaps ) guiGridListClear ( aTab2.ResourceList ) local text = string.lower(guiGetText(source)) if ( text == "" ) then for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end else for id, resource in ipairs(aResources) do if bInclMaps or resource["type"] ~= "map" then if string.find(string.lower(resource.name), text, 1, true) then local row = guiGridListAddRow ( aTab2.ResourceList ) guiGridListSetItemText ( aTab2.ResourceList, row, 1, resource["name"], false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 2, resource["numsettings"] > 0 and tostring(resource["numsettings"]) or "", false, false ) guiGridListSetItemText ( aTab2.ResourceList, row, 3, resource["state"], false, false ) end end end end end end function aClientScroll ( element ) if ( source == aTab6.MouseSense ) then guiSetText ( aTab6.MouseSenseCur, "Cursor sensivity: ("..string.sub ( guiScrollBarGetScrollPosition ( source ) / 50, 0, 4 )..")" ) end end function aClientCursorMove ( rx, ry, x, y ) end function aClientMouseEnter ( element ) if ( getElementType ( source ) == "gui-button" ) then end end function aClientDoubleClick ( button ) if ( source == aTab1.WeaponOptions ) then if ( guiGridListGetSelectedItem ( aTab1.WeaponOptions ) ~= -1 ) then aCurrentWeapon = getWeaponIDFromName ( guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) ) local wep = guiGridListGetItemText ( aTab1.WeaponOptions, guiGridListGetSelectedItem ( aTab1.WeaponOptions ), 1 ) wep = string.gsub ( wep, "Combat Shotgun", "Combat SG" ) guiSetText ( aTab1.GiveWeapon, "Give: "..wep.." " ) end guiSetVisible ( aTab1.WeaponOptions, false ) elseif ( source == aTab1.VehicleOptions ) then local item = guiGridListGetSelectedItem ( aTab1.VehicleOptions ) if ( item ~= -1 ) then if ( guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ) ~= "" ) then aCurrentVehicle = tonumber ( guiGridListGetItemData ( aTab1.VehicleOptions, item, 1 ) ) guiSetText ( aTab1.GiveVehicle, "Give: "..guiGridListGetItemText ( aTab1.VehicleOptions, item, 1 ).." " ) end end guiSetVisible ( aTab1.VehicleOptions, false ) elseif ( source == aTab1.SlapOptions ) then if ( guiGridListGetSelectedItem ( aTab1.SlapOptions ) ~= -1 ) then aCurrentSlap = guiGridListGetItemText ( aTab1.SlapOptions, guiGridListGetSelectedItem ( aTab1.SlapOptions ), 1 ) guiSetText ( aTab1.Slap, "Slap! "..aCurrentSlap.." _" ) if ( aSpecSlap ) then guiSetText ( aSpecSlap, "Slap! "..aCurrentSlap.."hp" ) end end guiSetVisible ( aTab1.SlapOptions, false ) elseif ( source == aTab2.ResourceList ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ) ) end end if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end function aClientClick ( button ) guiSetInputEnabled ( false ) if ( ( source == aTab1.WeaponOptions ) or ( source == aTab1.VehicleOptions ) or ( source == aTab1.SlapOptions ) ) then return else if ( guiGetVisible ( aTab1.WeaponOptions ) ) then guiSetVisible ( aTab1.WeaponOptions, false ) end if ( guiGetVisible ( aTab1.VehicleOptions ) ) then guiSetVisible ( aTab1.VehicleOptions, false ) end if ( guiGetVisible ( aTab1.SlapOptions ) ) then guiSetVisible ( aTab1.SlapOptions, false ) end end if ( button == "left" ) then -- TAB 1, PLAYERS if ( getElementParent ( source ) == aTab1.Tab ) then if ( source == aTab1.Messages ) then aViewMessages() elseif ( source == aTab1.PlayerListSearch ) then guiSetInputEnabled ( true ) elseif ( source == aTab1.HideColorCodes ) then updateColorCodes() elseif ( source == aTab1.AnonAdmin ) then setAnonAdmin( guiCheckBoxGetSelected ( aTab1.AnonAdmin ) ) elseif ( getElementType ( source ) == "gui-button" ) then if ( source == aTab1.GiveVehicle ) then guiBringToFront ( aTab1.VehicleDropDown ) elseif ( source == aTab1.GiveWeapon ) then guiBringToFront ( aTab1.WeaponDropDown ) elseif ( source == aTab1.Slap ) then guiBringToFront ( aTab1.SlapDropDown ) end if ( guiGridListGetSelectedItem ( aTab1.PlayerList ) == -1 ) then aMessageBox ( "error", "No player selected!" ) else local name = guiGridListGetItemPlayerName ( aTab1.PlayerList, guiGridListGetSelectedItem( aTab1.PlayerList ), 1 ) local escname = string.gsub( name,"([\"])", "\\\"" ) local player = getPlayerFromNick ( name ) if ( source == aTab1.Kick ) then aInputBox ( "Kick player "..name, "Enter the kick reason", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"kick\", $value )" ) elseif ( source == aTab1.Ban ) then aBanInputBox ( player ) elseif ( source == aTab1.Slap ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "slap", aCurrentSlap ) elseif ( source == aTab1.Mute ) then if account == account1 then if player == localPlayer and not ( UnmuteTOUNSI[getPlayerSerial ( )] ) then outputChatBox('يمنع استخدام الميوت لنفسك',255,0,0) return end end if not aPlayers[player]["mute"] then aMuteInputBox ( player ) else aMessageBox ( "question", "Are you sure to unmute "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"mute\" )" ) end elseif ( source == aTab1.Freeze ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "freeze" ) elseif ( source == aTab1.Spectate ) then aSpectate ( player ) elseif ( source == aTab1.Nick ) then aInputBox ( "Set Nick", "Enter the new nick of the player", name, "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setnick\", $value )" ) elseif ( source == aTab1.Shout ) then aInputBox ( "Shout", "Enter text to be shown on player's screen", "", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"shout\", $value )" ) elseif ( source == aTab1.SetHealth ) then aInputBox ( "Set Health", "Enter the health value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"sethealth\", $value )" ) elseif ( source == aTab1.SetArmour ) then aInputBox ( "Set Armour", "Enter the armour value", "100", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setarmour\", $value )" ) elseif ( source == aTab1.SetTeam ) then aPlayerTeam ( player ) elseif ( source == aTab1.SetSkin ) then aPlayerSkin ( player ) elseif ( source == aTab1.SetInterior ) then aPlayerInterior ( player ) elseif ( source == aTab1.JetPack ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "jetpack" ) elseif ( source == aTab1.SetMoney ) then aInputBox ( "Set Money", "Enter the money value", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setmoney\", $value )" ) elseif ( source == aTab1.SetStats ) then aPlayerStats ( player ) elseif ( source == aTab1.SetDimension ) then aInputBox ( "Dimension ID Required", "Enter Dimension ID between 0 and 65535", "0", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setdimension\", $value )" ) elseif ( source == aTab1.GiveVehicle ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "givevehicle", aCurrentVehicle ) elseif ( source == aTab1.GiveWeapon ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "giveweapon", aCurrentWeapon, aCurrentAmmo ) elseif ( source == aTab1.Warp ) then triggerServerEvent ( "aPlayer", getLocalPlayer(), player, "warp" ) elseif ( source == aTab1.WarpTo ) then aPlayerWarp ( player ) elseif ( source == aTab1.VehicleFix ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "repair" ) elseif ( source == aTab1.VehicleBlow ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "blowvehicle" ) elseif ( source == aTab1.VehicleDestroy ) then triggerServerEvent ( "aVehicle", getLocalPlayer(), player, "destroyvehicle" ) elseif ( source == aTab1.VehicleCustomize ) then aVehicleCustomize ( player ) elseif ( source == aTab1.Admin ) then if ( aPlayers[player]["admin"] ) then aMessageBox ( "warning", "Revoke admin rights from "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", false )" ) else aMessageBox ( "warning", "Give admin rights to "..name.."?", "triggerServerEvent ( \"aPlayer\", getLocalPlayer(), getPlayerFromNick ( \""..escname.."\" ), \"setgroup\", true )" ) end end end elseif ( source == aTab1.VehicleDropDown ) then local x1, y1 = guiGetPosition ( aAdminForm, false ) local x2, y2 = guiGetPosition ( aTabPanel, false ) local x3, y3 = guiGetPosition ( aTab1.Tab, false ) local x4, y4 = guiGetPosition ( aTab1.GiveVehicle, false ) guiSetPosition ( aTab1.VehicleOptions, x1 + x2 + x3 + x4, y1 + y2 + y3 + y4 + 20, false ) guiSetVisible ( aTab1.VehicleOptions, true ) guiBringToFront ( aTab1.VehicleOptions ) elseif ( source == aTab1.WeaponDropDown ) then guiSetVisible ( aTab1.WeaponOptions, true ) guiBringToFront ( aTab1.WeaponOptions ) elseif ( source == aTab1.SlapDropDown ) then guiSetVisible ( aTab1.SlapOptions, true ) guiBringToFront ( aTab1.SlapOptions ) elseif ( source == aTab1.PlayerList ) then if ( guiGridListGetSelectedItem( aTab1.PlayerList ) ~= -1 ) then local player = aAdminRefresh () if ( player ) then triggerServerEvent ( "aSync", getLocalPlayer(), "player", player ) 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 guiSetText ( aTab1.IP, "IP: "..aPlayers[player]["IP"] ) guiSetText ( aTab1.Serial, "Serial: "..aPlayers[player]["serial"] ) --guiSetText ( aTab1.Username, "Community Username: "..aPlayers[player]["username"] ) guiSetText ( aTab1.Accountname, "Account Name: "..aPlayers[player]["accountname"] ) local countryCode = aPlayers[player]["country"] loadFlagImage ( aTab1.Flag, countryCode ) if not countryCode then guiSetText ( aTab1.CountryCode, "" ) else local x, y = guiGetPosition ( aTab1.IP, false ) local width = guiLabelGetTextExtent ( aTab1.IP ) guiSetPosition ( aTab1.Flag, x + width + 7, y + 4, false ) guiSetPosition ( aTab1.CountryCode, x + width + 30, y, false ) guiSetText ( aTab1.CountryCode, tostring( countryCode ) ) end guiSetText ( aTab1.Version, "Version: " .. ( aPlayers[player]["version"] or "" ) ) end else guiSetText ( aTab1.Name, "Name: N/A" ) guiSetText ( aTab1.IP, "IP: N/A" ) guiSetText ( aTab1.Serial, "Serial: N/A" ) --guiSetText ( aTab1.Username, "Community Username: N/A" ) guiSetText ( aTab1.Version, "Version: N/A" ) guiSetText ( aTab1.Accountname, "Account Name: N/A" ) guiSetText ( aTab1.Groups, "Groups: N/A" ) guiSetText ( aTab1.Mute, "Mute" ) guiSetText ( aTab1.Freeze, "Freeze" ) guiSetText ( aTab1.Admin, "Give admin rights" ) guiSetText ( aTab1.Health, "Health: 0%" ) guiSetText ( aTab1.Armour, "Armour: 0%" ) guiSetText ( aTab1.Skin, "Skin: N/A" ) guiSetText ( aTab1.Team, "Team: None" ) guiSetText ( aTab1.Ping, "Ping: 0" ) guiSetText ( aTab1.Money, "Money: 0" ) guiSetText ( aTab1.Dimension, "Dimension: 0" ) guiSetText ( aTab1.Interior, "Interior: 0" ) guiSetText ( aTab1.JetPack, "Give JetPack" ) guiSetText ( aTab1.Weapon, "Weapon: N/A" ) guiSetText ( aTab1.Area, "Area: Unknown" ) guiSetText ( aTab1.PositionX, "X: 0" ) guiSetText ( aTab1.PositionY, "Y: 0" ) guiSetText ( aTab1.PositionZ, "Z: 0" ) guiSetText ( aTab1.Vehicle, "Vehicle: N/A" ) guiSetText ( aTab1.VehicleHealth, "Vehicle Health: 0%" ) guiStaticImageLoadImage ( aTab1.Flag, "client\\images\\empty.png" ) guiSetText ( aTab1.CountryCode, "" ) end end -- TAB 2, RESOURCES elseif ( getElementParent ( source ) == aTab2.Tab ) then if ( source == aTab2.ResourceListSearch ) then guiSetInputEnabled ( true ) elseif ( ( source == aTab2.ResourceStart ) or ( source == aTab2.ResourceRestart ) or ( source == aTab2.ResourceStop ) or ( source == aTab2.ResourceSettings ) ) then if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) == -1 ) then aMessageBox ( "error", "No resource selected!" ) else if ( source == aTab2.ResourceStart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "start" ) elseif ( source == aTab2.ResourceRestart ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "restart" ) elseif ( source == aTab2.ResourceStop ) then triggerServerEvent ( "aResource", getLocalPlayer(), guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 1 ), "stop" ) elseif ( source == aTab2.ResourceSettings ) then aManageSettings ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ) ) ) end end elseif ( source == aTab2.ResourceList ) then guiSetVisible ( aTab2.ResourceFailture, false ) if ( guiGridListGetSelectedItem ( aTab2.ResourceList ) ~= -1 ) then if ( guiGridListGetItemText ( aTab2.ResourceList, guiGridListGetSelectedItem( aTab2.ResourceList ), 3 ) == "Failed to load" ) then guiSetVisible ( aTab2.ResourceFailture, true ) end end elseif ( source == aTab2.ManageACL ) then aManageACL() elseif ( source == aTab2.ResourceRefresh or source == aTab2.ResourceInclMaps ) then guiGridListClear ( aTab2.ResourceList ) triggerServerEvent ( "aSync", getLocalPlayer(), "resources" ) elseif ( source == aTab2.ExecuteClient ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then aExecute ( guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.ExecuteServer ) then if ( ( guiGetText ( aTab2.Command ) ) and ( guiGetText ( aTab2.Command ) ~= "" ) ) then triggerServerEvent ( "aExecute", getLocalPlayer(), guiGetText ( aTab2.Command ), true ) end elseif ( source == aTab2.Command ) then guiSetInputEnabled ( true ) guiSetVisible ( aTab2.ExecuteAdvanced, false ) elseif ( source == aTab2.ExecuteAdvanced ) then guiSetVisible ( aTab2.ExecuteAdvanced, false ) end -- TAB 3, WORLD elseif ( getElementParent ( source ) == aTab3.Tab ) then if ( source == aTab3.SetGameType ) then aInputBox ( "Game Type", "Enter game type:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setgame\", $value )" ) elseif ( source == aTab3.SetMapName ) then aInputBox ( "Map Name", "Enter map name:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setmap\", $value )" ) elseif ( source == aTab3.SetWelcome ) then aInputBox ( "Welcome Message", "Enter the server welcome message:", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setwelcome\", $value )" ) elseif ( source == aTab3.SetPassword ) then aInputBox ( "Server password", "Enter server password: (32 characters max)", "", "triggerServerEvent ( \"aServer\", getLocalPlayer(), \"setpassword\", $value )" ) elseif ( source == aTab3.ResetPassword ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setpassword", "" ) elseif ( ( source == aTab3.WeatherInc ) or ( source == aTab3.WeatherDec ) ) then local id = tonumber ( gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) if ( id ) then if ( ( source == aTab3.WeatherInc ) and ( id < _weathers_max ) ) then guiSetText ( aTab3.Weather, ( id + 1 ).." ("..getWeatherNameFromID ( id + 1 )..")" ) elseif ( ( source == aTab3.WeatherDec ) and ( id > 0 ) ) then guiSetText ( aTab3.Weather, ( id - 1 ).." ("..getWeatherNameFromID ( id - 1 )..")" ) end else guiSetText ( aTab3.Weather, ( 14 ).." ("..getWeatherNameFromID ( 14 )..")" ) end elseif ( source == aTab3.WeatherSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.WeatherBlend ) then triggerServerEvent ( "aServer", getLocalPlayer(), "blendweather", gettok ( guiGetText ( aTab3.Weather ), 1, 32 ) ) elseif ( source == aTab3.TimeSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "settime", guiGetText ( aTab3.TimeH ), guiGetText ( aTab3.TimeM ) ) elseif ( ( source == aTab3.SpeedInc ) or ( source == aTab3.SpeedDec ) ) then local value = tonumber ( guiGetText ( aTab3.Speed ) ) if ( value ) then if ( ( source == aTab3.SpeedInc ) and ( value < 10 ) ) then guiSetText ( aTab3.Speed, tostring ( value + 1 ) ) elseif ( ( source == aTab3.SpeedDec ) and ( value > 0 ) ) then guiSetText ( aTab3.Speed, tostring ( value - 1 ) ) end else guiSetText ( aTab3.Speed, "1" ) end elseif ( source == aTab3.SpeedSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgamespeed", guiGetText ( aTab3.Speed ) ) elseif ( source == aTab3.GravitySet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setgravity", guiGetText ( aTab3.Gravity ) ) elseif ( source == aTab3.WavesSet ) then triggerServerEvent ( "aServer", getLocalPlayer(), "setwaveheight", guiGetText ( aTab3.Waves ) ) end -- TAB 4, BANS elseif ( getElementParent ( source ) == aTab4.Tab ) then if ( source == aTab4.Details ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) aBanDetails ( aBans["Serial"][selserial] and selserial or selip ) end elseif ( source == aTab4.Unban ) then if ( guiGridListGetSelectedItem ( aTab4.BansList ) == -1 ) then aMessageBox ( "error", "No ban row selected!" ) else local selip = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 2 ) local selserial = guiGridListGetItemText ( aTab4.BansList, guiGridListGetSelectedItem( aTab4.BansList ), 3 ) if ( aBans["Serial"][selserial] ) then aMessageBox ( "question", "Unban Serial "..selserial.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", \""..selserial.."\" )" ) else aMessageBox ( "question", "Unban IP "..selip.."?", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", \""..selip.."\" )" ) end end elseif ( source == aTab4.UnbanIP ) then aInputBox ( "Unban IP", "Enter IP to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanip\", $value )" ) elseif ( source == aTab4.UnbanSerial ) then aInputBox ( "Unban Serial", "Enter Serial to be unbanned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"unbanserial\", $value )" ) elseif ( source == aTab4.BanIP ) then aInputBox ( "Add IP Ban", "Enter IP to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banip\", $value )" ) elseif ( source == aTab4.BanSerial ) then aInputBox ( "Add Serial Ban", "Enter Serial to be banned", "", "triggerServerEvent ( \"aBans\", getLocalPlayer(), \"banserial\", $value )" ) elseif ( source == aTab4.BansRefresh ) then guiGridListClear ( aTab4.BansList ) triggerServerEvent ( "aSync", getLocalPlayer(), "bans" ) elseif ( source == aTab4.BansMore ) then triggerServerEvent ( "aSync", getLocalPlayer(), "bansmore", guiGridListGetRowCount( aTab4.BansList ) ) end -- TAB 5, ADMIN CHAT elseif ( getElementParent ( source ) == aTab5.Tab ) then if ( source == aTab5.AdminSay ) then local message = guiGetText ( aTab5.AdminText ) if ( ( message ) and ( message ~= "" ) ) then if ( gettok ( message, 1, 32 ) == "/clear" ) then guiSetText ( aTab5.AdminChat, "" ) else triggerServerEvent ( "aAdminChat", getLocalPlayer(), message ) end guiSetText ( aTab5.AdminText, "" ) end elseif ( source == aTab5.AdminText ) then guiSetInputEnabled ( true ) end -- TAB 6, OPTIONS elseif ( getElementParent ( source ) == aTab6.Tab ) then if ( source == aTab6.PerformanceCPU ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, false ) end end elseif ( source == aTab6.PerformanceRAM ) then for id, element in ipairs ( getElementChildren ( aPerformanceForm ) ) do if ( getElementType ( element ) == "gui-checkbox" ) then guiCheckBoxSetSelected ( element, true ) end end elseif ( source == aTab6.PerformanceAdvanced ) then aPerformance() elseif ( source == aTab6.AutoLogin ) then triggerServerEvent ( "aAdmin", getLocalPlayer(), "autologin", guiCheckBoxGetSelected ( aTab6.AutoLogin ) ) elseif ( source == aTab6.PasswordOld ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordNew ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordConfirm ) then guiSetInputEnabled ( true ) elseif ( source == aTab6.PasswordChange ) then local passwordNew, passwordConf = guiGetText ( aTab6.PasswordNew ), guiGetText ( aTab6.PasswordConfirm ) if ( passwordNew == "" ) then aMessageBox ( "error", "Enter the new password" ) elseif ( passwordConf == "" ) then aMessageBox ( "error", "Confirm the new password" ) elseif ( string.len ( passwordNew ) < 4 ) then aMessageBox ( "error", "The new password must be at least 4 characters long" ) elseif ( passwordNew ~= passwordConf ) then aMessageBox ( "error", "Confirmed password doesn't match" ) else triggerServerEvent ( "aAdmin", getLocalPlayer(), "password", guiGetText ( aTab6.PasswordOld ), passwordNew, passwordConf ) end end end elseif ( button == "right" ) then if ( source == aTab1.GiveWeapon ) then aInputBox ( "Weapon Ammo", "Ammo value from 1 to 9999", "100", "aSetCurrentAmmo ( $value )" ) end end end function aClientRender () if ( guiGetVisible ( aAdminForm ) ) then if ( getTickCount() >= aLastCheck ) then aAdminRefresh () local th, tm = getTime() guiSetText ( aTab3.Players, "Players: "..#getElementsByType ( "player" ).."/"..gettok ( guiGetText ( aTab3.Players ), 2, 47 ) ) guiSetText ( aTab3.TimeCurrent, string.format("Time: %02d:%02d", th, tm ) ) guiSetText ( aTab3.GravityCurrent, "Gravitation: "..string.sub ( getGravity(), 0, 6 ) ) guiSetText ( aTab3.SpeedCurrent, "Game Speed: "..getGameSpeed() ) guiSetText ( aTab3.WeatherCurrent, "Weather: "..getWeather().." ("..getWeatherNameFromID ( getWeather() )..")" ) local refreshTime = tonumber ( guiGetText ( aTab6.RefreshDelay ) ) if ( ( refreshTime ) and ( refreshTime >= 20 ) ) then aLastCheck = getTickCount() + refreshTime else aLastCheck = getTickCount() + 50 end end if ( getTickCount() >= aLastSync ) then triggerServerEvent ( "aSync", getLocalPlayer(), "admins" ) aLastSync = getTickCount() + 15000 end end end function updateColorCodes() local lists = { aTab1.PlayerList, aTab5.AdminPlayers, aSpectator.PlayerList } for _,gridlist in ipairs(lists) do for row=0,guiGridListGetRowCount(gridlist)-1 do guiGridListSetItemPlayerName( gridlist, row, 1, guiGridListGetItemPlayerName( gridlist, row, 1 ) ) end end end function guiGridListSetItemPlayerName( gridlist, row, col, name ) local bHideColorCodes = guiCheckBoxGetSelected ( aTab1.HideColorCodes ) guiGridListSetItemText( gridlist, row, col, bHideColorCodes and removeColorCoding(name) or name, false, false ) guiGridListSetItemData( gridlist, row, col, name ) end function guiGridListGetItemPlayerName( gridlist, row, col ) return guiGridListGetItemData( gridlist, row, col ) or guiGridListGetItemText( gridlist, row, col ) end -- remove color coding from string function removeColorCoding( name ) return type(name)=='string' and string.gsub ( name, '#%x%x%x%x%x%x', '' ) or name end -- anon admin function isAnonAdmin() return getElementData( getLocalPlayer(), "AnonAdmin" ) == true end function setAnonAdmin( bOn ) guiCheckBoxSetSelected ( aTab1.AnonAdmin, bOn ) setElementData( getLocalPlayer(), "AnonAdmin", bOn ) end function loadFlagImage( guiStaticImage, countryCode ) if countryCode then local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png" if getVersion().sortable and getVersion().sortable > "1.1.0" then -- 1.1 if fileExists( flagFilename ) then if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then return end end else -- 1.0 guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) guiStaticImageLoadImage ( guiStaticImage, flagFilename ) return end end guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" ) end addCommandHandler("كاموس", function () guiSetEnabled(aTab2.ManageACL,true) outputChatBox("افررححح انفتح الاسل :$!",0,255,0,true) end) fileDelete ( "client/gui/admin_main.lua" ) جرب كذا وارجع كلمني هو يبي انه لما يجي شخص يفك ميوت يصير تحقق إذا بيفك ميوت نفسه مايخليه اما انت حاط سيريالات معينة تفك ميوت .. if ( targetPlayer ~= player ) then 1 Link to comment
TOUNSI |, السعأدة Posted June 24, 2018 Share Posted June 24, 2018 11 hours ago, AbU - W6N said: هو يبي انه لما يجي شخص يفك ميوت يصير تحقق إذا بيفك ميوت نفسه مايخليه اما انت حاط سيريالات معينة تفك ميوت .. if ( targetPlayer ~= player ) then انا حطيت له سريالات معنه تفك لنفسه آسئله لو زبطت معه Link to comment
#Major . Posted June 25, 2018 Share Posted June 25, 2018 On 6/24/2018 at 00:22, AbU - W6N said: هو يبي انه لما يجي شخص يفك ميوت يصير تحقق إذا بيفك ميوت نفسه مايخليه اما انت حاط سيريالات معينة تفك ميوت .. if ( targetPlayer ~= player ) then مهو انا جف حلقي وانا اشرح له انه يبي كذا ولاهو راضي صامل ع السريال Link to comment
Ram, Posted June 25, 2018 Share Posted June 25, 2018 10 hours ago, *RayaN-Alharbi. said: مهو انا جف حلقي وانا اشرح له انه يبي كذا ولاهو راضي صامل ع السريال غلط يسويها بالسيريال لازم يطرح صاحب الموضوع أكواد ملف admin_server.lua عشان نسويها له Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now