Advertisement
ColdWar-Pawn

Advertisements From File V2

Apr 18th, 2013
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.69 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include < amxmodx >
  4.  
  5. #define DEBUG
  6.  
  7. new szAdvFile[ 68 ];
  8.  
  9. new Array: g_aType;
  10. new Array: g_aMessages;
  11. new iTotal;
  12.  
  13. enum _:Types
  14. {
  15.         HUD_SIDE,
  16.         HUD_CENTER,
  17.         CHAT_PRINT
  18. }
  19.  
  20. new const szTypes[ Types ][ ] = { "SIDE_HUD", "CENTER_HUD", "CHAT_PRINT" };
  21.  
  22. public plugin_init( )
  23. {
  24.     register_plugin( "Hud Messages", "v0.1", "+ColdWar" );
  25.    
  26.     g_aType = ArrayCreate( );
  27.     g_aMessages = ArrayCreate( 82 );
  28. }
  29.  
  30. public plugin_cfg( )
  31. {
  32.     get_localinfo( "amxx_configsdir", szAdvFile, sizeof szAdvFile - 1 );
  33.     add( szAdvFile, sizeof szAdvFile - 1, "/advertisements.ini" );
  34.     LoadAdvertise( );
  35. }
  36.  
  37.  
  38. public LoadAdvertise( )
  39. {
  40.     if( !file_exists( szAdvFile ) )
  41.     {
  42.         write_file( szAdvFile, "; Advertisement System by +ColdWar." );
  43.         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." );
  44.         write_file( szAdvFile, "; Hud Side Example:" );
  45.         write_file( szAdvFile, "; SIDE_HUD Your Message" );
  46.         write_file( szAdvFile, "" );
  47.         write_file( szAdvFile, "; Hud Center Example:" );
  48.         write_file( szAdvFile, "; CENTER_HUD Your Message" );
  49.         write_file( szAdvFile, "" );
  50.         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" );
  51.         write_file( szAdvFile, "; CHAT_PRINT !gHello, !dI'm a !tColorfull !dChat print." );
  52.         write_file( szAdvFile, "; You can use server variables like : Current Map (%MAP%), Players Number (%PNUM%), MaxPlayers Number (%MPNUM), Server Name (%HOSTNAME%)." )
  53.         write_file( szAdvFile, "; Example for colorfull chat print with server variables:" );
  54.         write_file( szAdvFile, "; CHAT_PRINT !dWelcome to !g%HOSTNAME%!d, players: !t%PNUM%!g/!t(%MPNUM%)!d, map: !g%MAP%!d." );
  55.         write_file( szAdvFile, "; You will see on chat (Example):" );
  56.         write_file( szAdvFile, "; Welcome to Dedicated-Server, players: 1/12, map: de_dust2." );
  57.         write_file( szAdvFile, "; Server variables must be capitallized, Example:" );
  58.         write_file( szAdvFile, "; %MAP% = valid, %map% = not valid." );
  59.         return;
  60.     }
  61.    
  62.     new iFile = fopen( szAdvFile, "rt" ), szBuffer[ 100 ], szType[ 18 ], szMessage[ 82 ], Type, bool: found;
  63.    
  64.     while( !feof( iFile ) )
  65.     {
  66.         fgets( iFile,  szBuffer, sizeof szBuffer - 1 );
  67.         if( !strlen( szBuffer ) || szBuffer[ 0 ] == ';' || szBuffer[ 0 ] == '/' )
  68.             continue;
  69.        
  70.         strbreak( szBuffer, szType, sizeof szType - 1, szMessage, sizeof szMessage - 1 );
  71.        
  72.         for( Type = HUD_SIDE ; Type < Types ; Type ++ )
  73.         {
  74.             if( !equal( szTypes[ Type ], szType ) )
  75.                 continue;
  76.             found = true
  77.             break;
  78.         }
  79.        
  80.         if( !found )
  81.             continue;
  82.        
  83.         iTotal ++;
  84.         ArrayPushCell( g_aType, Type );
  85.         ArrayPushString( g_aMessages, szMessage );
  86.         #if defined DEBUG
  87.         log_amx( "[DEBUG]: Pushed message to list: %s | Type: %s", szMessage, szTypes[ Type ] );
  88.         #endif
  89.     }
  90.     fclose( iFile );
  91.    
  92.     if( iTotal )
  93.         set_task( 60.0, "CmdAdvertise", 282, .flags = "b" );
  94. }
  95.  
  96. public CmdAdvertise( TaskID )
  97. {
  98.     new message = random( iTotal );
  99.    
  100.     new type = ArrayGetCell( g_aType, message );
  101.     new szMessage[ 82 ];
  102.     ArrayGetString( g_aMessages, message, szMessage, sizeof szMessage - 1 );
  103.    
  104.     if( contain( szMessage, "%MAP%" ) != -1 )
  105.     {
  106.         new szMap[ 36 ];
  107.         get_mapname( szMap, sizeof szMap - 1 );
  108.         replace_all( szMessage, sizeof szMessage - 1, "%MAP%", szMap );
  109.     }
  110.    
  111.     if( contain( szMessage, "%PNUM%" ) != -1 )
  112.     {
  113.         new szPNum[ 4 ];
  114.         num_to_str( get_playersnum( ), szPNum, sizeof szPNum - 1 );
  115.         replace_all( szMessage, sizeof szMessage - 1, "%PNUM%", szPNum );
  116.     }
  117.    
  118.     if( contain( szMessage, "%MPNUM%" ) != -1 )
  119.     {
  120.         new szMPNum[ 4 ];
  121.         num_to_str( get_maxplayers( ), szMPNum, sizeof szMPNum - 1 );
  122.         replace_all( szMessage, sizeof szMessage - 1, "%MPNUM%", szMPNum );
  123.     }
  124.    
  125.     if( contain( szMessage, "%HOSTNAME%" ) != -1 )
  126.     {
  127.         new szHostname[ 62 ];
  128.         get_cvar_string( "hostname", szHostname, sizeof szHostname - 1 );
  129.         replace_all( szMessage, sizeof szMessage - 1, "%HOSTNAME%", szHostname );
  130.     }
  131.    
  132.     #if defined DEBUG
  133.     log_amx( "[DEBUG] Sent message: %s | Type: %s. (%i/%i)", szMessage, szTypes[ type ], message, iTotal );
  134.     #endif
  135.    
  136.     if( type == CHAT_PRINT )
  137.     {
  138.         replace_all( szMessage, sizeof szMessage - 1, "!d", "^1" );
  139.         replace_all( szMessage, sizeof szMessage - 1, "!t", "^3" );
  140.         replace_all( szMessage, sizeof szMessage - 1, "!g", "^4" );
  141.        
  142.         ColorChat( 0, szMessage );
  143.     }
  144.     else if( type == HUD_SIDE )
  145.     {
  146.         set_hudmessage( 85, 127, 255, 0.06, 0.65, 0, 6.0, 8.0 )
  147.         show_hudmessage( 0, szMessage )
  148.     }
  149.     else if( type == HUD_CENTER )
  150.     {
  151.         set_hudmessage( 85, 127, 255, -1.0, -1.0, 0, 6.0, 8.0 )
  152.         show_hudmessage( 0, szMessage )
  153.     }
  154. }
  155.  
  156. stock ColorChat( index, message[], any:... )
  157. {
  158.     if( index && !is_user_connected( index ) || !index && !get_playersnum( ) )
  159.         return 0;
  160.        
  161.     static szMessage[ 242 ], len;
  162.    
  163.     len = formatex( szMessage, charsmax( szMessage ), "^4[AMXX]^1 " );
  164.     len += vformat( szMessage[ len ], charsmax( szMessage ) - len, message, 3 );
  165.    
  166.     static st_msgid;
  167.     if( !st_msgid )
  168.         st_msgid = get_user_msgid( "SayText" );
  169.        
  170.     if( index )
  171.     {
  172.         message_begin( MSG_ONE_UNRELIABLE, st_msgid, _, index );
  173.         write_byte( index );
  174.         write_string( szMessage );
  175.         message_end( );
  176.     }
  177.     else
  178.     {
  179.        
  180.         static cc_glb_maxclients;
  181.         if( !cc_glb_maxclients )
  182.             cc_glb_maxclients = get_maxplayers( );
  183.            
  184.         for( index = 1 ; index <= cc_glb_maxclients ; index ++ )
  185.         {
  186.             if( !is_user_connected( index ) )
  187.                 continue;
  188.                
  189.             message_begin( MSG_ONE_UNRELIABLE, st_msgid, _, index );
  190.             write_byte( index );
  191.             write_string( szMessage );
  192.             message_end( );
  193.         }
  194.     }
  195.     return 1;
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement