#include <amxmodx>
#include <amxmisc>
new gMsgTutorClose;
new gMsgTutorText;
public plugin_init(){
register_plugin( "CS Tutor Messages", "1.0", "Leon McVeran" );
// Create a tutor message
// name or userid: Client who get this msg
// type:
//
// 1 // (1<<0) Default
// 2 // (1<<1) Friend died
// 4 // (1<<2) Enemy died
// 8 // (1<<3) Scenario
// 16 // (1<<4) Buy
// 32 // (1<<5) Career
// 64 // (1<<6) Hint
// 128 // (1<<7) InGameHint
// 256 // (1<<8) EndGame
register_concmd( "tutor", "cmdAdminTutorMessage", 0, "<name or userid> <type>" );
gMsgTutorClose = get_user_msgid( "TutorClose" );
gMsgTutorText = get_user_msgid( "TutorText" );
}
public plugin_precached() {
precache_sound( "events/enemy_died.wav" );
precache_sound( "events/friend_died.wav" );
precache_sound( "events/task_complete.wav" );
precache_sound( "events/tutor_msg.wav" );
precache_generic( "resource/TutorScheme.res" );
precache_generic( "resource/UI/TutorTextWindow.res" );
precache_generic( "gfx/career/icon_!.tga" );
precache_generic( "gfx/career/icon_!-bigger.tga" );
precache_generic( "gfx/career/icon_i.tga" );
precache_generic( "gfx/career/icon_i-bigger.tga" );
precache_generic( "gfx/career/icon_skulls.tga" );
precache_generic( "gfx/career/round_corner_ne.tga" );
precache_generic( "gfx/career/round_corner_nw.tga" );
precache_generic( "gfx/career/round_corner_se.tga" );
precache_generic( "gfx/career/round_corner_sw.tga" );
}
public cmdAdminTutorMessage( id ) {
new szArg1[ 32 ], szArg2[ 8 ];
read_argv( 1, szArg1, 31 );
read_argv( 2, szArg2, 7 );
new iTarget = cmd_target( id, szArg1, 10 );
if( !iTarget )
return PLUGIN_HANDLED;
new iType = str_to_num( szArg2 );
switch( iType ) {
case 2: emit_sound( iTarget, CHAN_ITEM, "events/friend_died.wav", VOL_NORM, ATTN_NORM, 0, PITCH_HIGH );
case 4: emit_sound( iTarget, CHAN_ITEM, "events/enemy_died.wav", VOL_NORM, ATTN_NORM, 0, PITCH_LOW );
case 32: emit_sound( iTarget, CHAN_ITEM, "events/task_complete.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
default: emit_sound( iTarget, CHAN_ITEM, "events/tutor_msg.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
}
new szMessage[ 256 ];
copy( szMessage, 255, "xPaw was here.\nAnd this is new line." );
replace_all( szMessage, 255, "\n", "^n" );
create_TutorMsg( iTarget, szMessage, 0, 0, 0, iType );
return PLUGIN_HANDLED;
}
stock create_TutorMsg( id, szMessage[], iByte, iShort1, iShort2, iType ) {
// Close a displayed tutor message
// I think we don't need this but in CZ will be called before shown a new message
message_begin( MSG_ONE_UNRELIABLE, gMsgTutorClose, _, id );
message_end( );
/*
* MessageBegin (TutorText "115") (Destination "One<1>") (Args "5") (Entity "1") (Classname "player") (Netname "EagleOne") (Orign "0.000000 0.000000 0.000000")
* Arg 1 (String "#Cstrike_Tutor_You_See_Hostage_T")
* Arg 2 (Byte "0")
* Arg 3 (Short "42")
* Arg 4 (Short "0")
* Arg 5 (Short "8")
* MessageEnd (TutorText "115")
*/
message_begin( MSG_ONE_UNRELIABLE, gMsgTutorText, _, id );
write_string( szMessage );
write_byte( iByte );
write_short( iShort1 );
write_short( iShort2 );
write_short( iType );
message_end( );
remove_task( id );
set_task( 8.0, "fnRemoveMessage", id );
}
public fnRemoveMessage( id ) {
if( is_user_connected( id ) ) {
message_begin( MSG_ONE_UNRELIABLE, gMsgTutorClose, _, id );
message_end( );
}
}