Nu'i asa ca acest nume va suna cunoscut?
Ei bine, exista un plugin asemanator creat de Alka, dar nu atat de complex.
Acest plugin incarca culoarea, continutul, efectul si chiar durata fiecarui mesaj dintr-ul fisier .ini .
Deasemenea foloseste un nou tip de mesaj hud care este mult mai mare fata de cel normal.
Puteti pune un numar destul de mare de mesaje, mai exact 64!
Plugin-ul a fost setat astfel in cat NU va afisa de 2 ori la rand acelasi mesaj!
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.
Veti gasi toate detaliile si explicatiile necesare in fisierul Messages.ini ( aflat in folderul configs ) care va fi generat automat de catre plugin in caz ca acesta nu exista.
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 ).
- Messages.ini | Afiseaza codul
// 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" }
- New Messages Shower | Afiseaza codul
#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( ); }
- dhudmessage.inc | Afiseaza codul
#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(); }
Versiune: 2.0c
Link oficial: Click
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: Select all
New_Messages_Shower.amxx
- Imagini | Afiseaza codul