Mr.OppS Posted May 23, 2017 Share Posted May 23, 2017 ألـسـلام عليكم كيف الحال؟ مـود الـتـحـكـم فـي الـتـيـمات ! يـتــم عـمـل تيـم وحفظة , واإلـخخخ.. من خصائص المود تظهر الوحة لقروبات مـحـددة !! وتفتح الوحة من اف7 ! او تكتب امر باف8 المـود أجـربـة داخـل السيـرفر , فقط اشغل المود اللوحة تظهر !!!وتظهر لجميع المود يوجود بة 2 مشكلة ! Start الوحة تظهر حين تقوم بتشغيل المود الـوحـة تـظـهـر لـجـمــيـع الـرتــب ! رأبـطـ الـمـودteam manager الأكــود ,, اتمني تساعدونيكـلـيـنـت GUIEditor = { edit = {}, button = {}, window = {}, label = {}, gridlist = {}, checkbox = {}, combobox = {} } GUI = GUIEditor function string.contains(string, types) if types == "number" then if tonumber(string) then return true else return false end elseif types == "alphabetic" then if tonumber(string) then return false else return true end end end addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow(0.25, 0.23, 0.50, 0.55, "Team Manager", true) guiWindowSetSizable(GUIEditor.window[1], false) guiSetAlpha(GUIEditor.window[1], 1.00) GUIEditor.gridlist[1] = guiCreateGridList(0.04, 0.09, 0.34, 0.67, true, GUIEditor.window[1]) guiGridListAddColumn(GUIEditor.gridlist[1], "Team name", 0.9) GUIEditor.button[1] = guiCreateButton(0.04, 0.84, 0.34, 0.10, "Delete team", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FFFFFFFF") GUIEditor.edit[1] = guiCreateEdit(0.71, 0.18, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[1] = guiCreateLabel(0.53, 0.19, 0.15, 0.08, "Team name:\n", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[1], "default-bold-small") GUIEditor.edit[2] = guiCreateEdit(0.71, 0.31, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.edit[3] = guiCreateEdit(0.71, 0.45, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[2] = guiCreateLabel(0.53, 0.33, 0.15, 0.06, "R (red)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[2], "default-bold-small") guiLabelSetColor(GUIEditor.label[2], 255, 0, 0) GUIEditor.label[3] = guiCreateLabel(0.53, 0.47, 0.15, 0.06, "G (green)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[3], "default-bold-small") guiLabelSetColor(GUIEditor.label[3], 0, 255, 0) GUIEditor.edit[4] = guiCreateEdit(0.71, 0.57, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[4] = guiCreateLabel(0.53, 0.60, 0.16, 0.07, "B (blue)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[4], "default-bold-small") guiLabelSetColor(GUIEditor.label[4], 0, 0, 255) GUIEditor.button[2] = guiCreateButton(0.53, 0.77, 0.34, 0.10, "Create", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[2], "NormalTextColour", "FFFFFFFF") GUIEditor.checkbox[1] = guiCreateCheckBox(0.53, 0.69, 0.33, 0.04, "Save team?", false, true, GUIEditor.window[1]) guiSetFont(GUIEditor.checkbox[1], "default-small") GUIEditor.checkbox[2] = guiCreateCheckBox(0.01, 0.78, 0.46, 0.04, "Remove from database? (only the team was created by this resource!)", true, true, GUIEditor.window[1]) guiSetFont(GUIEditor.checkbox[2], "default-small") GUIEditor.button[9] = guiCreateButton(0.53, 0.89, 0.34, 0.09, "Close", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[9], "NormalTextColour", "FFFFFFFF") GUIEditor.button[8] = guiCreateButton(0.53, 0.06, 0.34, 0.09, "Player team management", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[8], "NormalTextColour", "FFFFFFFF") for i, v in ipairs( GUIEditor.label ) do guiLabelSetHorizontalAlign( v, "right" ) end GUIEditor.window[2] = guiCreateWindow(0.31, 0.39, 0.38, 0.21, "Confirmation", true) guiWindowSetSizable(GUIEditor.window[2], false) guiSetAlpha(GUIEditor.window[2], 1.00) guiSetVisible( GUIEditor.window[2], false ) GUIEditor.label[7] = guiCreateLabel(0.08, 0.37, 0.42, 0.12, "Are you sure you want to delete team: ", true, GUIEditor.window[2]) guiSetFont(GUIEditor.label[7], "default-small") guiLabelSetVerticalAlign(GUIEditor.label[7], "center") GUIEditor.button[3] = guiCreateButton(0.03, 0.73, 0.34, 0.21, "Yes", true, GUIEditor.window[2]) guiSetFont(GUIEditor.button[3], "default-bold-small") guiSetProperty(GUIEditor.button[3], "NormalTextColour", "FFFF0000") GUIEditor.button[4] = guiCreateButton(0.61, 0.73, 0.34, 0.21, "No", true, GUIEditor.window[2]) guiSetFont(GUIEditor.button[4], "default-bold-small") guiSetProperty(GUIEditor.button[4], "NormalTextColour", "FF00FF00") GUIEditor.label[8] = guiCreateLabel(0.40, 0.37, 0.42, 0.12, "Anubhav?", true, GUIEditor.window[2]) guiSetFont(GUIEditor.label[8], "default-small") guiLabelSetVerticalAlign(GUIEditor.label[8], "center") GUIEditor.window[3] = guiCreateWindow(0.30, 0.24, 0.41, 0.53, "Player team management", true) guiWindowSetSizable(GUIEditor.window[3], false) guiSetAlpha(GUIEditor.window[3], 1.00) guiSetVisible( GUIEditor.window[3], false ) GUIEditor.gridlist[2] = guiCreateGridList(0.02, 0.06, 0.39, 0.92, true, GUIEditor.window[3]) guiGridListAddColumn(GUIEditor.gridlist[2], "Player name", 0.9) GUIEditor.combobox[1] = guiCreateComboBox(0.43, 0.12, 0.53, 1, "", true, GUIEditor.window[3]) GUIEditor.button[5] = guiCreateButton(0.43, 0.19, 0.53, 0.09, "Set team", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[5], "NormalTextColour", "FFFFFFFF") GUIEditor.button[6] = guiCreateButton(0.43, 0.89, 0.53, 0.09, "Close", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[6], "NormalTextColour", "FFFFFFFF") GUIEditor.button[7] = guiCreateButton(0.43, 0.33, 0.53, 0.09, "Set player teamless", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[7], "NormalTextColour", "FFFFFFFF") GUI = GUIEditor addEventHandler( "onClientGUIClick", root, function( ) if ( source == GUIEditor.button[5] ) then local item = guiComboBoxGetSelected( GUI.combobox[1] ) local grid = guiGridListGetSelectedItem( GUI.gridlist[2] ) if ( item ~= -1 and grid ~= -1 ) then local text = guiComboBoxGetItemText(GUI.combobox[1], item) local player = guiGridListGetItemText( GUI.gridlist[2], grid, 1 ) if (getPlayerFromName( player )) then if (getTeamFromName( text )) then outputChatBox( "[Team-manager] #00FF00You set "..player.."\'s team to "..text, 255, 120, 0, true) triggerServerEvent( "GUI:setTeam", localPlayer, getPlayerFromName( player ), getTeamFromName( text ) ) else return outputChatBox( "[Team-manager] #FF0000No such team ("..text..") exist!", 255, 120, 0, true) end else return outputChatBox( "[Team-manager] #FF0000No such player ("..player..") is online!", 255, 120, 0, true) end end elseif ( source == GUIEditor.button[9] ) then showGUI( getElementsByType( "team" ) ) elseif ( source == GUIEditor.button[8] ) then guiSetVisible( GUIEditor.window[3], true ) guiSetVisible( GUIEditor.window[1], false ) refreshGridList( getElementsByType( "team" ) ) elseif ( source == GUIEditor.button[6] ) then guiSetVisible( GUIEditor.window[3], false ) guiSetVisible( GUIEditor.window[1], true ) elseif ( source == GUIEditor.button[7] ) then local grid = guiGridListGetSelectedItem( GUI.gridlist[2] ) if ( grid ~= -1 ) then local player = guiGridListGetItemText( GUI.gridlist[2], grid, 1 ) if (getPlayerFromName( player )) then outputChatBox( "[Team-manager] #00FF00You set "..player.."\'s team to nil/no team!", 255, 120, 0, true) triggerServerEvent( "GUI:setTeam", localPlayer, getPlayerFromName( player ), nil ) else return outputChatBox( "[Team-manager] #FF0000No such player ("..player..") is online!", 255, 120, 0, true) end end end end ) addEventHandler( "onClientGUIClick", root, function( ) if (source ~= GUIEditor.button[1]) then return end local r, c = guiGridListGetSelectedItem( GUI.gridlist[1] ) if (r ~= -1) then local text = guiGridListGetItemText( GUI.gridlist[1], r, 1 ) if (getTeamFromName( text )) then openConformWindow( text ) else outputChatBox( "[Team-manager] #FF0000No such team ("..text..") exist!", 255, 120, 0, true) end end end ) local edits = GUIEditor.edit addEventHandler( "onClientGUIChanged", root, function( ) for i, v in ipairs(edits) do if (v ~= edits[1] and v == source ) then local text = guiGetText(source) if not string.contains(text, "number") then local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end end end end ) addEventHandler( "onClientGUIClick", root, function( b, s ) if (source == GUIEditor.button[2]) then local teamN, r, g, b = guiGetText( GUI.edit[1] ), guiGetText( GUI.edit[2] ), guiGetText( GUI.edit[3] ), guiGetText( GUI.edit[4] ) if (teamN == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", 255, 120, 0, true) end if (getTeamFromName( teamN )) then return outputChatBox( "[Team-manager] #FF0000A team ("..teamN..") with this name already exist!", 255, 120, 0, true) end if (r == "") then return outputChatBox( "[Team-manager] #FF0000R (Red) cannot be empty!", 255, 120, 0, true) end if (g == "") then return outputChatBox( "[Team-manager] #FF0000G (Green) cannot be empty!", 255, 120, 0, true) end if (b == "") then return outputChatBox( "[Team-manager] #FF0000B (Blue) cannot be empty!", 255, 120, 0, true) end outputChatBox( "[Team-manager] #00FF00Team "..teamN.." created!", 255, 120, 0, true) triggerServerEvent( "GUI:createTeam", localPlayer, teamN, r, g, b, guiCheckBoxGetSelected( GUI.checkbox[1] ) ) end end ) addEventHandler( "onClientGUIClick", root, function() if (source == GUIEditor.button[4]) then guiSetVisible(GUIEditor.window[2], false) guiSetVisible(GUIEditor.window[1], true) elseif (source == GUIEditor.button[3]) then guiSetVisible(GUIEditor.window[1], true) local text = guiGetText( GUI.label[7] ):gsub( "Are you sure you want to delete Team ", "") local selected = guiCheckBoxGetSelected( GUI.checkbox[2] ) triggerServerEvent( "GUI:deleteTeam", localPlayer, text, selected ) outputChatBox( "[Team-manager] #00FF00Team "..getTeamName( getTeamFromName( text ) ).." deleted!", 255, 120, 0, true) guiSetVisible(GUIEditor.window[2], false) end end ) end ) function closeAllWindows( ) for i, v in ipairs( GUIEditor.window ) do guiSetVisible( v, false ) end end function openConformWindow( teamName ) guiSetVisible( GUIEditor.window[1], false ) guiSetText( GUIEditor.label[8], teamName.."?" ) guiLabelSetColor( GUIEditor.label[8], getTeamColor( getTeamFromName( teamName ) ) ) guiSetVisible( GUIEditor.window[2], true ) guiBringToFront( GUIEditor.window[2] ) end function refreshGridList( team ) guiGridListClear( GUI.gridlist[1] ) guiGridListClear( GUI.gridlist[2] ) guiComboBoxClear( GUI.combobox[1] ) for i, v in ipairs( team ) do local name = getTeamName( v ) local r, g, b = getTeamColor( v ) local row = guiGridListAddRow( GUI.gridlist[1] ) guiGridListSetItemText( GUI.gridlist[1], row, 1, name, false, false ) guiGridListSetItemColor( GUI.gridlist[1], row, 1, r, g, b ) guiComboBoxAddItem( GUI.combobox[1], name ) end for i, v in ipairs( getElementsByType( "player" ) ) do local row = guiGridListAddRow( GUI.gridlist[2] ) local r, g, b = getPlayerNametagColor( v ) guiGridListSetItemText( GUI.gridlist[2], row, 1, getPlayerName( v ), false, false ) guiGridListSetItemColor( GUI.gridlist[2], row, 1, r, g, b ) end end addEvent( "GUI:refresh", true ) addEventHandler( "GUI:refresh", root, refreshGridList ) function showGUI( teamlist ) refreshGridList( teamlist ) if (guiGetVisible( GUI.window[2] ) == true ) then closeAllWindows() showCursor( false ) return end if (guiGetVisible( GUI.window[3] ) == true ) then closeAllWindows() showCursor( false ) return end local show = not guiGetVisible( GUI.window[1] ) guiSetInputMode( "no_binds_when_editing" ) if (show == false) then closeAllWindows( ) else guiSetVisible( GUI.window[1], show ) end showCursor( show ) end addEvent( "GUI:show", true ) addEventHandler( "GUI:show", root, showGUI ) سيـرفـر connection = dbConnect( "sqlite", "teams.db" ) dbExec( connection, "CREATE TABLE IF NOT EXISTS teams( teamName TEXT, rgb TEXT )") _team = createTeam local function createTeam( team, r, g, b, selected ) _team( team, r, g, b ) if (selected) then dbExec( connection, "INSERT INTO teams( teamName, rgb ) VALUES(?,?)", team, tostring(r..","..g..","..b)) end end function splitTeam( teamRGB ) local t = split( teamRGB, "," ) return t[1], t[2], t[3] end function tob( p ) if (p == "true") then return true elseif (p == "false") then return false end end function canPlayerOpenPanel( p ) local acls = settings['aclCanOpen'] if (#acls == 0) then return true end if (acls[1] == "" and #acls == 1) then return true end local acc = getPlayerAccount( p ) if (not isGuestAccount( acc )) then local accName = getAccountName( acc ) for i, v in ipairs( acls ) do if (isObjectInACLGroup( "user."..accName, aclGetGroup( v ) ) ) then return true end end else return false end return false end function bindKeyForPlayer( p ) if (settings['bindKey']) then if (settings['bindKey'] ~= "") then bindKey( p, settings['bindKey'], "down", openACL) end end end function loadTeams( ) local selection = dbQuery( connection, "SELECT * FROM teams" ) local poll = dbPoll( selection, -1 ) if (poll) then for i, v in ipairs(poll) do local team, rgb = v.teamName, v.rgb local r, g, b = splitTeam( rgb ) _team( team, r, g, b ) end end end function deleteTeam(teamName, removeDatabase, source) if getTeamFromName(teamName) then destroyElement(getTeamFromName(teamName)) end if (removeDatabase) then dbExec( connection, "DELETE FROM teams WHERE teamName=?", teamName ) end triggerClientEvent( source, "GUI:refresh", source, getElementsByType( "team" ) ) end --- --- --- function createSavedTeam(p, _, team, r, g, b, save) if (not canPlayerOpenPanel(p)) then return end if (team and r and g and b and save) then if (team == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", p, 255, 120, 0, true) end if (getTeamFromName( team )) then return outputChatBox( "[Team-manager] #FF0000A team ("..team..") with this name already exist!",p, 255, 120, 0, true) end if (r == "") then return outputChatBox( "[Team-manager] #FF0000R (Red) cannot be empty!",p, 255, 120, 0, true) end if (g == "") then return outputChatBox( "[Team-manager] #FF0000G (Green) cannot be empty!",p, 255, 120, 0, true) end if (b == "") then return outputChatBox( "[Team-manager] #FF0000B (Blue) cannot be empty!",p, 255, 120, 0, true) end if (save ~= "true" and save ~= "false") then return outputChatBox( "[Team-manager] #FF0000Save has to be either true or false!",p, 255, 120, 0, true) end if (not tonumber( r )) then return outputChatBox( "[Team-manager] #FF0000R (Red) has to be a number!",p, 255, 120, 0, true) end if (not tonumber( g )) then return outputChatBox( "[Team-manager] #FF0000G (Green) has to be a number!",p, 255, 120, 0, true) end if (not tonumber( b )) then return outputChatBox( "[Team-manager] #FF0000B (Blue) has to be a number!",p, 255, 120, 0, true) end outputChatBox( "[Team-manager] #00FF00Team "..team.." created!", p, 255, 120, 0, true) createTeam( team, tonumber( r ), tonumber( g ), tonumber( b ), tob( save ) ) else return outputChatBox( "[Team-manager] #FF0000Syntax: /tcreate <team_name> <red> <green> <blue> <save>",p, 255, 120, 0, true) end end addCommandHandler( "tcreate", createSavedTeam) function deleteATeam( p, _, teamName, save ) if (not canPlayerOpenPanel(p)) then return end if (teamName and save) then if (teamName == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", p, 255, 120, 0, true) end if (save ~= "true" and save ~= "false") then return outputChatBox( "[Team-manager] #FF0000Save has to be either true or false!",p, 255, 120, 0, true) end if (getTeamFromName( teamName )) then outputChatBox( "[Team-manager] #00FF00Team "..getTeamName( getTeamFromName( teamName ) ).." deleted!",p, 255, 120, 0, true) deleteTeam( teamName, tob( save ), p ) else outputChatBox( "[Team-manager] #FF0000No such team ("..teamName..") exist!", p,255, 120, 0, true) end else return outputChatBox( "[Team-manager] #FF0000Syntax: /tdelete <team_name> <save>",p, 255, 120, 0, true) end end addCommandHandler( 'tdelete', deleteATeam ) function createTeamEvent( teamName, R, G, B, selected ) createTeam( teamName, R, G, B, selected ) triggerClientEvent( source, "GUI:refresh", source, getElementsByType( "team" ) ) end addEvent( "GUI:createTeam", true ) addEventHandler( "GUI:createTeam", root, createTeamEvent ) function deleteTeamEvent( teamName, selected ) deleteTeam( teamName, selected, source ) end addEvent( "GUI:deleteTeam", true ) addEventHandler( "GUI:deleteTeam", root, deleteTeamEvent ) function bindKeys() if (eventName == "onPlayerLogin") then bindKeyForPlayer( source ) elseif (eventName == "onResourceStart") then if (settings['command'] and settings['command'] ~= "") then addCommandHandler(settings['command'], openACL) end loadTeams() for i, v in ipairs(getElementsByType("player")) do bindKeyForPlayer( v ) end end end addEventHandler( "onPlayerLogin", root, bindKeys ) addEventHandler( "onResourceStart", resourceRoot, bindKeys ) function openACL( plr ) if (canPlayerOpenPanel( plr )) then local teams = getElementsByType( "team" ) triggerClientEvent( plr, "GUI:show", plr, teams ) end end function setPTeam( player, team ) setPlayerTeam( player, team ) end addEvent( "GUI:setTeam", true ) addEventHandler( "GUI:setTeam", root, setPTeam ) سـيـرفر settings = { ['aclCanOpen'] = {"Admin", "Moderator", "SuperModerator"}, -- The person in ACL who can open the admin panel. Leave blank for everyone to freely open it (not recommended) ['bindKey'] = "F7", -- Leave blank if you do not want to bind it. ['command'] = "teamm", -- Leave blank if you do not want it to open it by a command. } Link to comment
Abdul KariM Posted May 25, 2017 Share Posted May 25, 2017 كلينت : GUIEditor = { edit = {}, button = {}, window = {}, label = {}, gridlist = {}, checkbox = {}, combobox = {} } GUI = GUIEditor function string.contains(string, types) if types == "number" then if tonumber(string) then return true else return false end elseif types == "alphabetic" then if tonumber(string) then return false else return true end end end addEventHandler("onClientResourceStart", resourceRoot, function() GUIEditor.window[1] = guiCreateWindow(0.25, 0.23, 0.50, 0.55, "Team Manager", true) guiWindowSetSizable(GUIEditor.window[1], false) guiSetAlpha(GUIEditor.window[1], 1.00) guiSetVisible( GUIEditor.window[1], false ) GUIEditor.gridlist[1] = guiCreateGridList(0.04, 0.09, 0.34, 0.67, true, GUIEditor.window[1]) guiGridListAddColumn(GUIEditor.gridlist[1], "Team name", 0.9) GUIEditor.button[1] = guiCreateButton(0.04, 0.84, 0.34, 0.10, "Delete team", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FFFFFFFF") GUIEditor.edit[1] = guiCreateEdit(0.71, 0.18, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[1] = guiCreateLabel(0.53, 0.19, 0.15, 0.08, "Team name:\n", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[1], "default-bold-small") GUIEditor.edit[2] = guiCreateEdit(0.71, 0.31, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.edit[3] = guiCreateEdit(0.71, 0.45, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[2] = guiCreateLabel(0.53, 0.33, 0.15, 0.06, "R (red)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[2], "default-bold-small") guiLabelSetColor(GUIEditor.label[2], 255, 0, 0) GUIEditor.label[3] = guiCreateLabel(0.53, 0.47, 0.15, 0.06, "G (green)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[3], "default-bold-small") guiLabelSetColor(GUIEditor.label[3], 0, 255, 0) GUIEditor.edit[4] = guiCreateEdit(0.71, 0.57, 0.16, 0.07, "", true, GUIEditor.window[1]) GUIEditor.label[4] = guiCreateLabel(0.53, 0.60, 0.16, 0.07, "B (blue)", true, GUIEditor.window[1]) guiSetFont(GUIEditor.label[4], "default-bold-small") guiLabelSetColor(GUIEditor.label[4], 0, 0, 255) GUIEditor.button[2] = guiCreateButton(0.53, 0.77, 0.34, 0.10, "Create", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[2], "NormalTextColour", "FFFFFFFF") GUIEditor.checkbox[1] = guiCreateCheckBox(0.53, 0.69, 0.33, 0.04, "Save team?", false, true, GUIEditor.window[1]) guiSetFont(GUIEditor.checkbox[1], "default-small") GUIEditor.checkbox[2] = guiCreateCheckBox(0.01, 0.78, 0.46, 0.04, "Remove from database? (only the team was created by this resource!)", true, true, GUIEditor.window[1]) guiSetFont(GUIEditor.checkbox[2], "default-small") GUIEditor.button[9] = guiCreateButton(0.53, 0.89, 0.34, 0.09, "Close", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[9], "NormalTextColour", "FFFFFFFF") GUIEditor.button[8] = guiCreateButton(0.53, 0.06, 0.34, 0.09, "Player team management", true, GUIEditor.window[1]) guiSetProperty(GUIEditor.button[8], "NormalTextColour", "FFFFFFFF") for i, v in ipairs( GUIEditor.label ) do guiLabelSetHorizontalAlign( v, "right" ) end GUIEditor.window[2] = guiCreateWindow(0.31, 0.39, 0.38, 0.21, "Confirmation", true) guiWindowSetSizable(GUIEditor.window[2], false) guiSetAlpha(GUIEditor.window[2], 1.00) guiSetVisible( GUIEditor.window[2], false ) GUIEditor.label[7] = guiCreateLabel(0.08, 0.37, 0.42, 0.12, "Are you sure you want to delete team: ", true, GUIEditor.window[2]) guiSetFont(GUIEditor.label[7], "default-small") guiLabelSetVerticalAlign(GUIEditor.label[7], "center") GUIEditor.button[3] = guiCreateButton(0.03, 0.73, 0.34, 0.21, "Yes", true, GUIEditor.window[2]) guiSetFont(GUIEditor.button[3], "default-bold-small") guiSetProperty(GUIEditor.button[3], "NormalTextColour", "FFFF0000") GUIEditor.button[4] = guiCreateButton(0.61, 0.73, 0.34, 0.21, "No", true, GUIEditor.window[2]) guiSetFont(GUIEditor.button[4], "default-bold-small") guiSetProperty(GUIEditor.button[4], "NormalTextColour", "FF00FF00") GUIEditor.label[8] = guiCreateLabel(0.40, 0.37, 0.42, 0.12, "Anubhav?", true, GUIEditor.window[2]) guiSetFont(GUIEditor.label[8], "default-small") guiLabelSetVerticalAlign(GUIEditor.label[8], "center") GUIEditor.window[3] = guiCreateWindow(0.30, 0.24, 0.41, 0.53, "Player team management", true) guiWindowSetSizable(GUIEditor.window[3], false) guiSetAlpha(GUIEditor.window[3], 1.00) guiSetVisible( GUIEditor.window[3], false ) GUIEditor.gridlist[2] = guiCreateGridList(0.02, 0.06, 0.39, 0.92, true, GUIEditor.window[3]) guiGridListAddColumn(GUIEditor.gridlist[2], "Player name", 0.9) GUIEditor.combobox[1] = guiCreateComboBox(0.43, 0.12, 0.53, 1, "", true, GUIEditor.window[3]) GUIEditor.button[5] = guiCreateButton(0.43, 0.19, 0.53, 0.09, "Set team", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[5], "NormalTextColour", "FFFFFFFF") GUIEditor.button[6] = guiCreateButton(0.43, 0.89, 0.53, 0.09, "Close", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[6], "NormalTextColour", "FFFFFFFF") GUIEditor.button[7] = guiCreateButton(0.43, 0.33, 0.53, 0.09, "Set player teamless", true, GUIEditor.window[3]) guiSetProperty(GUIEditor.button[7], "NormalTextColour", "FFFFFFFF") GUI = GUIEditor addEventHandler( "onClientGUIClick", root, function( ) if ( source == GUIEditor.button[5] ) then local item = guiComboBoxGetSelected( GUI.combobox[1] ) local grid = guiGridListGetSelectedItem( GUI.gridlist[2] ) if ( item ~= -1 and grid ~= -1 ) then local text = guiComboBoxGetItemText(GUI.combobox[1], item) local player = guiGridListGetItemText( GUI.gridlist[2], grid, 1 ) if (getPlayerFromName( player )) then if (getTeamFromName( text )) then outputChatBox( "[Team-manager] #00FF00You set "..player.."\'s team to "..text, 255, 120, 0, true) triggerServerEvent( "GUI:setTeam", localPlayer, getPlayerFromName( player ), getTeamFromName( text ) ) else return outputChatBox( "[Team-manager] #FF0000No such team ("..text..") exist!", 255, 120, 0, true) end else return outputChatBox( "[Team-manager] #FF0000No such player ("..player..") is online!", 255, 120, 0, true) end end elseif ( source == GUIEditor.button[9] ) then showGUI( getElementsByType( "team" ) ) elseif ( source == GUIEditor.button[8] ) then guiSetVisible( GUIEditor.window[3], true ) guiSetVisible( GUIEditor.window[1], false ) refreshGridList( getElementsByType( "team" ) ) elseif ( source == GUIEditor.button[6] ) then guiSetVisible( GUIEditor.window[3], false ) guiSetVisible( GUIEditor.window[1], true ) elseif ( source == GUIEditor.button[7] ) then local grid = guiGridListGetSelectedItem( GUI.gridlist[2] ) if ( grid ~= -1 ) then local player = guiGridListGetItemText( GUI.gridlist[2], grid, 1 ) if (getPlayerFromName( player )) then outputChatBox( "[Team-manager] #00FF00You set "..player.."\'s team to nil/no team!", 255, 120, 0, true) triggerServerEvent( "GUI:setTeam", localPlayer, getPlayerFromName( player ), nil ) else return outputChatBox( "[Team-manager] #FF0000No such player ("..player..") is online!", 255, 120, 0, true) end end end end ) addEventHandler( "onClientGUIClick", root, function( ) if (source ~= GUIEditor.button[1]) then return end local r, c = guiGridListGetSelectedItem( GUI.gridlist[1] ) if (r ~= -1) then local text = guiGridListGetItemText( GUI.gridlist[1], r, 1 ) if (getTeamFromName( text )) then openConformWindow( text ) else outputChatBox( "[Team-manager] #FF0000No such team ("..text..") exist!", 255, 120, 0, true) end end end ) local edits = GUIEditor.edit addEventHandler( "onClientGUIChanged", root, function( ) for i, v in ipairs(edits) do if (v ~= edits[1] and v == source ) then local text = guiGetText(source) if not string.contains(text, "number") then local currText = guiGetText( source ) local newText = string.gsub( currText, '[^0-9]', '' ) if newText ~= currText then guiSetText( source, newText ) end end end end end ) addEventHandler( "onClientGUIClick", root, function( b, s ) if (source == GUIEditor.button[2]) then local teamN, r, g, b = guiGetText( GUI.edit[1] ), guiGetText( GUI.edit[2] ), guiGetText( GUI.edit[3] ), guiGetText( GUI.edit[4] ) if (teamN == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", 255, 120, 0, true) end if (getTeamFromName( teamN )) then return outputChatBox( "[Team-manager] #FF0000A team ("..teamN..") with this name already exist!", 255, 120, 0, true) end if (r == "") then return outputChatBox( "[Team-manager] #FF0000R (Red) cannot be empty!", 255, 120, 0, true) end if (g == "") then return outputChatBox( "[Team-manager] #FF0000G (Green) cannot be empty!", 255, 120, 0, true) end if (b == "") then return outputChatBox( "[Team-manager] #FF0000B (Blue) cannot be empty!", 255, 120, 0, true) end outputChatBox( "[Team-manager] #00FF00Team "..teamN.." created!", 255, 120, 0, true) triggerServerEvent( "GUI:createTeam", localPlayer, teamN, r, g, b, guiCheckBoxGetSelected( GUI.checkbox[1] ) ) end end ) addEventHandler( "onClientGUIClick", root, function() if (source == GUIEditor.button[4]) then guiSetVisible(GUIEditor.window[2], false) guiSetVisible(GUIEditor.window[1], true) elseif (source == GUIEditor.button[3]) then guiSetVisible(GUIEditor.window[1], true) local text = guiGetText( GUI.label[7] ):gsub( "Are you sure you want to delete Team ", "") local selected = guiCheckBoxGetSelected( GUI.checkbox[2] ) triggerServerEvent( "GUI:deleteTeam", localPlayer, text, selected ) outputChatBox( "[Team-manager] #00FF00Team "..getTeamName( getTeamFromName( text ) ).." deleted!", 255, 120, 0, true) guiSetVisible(GUIEditor.window[2], false) end end ) end ) function closeAllWindows( ) for i, v in ipairs( GUIEditor.window ) do guiSetVisible( v, false ) end end function openConformWindow( teamName ) guiSetVisible( GUIEditor.window[1], false ) guiSetText( GUIEditor.label[8], teamName.."?" ) guiLabelSetColor( GUIEditor.label[8], getTeamColor( getTeamFromName( teamName ) ) ) guiSetVisible( GUIEditor.window[2], true ) guiBringToFront( GUIEditor.window[2] ) end function refreshGridList( team ) guiGridListClear( GUI.gridlist[1] ) guiGridListClear( GUI.gridlist[2] ) guiComboBoxClear( GUI.combobox[1] ) for i, v in ipairs( team ) do local name = getTeamName( v ) local r, g, b = getTeamColor( v ) local row = guiGridListAddRow( GUI.gridlist[1] ) guiGridListSetItemText( GUI.gridlist[1], row, 1, name, false, false ) guiGridListSetItemColor( GUI.gridlist[1], row, 1, r, g, b ) guiComboBoxAddItem( GUI.combobox[1], name ) end for i, v in ipairs( getElementsByType( "player" ) ) do local row = guiGridListAddRow( GUI.gridlist[2] ) local r, g, b = getPlayerNametagColor( v ) guiGridListSetItemText( GUI.gridlist[2], row, 1, getPlayerName( v ), false, false ) guiGridListSetItemColor( GUI.gridlist[2], row, 1, r, g, b ) end end addEvent( "GUI:refresh", true ) addEventHandler( "GUI:refresh", root, refreshGridList ) function showGUI( teamlist ) refreshGridList( teamlist ) if (guiGetVisible( GUI.window[2] ) == true ) then closeAllWindows() showCursor( false ) return end if (guiGetVisible( GUI.window[3] ) == true ) then closeAllWindows() showCursor( false ) return end local show = not guiGetVisible( GUI.window[1] ) guiSetInputMode( "no_binds_when_editing" ) if (show == false) then closeAllWindows( ) else guiSetVisible( GUI.window[1], show ) end showCursor( show ) end addEvent( "GUI:show", true ) addEventHandler( "GUI:show", root, showGUI ) سيرفر connection = dbConnect( "sqlite", "teams.db" ) dbExec( connection, "CREATE TABLE IF NOT EXISTS teams( teamName TEXT, rgb TEXT )") _team = createTeam local function createTeam( team, r, g, b, selected ) _team( team, r, g, b ) if (selected) then dbExec( connection, "INSERT INTO teams( teamName, rgb ) VALUES(?,?)", team, tostring(r..","..g..","..b)) end end function splitTeam( teamRGB ) local t = split( teamRGB, "," ) return t[1], t[2], t[3] end function tob( p ) if (p == "true") then return true elseif (p == "false") then return false end end function canPlayerOpenPanel( p ) local acls = settings['aclCanOpen'] if (#acls == 0) then return true end if (acls[1] == "" and #acls == 1) then return true end local acc = getPlayerAccount( p ) if (not isGuestAccount( acc )) then local accName = getAccountName( acc ) for i, v in ipairs( acls ) do if (isObjectInACLGroup( "user."..accName, aclGetGroup( v ) ) ) then return true end end else return false end return false end function bindKeyForPlayer( p ) if (settings['bindKey']) then if (settings['bindKey'] ~= "") then bindKey( p, settings['bindKey'], "down", openACL) end end end function loadTeams( ) local selection = dbQuery( connection, "SELECT * FROM teams" ) local poll = dbPoll( selection, -1 ) if (poll) then for i, v in ipairs(poll) do local team, rgb = v.teamName, v.rgb local r, g, b = splitTeam( rgb ) _team( team, r, g, b ) end end end function deleteTeam(teamName, removeDatabase, source) if getTeamFromName(teamName) then destroyElement(getTeamFromName(teamName)) end if (removeDatabase) then dbExec( connection, "DELETE FROM teams WHERE teamName=?", teamName ) end triggerClientEvent( source, "GUI:refresh", source, getElementsByType( "team" ) ) end --- --- --- function createSavedTeam(p, _, team, r, g, b, save) if (not canPlayerOpenPanel(p)) then return end if (team and r and g and b and save) then if (team == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", p, 255, 120, 0, true) end if (getTeamFromName( team )) then return outputChatBox( "[Team-manager] #FF0000A team ("..team..") with this name already exist!",p, 255, 120, 0, true) end if (r == "") then return outputChatBox( "[Team-manager] #FF0000R (Red) cannot be empty!",p, 255, 120, 0, true) end if (g == "") then return outputChatBox( "[Team-manager] #FF0000G (Green) cannot be empty!",p, 255, 120, 0, true) end if (b == "") then return outputChatBox( "[Team-manager] #FF0000B (Blue) cannot be empty!",p, 255, 120, 0, true) end if (save ~= "true" and save ~= "false") then return outputChatBox( "[Team-manager] #FF0000Save has to be either true or false!",p, 255, 120, 0, true) end if (not tonumber( r )) then return outputChatBox( "[Team-manager] #FF0000R (Red) has to be a number!",p, 255, 120, 0, true) end if (not tonumber( g )) then return outputChatBox( "[Team-manager] #FF0000G (Green) has to be a number!",p, 255, 120, 0, true) end if (not tonumber( b )) then return outputChatBox( "[Team-manager] #FF0000B (Blue) has to be a number!",p, 255, 120, 0, true) end outputChatBox( "[Team-manager] #00FF00Team "..team.." created!", p, 255, 120, 0, true) createTeam( team, tonumber( r ), tonumber( g ), tonumber( b ), tob( save ) ) else return outputChatBox( "[Team-manager] #FF0000Syntax: /tcreate <team_name> <red> <green> <blue> <save>",p, 255, 120, 0, true) end end addCommandHandler( "tcreate", createSavedTeam) function deleteATeam( p, _, teamName, save ) if (not canPlayerOpenPanel(p)) then return end if (teamName and save) then if (teamName == "") then return outputChatBox( "[Team-manager] #FF0000Team name cannot be empty!", p, 255, 120, 0, true) end if (save ~= "true" and save ~= "false") then return outputChatBox( "[Team-manager] #FF0000Save has to be either true or false!",p, 255, 120, 0, true) end if (getTeamFromName( teamName )) then outputChatBox( "[Team-manager] #00FF00Team "..getTeamName( getTeamFromName( teamName ) ).." deleted!",p, 255, 120, 0, true) deleteTeam( teamName, tob( save ), p ) else outputChatBox( "[Team-manager] #FF0000No such team ("..teamName..") exist!", p,255, 120, 0, true) end else return outputChatBox( "[Team-manager] #FF0000Syntax: /tdelete <team_name> <save>",p, 255, 120, 0, true) end end addCommandHandler( 'tdelete', deleteATeam ) function createTeamEvent( teamName, R, G, B, selected ) createTeam( teamName, R, G, B, selected ) triggerClientEvent( source, "GUI:refresh", source, getElementsByType( "team" ) ) end addEvent( "GUI:createTeam", true ) addEventHandler( "GUI:createTeam", root, createTeamEvent ) function deleteTeamEvent( teamName, selected ) deleteTeam( teamName, selected, source ) end addEvent( "GUI:deleteTeam", true ) addEventHandler( "GUI:deleteTeam", root, deleteTeamEvent ) function bindKeys() if (eventName == "onPlayerLogin") then bindKeyForPlayer( source ) elseif (eventName == "onResourceStart") then setTimer ( function ( ) if (settings['command'] and settings['command'] ~= "") then addCommandHandler(settings['command'], openACL) end loadTeams() end , 1500 , 1 ) for i, v in ipairs(getElementsByType("player")) do bindKeyForPlayer( v ) end end end addEventHandler( "onPlayerLogin", root, bindKeys ) addEventHandler( "onResourceStart", resourceRoot, bindKeys ) function openACL( plr ) if (canPlayerOpenPanel( plr )) then local teams = getElementsByType( "team" ) triggerClientEvent( plr, "GUI:show", plr, teams ) end end function setPTeam( player, team ) setPlayerTeam( player, team ) end addEvent( "GUI:setTeam", true ) addEventHandler( "GUI:setTeam", root, setPTeam ) اول ماتشغل المود انتظر ثانتين واكتب الامر teamm 1 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