Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Plugin generated by AMXX-Studio */
- #include < amxmodx >
- #define DEBUG
- new szAdvFile[ 68 ];
- new Array: g_aType;
- new Array: g_aMessages;
- new iTotal;
- enum _:Types
- {
- HUD_SIDE,
- HUD_CENTER,
- CHAT_PRINT
- }
- new const szTypes[ Types ][ ] = { "SIDE_HUD", "CENTER_HUD", "CHAT_PRINT" };
- public plugin_init( )
- {
- register_plugin( "Hud Messages", "v0.1", "+ColdWar" );
- g_aType = ArrayCreate( );
- g_aMessages = ArrayCreate( 82 );
- }
- public plugin_cfg( )
- {
- get_localinfo( "amxx_configsdir", szAdvFile, sizeof szAdvFile - 1 );
- add( szAdvFile, sizeof szAdvFile - 1, "/advertisements.ini" );
- LoadAdvertise( );
- }
- public LoadAdvertise( )
- {
- if( !file_exists( szAdvFile ) )
- {
- write_file( szAdvFile, "; Advertisement System by +ColdWar." );
- write_file( szAdvFile, "; Advertisement System has 3 modes, first mode is Hud message in the TSay Position, second mode is Hud message in the screen center, third is Color Chat." );
- write_file( szAdvFile, "; Hud Side Example:" );
- write_file( szAdvFile, "; SIDE_HUD Your Message" );
- write_file( szAdvFile, "" );
- write_file( szAdvFile, "; Hud Center Example:" );
- write_file( szAdvFile, "; CENTER_HUD Your Message" );
- write_file( szAdvFile, "" );
- write_file( szAdvFile, "; Chat is a bit more complicated, you can use !d for default color (con_color cvar), you can use !t for team color (T=Red CT=Blue Spec=Grey), !g for green color" );
- write_file( szAdvFile, "; CHAT_PRINT !gHello, !dI'm a !tColorfull !dChat print." );
- write_file( szAdvFile, "; You can use server variables like : Current Map (%MAP%), Players Number (%PNUM%), MaxPlayers Number (%MPNUM), Server Name (%HOSTNAME%)." )
- write_file( szAdvFile, "; Example for colorfull chat print with server variables:" );
- write_file( szAdvFile, "; CHAT_PRINT !dWelcome to !g%HOSTNAME%!d, players: !t%PNUM%!g/!t(%MPNUM%)!d, map: !g%MAP%!d." );
- write_file( szAdvFile, "; You will see on chat (Example):" );
- write_file( szAdvFile, "; Welcome to Dedicated-Server, players: 1/12, map: de_dust2." );
- write_file( szAdvFile, "; Server variables must be capitallized, Example:" );
- write_file( szAdvFile, "; %MAP% = valid, %map% = not valid." );
- return;
- }
- new iFile = fopen( szAdvFile, "rt" ), szBuffer[ 100 ], szType[ 18 ], szMessage[ 82 ], Type, bool: found;
- while( !feof( iFile ) )
- {
- fgets( iFile, szBuffer, sizeof szBuffer - 1 );
- if( !strlen( szBuffer ) || szBuffer[ 0 ] == ';' || szBuffer[ 0 ] == '/' )
- continue;
- strbreak( szBuffer, szType, sizeof szType - 1, szMessage, sizeof szMessage - 1 );
- for( Type = HUD_SIDE ; Type < Types ; Type ++ )
- {
- if( !equal( szTypes[ Type ], szType ) )
- continue;
- found = true
- break;
- }
- if( !found )
- continue;
- iTotal ++;
- ArrayPushCell( g_aType, Type );
- ArrayPushString( g_aMessages, szMessage );
- #if defined DEBUG
- log_amx( "[DEBUG]: Pushed message to list: %s | Type: %s", szMessage, szTypes[ Type ] );
- #endif
- }
- fclose( iFile );
- if( iTotal )
- set_task( 60.0, "CmdAdvertise", 282, .flags = "b" );
- }
- public CmdAdvertise( TaskID )
- {
- new message = random( iTotal );
- new type = ArrayGetCell( g_aType, message );
- new szMessage[ 82 ];
- ArrayGetString( g_aMessages, message, szMessage, sizeof szMessage - 1 );
- if( contain( szMessage, "%MAP%" ) != -1 )
- {
- new szMap[ 36 ];
- get_mapname( szMap, sizeof szMap - 1 );
- replace_all( szMessage, sizeof szMessage - 1, "%MAP%", szMap );
- }
- if( contain( szMessage, "%PNUM%" ) != -1 )
- {
- new szPNum[ 4 ];
- num_to_str( get_playersnum( ), szPNum, sizeof szPNum - 1 );
- replace_all( szMessage, sizeof szMessage - 1, "%PNUM%", szPNum );
- }
- if( contain( szMessage, "%MPNUM%" ) != -1 )
- {
- new szMPNum[ 4 ];
- num_to_str( get_maxplayers( ), szMPNum, sizeof szMPNum - 1 );
- replace_all( szMessage, sizeof szMessage - 1, "%MPNUM%", szMPNum );
- }
- if( contain( szMessage, "%HOSTNAME%" ) != -1 )
- {
- new szHostname[ 62 ];
- get_cvar_string( "hostname", szHostname, sizeof szHostname - 1 );
- replace_all( szMessage, sizeof szMessage - 1, "%HOSTNAME%", szHostname );
- }
- #if defined DEBUG
- log_amx( "[DEBUG] Sent message: %s | Type: %s. (%i/%i)", szMessage, szTypes[ type ], message, iTotal );
- #endif
- if( type == CHAT_PRINT )
- {
- replace_all( szMessage, sizeof szMessage - 1, "!d", "^1" );
- replace_all( szMessage, sizeof szMessage - 1, "!t", "^3" );
- replace_all( szMessage, sizeof szMessage - 1, "!g", "^4" );
- ColorChat( 0, szMessage );
- }
- else if( type == HUD_SIDE )
- {
- set_hudmessage( 85, 127, 255, 0.06, 0.65, 0, 6.0, 8.0 )
- show_hudmessage( 0, szMessage )
- }
- else if( type == HUD_CENTER )
- {
- set_hudmessage( 85, 127, 255, -1.0, -1.0, 0, 6.0, 8.0 )
- show_hudmessage( 0, szMessage )
- }
- }
- stock ColorChat( index, message[], any:... )
- {
- if( index && !is_user_connected( index ) || !index && !get_playersnum( ) )
- return 0;
- static szMessage[ 242 ], len;
- len = formatex( szMessage, charsmax( szMessage ), "^4[AMXX]^1 " );
- len += vformat( szMessage[ len ], charsmax( szMessage ) - len, message, 3 );
- static st_msgid;
- if( !st_msgid )
- st_msgid = get_user_msgid( "SayText" );
- if( index )
- {
- message_begin( MSG_ONE_UNRELIABLE, st_msgid, _, index );
- write_byte( index );
- write_string( szMessage );
- message_end( );
- }
- else
- {
- static cc_glb_maxclients;
- if( !cc_glb_maxclients )
- cc_glb_maxclients = get_maxplayers( );
- for( index = 1 ; index <= cc_glb_maxclients ; index ++ )
- {
- if( !is_user_connected( index ) )
- continue;
- message_begin( MSG_ONE_UNRELIABLE, st_msgid, _, index );
- write_byte( index );
- write_string( szMessage );
- message_end( );
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement