AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Snippets and Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=112)
-   -   Advanced ShowMOTDPanel (https://forums.alliedmods.net/showthread.php?t=232476)

Dr. McKay 12-31-2013 02:28

Advanced ShowMOTDPanel
 
2 Attachment(s)
I haven't actually tested this in-game, but it should work fine.

This is an enhanced version of ShowMOTDPanel that allows for:
  • Hidden MOTD panels
  • Big MOTD panel (in TF2)
  • Verification that the client can actually receive MOTD panels before sending it

PHP Code:

/**
 * Displays an MOTD panel to a client with advanced options
 * 
 * @param client        Client index the panel should be shown to
 * @param title            Title of the MOTD panel (not displayed on all games)
 * @param msg            Content of the MOTD panel; could be a URL, plain text, or a stringtable index
 * @param type            Type of MOTD this is, one of MOTDPANEL_TYPE_TEXT, MOTDPANEL_TYPE_INDEX, MOTDPANEL_TYPE_URL, MOTDPANEL_TYPE_FILE
 * @param visible        Whether the panel should be shown to the client
 * @param big            true if this should be a big MOTD panel (TF2 only)
 * @param verify        true if we should check if the client can actually receive HTML MOTDs before sending it, false otherwise
 * @param callback        A callback to be called if we determine that the client can't receive HTML MOTDs
 * @noreturn
 */
stock void AdvMOTD_ShowMOTDPanel(int client, const char[] title, const char[] msgint type=MOTDPANEL_TYPE_INDEXbool visible=truebool big=falsebool verify=falseMOTDFailure callback=INVALID_FUNCTION)

typedef MOTDFailure = function void (int clientMOTDFailureReason reason);

enum MOTDFailureReason {
    
MOTDFailure_Unknown// Failure reason unknown
    
MOTDFailure_Disabled// Client has explicitly disabled HTML MOTDs
    
MOTDFailure_Matchmaking// HTML MOTD is disabled by Quickplay/matchmaking (TF2 only)
    
MOTDFailure_QueryFailed // cl_disablehtmlmotd convar query failed
}; 

Example:

PHP Code:

#pragma semicolon 1

#include <sourcemod>
#include <advanced_motd>

public void OnPluginStart() {
    
RegConsoleCmd("sm_google"Command_Google"Opens Google in a large MOTD window");
}

public 
Action Command_Google(int clientint args) {
    
AdvMOTD_ShowMOTDPanel(client"Google""http://www.google.com"MOTDPANEL_TYPE_URLtruetruetrueOnMOTDFailure);
    return 
Plugin_Handled;
}

public 
void OnMOTDFailure(int clientMOTDFailureReason reason) {
    if(
reason == MOTDFailure_Disabled) {
        
PrintToChat(client"[SM] You have HTML MOTDs disabled.");
    } else if(
reason == MOTDFailure_Matchmaking) {
        
PrintToChat(client"[SM] You cannot view HTML MOTDs because you joined via Quickplay.");
    } else if(
reason == MOTDFailure_QueryFailed) {
        
PrintToChat(client"[SM] Unable to verify that you can view HTML MOTDs.");
    } else {
        
PrintToChat(client"[SM] Unable to verify that you can view HTML MOTDs for an unknown reason.");
    }



404UserNotFound 12-31-2013 04:14

Re: Advanced ShowMOTDPanel
 
I. Freakin'. Love. You.

Alex30555 12-31-2013 05:22

Re: Advanced ShowMOTDPanel
 
Nice :D Thanks.

404UserNotFound 01-01-2014 13:15

Re: Advanced ShowMOTDPanel
 
Thanks to this excellent native, I was able to FINALLY create a working "Big MOTD on connect" plugin. It uses some code from MasteroftheXP's Block MOTD plugin which is why there seems to be an issue where using this causes players to not be able to select a class or a team.

Here's the code

Spoiler

Dr. McKay 01-01-2014 15:45

Re: Advanced ShowMOTDPanel
 
If the HTML MOTD fails, you should send them a regular ShowMOTDPanel text MOTD.

Also, why are you hooking the "Train" message?

404UserNotFound 01-01-2014 15:54

Re: Advanced ShowMOTDPanel
 
Quote:

Originally Posted by Dr. McKay (Post 2079596)
If the HTML MOTD fails, you should send them a regular ShowMOTDPanel text MOTD.

Also, why are you hooking the "Train" message?

It's from the Block MOTD plugin from MasteroftheXP. I didn't know what it was, so I just kept it in there.

The HTML MOTD displays properly, but (and this may have been because I unloaded the plugin whilst the MOTD panel was up) it disallowed me from choosing a team or even joining the game.

The only reason I was trying to make a "big MOTD on connect" plugin was for a friend who wanted it for his server.

Dr. McKay 01-01-2014 16:56

Re: Advanced ShowMOTDPanel
 
Quote:

Originally Posted by abrandnewday (Post 2079602)
It's from the Block MOTD plugin from MasteroftheXP. I didn't know what it was, so I just kept it in there.

The HTML MOTD displays properly, but (and this may have been because I unloaded the plugin whilst the MOTD panel was up) it disallowed me from choosing a team or even joining the game.

The only reason I was trying to make a "big MOTD on connect" plugin was for a friend who wanted it for his server.

The big MOTD destroys vgui panels underneath it, including the team selection screen.

psychonic's Dynamic MOTD plugin has an option to use the big MOTD.

404UserNotFound 01-01-2014 17:15

Re: Advanced ShowMOTDPanel
 
Quote:

Originally Posted by Dr. McKay (Post 2079636)
The big MOTD destroys vgui panels underneath it, including the team selection screen.

psychonic's Dynamic MOTD plugin has an option to use the big MOTD.

Well wait....if it destroys the team selection screen, why would someone use a big MOTD on connect? No-one would be able to join!

Dr. McKay 01-01-2014 17:20

Re: Advanced ShowMOTDPanel
 
Quote:

Originally Posted by abrandnewday (Post 2079643)
Well wait....if it destroys the team selection screen, why would someone use a big MOTD on connect? No-one would be able to join!

psychonic's plugin accounts for and fixes this.

404UserNotFound 01-01-2014 17:26

Re: Advanced ShowMOTDPanel
 
Quote:

Originally Posted by Dr. McKay (Post 2079647)
psychonic's plugin accounts for and fixes this.

Ohhhhhhh. I see now! Thanks for clarifying :D


All times are GMT -4. The time now is 12:39.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.