Jump to content

News System


SuperVisor

Recommended Posts

updatesMemo = ""
currentDate = ""
local sx, sy = guiGetScreenSize ( )
local screenW, screenH = guiGetScreenSize ( )
local currentList = { }
-- Tables
local main = {}
local read = { }
local add = {
    button = {},
    edit = {}
} local remove = {
    button = {}
}
-- View Panel 
main.window = guiCreateWindow((screenW - 587) / 2, (screenH - 400) / 2, 587, 400, "Recent Updates", false)
staticimage = guiCreateStaticImage(0.3104, 0.1000, 0.4200, 0.2800, "logo.png", true, main.window)
guiWindowSetMovable ( main.window, false )
guiWindowSetSizable(main.window, false)
guiSetVisible ( main.window, false )
main.grid = guiCreateMemo(0.0187, 0.501, 0.9659, 0.413, "", true, main.window)
guiMemoSetReadOnly(main.grid,true)
main.close = guiCreateButton(0.9000, 0.0900, 0.0587, 0.0587, "X", true, main.window)
infogrids = guiCreateLabel(0.1554, 0.3851, 0.6884, 0.1174, "Recent Updates", true, main.window)
guiLabelSetColor(infogrids, 0, 255, 0)
guiLabelSetVerticalAlign(infogrids, "center")
guiLabelSetHorizontalAlign(infogrids, "center", false)
guiSetFont(infogrids, "default-bold-small")
-- Adding Panel
add.window = guiCreateWindow( ( sx / 2 - 482 / 2 ), ( sy / 2 - 571 / 2 ), 482, 571, "Add Updates Panel", false)
guiWindowSetSizable(add.window, false)
guiSetVisible ( add.window, false )
guiCreateLabel(10, 32, 145, 15, "Date (DD/MM/YYYY):", false, add.window)
add.edit['date'] = guiCreateEdit(9, 53, 454, 28, "", false, add.window)
guiCreateLabel(10, 103, 145, 15, "Update:", false, add.window)
add.edit['update'] = guiCreateMemo(13, 125, 450, 294, "", false, add.window)
guiCreateLabel(10, 449, 145, 15, "Author:", false, add.window)
add.edit['author'] = guiCreateEdit(9, 468, 454, 28, "", false, add.window)
add.button['add'] = guiCreateButton(12, 508, 143, 44, "Add Update", false, add.window)
add.button['cancel'] = guiCreateButton(165, 508, 143, 44, "Cancel/close", false, add.window)
add.button['remove'] = guiCreateButton(320, 508, 143, 44, "Remove a update", false, add.window)
-- Remove Panel
remove.window = guiCreateWindow( ( sx / 2 - 552 / 2 ), ( sy / 2 - 533 / 2 ), 552, 533, "Remove an Update Panel", false)
guiWindowSetSizable(remove.window, false)
guiSetVisible ( remove.window, false )
remove.grid = guiCreateGridList(10, 28, 532, 443, false, remove.window)
guiGridListAddColumn(remove.grid, "Date", 0.18)
guiGridListAddColumn(remove.grid, "Update", 0.58)
guiGridListAddColumn(remove.grid, "Developer", 0.2)
remove.button['remove'] = guiCreateButton(376, 481, 166, 36, "Remove", false, remove.window)
guiSetProperty(remove.button['remove'], "NormalTextColour", "FFFF0000")
remove.button['back'] = guiCreateButton(10, 481, 166, 36, "Add a update", false, remove.window)
-- Read More
read.window = guiCreateWindow( ( sx / 2 - 407 / 2 ), ( sy / 2 - 397 / 2 ), 407, 397, "Read More", false)
guiWindowSetSizable(read.window, false)
guiSetVisible ( read.window, false )
guiSetAlpha ( read.window, 1 )
guiWindowSetMovable ( read.window, false )
read.date = guiCreateLabel(9, 35, 275, 25, "Date: Loading..", false, read.window)
read.author = guiCreateLabel(9, 70, 388, 25, "Developer: Loading...", false, read.window)
guiCreateLabel(9, 105, 388, 25, "Update:", false, read.window)
read.update = guiCreateMemo(9, 127, 388, 253, "Loading..", false, read.window)
guiMemoSetReadOnly(read.update, true)
read.close = guiCreateButton(294, 25, 103, 35, "Exit", false, read.window)
days = {"1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st"}
months = {"January","February","March","April","May","June","July","August","September","October","November","December"}


