Ulysses

General => Developers Corner => Topic started by: feldma on February 21, 2016, 04:49:11 PM

Title: Creating a force MOTD command, however I need some help.
Post by: feldma on February 21, 2016, 04:49:11 PM
I'm creating a "ForceMOTD" command, however I do not want players to be able to close it instantly.

I looked at the motdmenu.lua file (or whatever it's called), however I'm not sure if copying the file would work.

If I changed
Code: [Select]
local isUrl
local url

function ulx.showMotdMenu( steamid )
local window = vgui.Create( "DFrame" )
if ScrW() > 640 then -- Make it larger if we can.
window:SetSize( ScrW()*0.9, ScrH()*0.9 )
else
window:SetSize( 640, 480 )
end
window:Center()
window:SetTitle( "ULX MOTD" )
window:SetVisible( true )
window:MakePopup()

local html = vgui.Create( "DHTML", window )
--html:SetAllowLua( true ) -- Too much of a security risk for us to enable. Feel free to uncomment if you know what you're doing.

local button = vgui.Create( "DButton", window )
button:SetText( "Close" )
button.DoClick = function() window:Close() end
button:SetSize( 100, 40 )
button:SetPos( (window:GetWide() - button:GetWide()) / 2, window:GetTall() - button:GetTall() - 10 )

html:SetSize( window:GetWide() - 20, window:GetTall() - button:GetTall() - 50 )
html:SetPos( 10, 30 )
if not isUrl then
html:SetHTML( ULib.fileRead( "data/ulx_motd.txt" ) or "" )
else
url = string.gsub( url, "%%curmap%%", game.GetMap() )
url = string.gsub( url, "%%steamid%%", steamid )
html:OpenURL( url )
end
end
to
Code: [Select]
local isUrl
local url

function ulx.showMotdMenu( steamid )
local window = vgui.Create( "DFrame" )
if ScrW() > 640 then -- Make it larger if we can.
window:SetSize( ScrW()*0.9, ScrH()*0.9 )
else
window:SetSize( 640, 480 )
end
window:Center()
window:SetTitle( "ULX MOTD" )
window:SetVisible( true )
window:MakePopup()

local html = vgui.Create( "DHTML", window )
--html:SetAllowLua( true ) -- Too much of a security risk for us to enable. Feel free to uncomment if you know what you're doing.
       
        timer.Simple(60, function()
local button = vgui.Create( "DButton", window )
button:SetText( "Close" )
button.DoClick = function() window:Close() end
button:SetSize( 100, 40 )
button:SetPos( (window:GetWide() - button:GetWide()) / 2, window:GetTall() - button:GetTall() - 10 )
        end)

html:SetSize( window:GetWide() - 20, window:GetTall() - button:GetTall() - 50 )
html:SetPos( 10, 30 )
if not isUrl then
html:SetHTML( ULib.fileRead( "data/ulx_motd.txt" ) or "" )
else
url = string.gsub( url, "%%curmap%%", game.GetMap() )
url = string.gsub( url, "%%steamid%%", steamid )
html:OpenURL( url )
end
end

Would that work?
I'm not talking about the function name, just wondering if the motd would actually appear + would the timer on the close button work.

Thanks. I would test but at school.

EDIT: Just realised, even if I called this, it would open on the calling player. How would I make it open on the target_ply?
Title: Re: Creating a force MOTD command, however I need some help.
Post by: Bytewave on February 21, 2016, 04:59:24 PM
Couldn't you just...

Code: [Select]
RunConsoleCommand("ulx", "cexec", target_ply:Nick(), "ulx motd")?

Or, , bypass the command entirely and just use cexec?
Title: Re: Creating a force MOTD command, however I need some help.
Post by: feldma on February 21, 2016, 05:00:30 PM
Couldn't you just...

Code: [Select]
RunConsoleCommand("ulx", "cexec", target_ply:Nick(), "ulx motd")?

Or, <censor>, bypass the command entirely and just use cexec?

Yes, we have been using cexec, but I need a command that forces the MOTD and makes the player unable to close it for a minute.
Title: Re: Creating a force MOTD command, however I need some help.
Post by: Bytewave on February 21, 2016, 05:03:26 PM
Yes, we have been using cexec, but I need a command that forces the MOTD and makes the player unable to close it for a minute.
Ah, I'm sorry, didn't see that part.
Still, though. There's a hack for making it not closable for a few seconds on one of these threads here. Why not just make that the default? Continue using cexec and save yourself the trouble?
Title: Re: Creating a force MOTD command, however I need some help.
Post by: JamminR on February 21, 2016, 06:00:37 PM
Search this developers corner section of the forum for 'motd', or 'motd close'
I'm sure there has been discussion of someone wanting this before.
Title: Re: Creating a force MOTD command, however I need some help.
Post by: feldma on February 21, 2016, 07:55:01 PM
Yes, I saw those threads.

The problem is I don't want the default one to be timed.
Title: Re: Creating a force MOTD command, however I need some help.
Post by: JamminR on February 21, 2016, 08:30:30 PM
The problem is I don't want the default one to be timed.
I'm not saying edit the default one.
I'm saying use one of the others as example of how to do it.
Read one of the other ones, rename the command object and any vars that would conflict, and then add the timer as shown in examples.
Title: Re: Creating a force MOTD command, however I need some help.
Post by: feldma on February 21, 2016, 11:09:35 PM
Hmm, I'll give that a try.

Thanks for helping.