# ~ ! S [ T ] A R .

Members
  • Content Count

    35
  • Joined

  • Last visited

Community Reputation

5 Neutral

1 Follower

About # ~ ! S [ T ] A R .

  • Rank
    Rat

Recent Profile Visitors

375 profile views
  1. السلام عليكم اريد اعرف كيفية عمل اكونت داتا علي حساب اكتبة في ايديت بوكس اريد شرح ممل لان معتزل لى فترة واريد اتعلم مرة اخرى والسلام عليكم
  2. شكرا على المساعدة
  3. السلام عليكم ~ ابي شرح كيف استخدم هذه الوظيفة shutdown لاهنتم شباب يعني كيف استخدمها اشرحوها لي عشان بقالي فترة معتزل ومش فاهم شوية حاجات كدا ❤️
  4. function guiCreateWindow(x2, y2, width2, height2, titleBarText2, relative2) local mainBackground = guiCreateStaticImage ( x2, y2, width2, height2, "n.png", relative2 ) local mainBackgroundLabel = guiCreateLabel ( 0, 0, 700, 100, " "..titleBarText2, false, mainBackground ) guiSetAlpha( mainBackground, 0.9) guiSetFont ( mainBackgroundLabel, guiCreateFont ( "PetitFormalScript.ttf", 10 ) ) guiSetEnabled ( mainBackgroundLabel, false ) return mainBackground end local mainKey = 'F2' -- The key to open panel </> -- If you don't know anything in programming don't edit anything down . local Cplayer = getLocalPlayer( ); local screenW, screenH = guiGetScreenSize( ); setElementData( Cplayer, 'chatStatus', 'Online' ) setElementData( Cplayer, 'donotDisturb', nil ) local chat_Windows = { }; GUIEditor = { edit = {}, button = {}, window = {}, label = {}, gridlist = {} } addEventHandler("onClientResourceStart", resourceRoot, function() local screenW, screenH = guiGetScreenSize() GUIEditor.window[1] = guiCreateWindow(screenW - 573 - 10, (screenH - 481) / 2, 573, 481, "", false) guiWindowSetSizable(GUIEditor.window[1], false) guiSetAlpha(GUIEditor.window[1], 1.00) guiSetVisible( GUIEditor.window[1], false ) GUIEditor.label[1] = guiCreateLabel(278, 37, 152, 60, "- الــــدردشــــات ", false, GUIEditor.window[1]) guiLabelSetColor(GUIEditor.label[1], 253, 0, 0) guiSetFont(GUIEditor.label[1],font) GUIEditor.label[2] = guiCreateLabel(198, 37, 152, 60, "الــخــاصــة -", false, GUIEditor.window[1]) guiLabelSetColor(GUIEditor.label[2], 3, 242, 251) guiSetFont(GUIEditor.label[2],font) GUIEditor.label[3] = guiCreateLabel(10, 38, 558, 49, "_______________________________________________________________________________________", false, GUIEditor.window[1]) guiSetFont(GUIEditor.label[3], "sa-header") GUIEditor.gridlist[1] = guiCreateGridList(187, 150, 365, 242, false, GUIEditor.window[1]) guiGridListAddColumn(GUIEditor.gridlist[1], "Player Name", 0.9) GUIEditor.edit[1] = guiCreateEdit(370, 97, 182, 43, "", false, GUIEditor.window[1]) GUIEditor.label[4] = guiCreateLabel(312, 107, 48, 15, "Serach :", false, GUIEditor.window[1]) GUIEditor.button[4] = guiCreateButton(9, 151, 168, 39, "Disable Chat F2", false, GUIEditor.window[1]) local font0_PetitFormalScript = guiCreateFont("PetitFormalScript.ttf", 12) guiSetFont(GUIEditor.button[4], font0_PetitFormalScript) guiSetProperty(GUIEditor.button[4], "NormalTextColour", "FFFD0000") GUIEditor.button[2] = guiCreateButton(9, 232, 168, 39, "Block Player", false, GUIEditor.window[1]) guiSetFont(GUIEditor.button[2], font0_PetitFormalScript) guiSetProperty(GUIEditor.button[2], "NormalTextColour", "FF03BD79") GUIEditor.button[5] = guiCreateButton(9, 316, 168, 39, "| Close |", false, GUIEditor.window[1]) guiSetFont(GUIEditor.button[5], font0_PetitFormalScript) guiSetProperty(GUIEditor.button[5], "NormalTextColour", "FFC8FEEA") GUIEditor.label[5] = guiCreateLabel(167, 416, 385, 47, "", false, GUIEditor.window[1]) local font1_PetitFormalScript = guiCreateFont("PetitFormalScript.ttf", 10) guiSetFont(GUIEditor.label[5], font1_PetitFormalScript) guiLabelSetColor(GUIEditor.label[5], 43, 243, 184) GUIEditor.label[6] = guiCreateLabel(32, 99, 236, 36, "Grand", false, GUIEditor.window[1]) guiSetFont(GUIEditor.label[6], font1_PetitFormalScript) guiLabelSetColor(GUIEditor.label[6], 167, 251, 34) end ) guiSetEnabled( GUIEditor.button[2], false ) bindKey( mainKey, 'down', function( ) guiSetVisible( GUIEditor.window[1], not guiGetVisible( GUIEditor.window[1] ) ) showCursor( guiGetVisible( GUIEditor.window[1] ) ) guiSetInputEnabled( guiGetVisible( GUIEditor.window[1] ) ) for cNumber, _ in pairs( chat_Windows ) do guiSetVisible( chat_Windows[cNumber].window, guiGetVisible( GUIEditor.window[1] ) ) end end ); addEventHandler( 'onClientGUIChanged', root, function( ) if ( source == GUIEditor.edit[1] ) then local plrString = guiGetText( GUIEditor.edit[1] ) if ( plrString == '' or not plrString ) then local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end else local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end end return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end end end end end end ); function BuildChatting( player ) chat_Windows[player] = { }; chat_Windows[player].window = guiCreateWindow((screenW - 629) / 2, (screenH - 314) / 2, 629, 314, getPlayerName( player ), false) guiWindowSetSizable(chat_Windows[player].window, false) guiSetAlpha(chat_Windows[player].window, 1.00) chat_Windows[player].memo = guiCreateMemo(10, 21, 609, 242, "", false, chat_Windows[player].window) guiMemoSetReadOnly(chat_Windows[player].memo, true) chat_Windows[player].editBox = guiCreateEdit(10, 278, 401, 26, "", false, chat_Windows[player].window) chat_Windows[player].SendButton = guiCreateButton(421, 280, 104, 24, "Send Message", false, chat_Windows[player].window) chat_Windows[player].Xclose = guiCreateButton(582, 278, 37, 26, "X", false, chat_Windows[player].window) chat_Windows[player].Label = guiCreateLabel(10, 263, 609, 15, "* [N/A] is typing ...", false, chat_Windows[player].window) guiSetFont(chat_Windows[player].Label, "default-small") guiLabelSetVerticalAlign(chat_Windows[player].Label, "center") guiSetVisible(chat_Windows[player].Label, false) chat_Windows[player].Emoji = guiCreateButton(535, 278, 37, 26, "^ᴥ^", false, chat_Windows[player].window) guiSetProperty(chat_Windows[player].Emoji, "NormalTextColour", "FF4080FF") guiSetProperty(chat_Windows[player].Xclose, "NormalTextColour", "FFFE0000") guiSetProperty(chat_Windows[player].SendButton, "NormalTextColour", "FF1FC100") if ( guiGetVisible( GUIEditor.window[1] ) == true ) then guiSetVisible( chat_Windows[player].window, true ) else guiSetVisible( chat_Windows[player].window, false ) end end; function clickTimer( element, timer ) guiSetEnabled( element, false ) setTimer( guiSetEnabled, timer * 1000, 1, element, true ) end; function sendNewMessage( player ) if ( isTimer( sendTimer ) ) then return end if ( chat_Windows[player] and isElement( chat_Windows[player].window ) ) then local message = guiGetText( chat_Windows[player].editBox ) for _, badWord in ipairs( badWordsTable ) do if ( string.find( message, badWord[1] ) ) then guiSetProperty( chat_Windows[player].editBox, 'NormalTextColour', 'FFFF0000' ) guiSetText( chat_Windows[player].editBox, 'السب والشتم سيعرضك للمخالفات !' ) guiSetEnabled( chat_Windows[player].editBox, false ) guiEditSetReadOnly( chat_Windows[player].editBox, true ) setTimer( function( ) guiSetText( chat_Windows[player].editBox, '' ) guiSetEnabled( chat_Windows[player].editBox, true ) guiEditSetReadOnly( chat_Windows[player].editBox, false ) guiSetProperty( chat_Windows[player].editBox, 'NormalTextColour', 'FF000000' ) end, 3000, 1 ) sendTimer = setTimer( function( ) killTimer( sendTimer ) end, 2500, 1 ) return end end if ( string.len( message ) > 0 ) then local oldMessages = guiGetText( chat_Windows[player].memo ) local newString = oldMessages..getPlayerName( Cplayer ):gsub( '#%x%x%x%x%x%x', '' )..' : '..message..'\n' guiSetText( chat_Windows[player].memo, newString ) guiSetText( chat_Windows[player].editBox, '' ) guiMemoSetCaretIndex( chat_Windows[player].memo, string.len( oldMessages ) ) triggerServerEvent( 'onServerSendMessage', Cplayer, player, message ) sendTimer = setTimer( function( ) killTimer( sendTimer ) end, 2500, 1 ) end end end; function destroyChattingWindow( player ) if ( chat_Windows[player] and isElement( chat_Windows[player].window ) ) then destroyElement( chat_Windows[player].window ) chat_Windows[player] = nil end end; function removePlayer( player ) local name = getPlayerName( player ) for i = 0, guiGridListGetRowCount( GUIEditor.gridlist[1] ) do if ( guiGridListGetItemText( GUIEditor.gridlist[1], i, 1 ) == name ) then guiGridListRemoveRow( GUIEditor.gridlist[1], i ) end end end; function privateChatClicks( ) if ( getElementType( source ) ~= 'gui-button' ) then return end local parent = getElementParent( source ) if ( parent == false or not parent ) then return end local player = getPlayerFromName( guiGetText( parent ) ) if ( player == false or not player ) then return end if ( source == chat_Windows[player].SendButton ) then sendNewMessage( player ) elseif ( source == chat_Windows[player].Xclose ) then destroyChattingWindow( player ) elseif ( source == chat_Windows[player].Emoji ) then if ( isTimer( emojiTimer ) ) then return end local oldMessages = guiGetText( chat_Windows[player].memo ) local newString = oldMessages..getPlayerName( Cplayer ):gsub( '#%x%x%x%x%x%x', '' )..' : '..'^ᴥ^'..'\n' guiSetText( chat_Windows[player].memo, newString ) guiMemoSetCaretIndex( chat_Windows[player].memo, string.len( oldMessages ) ) triggerServerEvent( 'onServerSendMessage', Cplayer, player, '^ᴥ^' ) guiSetEnabled( chat_Windows[player].Emoji, false ) emojiTimer = setTimer( function( ) if ( chat_Windows[player] and isElement( chat_Windows[player].Emoji ) ) then guiSetEnabled( chat_Windows[player].Emoji, true ) end killTimer( emojiTimer ) end, 2500, 1 ) end end; addEventHandler( 'onClientGUIClick', root, privateChatClicks ); addEventHandler( 'onClientGUIClick', root, function( ) if ( source == GUIEditor.button[1] ) then clickTimer( GUIEditor.button[1], 3 ) local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Please select the player which you want to begin chat with it !', 255, 255, 255, true ) return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) if ( player == Cplayer ) then outputChatBox( '#FF0000• ERROR :#FFFFFF You cannot chatting with yourself !', 255, 255, 255, true ) return end local serial = getElementData( player, 'chatSystem;playerSerial' ) triggerServerEvent( 'onServerCheckIfBlocked', Cplayer, serial ) elseif ( source == GUIEditor.button[4] ) then clickTimer( GUIEditor.button[4], 5 ) if ( guiGetText( GUIEditor.button[4] ) == 'Turn Off Chat' ) then guiSetEnabled( GUIEditor.button[1], false ) guiSetEnabled( GUIEditor.button[3], false ) guiSetEnabled( GUIEditor.button[2], false ) guiSetEnabled( GUIEditor.gridlist[1], false ) guiSetEnabled( GUIEditor.combobox[1], false ) guiSetEnabled( GUIEditor.edit[1], false ) guiSetEnabled( GUIEditor.checkbox[1], false ) guiSetText( GUIEditor.button[4], 'Turn On Chat' ) setElementData( Cplayer, 'chatStatus', 'Offline' ) triggerServerEvent( 'onServerChangeStatus', Cplayer, 'Offline' ) for cNumber, _ in pairs( chat_Windows ) do if ( chat_Windows[cNumber] and isElement( chat_Windows[cNumber].window ) ) then destroyElement( chat_Windows[cNumber].window ) chat_Windows[cNumber] = nil end end else guiSetEnabled( GUIEditor.button[1], true ) guiSetEnabled( GUIEditor.button[3], true ) guiSetEnabled( GUIEditor.gridlist[1], true ) guiSetEnabled( GUIEditor.combobox[1], true ) guiSetEnabled( GUIEditor.edit[1], true ) guiSetEnabled( GUIEditor.checkbox[1], true ) guiSetText( GUIEditor.button[4], 'Turn Off Chat' ) setElementData( Cplayer, 'chatStatus', 'Online' ) triggerServerEvent( 'onServerChangeStatus', Cplayer, 'Online' ) end elseif ( source == GUIEditor.button[5] ) then guiSetVisible( GUIEditor.window[1], false ) showCursor( false ) guiSetInputEnabled( false ) for cNumber, _ in pairs( chat_Windows ) do guiSetVisible( chat_Windows[cNumber].window, false ) end elseif ( source == GUIEditor.gridlist[1] ) then local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then guiSetEnabled( GUIEditor.button[2], false ) guiSetText( GUIEditor.button[2], 'Block Player' ) else guiSetEnabled( GUIEditor.button[2], true ) local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) local serial = getElementData( player, 'chatSystem;playerSerial' ) if ( serial and string.len( serial ) == 32 ) then triggerServerEvent( 'onServerCheckBlockStatus', Cplayer, serial ) end end elseif ( source == GUIEditor.button[2] ) then clickTimer( GUIEditor.button[2], 3 ) local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) local serial = getElementData( player, 'chatSystem;playerSerial' ) if ( guiGetText( GUIEditor.button[2] ) == 'Block Player' ) then triggerServerEvent( 'onServerBlockPlayer', Cplayer, serial, player ) else triggerServerEvent( 'onServerUnblockPlayer', Cplayer, serial ) end elseif ( source == GUIEditor.button[3] ) then clickTimer( GUIEditor.button[3], 10 ) local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Please select the player which you want to poke it !', 255, 255, 255, true ) return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) local serial = getElementData( player, 'chatSystem;playerSerial' ) triggerServerEvent( 'onServerSendPoke', Cplayer, player, serial ) elseif ( source == GUIEditor.combobox[1] ) then local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end elseif ( source == GUIEditor.checkbox[1] ) then if ( guiCheckBoxGetSelected( GUIEditor.checkbox[1] ) == true ) then setElementData( Cplayer, 'donotDisturb', 'Enabled' ) triggerServerEvent( 'onServerChangeStatus', Cplayer, 'Online' ) else setElementData( Cplayer, 'donotDisturb', nil ) triggerServerEvent( 'onServerChangeStatus', Cplayer, 'Online' ) end end end ); local txtValue = 0 function showWriteMessage( player, name ) if ( isTimer( writeTimer ) ) then return end guiSetText( chat_Windows[player].Label, '* ['..name..'] is typing') guiSetVisible( chat_Windows[player].Label, true ) writeTimer = setTimer( function( ) if ( txtValue >= 3 ) then guiSetText( chat_Windows[player].Label, '* ['..name..'] is typing' ) txtValue = 0 end guiSetText( chat_Windows[player].Label, guiGetText( chat_Windows[player].Label )..'.' ) txtValue = txtValue + 1 end, 500, 0 ) end; addEvent( 'onClientShowWrite', true ); addEventHandler( 'onClientShowWrite', root, showWriteMessage ) function hideWriteMessage( player ) if ( isTimer( writeTimer ) ) then killTimer( writeTimer ) end guiSetText( chat_Windows[player].Label, '* [N/A] is typing ...') guiSetVisible( chat_Windows[player].Label, false ) end; addEvent( 'onClientHideWrite', true ); addEventHandler( 'onClientHideWrite', root, hideWriteMessage ) addEventHandler( 'onClientGUIChanged', root, function( ) local parent = getElementParent( source ) if ( not parent ) then return end local player = getPlayerFromName( guiGetText( parent ) ) if ( not player ) then return end if ( source == chat_Windows[player].editBox ) then if ( guiGetText( chat_Windows[player].editBox ) ~= '' ) then triggerServerEvent( 'onServerCheckShow', Cplayer, player, getPlayerName( Cplayer ) ) local messageStringText = guiGetText( chat_Windows[player].editBox ) checkIfTextChanged( player, messageStringText ) else triggerServerEvent( 'onServerCheckHide', Cplayer, player ) end end end ); function checkIfTextChanged( player, text ) setTimer( function( ) if ( guiGetText( chat_Windows[player].editBox ) == text ) then triggerServerEvent( 'onServerCheckHide', Cplayer, player ) end end, 1000, 1 ) end; addEvent( 'onClientPokePlayer', true ); addEventHandler( 'onClientPokePlayer', root, function( pokedBy ) if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then playSound( 'Wakeup.mp3' ) outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..pokedBy..' ] - Poked you !', 255, 255, 255, true ) end end ); addEvent( 'onClientChangeButton', true ); addEventHandler( 'onClientChangeButton', root, function( Text ) guiSetText( GUIEditor.button[2], Text ) end ); function buildChattingWith( ) local row, column = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( row == -1 or column == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], row, column ) ) if ( getElementData( player, 'chatStatus' ) ~= 'Online' ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a message to this player .. it\'s offline !', 255, 255, 255, true ) return end if ( not chat_Windows[player] ) then BuildChatting( player ) guiBringToFront( chat_Windows[player].window ) end end; addEvent( 'buildChattingWith', true ); addEventHandler( 'buildChattingWith', root, buildChattingWith ) function privateChatDoubleClicks( ) if ( source == GUIEditor.gridlist[1] ) then local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) if ( player == Cplayer ) then outputChatBox( '#FF0000• ERROR :#FFFFFF You cannot chatting with yourself !', 255, 255, 255, true ) return end local serial = getElementData( player, 'chatSystem;playerSerial' ) triggerServerEvent( 'onServerCheckIfBlocked', Cplayer, serial ) end end; addEventHandler( 'onClientGUIDoubleClick', root, privateChatDoubleClicks ); addEvent( 'onClientReceiveMessage', true ); addEventHandler( 'onClientReceiveMessage', root, function( player, message ) if ( not chat_Windows[player] ) then BuildChatting( player ) end local oldMessages = guiGetText( chat_Windows[player].memo ) local newString = oldMessages..getPlayerName( player ):gsub( '#%x%x%x%x%x%x', '' )..' : '..message..'\n' guiSetText( chat_Windows[player].memo, newString ) guiMemoSetCaretIndex( chat_Windows[player].memo, string.len( oldMessages ) ) if ( guiGetVisible( GUIEditor.window[1] ) == false ) then if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..getPlayerName( player )..' ] - Sent you a message !', 255, 255, 255, true ) playSound( 'Message.mp3' ) end end end ); function addPlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) if ( data == 'Online' ) then guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) else guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; function addOnlinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' if ( data == 'Online' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) end end; function addOfflinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Offline' if ( data == 'Offline' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; addEvent( 'onClientUpdateStatus', true ); addEventHandler( 'onClientUpdateStatus', root, function( player, status ) if ( status == 'Online' ) then removePlayer( player ) local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end else destroyChattingWindow( player ) removePlayer( player ) local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end end end ); addEvent( 'onClientDestroyChats', true ); addEventHandler( 'onClientDestroyChats', root, function( player ) destroyChattingWindow( player ) end ); function player_Join( player ) if ( player ~= Cplayer ) then local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end end end; addEvent( 'onClientAddPlayer', true ); addEventHandler( 'onClientAddPlayer', root, player_Join ) function player_Quit( player ) removePlayer( player ) destroyChattingWindow( player ) end; addEvent( 'onClientRemovePlayer', true ); addEventHandler( 'onClientRemovePlayer', root, player_Quit ) function player_ChangedName( player, name ) for i = 0, guiGridListGetRowCount( GUIEditor.gridlist[1] ) do if ( guiGridListGetItemText( GUIEditor.gridlist[1], i, 1 ) == name ) then guiGridListRemoveRow( GUIEditor.gridlist[1], i ) end end destroyChattingWindow( player ) setTimer( function( ) local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end end, 1500, 1 ) end; addEvent( 'onClientRemovePlayer_ChangedName', true ); addEventHandler( 'onClientRemovePlayer_ChangedName', root, player_ChangedName ) function sendMessage( eleEdit ) local parent = getElementParent( source ) if ( parent == false or not parent ) then return end local player = getPlayerFromName( guiGetText( parent ) ) if ( player == false or not player ) then return end if ( eleEdit == chat_Windows[player].editBox ) then sendNewMessage( player ) end end; addEventHandler( 'onClientGUIAccepted', root, sendMessage ); addEventHandler( 'onClientResourceStart', resourceRoot, function( ) triggerServerEvent( 'onServerSetPlayerSerial', Cplayer ) setTimer( function( ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end, 1000, 1 ) end ); اسف ع السحبة اكواد الكلنت .. local chatSystemDB = dbConnect( 'sqlite', 'Chat System - Database.db' ) dbExec( chatSystemDB, 'CREATE TABLE IF NOT EXISTS `Chat_System` (sourceSerial, blockedSerial)' ) addEvent( 'onServerCheckShow', true ); addEventHandler( 'onServerCheckShow', root, function( player, name ) if ( player and player ~= source ) then triggerClientEvent( player, 'onClientShowWrite', source, source, name ) end end ); addEvent( 'onServerCheckHide', true ); addEventHandler( 'onServerCheckHide', root, function( player ) if ( player and player ~= source ) then triggerClientEvent( player, 'onClientHideWrite', source, source ) end end ); addEvent( 'onServerCheckIfBlocked', true ); addEventHandler( 'onServerCheckIfBlocked', root, function( serial ) local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results ~= 0 ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a message to this player .. it\'s blocked !', source, 255, 255, 255, true ) return end local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', serial, getPlayerSerial( source ) ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results ~= 0 ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a message to this player .. he was blocked you !', source, 255, 255, 255, true ) return end triggerClientEvent( source, 'buildChattingWith', source ) end ); addEvent( 'onServerSendPoke', true ); addEventHandler( 'onServerSendPoke', root, function( player, serial ) local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results ~= 0 ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a poke to this player .. it\'s blocked or he was blocked you !', source, 255, 255, 255, true ) return end if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a poke to this player .. it\'s offline !', source, 255, 255, 255, true ) return end triggerClientEvent( player, 'onClientPokePlayer', source, getPlayerName( source ) ) end ); addEvent( 'onServerCheckBlockStatus', true ); addEventHandler( 'onServerCheckBlockStatus', root, function( serial ) local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results == 0 or not results ) then triggerClientEvent( source, 'onClientChangeButton', source, 'Block Player' ) return end triggerClientEvent( source, 'onClientChangeButton', source, 'Unblock Player' ) end ); addEvent( 'onServerBlockPlayer', true ); addEventHandler( 'onServerBlockPlayer', root, function( serial, player ) local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results ~= 0 ) then return end dbExec( chatSystemDB, 'INSERT INTO `Chat_System` VALUES(?,?)', getPlayerSerial( source ), serial ) triggerClientEvent( source, 'onClientChangeButton', source, 'Unblock Player' ) triggerClientEvent( player, 'onClientDestroyChats', source, source ) triggerClientEvent( source, 'onClientDestroyChats', source, player ) end ); addEvent( 'onServerUnblockPlayer', true ); addEventHandler( 'onServerUnblockPlayer', root, function( serial ) local check = dbQuery( chatSystemDB, 'SELECT * FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) local results = dbPoll( check, -1 ) if ( type( results ) == 'table' and #results == 0 or not results ) then triggerClientEvent( source, 'onClientChangeButton', source, 'Block Player' ) return end dbExec( chatSystemDB, 'DELETE FROM `Chat_System` WHERE sourceSerial = ? AND blockedSerial = ?', getPlayerSerial( source ), serial ) triggerClientEvent( source, 'onClientChangeButton', source, 'Block Player' ) end ); addEventHandler( 'onPlayerJoin', getRootElement( ), function( ) triggerClientEvent( root, 'onClientAddPlayer', source, source ) end ); addEventHandler( 'onPlayerQuit', getRootElement( ), function( ) triggerClientEvent( root, 'onClientRemovePlayer', source, source ) end ); addEventHandler( 'onPlayerChangeNick', getRootElement( ), function( old, new ) triggerClientEvent( root, 'onClientRemovePlayer_ChangedName', source, source, old ) end ); addEvent( 'onServerSetPlayerSerial', true ); addEventHandler( 'onServerSetPlayerSerial', root, function( ) setElementData( source, 'chatSystem;playerSerial', getPlayerSerial( source ) ) end ); addEvent( 'onServerChangeStatus', true ); addEventHandler( 'onServerChangeStatus', root, function( Status ) triggerClientEvent( root, 'onClientUpdateStatus', source, source, Status ) end ); addEvent( 'onServerSendMessage', true ); addEventHandler( 'onServerSendMessage', root, function( plr, message ) triggerClientEvent( plr, 'onClientReceiveMessage', source, source, message ) end ); addEvent( 'onServerPutPlayers', true ); addEventHandler( 'onServerPutPlayers', root, function( ) for _, player in ipairs( getElementsByType( 'player' ) ) do local plrName = getPlayerName( player ) local plrStatus = getElementData( player, 'privateChatSystem;playerStatus' ) or 'Online' triggerClientEvent( root, 'onClientPutPlayers', player, plrName, plrStatus ) end end ); سيرفر ..حل شباب.
  5. اعلم انو مود مستر جراند واتمني انك تدخل تساعدني مب تقول انو مود مستر جراند مضبتت حب :\
  6. local mainKey = 'F2' -- The key to open panel </> GUIEditor = { gridlist = {}, button = {}, edit = {}, label = {} } addEventHandler("onClientResourceStart", resourceRoot, function() privtechat = guiCreateWindow(0, 203, 464, 473, "|#| الــدردشــات الــخـــاصــة |#|", false) guiWindowSetSizable(privtechat, false) guiSetAlpha(privtechat, 1.00) guiSetVisible(privtechat, false) GUIEditor.edit[1] = guiCreateEdit(9, 31, 260, 41, "", false, privtechat) GUIEditor.gridlist[1] = guiCreateGridList(9, 88, 270, 375, false, privtechat) guiGridListAddColumn(GUIEditor.gridlist[1], "الاعــبــيــن ..#", 0.9) GUIEditor.label[1] = guiCreateLabel(324, 40, 85, 22, "Player Name ", false, privtechat) guiSetFont(GUIEditor.label[1], "default-bold-small") GUIEditor.label[2] = guiCreateLabel(279, 34, 44, 38, "*", false, privtechat) guiSetFont(GUIEditor.label[2], "sa-gothic") guiLabelSetColor(GUIEditor.label[2], 255, 0, 0) GUIEditor.label[3] = guiCreateLabel(399, 34, 44, 38, "*", false, privtechat) guiSetFont(GUIEditor.label[3], "sa-gothic") guiLabelSetColor(GUIEditor.label[3], 255, 0, 0) GUIEditor.button[1] = guiCreateButton(281, 202, 173, 51, "|#| فـــتـــح الــدردشــة |#|", false, privtechat) guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FF00FE00") GUIEditor.button[5] = guiCreateButton(281, 263, 173, 51, "|#| أغـــلاق |=| Close |#|", false, privtechat) guiSetProperty(GUIEditor.button[5], "NormalTextColour", "FFFF0000") GUIEditor.label[5] = guiCreateLabel(283, 430, 181, 16, "===================", false, privtechat) guiLabelSetColor(GUIEditor.label[5], 250, 2, 154) GUIEditor.label[6] = guiCreateLabel(283, 98, 181, 16, "Mr.Grand", false, privtechat) guiLabelSetColor(GUIEditor.label[6], 48, 203, 55) end ) bindKey( mainKey, 'down', function( ) guiSetVisible( privtechat, not guiGetVisible( privtechat ) ) showCursor( guiGetVisible( privtechat ) ) guiSetInputEnabled( guiGetVisible( privtechat ) ) for cNumber, _ in pairs( chat_Windows ) do guiSetVisible( chat_Windows[cNumber].window, guiGetVisible( privtechat ) ) end end ); addEventHandler( 'onClientGUIChanged', root, function( ) if ( source == GUIEditor.edit[1] ) then local plrString = guiGetText( GUIEditor.edit[1] ) if ( plrString == '' or not plrString ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end else guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end end end end end end ); function checkIfTextChanged( player, text ) setTimer( function( ) if ( guiGetText( chat_Windows[player].editBox ) == text ) then triggerServerEvent( 'onServerCheckHide', Cplayer, player ) end end, 1000, 1 ) end; addEvent( 'onClientPokePlayer', true ); addEventHandler( 'onClientPokePlayer', root, function( pokedBy ) if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then playSound( 'Wakeup.mp3' ) outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..pokedBy..' ] - Poked you !', 255, 255, 255, true ) end end ); addEvent( 'onClientChangeButton', true ); addEventHandler( 'onClientChangeButton', root, function( Text ) guiSetText( GUIEditor.button[2], Text ) end ); function buildChattingWith( ) local row, column = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( row == -1 or column == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], row, column ) ) if ( getElementData( player, 'chatStatus' ) ~= 'Online' ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a message to this player .. it\'s offline !', 255, 255, 255, true ) return end if ( not chat_Windows[player] ) then BuildChatting( player ) guiBringToFront( chat_Windows[player].window ) end end; addEvent( 'buildChattingWith', true ); addEventHandler( 'buildChattingWith', root, buildChattingWith ) function privateChatDoubleClicks( ) if ( source == GUIEditor.gridlist[1] ) then local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) if ( player == Cplayer ) then outputChatBox( '#FF0000• ERROR :#FFFFFF You cannot chatting with yourself !', 255, 255, 255, true ) return end local serial = getElementData( player, 'chatSystem;playerSerial' ) triggerServerEvent( 'onServerCheckIfBlocked', Cplayer, serial ) end end; addEventHandler( 'onClientGUIDoubleClick', root, privateChatDoubleClicks ); addEvent( 'onClientReceiveMessage', true ); addEventHandler( 'onClientReceiveMessage', root, function( player, message ) if ( not chat_Windows[player] ) then BuildChatting( player ) end local oldMessages = guiGetText( chat_Windows[player].memo ) local newString = oldMessages..getPlayerName( player ):gsub( '#%x%x%x%x%x%x', '' )..' : '..message..'\n' guiSetText( chat_Windows[player].memo, newString ) guiMemoSetCaretIndex( chat_Windows[player].memo, string.len( oldMessages ) ) if ( guiGetVisible( GUIEditor.window[1] ) == false ) then if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..getPlayerName( player )..' ] - Sent you a message !', 255, 255, 255, true ) playSound( 'Message.mp3' ) end end end ); function addPlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) if ( data == 'Online' ) then guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) else guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; function addOnlinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' if ( data == 'Online' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) end end; function addOfflinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Offline' if ( data == 'Offline' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; function player_Quit( player ) removePlayer( player ) destroyChattingWindow( player ) end; addEvent( 'onClientRemovePlayer', true ); addEventHandler( 'onClientRemovePlayer', root, player_Quit ) function player_ChangedName( player, name ) for i = 0, guiGridListGetRowCount( GUIEditor.gridlist[1] ) do if ( guiGridListGetItemText( GUIEditor.gridlist[1], i, 1 ) == name ) then guiGridListRemoveRow( GUIEditor.gridlist[1], i ) end end destroyChattingWindow( player ) setTimer( function( ) local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end end, 1500, 1 ) end; addEvent( 'onClientRemovePlayer_ChangedName', true ); addEventHandler( 'onClientRemovePlayer_ChangedName', root, player_ChangedName ) function sendMessage( eleEdit ) local parent = getElementParent( source ) if ( parent == false or not parent ) then return end local player = getPlayerFromName( guiGetText( parent ) ) if ( player == false or not player ) then return end if ( eleEdit == chat_Windows[player].editBox ) then sendNewMessage( player ) end end; addEventHandler( 'onClientGUIAccepted', root, sendMessage ); addEventHandler( 'onClientResourceStart', resourceRoot, function( ) triggerServerEvent( 'onServerSetPlayerSerial', Cplayer ) setTimer( function( ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end, 1000, 1 ) end );
  7. مسوي شات خاص ... كل لما لاعب يغير نكه جميع الاسماء بالقريد لست ... تنخذف لازم ارستر المود عشان الاسماء ترجع تاني ... ممكن تساعدني اخ تونسي ؟؟ @MR.TOUNSI
  8. سرلي3 ايام ومااحد يبي يرد شكرا لكم ياشباب
  9. local mainKey = 'F2' -- The key to open panel </> GUIEditor = { gridlist = {}, button = {}, edit = {}, label = {} } addEventHandler("onClientResourceStart", resourceRoot, function() privtechat = guiCreateWindow(0, 203, 464, 473, "|#| الــدردشــات الــخـــاصــة |#|", false) guiWindowSetSizable(privtechat, false) guiSetAlpha(privtechat, 1.00) guiSetVisible(privtechat, false) GUIEditor.edit[1] = guiCreateEdit(9, 31, 260, 41, "", false, privtechat) GUIEditor.gridlist[1] = guiCreateGridList(9, 88, 270, 375, false, privtechat) guiGridListAddColumn(GUIEditor.gridlist[1], "الاعــبــيــن ..#", 0.9) GUIEditor.label[1] = guiCreateLabel(324, 40, 85, 22, "Player Name ", false, privtechat) guiSetFont(GUIEditor.label[1], "default-bold-small") GUIEditor.label[2] = guiCreateLabel(279, 34, 44, 38, "*", false, privtechat) guiSetFont(GUIEditor.label[2], "sa-gothic") guiLabelSetColor(GUIEditor.label[2], 255, 0, 0) GUIEditor.label[3] = guiCreateLabel(399, 34, 44, 38, "*", false, privtechat) guiSetFont(GUIEditor.label[3], "sa-gothic") guiLabelSetColor(GUIEditor.label[3], 255, 0, 0) GUIEditor.button[1] = guiCreateButton(281, 202, 173, 51, "|#| فـــتـــح الــدردشــة |#|", false, privtechat) guiSetProperty(GUIEditor.button[1], "NormalTextColour", "FF00FE00") GUIEditor.button[5] = guiCreateButton(281, 263, 173, 51, "|#| أغـــلاق |=| Close |#|", false, privtechat) guiSetProperty(GUIEditor.button[5], "NormalTextColour", "FFFF0000") GUIEditor.label[5] = guiCreateLabel(283, 430, 181, 16, "===================", false, privtechat) guiLabelSetColor(GUIEditor.label[5], 250, 2, 154) GUIEditor.label[6] = guiCreateLabel(283, 98, 181, 16, "Mr.Grand", false, privtechat) guiLabelSetColor(GUIEditor.label[6], 48, 203, 55) end ) bindKey( mainKey, 'down', function( ) guiSetVisible( privtechat, not guiGetVisible( privtechat ) ) showCursor( guiGetVisible( privtechat ) ) guiSetInputEnabled( guiGetVisible( privtechat ) ) for cNumber, _ in pairs( chat_Windows ) do guiSetVisible( chat_Windows[cNumber].window, guiGetVisible( privtechat ) ) end end ); addEventHandler( 'onClientGUIChanged', root, function( ) if ( source == GUIEditor.edit[1] ) then local plrString = guiGetText( GUIEditor.edit[1] ) if ( plrString == '' or not plrString ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end else guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( string.find( string.upper( getPlayerName( player ) ), string.upper( plrString ) ) ) then addPlayer( player ) end end end end end end ); function checkIfTextChanged( player, text ) setTimer( function( ) if ( guiGetText( chat_Windows[player].editBox ) == text ) then triggerServerEvent( 'onServerCheckHide', Cplayer, player ) end end, 1000, 1 ) end; addEvent( 'onClientPokePlayer', true ); addEventHandler( 'onClientPokePlayer', root, function( pokedBy ) if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then playSound( 'Wakeup.mp3' ) outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..pokedBy..' ] - Poked you !', 255, 255, 255, true ) end end ); addEvent( 'onClientChangeButton', true ); addEventHandler( 'onClientChangeButton', root, function( Text ) guiSetText( GUIEditor.button[2], Text ) end ); function buildChattingWith( ) local row, column = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( row == -1 or column == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], row, column ) ) if ( getElementData( player, 'chatStatus' ) ~= 'Online' ) then outputChatBox( '#FF0000• ERROR :#FFFFFF Sorry, You cannot send a message to this player .. it\'s offline !', 255, 255, 255, true ) return end if ( not chat_Windows[player] ) then BuildChatting( player ) guiBringToFront( chat_Windows[player].window ) end end; addEvent( 'buildChattingWith', true ); addEventHandler( 'buildChattingWith', root, buildChattingWith ) function privateChatDoubleClicks( ) if ( source == GUIEditor.gridlist[1] ) then local Sel = guiGridListGetSelectedItem( GUIEditor.gridlist[1] ) if ( Sel == -1 ) then return end local player = getPlayerFromName( guiGridListGetItemText( GUIEditor.gridlist[1], Sel, 1 ) ) if ( player == Cplayer ) then outputChatBox( '#FF0000• ERROR :#FFFFFF You cannot chatting with yourself !', 255, 255, 255, true ) return end local serial = getElementData( player, 'chatSystem;playerSerial' ) triggerServerEvent( 'onServerCheckIfBlocked', Cplayer, serial ) end end; addEventHandler( 'onClientGUIDoubleClick', root, privateChatDoubleClicks ); addEvent( 'onClientReceiveMessage', true ); addEventHandler( 'onClientReceiveMessage', root, function( player, message ) if ( not chat_Windows[player] ) then BuildChatting( player ) end local oldMessages = guiGetText( chat_Windows[player].memo ) local newString = oldMessages..getPlayerName( player ):gsub( '#%x%x%x%x%x%x', '' )..' : '..message..'\n' guiSetText( chat_Windows[player].memo, newString ) guiMemoSetCaretIndex( chat_Windows[player].memo, string.len( oldMessages ) ) if ( guiGetVisible( GUIEditor.window[1] ) == false ) then if ( getElementData( Cplayer, 'donotDisturb' ) ~= 'Enabled' ) then outputChatBox( '#FFFF00• Chat System :#FFFFFF The player : [ '..getPlayerName( player )..' ] - Sent you a message !', 255, 255, 255, true ) playSound( 'Message.mp3' ) end end end ); function addPlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) if ( data == 'Online' ) then guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) else guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; function addOnlinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Online' if ( data == 'Online' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 0, 200, 0 ) end end; function addOfflinePlayer( player ) local data = getElementData( player, 'chatStatus' ) or 'Offline' if ( data == 'Offline' ) then local name = getPlayerName( player ) local r, g, b = getPlayerNametagColor( player ) local row = guiGridListAddRow( GUIEditor.gridlist[1] ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 1, name, false, false ) guiGridListSetItemText( GUIEditor.gridlist[1], row, 2, data, false, false ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 1, r, g, b ) guiGridListSetItemColor( GUIEditor.gridlist[1], row, 2, 200, 0, 0 ) end end; function player_Quit( player ) removePlayer( player ) destroyChattingWindow( player ) end; addEvent( 'onClientRemovePlayer', true ); addEventHandler( 'onClientRemovePlayer', root, player_Quit ) function player_ChangedName( player, name ) for i = 0, guiGridListGetRowCount( GUIEditor.gridlist[1] ) do if ( guiGridListGetItemText( GUIEditor.gridlist[1], i, 1 ) == name ) then guiGridListRemoveRow( GUIEditor.gridlist[1], i ) end end destroyChattingWindow( player ) setTimer( function( ) local Sel = guiComboBoxGetSelected( GUIEditor.combobox[1] ) if ( Sel == -1 ) then addPlayer( player ) return end if ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Online' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Online' ) then addOnlinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Offline' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do if ( getElementData( player, 'chatStatus' ) == 'Offline' ) then addOfflinePlayer( player ) end end elseif ( guiComboBoxGetItemText( GUIEditor.combobox[1], Sel ) == 'Both (All)' ) then guiGridListClear( GUIEditor.gridlist[1] ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end end, 1500, 1 ) end; addEvent( 'onClientRemovePlayer_ChangedName', true ); addEventHandler( 'onClientRemovePlayer_ChangedName', root, player_ChangedName ) function sendMessage( eleEdit ) local parent = getElementParent( source ) if ( parent == false or not parent ) then return end local player = getPlayerFromName( guiGetText( parent ) ) if ( player == false or not player ) then return end if ( eleEdit == chat_Windows[player].editBox ) then sendNewMessage( player ) end end; addEventHandler( 'onClientGUIAccepted', root, sendMessage ); addEventHandler( 'onClientResourceStart', resourceRoot, function( ) triggerServerEvent( 'onServerSetPlayerSerial', Cplayer ) setTimer( function( ) for _, player in ipairs( getElementsByType( 'player' ) ) do addPlayer( player ) end end, 1000, 1 ) end ); حياكمم الله انا مسوى مود شات خاص لو واحد غير نكه كل الاسماء تختفى من القريد ليست لــو واحد دخل لازمم ارستر المود عشان يظهر اسمة بـالقـريـد ليست حل شباب ؟ المود حق جراند وانا معدلتة الاكواد
  10. يب اكواد اللوحة --[[********************************** * * 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" )
  11. انا ابي م يقدر الاعب يفك ميوتة لنفسة لكن الباقي يقدر ..
  12. ابية زي الوزارة م حد يقدر يفك الميوت لنفسة لكن الاعبين تقدر تفكة ؟ ابية زي الوزارة م حد يقدر يفك الميوت لنفسة لكن الاعبين تقدر تفكة م ابية بالسريال
  13. كيف اخلي لو صكيت واحد ميوت م يقدر يفكة لنفسة ارجو حل