User
Pass
2FA
 
 

New Messages Shower

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> CS 2006-2019 (Archived) -> Resources
Author Message865
FarulNUMOARE
[Banned user]


Banned


Status: Offline
(since 06-09-2013 11:05)
Joined: 14 Aug 2013
Posts: 264, Topics: 37
Location: Constanta.

Reputation: -100.7
Votes: 10

 
Post Posted: 21-08-2013, 15:44:31 | Translate post to: ... (Click for more languages)

Descriere: Acest plugin incarca culoarea, continutul, efectul si chiar durata fiecarui mesaj dintr-un fisier .ini.
Cand mesajul este afisat, acesta iti va fi si printat in consola, putand astfel sa il recititesti, asta daca nu ai apucat sau nu ai retinut ce iti trebuia.
Vor fi create 4 exemple de mesaje si va sunt explicate toate functiile.

Asa arata continutul fisierului Messages.ini (cel default scris de plugin in care gasiti si explicatiile).

Code:
    // Intervalul dintre mesaje, adica din cate in cate secunde apare unul din mesajele de mai jos.
    #INTERVAL "100.0"

    // Aici treceti mesajele unul sub altul dupa cum urmeaza.

    // Incepen sa construim un nou mesaj.
    {
    // Ii setam culoarea in RRR GGG BBB (ex: culoarea alb, 255 255 255 ).Valoarea -1 inseamca ca acea culoare va fi random ( la intamplare ).
    #COLOR "255 255 255"

    // Punem un mesaj ( maxim 128 caractere ). /n inseamna rand nou ( adica mesajul va fi afisat sub textul aflat inainte
    #MESSAGE "Mesaj generat de NewMessagesShower.amxx/nSetati-va mesajele in Messages.ini/nAflat in directorul configs."

    // Setam efectul mesajului. -1 este random ( la intamplare ), 0 apare deodata, 1 sclipeste, 2 apare cate o litera.
    #EFFECT "-1"

    // Durata mesajului. ( cat va ramane afisat ).
    #DURATION "5.0"

    // Am terminat de contruit mesajul.
    }

    // Acum am sa va dau cateva exemple:

    {
    #COLOR "255 255 0"
    #MESSAGE "Pentru a reclama un presupus codat/nFolositi comanda say_team(U)/nUrmata de simbolul @ si de mesaj."
    #EFFECT "2"
    #DURATION "7.0"
    }

    {
    #COLOR "0 255 255"
    #MESSAGE "Echipa noastra va ureaza,/nSarbatori fericite alaturi de cei dragi."
    #EFFECT "-1"
    #DURATION "6.0"
    }

    {
    #COLOR "-1 -1 -1"
    #MESSAGE "Va rugam pastrati un limbaj decent pe server!"
    #EFFECT "1"
    #DURATION "10.0"
    }


Descarcare:
Code:
#include < amxmodx >
#include < dhudmessage >

#pragma semicolon 1


#define PLUGIN "New Messages Shower"
#define VERSION "2.0c"

#define   MAX_MESSAGES   64

new const g_szMessagesFile[ ] = "Messages.ini";
new Float:g_fMessagesInterval = -1.0;


new g_szMessages[ MAX_MESSAGES ][ 128 ];

new g_iMessagesRedColor[ MAX_MESSAGES ];
new g_iMessagesGreenColor[ MAX_MESSAGES ];
new g_iMessagesBlueColor[ MAX_MESSAGES ];
new g_iMessagesEffect[ MAX_MESSAGES ];

new Float:g_fMessagesDuration[ MAX_MESSAGES ];

new g_iMessagesCount = 0;
new g_iLastHudMessage = 0;

public plugin_precache( )
{
   
   if( !ReadAndBuildMessages( ) )
   {
      log_amx( "Fisierul %s nu a fost gasit!", g_szMessagesFile );
      WriteAndBuildDefaultMessage( );
   }
   
}

public plugin_init( )
{
   register_plugin( PLUGIN, VERSION, "Askhanar" );
   
   if( g_fMessagesInterval > 0.0 )
      set_task( g_fMessagesInterval, "DisplayMessage", _, _, _, "b" );
      
}