function accountsExport(ag1)
updatesMemo = ""
    if (type(ag1) == 'table') then
        currentList = { }
        local updates = { }
        for index, variable in ipairs(ag1) do
            local lol = updates
            updates = { }
            table.insert(updates, {variable['Date_'], variable['Name'], variable['Developer']})
            for i, v in ipairs(lol) do
                table.insert(updates, v)
            end
        end
        for i,v in ipairs(updates) do
            d, m, y = string.match(v[1], "(%d+)/(%d+)/(%d+)")
            performdate = getdayofweek(d,m,y).." "..days[tonumber(d)].." "..months[tonumber(m)].." "..y
            if currentDate ~=  v[1] then
                currentDate = v[1]
                updatesMemo = updatesMemo.. "".. performdate.."\n"
            end
            three = string.gsub(v[3],"%[","")
            three = string.gsub(three,"%]","")
            three = string.gsub(three,"","")
            three = string.gsub(three,"","")
            str = "- "..v[2].." ("..three..")"
            updatesMemo = updatesMemo ..string.gsub(str,"\n","").."\n\n"
            triggerEvent("accounts.GetUpdates", source, updatesMemo)
        end
        currentList = updates
    end
end
addEvent("updates.acc", true)
addEventHandler("Supdates.acc", root, accountsExport)

addEvent ( "Updates:onPanelChangeState", true )
addEventHandler ( "Updates:onPanelChangeState", root, function ( window, ag1 )
guiSetText(main.grid,"")
updatesMemo = ""
    if ( window == 'main' ) then
        if ( guiGetVisible ( add.window ) ) then
            guiSetVisible ( add.window, false )
            showCursor ( false )
        end if ( guiGetVisible ( remove.window ) ) then
            guiSetVisible ( remove.window, false )
            showCursor ( false )
        end
        guiSetVisible ( main.window, true )
        showCursor ( true )
        if ( type ( ag1 ) == 'table' ) then
            currentList = { }
            -- Reverse the loop --
            local updates = { }
            for index, variable in ipairs ( ag1 ) do
                local lol = updates
                updates = { }
                table.insert ( updates, { variable['Date_'], variable['Name'], variable['Developer'] } )
                for i, v in ipairs ( lol ) do
                    table.insert ( updates, v )
                end
            end
            for i,v in ipairs ( updates ) do
            d, m, y = string.match(v[1], "(%d+)/(%d+)/(%d+)")
            performdate = getdayofweek(d,m,y).." "..days[tonumber(d)].." "..months[tonumber(m)].." "..y
            
            if currentDate ~=  v[1] then
currentDate = v[1]
updatesMemo = updatesMemo.. "".. performdate.."\n"
end
three = string.gsub(v[3],"%[","")
three = string.gsub(three,"%]","")
three = string.gsub(three,"","")
three = string.gsub(three,"","")
str = "- "..v[2].." ("..three..")"
updatesMemo = updatesMemo ..string.gsub(str,"\n","").."\n\n"
guiSetText(main.grid,updatesMemo)
            end
            currentList = updates
        else
            guiSetText ( main.grid, "Failed to load updates" )
        end
    elseif ( window == 'manager' ) then
        if ( guiGetVisible ( remove.window ) ) then return end
        if ( guiGetVisible ( main.window ) ) then
            guiSetVisible ( main.window, false )
            showCursor ( false )
        end if ( guiGetVisible ( read.window ) ) then
            guiSetVisible ( read.window, false )
        end
        
        guiSetVisible ( add.window, true )
        showCursor ( true )
        guiSetText ( add.edit['author'], getPlayerName ( localPlayer ) )
        local time = getRealTime ( )
        local day = time.monthday
        local month = time.month + 1
        local year = time.year + 1900
        if ( day < 10 ) then
            day = 0 .. day
        end if ( month < 10 ) then
            month = 0 .. month
        end
        guiSetText ( add.edit['date'], table.concat ( { day, month, year }, "/" ) )
        guiSetInputMode ( "no_binds_when_editing" )
    end
end )

