Jump to content

شات خاص


mody134

Recommended Posts

اما اجى اختار اسم الاعب يجيب اسمى انا 

 

13 hours ago, mody134 said:

--[[-----------------------------

    --| Private Chat 
        -| Author : PaiN^
        -| ver. : 1.1.0
        -| file : pc_client.lua
    --|

--]]-----------------------------

--// variables :
local me = getLocalPlayer( )
local chatwindows = { }
local chatLog = { }
local screen = { guiGetScreenSize( ) }

--// functions :
function addPlayers( )
    guiGridListClear( players )
    
    for k, v in ipairs( getElementsByType( "player" ) ) do
        local name = getPlayerName( v ):gsub( "#%x%x%x%x%x%x", "" )
        local row = guiGridListAddRow( players )
        guiGridListSetItemText( players, row, 1, k, false, true )
        guiGridListSetItemText( players, row, 2, name, false, false )
        guiGridListSetItemData( players, row, 2, getPlayerSerial( v ) )
    end
    
    return true
end

function guiSetSpot( wnd, spot )
    local wX, wY = guiGetSize( wnd, false )
    if spot == "c" then
        return guiSetPosition( wnd, ( screen[1] - wX ) / 2, ( screen[2] - wY ) / 2, false )
    elseif spot == "r" then
        return guiSetPosition( wnd, ( screen[1] - wX ), ( screen[2] - wY ) / 2, false )
    end
end

function sendNewMessage( player )
    if chatwindows[player] and chatwindows[player].wnd then
        local msg = guiGetText( chatwindows[player].msgBox )
        if msg:len( ) >= 2 then
            local msgLog = guiGetText( chatwindows[player].msgLog )
            if not msgLog then msgLog = "" end
            msgLog = msgLog .. getPlayerName( me ):gsub( "#%x%x%x%x%x%x", "" ) .. " : " .. msg .. "\n"
            guiSetText( chatwindows[player].msgLog, msgLog )
            guiSetText( chatwindows[player].msgBox, "" )
            return triggerServerEvent( "onMessageSend", me, msg, player )
        end
    end
end

function getSendMessage( msg )
    if not chatwindows[source] then
        buildChatWindow( source )
    end
    
    outputChatBox( "--------", 100, 100, 100, true )
    outputChatBox( "لـديـك رســآلة خـآصة جديـدة", 255, 0, 0, true )
    outputChatBox( "--------", 100, 100, 100, true )
    playSound( "newMessage.mp3", false )
    local msgLog = guiGetText( chatwindows[source].msgLog )
    if not msgLog then msgLog = "" end
    msgLog = msgLog .. getPlayerName( source ):gsub( "#%x%x%x%x%x%x", "" ) .." : " .. msg .. "\n"
    guiSetText( chatwindows[source].msgLog, msgLog )
end

function buildChatWindow( player )
    chatwindows[player] = { }
    chatwindows[player].wnd = guiCreateWindow( 145, 218, 414, 315, getPlayerName( player ):gsub( "#%x%x%x%x%x%x", "" ), false, false )
    chatwindows[player].msgLog = guiCreateMemo( 19, 29, 376, 198, "", false, chatwindows[player].wnd )
    chatwindows[player].send = guiCreateButton( 19, 233, 71, 28, "إرسال", false, chatwindows[player].wnd )
    chatwindows[player].closeC = guiCreateButton( 324, 271, 71, 28, "إغلاق", false, chatwindows[player].wnd )
    chatwindows[player].msgBox = guiCreateEdit( 19, 264, 299, 35, "", false, chatwindows[player].wnd )
    chatwindows[player].warning = guiCreateLabel( 114, 237, 281, 20, "قال تعالى : { ما يلفظ من قول إلا لديه رقيب عتيد } .", false, chatwindows[player].wnd )
    guiWindowSetSizable( chatwindows[player].wnd, false )
    guiSetSpot( chatwindows[player].wnd, "c" )
    guiSetAlpha( chatwindows[player].wnd, 1 )
    guiBringToFront( chatwindows[player].wnd )
    guiMemoSetReadOnly( chatwindows[player].msgLog, true )
    addEventHandler( "onClientGUIAccepted", chatwindows[player].msgBox,
        function( )
            sendNewMessage( player )
        end, false
    )
    addEventHandler( "onClientGUIClick", chatwindows[player].send,
        function( )
            sendNewMessage( player )
        end, false
    )
    addEventHandler( "onClientGUIClick", chatwindows[player].closeC, 
        function( )
            setElementData( me, "c_state", false )
            destroyElement( chatwindows[player].wnd )
            chatwindows[player] = nil
            chatLog[me] = nil
            chatLog[player] = nil
        end, false
    )
end

function getPlayerFromSerial( serial )
    for k, v in ipairs( getElementsByType( "player" ) ) do
        if getPlayerSerial( v ) == serial then
            return v
        end
    end
    
    return false
end

--// events & commands :
addEvent( "onMessageReceive", true )
addEventHandler( "onClientPlayerJoin", root, addPlayers )
addEventHandler( "onClientPlayerQuit", root, addPlayers )
addEventHandler( "onMessageReceive", root, getSendMessage )
addEventHandler( "onClientPlayerNickChange", root, addPlayers )

