Jump to content

hel private chat


pepsi18

Recommended Posts

help

not open the chat window which is the problem : (

the chat is opened but when

I give click the player does not open window chat

g_LocalPlayer = getLocalPlayer() 
g_Root = getRootElement()
g_ThisResource = getThisResource()
g_ResourceRoot = getResourceRootElement(getThisResource())
 
chat = {} -- table to store chat windows in
newmsg = {show=false, tick=getTickCount(), showtime=5000, img=nil, lbl=nil } -- new msg table
 
 
anims = {}
 
local _getPlayerName = getPlayerName
local function getPlayerName ( player )
    return _getPlayerName ( player ) : gsub ( "#%x%x%x%x%x%x", "" )
end
 
function buildPlayerList()
    local x,y = guiGetScreenSize()
    local width,height = 175,350
    x = x-width
    y = (y-height)/2
    newmsg.img = guiCreateStaticImage(681.0000,134.0000, 42.0000,34.0000, "image/chat-icon.png", false) -- mail message icon
    newmsg.lbl = guiCreateLabel(553.0000,175.0000, 244.0000, 19.0000, "", false)
        guiLabelSetHorizontalAlign(newmsg.lbl, "right", true)
    guiSetAlpha(newmsg.img, 0)
    --guiSetAlpha(newmsg.lbl, 0)
   
    wndPlayers = guiCreateWindow(x,y,width,height, "Private Chat", false)
    grdPlayers = guiCreateGridList(.025,.065, .975,.915, true, wndPlayers)
        colPlayers = guiGridListAddColumn(grdPlayers, "Players", 0.85)
 
    local players = getElementsByType("player")
    for k,v in ipairs(players) do
        addPlayerToList(v)
    end
   
    guiWindowSetSizable(wndPlayers, false)
    guiSetProperty(wndPlayers, "RollUpEnabled", "true")
    guiSetProperty(wndPlayers, "Dragable", "true")
    guiSetAlpha(wndPlayers, 0)
   
   
    -- create animations for it
    anims.plfadein = Animation.create(wndPlayers, Animation.presets.guiFadeIn(1000))
    anims.plfadeout = Animation.create(wndPlayers, Animation.presets.guiFadeOut(1000))
 
    anims.nmfadein = Animation.create(newmsg.img, Animation.presets.guiFadeIn(1000))
    anims.nmfadeout = Animation.create(newmsg.img, Animation.presets.guiFadeOut(1000))
   
    anims.nmtextin = Animation.create(newmsg.lbl, Animation.presets.guiFadeIn(1000))
    anims.nmtextout = Animation.create(newmsg.lbl, Animation.presets.guiFadeOut(1000))
   
--[[    local x,y = guiGetPosition(newmsg.img)
    outputDebugString("guigetPostions: " ..tostring(x).." "..tostring(y))
    local scrx,scry = guiGetScreenSize()
    anims.nmslidein = Animation.create(newmsg.img, Animation.presets.guiMove(x,y))--, 1000,false, scrx,scry, false))
    anims.nmslideout = Animation.create(newmsg.img, Animation.presets.guiMove(scrx,scry))--, 1000,false, x,y, false))
]]
    bindKey("F2", "down", togglePmGui)
end
function addPlayerToList(ply)
    --outputDebugString("addPlayerToList:" ..getPlayerName(ply)):gsub("#%x%x%x%x%x%x","")
    local row = guiGridListAddRow(grdPlayers)
    local name = getPlayerName(ply)
    guiGridListSetItemText(grdPlayers,row,colPlayers, name, false, false)
end
function removePlayerFromList(ply)
    --outputDebugString("removePlayerFromList:" ..getPlayerName(ply)):gsub("#%x%x%x%x%x%x","")
    local name=getPlayerName(ply)
    for row=0,guiGridListGetRowCount(grdPlayers) do
        if guiGridListGetItemText(grdPlayers, row, colPlayers) == name then
            guiGridListRemoveRow(grdPlayers, row)
            outputDebugString("remove row" ..tostring(row))
        end
    end
end
 
 
function showPmGui(state)
    if state == true then
        anims.plfadein:play()
        for k,v in pairs(chat) do
            guiSetVisible(chat[k].wnd,true)
        end
        showCursor(true)
    elseif state == false then
        anims.plfadeout:play()
        for k,v in pairs(chat) do  
            guiSetVisible(chat[k].wnd,false)
        end
        showCursor(false)
        guiSetInputEnabled(false)
    end
end
function togglePmGui()
    if not anims.plfadein:isPlaying() and not anims.plfadeout:isPlaying() then
        if guiGetAlpha(wndPlayers) > .1 then showPmGui(false)
        else showPmGui(true)
        end
    end
end
 