addEventHandler ( 'onClientGUIClick', root, function ( btn )
    if ( btn == 'left' ) then
        -- Main Panel
        if ( source == main.readmore ) then
            local row, col = guiGridListGetSelectedItem ( main.grid )
            if ( row ~= -1 and col ~= 0 ) then
                guiSetVisible ( read.window, true )
                guiBringToFront ( read.window )
                guiSetText ( read.date, "Date: "..guiGridListGetItemText ( main.grid, row, 1 ) )
                guiSetText ( read.update, guiGridListGetItemText ( main.grid, row, 2 ) )
                guiSetText ( read.author, "Developer: "..guiGridListGetItemText ( main.grid, row, 3 ) )
            else
                outputChatBox ( "Select an update.", 255, 255, 0 )
            end
        elseif ( source == read.close ) then
            guiSetVisible ( read.window, false )
        elseif ( source == main.close ) then
            guiSetText(main.grid,"")
            guiSetVisible ( main.window, false )
            showCursor ( false )
            if ( guiGetVisible ( read.window ) ) then
                guiSetVisible ( read.window, false )
            end
        
        -- Adding Panel
        elseif ( source == add.button['cancel'] ) then
            guiSetVisible ( add.window, false )
            showCursor ( false )
        elseif ( source == add.button['add'] ) then
            local date, update, author = guiGetText ( add.edit['date'] ), guiGetText ( add.edit['update'] ), guiGetText ( add.edit['author'] )
            if ( date ~= '' and update ~= '' and author ~= '' ) then
                triggerServerEvent ( "Updates:onServerEvent", localPlayer, 'addUpdate', { date, update, author } )
            else
                outputChatBox ( "You need to enter all of the information.", 255, 0, 0 )
            end
        elseif ( source == add.button['remove'] ) then
            guiSetVisible ( add.window, false )
            guiSetVisible ( remove.window, true )
            guiGridListClear ( remove.grid )
            if ( currentList and #currentList > 0 ) then
                for index, var in ipairs ( currentList ) do
                    local row = guiGridListAddRow ( remove.grid )
                    guiGridListSetItemText ( remove.grid, row, 1, var[1], false, false )
                    guiGridListSetItemText ( remove.grid, row, 2, var[2], false, false )
                    guiGridListSetItemText ( remove.grid, row, 3, var[3], false, false )
                end
            else
                guiGridListSetItemText ( remove.grid, guiGridListAddRow ( remove.grid ), 2, "Please use /updates, then come back to this panel.", true, true )
                guiGridListSetItemColor ( remove.grid, 0, 2, 255, 0, 0 )
            end
        -- remove panel
        elseif ( source == remove.button['back'] ) then
            guiSetVisible ( remove.window, false )
            guiSetVisible ( add.window, true )
        elseif ( source == remove.button['remove'] ) then
            local row, col = guiGridListGetSelectedItem ( remove.grid )
            if ( row ~= -1 and col ~= 0 ) then
                local date = guiGridListGetItemText ( remove.grid, row, 1 )
                local update = guiGridListGetItemText ( remove.grid, row, 2 )
                local author = guiGridListGetItemText ( remove.grid, row, 3 )
                
                for index, var in ipairs ( currentList ) do
                    if ( var[1] == date and var[2] == update and var[3] == author ) then
                        table.remove ( currentList, index )
                        break
                    end
                end
                guiGridListClear ( remove.grid )
                if ( #currentList > 0 ) then
                    for index, var in ipairs ( currentList ) do
                        local row = guiGridListAddRow ( remove.grid )
                        guiGridListSetItemText ( remove.grid, row, 1, var[1], false, false )
                        guiGridListSetItemText ( remove.grid, row, 2, var[2], false, false )
                        guiGridListSetItemText ( remove.grid, row, 3, var[3], false, false )
                    end
                else 
                    guiGridListSetItemText ( remove.grid, guiGridListAddRow ( remove.grid ), 2, "No updates found.", true, true )
                end
                triggerServerEvent ( 'Updates:onServerEvent', localPlayer, 'removeUpdate', { date, update, author } )
            end
        end
    end
end )

function getdayofweek(dd, mm, yy) 
    local days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }
    local mmx = mm
    if (mm == 1) then  mmx = 13; yy = yy-1
    end
    if (mm == 2) then  mmx = 14; yy = yy-1
    end
    local val8 = dd + (mmx*2) +  math.floor(((mmx+1)*3)/5)   + yy + math.floor(yy/4)  - math.floor(yy/100)  + math.floor(yy/400) + 2
    local val9 = math.floor(val8/7)
    local dw = val8-(val9*7) 
    if (dw == 0) then
        dw = 7
    end
  return days[dw]
end

fileDelete("client.lua")

---Command
function updates ()
outputChatBox ( "#b23fff(SERVER):#ffffff A new update has been added, type /news to check it out.", 0, 255, 0, true )
    end
addCommandHandler("update", updates)

How to make Gui show when player Login ! 

Script of Login Name ="LoginP"

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...