Quote:
Originally Posted by romeo72
Hi everyone,
I wanted to ask if you can display a text under each other? it only shows me the top line.
and whether you can extend the duration of the text display?
example (messages.ini):
best regards
|
Method:
[HUD]
"0" "255" "0" "Hello world!"
"255" "255" "0" "Hello world!"
"255" "255" "255" "Hello world!"
[CHAT]
"&x04Hello&x03 world!"
"&x05Hello&x01 world!"
"&x07Hello world!"
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cromchat>
const MAX_TEXT_LENGTH = 192
new const Version[ ] = "1.0.0";
new const g_szAdvertFile[ ] = "Messages.ini";
enum _:AdvertData
{
AD_Color[ 16 ],
AD_Message[ MAX_TEXT_LENGTH ]
};
enum
{
HUD = 1,
CHAT
}
new eAdvert[ AdvertData ]
new Array:g_aHudMessages, Array:g_aMessages
public plugin_init( )
{
register_plugin( "Advert Message", Version, "Supremache" )
g_aMessages = ArrayCreate( MAX_TEXT_LENGTH );
g_aHudMessages = ArrayCreate( AdvertData );
set_task( 35.0, "OnTaskAdvertHud", .flags = "b" );
set_task( 50.0, "OnTaskAdvertChat", .flags = "b" ) ;
ReadAdvertFile( )
}
public plugin_end( )
{
ArrayDestroy( g_aMessages );
ArrayDestroy( g_aHudMessages );
}
public OnTaskAdvertHud( )
{
if( ArraySize( g_aHudMessages ) != 0 )
{
static iCurrent
if( iCurrent >= ArraySize( g_aHudMessages ) )
{
iCurrent = 0;
}
ArrayGetArray( g_aHudMessages, iCurrent++, eAdvert );
set_hudmessage( eAdvert[ AD_Color ][ 0 ], eAdvert[ AD_Color ][ 1 ] , eAdvert[ AD_Color ][ 2 ], -1.0, 0.20, 2, 0.20, 12.0, 0.10, 0.01, -1);
show_hudmessage(0, eAdvert[ AD_Message ]);
}
}
public OnTaskAdvertChat( )
{
if( ArraySize( g_aMessages ) != 0 )
{
static iCurrent
if( iCurrent >= ArraySize( g_aMessages ) )
{
iCurrent = 0;
}
ArrayGetString( g_aMessages, iCurrent++, eAdvert[ AD_Message ], charsmax( eAdvert[ AD_Message ] ) )
CC_SendMessage( 0, eAdvert[ AD_Message ] );
}
}
ReadAdvertFile( )
{
new g_szFile[ 128 ], g_szConfigs[ 64 ];
get_configsdir( g_szConfigs, charsmax( g_szConfigs ) )
formatex( g_szFile, charsmax( g_szFile ), "%s/%s", g_szConfigs, g_szAdvertFile )
new iFile = fopen( g_szFile, "rt" );
if( iFile )
{
new szData[ 96 ], iSection, iSize, szColor[ 3 ][ 4 ]
while( fgets( iFile, szData, charsmax( szData ) ) )
{
trim( szData );
switch( szData[ 0 ] )
{
case EOS, ';', '#', '/':
{
continue;
}
case '[':
{
iSize = strlen(szData)
if(szData[iSize - 1] == ']')
{
switch( szData[ 1 ] )
{
case 'H', 'h': iSection = HUD
case 'C', 'c': iSection = CHAT
default: continue
}
}
else continue
}
default:
{
switch( iSection )
{
case HUD:
{
parse
(
szData,
szColor[ 0 ] , charsmax( szColor[ ] ),
szColor[ 1 ] , charsmax( szColor[ ] ),
szColor[ 2 ] , charsmax( szColor[ ] ),
eAdvert[ AD_Message ] , charsmax(eAdvert[ AD_Message ])
)
trim( eAdvert[ AD_Message ] );
for( new i = 0; i < 3; i++ )
{
eAdvert[ AD_Color ][ i ] = _:clamp( str_to_num( szColor[ i ] ), -1, 255 );
}
replace_all( eAdvert[ AD_Message ], charsmax( eAdvert[ AD_Message ] ), "!n", "^n" );
ArrayPushArray( g_aHudMessages, eAdvert );
}
case CHAT:
{
remove_quotes( szData );
ArrayPushString( g_aMessages, szData );
}
}
}
}
}
fclose( iFile );
}
}
__________________