public DisplayMessage( )
{
   static iRandomHud;
   iRandomHud = random( g_iMessagesCount );
   
   while( iRandomHud == g_iLastHudMessage )
      iRandomHud = random( g_iMessagesCount );
      
   set_dhudmessage( g_iMessagesRedColor[ iRandomHud ] == -1 ?  random( 256 ) : g_iMessagesRedColor[ iRandomHud ],
         g_iMessagesGreenColor[ iRandomHud ] == -1 ?  random( 256 ) : g_iMessagesGreenColor[ iRandomHud ],
         g_iMessagesBlueColor[ iRandomHud ] == -1 ?  random( 256 ) : g_iMessagesBlueColor[ iRandomHud ],
         -1.0,
         0.00,
         g_iMessagesEffect[ iRandomHud ] == -1 ? random_num( 0, 2 ) : g_iMessagesEffect[ iRandomHud ],
         1.0,
         g_fMessagesDuration[ iRandomHud ],
         0.1,
         0.1  );
         
   static iPlayers[ 32 ];
   static iPlayersNum;

   get_players( iPlayers, iPlayersNum, "ch" );
   
   if( !iPlayersNum )
      return;
      
   for( new i = 0 ; i < iPlayersNum ; i++ )
   {
      if( !is_user_connected( iPlayers[ i ] ) )
         continue;

      show_dhudmessage( iPlayers[ i ], g_szMessages[ iRandomHud ] );
      client_print( iPlayers[ i ], print_console, g_szMessages[ iRandomHud ] );
   }
   
}

ReadAndBuildMessages( )
{
   
   new szFile[ 128 ];
   get_localinfo( "amxx_configsdir", szFile, sizeof ( szFile ) -1 );
   format( szFile, sizeof ( szFile ) -1, "%s/%s", szFile, g_szMessagesFile );

   new iFile = fopen( szFile, "rt" );
   
   if( !iFile )
      return 0;

   new szData[ 256 ], szKey[ 16 ], szValue[ 128 ];
   new bool:bNewMessage = false;
   
   while( !feof( iFile ) )
   {
      
      fgets( iFile, szData, sizeof ( szData ) -1 );
      trim( szData );
      
      if( !szData[ 0 ] || szData[ 0 ] == ';' || ( szData[ 0 ] == '/' && szData[ 1 ] == '/') )
      {
         continue;
      }

      if( szData[ 0 ] == '{' )
      {
         bNewMessage = true;
         continue;
      }
   
   
      else if( szData[ 0 ] == '}' )
      {
         
         if( bNewMessage )
            g_iMessagesCount++;
         
         bNewMessage = false;
         
         if( g_iMessagesCount >= MAX_MESSAGES )
         {
            log_amx( "Numarul maxim de mesaje( %i ) a fost atins!", MAX_MESSAGES );
            break;
         }
         
         continue;
      }
      
      else
      {
         parse( szData, szKey, sizeof ( szKey ) -1, szValue, sizeof ( szValue ) -1 );

         switch( szKey[ 0 ] )
         {
            
            case '#':
            {
               
               switch( szKey[ 2 ] )
               {
                  
                  case 'O':
                  {
                     
                     if( equal( szKey, "#COLOR" )  && bNewMessage )
                     {
                        static szRed[ 5 ], szGreen[ 5 ], szBlue[ 5 ];
                        
                        parse( szValue, szRed, sizeof ( szRed ) -1,\
                           szGreen, sizeof ( szGreen ) -1,\
                           szBlue, sizeof ( szBlue ) -1 );
                           
                        g_iMessagesRedColor[ g_iMessagesCount ] = clamp( str_to_num( szRed ), -1, 255 );
                        g_iMessagesGreenColor[ g_iMessagesCount ]  = clamp( str_to_num( szGreen ), -1, 255 );
                        g_iMessagesBlueColor[ g_iMessagesCount ]  = clamp( str_to_num( szBlue ), -1, 255 );
                        
                     }
                  }
                  
                  case 'E':
                  {
                     
                     if( equal( szKey, "#MESSAGE" )  && bNewMessage )
                     {
                        
                        replace_all( szValue, sizeof ( szValue ) -1, "/n", "^n" );
                        copy( g_szMessages[ g_iMessagesCount ], sizeof ( g_szMessages[ ] ) -1, szValue );
                        
                     }
                  }
                  
                  case 'F':
                  {
                     if( equal( szKey, "#EFFECT" )  && bNewMessage )
                     {
                        
                        g_iMessagesEffect[ g_iMessagesCount ] = clamp( str_to_num( szValue ), -1, 2 );
                        
                     }
                  }
                  
                  case 'U':
                  {
                     
                     if( equal( szKey, "#DURATION" )  && bNewMessage )
                     {
                        
                        g_fMessagesDuration[ g_iMessagesCount ] = floatclamp( str_to_float( szValue ), 5.0, 20.0 );
                        
                     }
                  }
                  
                  case 'N':
                  {
                     
                     if( equal( szKey , "#INTERVAL" )  && !bNewMessage )
                     {
                        
                        g_fMessagesInterval = floatclamp( str_to_float( szValue ), 30.0, 600.0 );
                        
                     }
                  }
   
               }
            }
            
         }
      }
                        
   }
   
   fclose( iFile );
   
   if( g_iMessagesCount < MAX_MESSAGES )
      log_amx( "Am incarcat cu succes %i mesaje din %s", g_iMessagesCount, g_szMessagesFile );
   
   return 1;
}