function buildChatWindow(ply)
    local x,y = guiGetScreenSize()
    local width,height = 300,250
    x = x*.5
    y = y*.5
   
    chat[ply] = {}
    chat[ply].wnd = guiCreateWindow(x,y,width,height, getPlayerName(ply):gsub("#%x%x%x%x%x%x","") , false)
    chat[ply].memo = guiCreateMemo(.025,.075, .95,.55, "", true, chat[ply].wnd)
    chat[ply].edit = guiCreateEdit(.025,.65, .95,.15, "", true, chat[ply].wnd)
    chat[ply].btnClose = guiCreateButton(.1,.83, .3,.125, "Close", true, chat[ply].wnd)
    chat[ply].btnSend = guiCreateButton(.6,.83, .3,.125, "Send", true, chat[ply].wnd)
   
    guiMemoSetReadOnly(chat[ply].memo, true)
   
    guiWindowSetSizable(chat[ply].wnd, false)
    guiSetProperty(chat[ply].wnd, "RollUpEnabled", "true")
    guiSetProperty(chat[ply].wnd, "Dragable", "true")
   
    if anims.plfadein:isPlaying() then-- in process of fading in
        guiSetVisible(chat[ply].wnd, true)
    elseif anims.plfadeout:isPlaying() then -- in process of fading out
        guiSetVisible(chat[ply].wnd, false)
    else -- not in process of either
        if guiGetAlpha(wndPlayers) > .1 then
            guiSetVisible(chat[ply].wnd, true) -- is showing
        else
            guiSetVisible(chat[ply].wnd, false) -- isnt showing
        end
    end
end
function destroyChatWindow(ply)
    if chat[ply] and isElement(chat[ply].wnd) then
        destroyElement(chat[ply].wnd)
        chat[ply] = nil
    end
end
 
function sendChatMessage(ply)
    --outputDebugString("sendChatMessage: " .. tostring(ply))
    if chat[ply] and isElement(chat[ply].wnd) then
        local newText = guiGetText(chat[ply].edit)
        if newText and string.len(newText) > 0 then
            local oldText = guiGetText(chat[ply].memo)
            if not oldText then oldText = "" end
            oldText = oldText .. getPlayerName(g_LocalPlayer):gsub("#%x%x%x%x%x%x","") .. ": " .. newText .. "\n"
            guiSetText(chat[ply].memo, oldText)
            guiSetText(chat[ply].edit, "")
            guiMemoSetCaretIndex(chat[ply].memo, string.len(oldText))
 
            triggerServerEvent("onGUIPrivateMessage", g_LocalPlayer, ply,newText)
        end
    end
end
function recieveChatMessage(ply, msg)
    --outputDebugString("recieveChatMessage: " .. msg)
    if not chat[ply] then
        buildChatWindow(ply)
    end
   
    newmsg.show = true
    newmsg.tick = getTickCount()
   
    ---guiSetText(newmsg.lbl, getPlayerName(ply):gsub("#%x%x%x%x%x%x","") .. ": " .. msg .. "\n")
guiSetText(newmsg.lbl, "New Messages " .. getPlayerName(ply):gsub("#%x%x%x%x%x%x","") .. "\n")
    anims.nmfadein:play()
    anims.nmtextin:play()
    --anims.nmslidein:play()
 
    local oldText = guiGetText(chat[ply].memo)
    if not oldText then oldText = "" end
    oldText = oldText .. getPlayerName(ply):gsub("#%x%x%x%x%x%x","") .. ": " .. msg .. "\n"
    guiSetText(chat[ply].memo, oldText)
    guiMemoSetCaretIndex(chat[ply].memo, string.len(oldText))
end
 
event_resource_start = function(res)
    buildPlayerList()
    outputChatBox("",255,255,255,true)
end
 
event_resource_stop = function(res)
    unbindKey("F2", "down", togglePmGui)  
    showPmGui(false)
end
 
event_player_join = function()
    --outputDebugString("onClientPlayerJoin")
    addPlayerToList(source)
end
 
event_player_quit = function()
    --outputDebugString("onClientPlayerQuit")
    removePlayerFromList(source)
    destroyChatWindow(source)
end
 
event_gui_click = function(button, state, absx, absy)
    if button == "left" and state == "up" then
        if getElementType(source) == "gui-button" then
            local parent = getElementParent(source)
            if parent ~= false then
                local ply = getPlayerFromName(guiGetText(parent))
                if ply then
                    if source == chat[ply].btnClose then
                        destroyChatWindow(ply)
                        guiSetInputEnabled(false)
                    elseif source == chat[ply].btnSend then
                        sendChatMessage(ply)
                        guiSetInputEnabled(false)
                    end
                end
            end
        elseif getElementType(source) == "gui-edit" then
            local parent = getElementParent(source)
            if parent ~= false then
                local ply = getPlayerFromName(guiGetText(parent))
                if source == chat[ply].edit then
                    guiSetInputEnabled(true)
                end
            end
        else
            guiSetInputEnabled(false)
        end
    end
end
 
event_gui_doubleclick = function(button, state, absx, absy)
    if button == "left" and state == "up" then
        if source == grdPlayers then
            local row, col = guiGridListGetSelectedItem(grdPlayers)
            --outputDebugString("double clicked row: "..tostring(row))
            if row == -1 or col == -1 then return end              
            local name = guiGridListGetItemText(grdPlayers, row, col)
            local ply = getPlayerFromName(name)
            if not chat[ply] then
                buildChatWindow(ply)
            end
            guiBringToFront(chat[ply].wnd)        
        end
    end
end
 
event_gui_accepted = function(element)
    local parent = getElementParent(source)
    if parent ~= false then
        local ply = getPlayerFromName(guiGetText(parent))
        if ply then
            if
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...