ألـسـلام عليكم
كيف الحال؟
مـود الـتـحـكـم فـي الـتـيـمات ! يـتــم عـمـل تيـم وحفظة , واإلـخخخ..
من خصائص المود تظهر الوحة لقروبات مـحـددة !! وتفتح الوحة من اف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.
}