addEventHandler( "onClientResourceStart", resourceRoot,
    function( )
        wndMain = guiCreateWindow( 686, 194, 338, 431, "# الرسائل الخاصة .,", false, true )
        guiSetVisible( wndMain, false )
        guiSetSpot( wndMain, "r" )
        ---
        players = guiCreateGridList( 14, 41, 309, 314, false, wndMain )
        guiGridListAddColumn( players, "#", 0.1 )
        guiGridListAddColumn( players, "Players", 0.8 )
        addPlayers( )
        ---
        close = guiCreateButton( 208, 387, 104, 28, "إغلاق", false, wndMain )
        start = guiCreateButton( 28, 387, 104, 28, "بدء محادثة", false, wndMain )
        for k, v in ipairs( getElementsByType( "gui-button", resourceRoot ) ) do
            guiSetFont( v, "default-bold-small" )
            guiSetProperty( v, "NormalTextColour", "FFAAAAAA" )
        end
        ---
        allow = guiCreateRadioButton( 14, 359, 148, 22, "السماح بالرسائل الخاصة", false, wndMain )
        guiRadioButtonSetSelected( allow, true )
        disallow = guiCreateRadioButton( 192, 359, 130, 22, " منع الرسائل الخاصة", false, wndMain )
        for k, v in ipairs( getElementsByType( "gui-radiobutton", resourceRoot ) ) do
            guiSetFont( v, "default-bold-small" )
            guiSetProperty( v, "NormalTextColour", "FF000000" )
        end
        ---
        bindKey( "F2", "down", function( )
            local isInChat = getElementData( me, "c_state" )
            if isInChat then
                if guiGetVisible( wndMain ) then
                    guiSetVisible( wndMain, false )
                    showCursor( false )
                    for k, v in pairs( chatwindows ) do
                        guiSetVisible( chatwindows[k].wnd, false )
                    end
                else
                    guiSetVisible( wndMain, true )
                    showCursor( true )
                    for k, v in pairs( chatwindows ) do
                        guiSetVisible( chatwindows[k].wnd, true )
                    end
                end
            else
                guiSetVisible( wndMain, not guiGetVisible( wndMain ) )
                showCursor( guiGetVisible( wndMain ) )
            end
        end )
        setElementData( me, "allowing", true )
        setElementData( me, "c_state", false )
    end
)

addEventHandler( "onClientGUIClick", resourceRoot,
    function( )
        if source == close then
            guiSetVisible( wndMain, false )
            showCursor( false )
            for k, v in pairs( chatwindows ) do
                guiSetVisible( chatwindows[k].wnd, false )
            end
        elseif source == start then
            local row = guiGridListGetSelectedItem( players )
            if row and row ~= -1 then
                local playerName = guiGridListGetItemText( players, row, 2 )
                local player = getPlayerFromSerial( guiGridListGetItemData( players, row, 2 ) )
                if player then
                    if getElementData( player, "allowing" ) then
                        if chatLog[me] and chatLog[me] == player or chatLog[player] and chatLog[player] == me then
                            return
                        end
                        buildChatWindow( player )
                        setElementData( me, "c_state", true )
                        chatLog[me] = player
                        chatLog[player] = me
                    else
                        outputChatBox( "! هذا اللاعب قام بإغلاق الرسائل الخاصة", 200, 0, 0, true )
                    end
                else
                    outputChatBox( "! حصل خطأ في النظام, تواصل مع أي ادمن للمساعدة", 200, 0, 0, true )
                end
            else
                outputChatBox( "! يجب أن تختار لاعبا لبدء المحادثة معه", 200, 0, 0, true )
            end
        elseif source == allow or source == disallow then
            setElementData( me, "allowing", guiRadioButtonGetSelected( allow ) )
        end    
    end    
)

addEventHandler( "onClientGUIDoubleClick", resourceRoot,
    function( button, state )
        if source == players then
            if button == "left" and state == "up" then
                local row = guiGridListGetSelectedItem( players )
                if row and row ~= -1 then
                    local playerName = guiGridListGetItemText( players, row, 2 )
                    local player = getPlayerFromSerial( guiGridListGetItemData( players, row, 2 ) )
                    if player then
                        if getElementData( player, "allowing" ) then
                            if chatLog[me] and chatLog[me] == player or chatLog[player] and chatLog[player] == me then
                                return
                            end
                            buildChatWindow( player )
                            setElementData( me, "c_state", true )
                            chatLog[me] = player
                            chatLog[player] = me
                        else
                            outputChatBox( "! هذا اللاعب قام بإغلاق الرسائل الخاصة", 200, 0, 0, true )
                        end
                    else
                        outputChatBox( "! حصل خطأ في النظام, تواصل مع أي ادمن للمساعدة", 200, 0, 0, true )
                    end
                else
                    outputChatBox( "! يجب أن تختار لاعبا لبدء المحادثة معه", 200, 0, 0, true )
                end
            end
        end
    end
)
 

 

Spoiler
Quote

 

 

 

Edited by mody134
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...