WriteAndBuildDefaultMessage( )
{
   new szFile[ 128 ];
   get_localinfo( "amxx_configsdir", szFile, sizeof ( szFile ) -1 );
   format( szFile, sizeof ( szFile ) -1, "%s/%s", szFile, g_szMessagesFile );

   write_file( szFile, "// Intervalul dintre mesaje, adica din cate in cate secunde apare unul din mesajele de mai jos.", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#INTERVAL ^"100.0^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Aici treceti mesajele unul sub altul dupa cum urmeaza.", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Incepen sa construim un nou mesaj.", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "{", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Ii setam culoarea in RRR GGG BBB (ex: culoarea alb, 255 255 255 ).Valoarea -1 inseamca ca acea culoare va fi random ( la intamplare ).", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#COLOR ^"255 255 255^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Punem un mesaj ( maxim 128 caractere ). /n inseamna rand nou ( adica mesajul va fi afisat sub textul aflat inainte ", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#MESSAGE ^"Mesaj generat de NewMessagesShower.amxx/nSetati-va mesajele in Messages.ini/nAflat in directorul configs.^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Setam efectul mesajului. -1 este random ( la intamplare ), 0 apare deodata, 1 sclipeste, 2 apare cate o litera.", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#EFFECT ^"-1^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Durata mesajului. ( cat va ramane afisat ).", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#DURATION ^"5.0^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Am terminat de contruit mesajul.", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "}", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "// Acum am sa va dau un exemplu:", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "{", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#COLOR ^"255 255 0^"", -1 );
   write_file( szFile, "#MESSAGE ^"Pentru a reclama un presupus codat/nFolositi comanda say_team(U)/nUrmata de simbolul @ si de mesaj.^"", -1 );
   write_file( szFile, "#EFFECT ^"0^"", -1 );
   write_file( szFile, "#DURATION ^"7.0^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "}", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "{", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#COLOR ^"0 255 255^"", -1 );
   write_file( szFile, "#MESSAGE ^"Echipa noastra va ureaza,/nSarbatori fericite alaturi de cei dragi.^"", -1 );
   write_file( szFile, "#EFFECT ^"1^"", -1 );
   write_file( szFile, "#DURATION ^"6.0^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "}", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "{", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "#COLOR ^"18 152 236^"", -1 );
   write_file( szFile, "#MESSAGE ^"Va rugam pastrati un limbaj decent pe server!^"", -1 );
   write_file( szFile, "#EFFECT ^"2^"", -1 );
   write_file( szFile, "#DURATION ^"10.0^"", -1 );
   write_file( szFile, "", -1 );
   write_file( szFile, "}", -1 );
   
   log_amx( "Am creat cu succes fisierul %s", g_szMessagesFile );
   
   ReadAndBuildMessages( );
   
}


De asemenea veti avea nevoie de urmatorul include.
Code:
#if defined _dhudmessage_included
    #endinput
#endif

#define _dhudmessage_included

#include <amxmodx>

stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
{
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... )
{
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] )
{
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}


Nume: New Messages Shower.
Versiune: 2.0c.
Autor: Askhanar.

Instalare:
1. Fisierul New_Messages_Shower.sma il puneti in addons/amxmodx/scripting.
2. Fisierul New_Messages_Shower.amxx il puneti in addons/amxmodx/plugins.
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Code:
New_Messages_Shower.amxx


Imagini:





JB.FREAKZ.RO este numarul 1!
0 0
  
Back to top
View user's profile Send private message Yahoo! Messenger ID
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Freakz Forum Index -> Trash Bin -> CS 2006-2019 (Archived) -> Resources  


The time now is 06-08-2025, 11:08:50
Copyright info

Based on phpBB ro/com
B

 
 
 







I forgot my password