Code:
#include < amxmodx >
#include < fun >
#include < fakemeta >
#include < jailbreak_core >
new g_iGameId;
new bool:g_bJump;
new bool:g_bMode;
new bool:g_bOptional;
new bool:g_bStart;
const m_flNextDecalTime = 486;
public plugin_init( )
{
register_plugin( "[LR] Spray Contest", "1.0", "Natsheh" );
g_iGameId = register_jailbreak_lritem("Spray Contest");
}
public jb_lr_duel_ended( prisoner, guard, duelid )
{
if(duelid != g_iGameId) return;
g_bJump = false;
g_bMode = false;
g_bOptional = false;
g_bStart = false;
}
public jb_lr_duel_selected(id, itemid)
{
if( itemid == g_iGameId )
{
HandleSprayMenu( id );
return JB_LR_OTHER_MENU;
}
return PLUGIN_CONTINUE
}
public jb_lr_duel_started(prisoner, guard, duelid)
{
if(duelid != g_iGameId) return;
cprint_chat(prisoner, _, "^3Your spray has been reset^4!");
set_pdata_float( prisoner, m_flNextDecalTime, 0.1 );
cprint_chat( guard, _, "^3Your spray has been reset^4!");
set_pdata_float( guard, m_flNextDecalTime, 0.1 );
}
public HandleSprayMenu( id )
{
new g_hMenu = menu_create( "Choose the options", "HandleStart" );
new szMessage[ 32 ];
formatex( szMessage, charsmax( szMessage ), "Jump: %s", g_bJump ? "Lowest Wins" : "Highest Wins" );
menu_additem( g_hMenu, szMessage, "0" );
formatex( szMessage, charsmax( szMessage ), "Mode: %sCut", g_bMode ? "" : "No " );
menu_additem( g_hMenu, szMessage, "1" );
formatex( szMessage, charsmax( szMessage ), "Tricks: %sCheats", g_bOptional ? "" : "No " );
menu_additem( g_hMenu, szMessage, "2" );
formatex( szMessage, charsmax( szMessage ), "Starting: %s", g_bStart ? "You" : "Him" );
menu_additem( g_hMenu, szMessage, "3" );
menu_additem( g_hMenu, "Continue", "4" );
menu_display( id, g_hMenu);
}
public HandleStart( const id, menu, item )
{
if(item == MENU_EXIT || !is_user_alive( id ))
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new szKey[ 2 ], Trash, iKey;
menu_item_getinfo( menu, item, Trash, szKey, 1, _, _, Trash );
menu_destroy( menu );
iKey = str_to_num( szKey );
switch( iKey ) {
case 0: g_bJump = !g_bJump;
case 1: g_bMode = !g_bMode;
case 2: g_bOptional = !g_bOptional;
case 3: g_bStart = !g_bStart;
case 4: {
new szMessage[ 96 ];
formatex( szMessage, charsmax( szMessage ), "Spray Rules:^n%s^n%s^n%s^n%s"
,g_bJump ? "Lowest Wins" : "Highest Wins", g_bMode ? "Cut allowed" : "No Cut", g_bOptional ? "Cheats allowed" : "No Cheats", g_bStart ? "T Starts" : "CT Starts" );
cprint_chat( 0, _, "Spray Rules:^4 %s^1 -^4 %s^1 -^4 %s^1 - ^4%s"
,g_bJump ? "Lowest Wins" : "Highest Wins", g_bMode ? "Cut allowed" : "No Cut", g_bOptional ? "Cheats allowed" : "No Cheats", g_bStart ? "T Starts" : "CT Starts" );
UTIL_DirectorMessage(
.index = 0,
.message = szMessage,
.red = 90,
.green = 30,
.blue = 0,
.x = 0.77,
.y = 0.17,
.effect = 0,
.fxTime = 5.0,
.holdTime = 5.0,
.fadeInTime = 0.5,
.fadeOutTime = 0.3
);
jb_lr_show_targetsmenu(id, g_iGameId)
}
}
if(iKey != 4) HandleSprayMenu( id );
return PLUGIN_HANDLED;
}
stock UTIL_DirectorMessage( const index, const message[], const red = 0, const green = 160, const blue = 0,
const Float:x = -1.0, const Float:y = 0.65, const effect = 2, const Float:fxTime = 6.0,
const Float:holdTime = 3.0, const Float:fadeInTime = 0.1, const Float:fadeOutTime = 1.5 )
{
#define pack_color(%0,%1,%2) ( %2 + ( %1 << 8 ) + ( %0 << 16 ) )
#define write_float(%0) write_long( _:%0 )
message_begin( index ? MSG_ONE : MSG_BROADCAST, SVC_DIRECTOR, .player = index );
{
write_byte( strlen( message ) + 31 ); // size of write_*
write_byte( DRC_CMD_MESSAGE );
write_byte( effect );
write_long( pack_color( red, green, blue ) );
write_float( x );
write_float( y );
write_float( fadeInTime );
write_float( fadeOutTime );
write_float( holdTime );
write_float( fxTime );
write_string( message );
}
message_end( );
}