Member
Join Date: Jun 2013
Location: Portugal
|
07-22-2013
, 23:56
[REQ] Jailbreak LastRequest
|
#1
|
Hello guys, I have this code and I need, when a prisioner choose one option of last request menu, play one countown, 5 ,4 ,3 ,2 , 1.
Can someone help me?
PHP Code:
/* * * Jailbreak Last Request * * H3avY Ra1n (AKA nikhilgupta345) * * Description * ----------- * * This is a Last Request plugin for jailbreak mod, where * the last terrorists can type /lr and is presented with a * menu, which has numerous options to choose from that interact * with the Counter-Terrorists. * * Last Request Options * -------------------- * * Knife Battle - Fight with knives 1v1 * Shot for Shot - Take turns shooting a deagle * Deagle Toss - See who can throw the deagle the farthest * Shotgun Battle - Fight with shotguns 1v1 * Scout Battle - Fight with scouts 1v1 * Grenade Toss - See who can throw the grenade the farthest * Race - Race across a certain part of the map * Spray Contest - See who can spray closest to the top or bottom border * of a wall. Prisoner decides. * * * Client Commands * --------------- * * say/say_team /lr - Opens Last Request Menu * !lr * /lastrequest * !lastrequest * * * Installation * ------------ * * - Compile this plugin locally * - Place jb_lastrequest.amxx in addons/amxmodx/plugins/ folder * - Open addons/amxmodx/configs/plugins.ini * - Add the line 'jb_lastrequest.amxx' at the bottom * - Restart server or change map * * * Changelog * --------- * * February 15, 2011 - v1.0 - Initial Release * February 24, 2011 - v1.0.1 - Removed teleporting back to cell * March 05, 2011 - v1.1 - Changed way of allowing a Last Request * March 26, 2011 - v1.2 - Added Multi-Lingual support. * August 10, 2011 - v2.0 - Completely rewrote plugin * * * Credits * ------- * * Pastout - Used his thread as a layout for mine * * * Plugin Thread: http://forums.alliedmods.net/showthread.php?p=1416279 * */
// Includes ////////////
#include < amxmodx > #include < cstrike > #include < fun > #include < fakemeta > #include < fakemeta_util > #include < hamsandwich >
// Enums /////////
enum { LR_NONE=-1, LR_S4S, LR_SPRAY, LR_RACE, LR_GUNTOSS, LR_KNIFE, LR_NADETOSS, LR_SCOUT, LR_SHOTGUN, MAX_GAMES };
enum { GREY = 0, RED, BLUE, NORMAL };
enum { ALIVE, DEAD, ALL };
enum { LR_PRISONER, LR_GUARD };
enum ( += 100 ) { TASK_BEACON, TASK_ENDLR };
// Consts //////////
new const g_szPrefix[ ] = "!g[Jailbreak]!n";
new const g_szBeaconSound[ ] = "buttons/blip1.wav"; new const g_szBeaconSprite[ ] = "sprites/white.spr";
new const g_szGameNames[ MAX_GAMES ][ ] = { "Shot 4 Shot", "Spray Contest", "Race", "Gun Toss", "Knife Battle", "Grenade Toss", "Scout Battle", "Shotgun Battle" };
new const g_szDescription[ MAX_GAMES ][ ] = { "Take turns shooting a deagle.", "Both players spray on a wall, highest or lowest.", "Both players race across a part of the map.", "See who can throw the deagle the farthest.", "Battle it out with knives.", "See who can throw the grenade the farthest from a point in the map.", "Battle it out with scouts.", "Battle it out with shotguns." };
new const g_szTeamName[ ][ ] = { "", "TERRORIST", "CT", "SPECTATOR" };
new const g_szPlugin[ ] = "Jailbreak Last Request"; new const g_szVersion[ ] = "2.0"; new const g_szAuthor[ ] = "H3avY Ra1n";
// Integers ////////////
new g_iCurrentGame = LR_NONE; new g_iLastRequest[ 2 ]; new g_iCurrentPage[ 33 ]; new g_iChosenGame[ 33 ];
new g_iSprite;
new g_iMaxPlayers;
// Booleans ///////////
new bool:g_bAlive[ 33 ]; new bool:g_bConnected[ 33 ];
new bool:g_bLastRequestAllowed;
// Messages ////////////
new g_msgTeamInfo; new g_msgSayText;
public plugin_precache() { precache_sound( g_szBeaconSound ); g_iSprite = precache_model( g_szBeaconSprite ); }
public plugin_init() { register_plugin( g_szPlugin, g_szVersion, g_szAuthor ); register_clcmd( "say /lr", "Cmd_LastRequest" ); register_clcmd( "say !lr", "Cmd_LastRequest" ); register_clcmd( "say /lastrequest", "Cmd_LastRequest" ); register_clcmd( "say !lastrequest", "Cmd_LastRequest" ); register_clcmd( "say_team /lr", "Cmd_LastRequest" ); register_clcmd( "say_team !lr", "Cmd_LastRequest" ); register_clcmd( "say_team /lastrequest", "Cmd_LastRequest" ); register_clcmd( "say_team !lastrequest", "Cmd_LastRequest" ); register_event( "HLTV", "Event_RoundStart", "a", "1=0", "2=0" ); register_logevent( "Logevent_RoundStart", 2, "1=Round_Start" ); RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1 ); RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_deagle", "Ham_DeagleFire_Post", 1 ); RegisterHam( Ham_Killed, "player", "Ham_PlayerKilled_Post", 1 ); RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0 ); register_forward( FM_Think, "Forward_EntityThink_Pre", 0 ); register_message( get_user_msgid( "TextMsg" ), "Message_TextMsg" ); g_msgTeamInfo = get_user_msgid( "TeamInfo" ); g_msgSayText = get_user_msgid( "SayText" ); g_iMaxPlayers = get_maxplayers(); set_task( 2.0, "StartBeacon", .flags="b" ); set_task( 300.0, "Task_Advertise", .flags="b" ); }
public client_putinserver( id ) { g_iCurrentPage[ id ] = 0; g_bConnected[ id ] = true; }
public client_disconnect( id ) { g_bConnected[ id ] = false; if( g_bAlive[ id ] ) g_bAlive[ id ] = false; if( id == g_iLastRequest[ LR_PRISONER ] || id == g_iLastRequest[ LR_GUARD ] ) { EndLastRequest( id == g_iLastRequest[ LR_PRISONER ] ? g_iLastRequest[ LR_GUARD ] : g_iLastRequest[ LR_PRISONER ], id ); } remove_task( id + TASK_ENDLR ); }
public Ham_PlayerSpawn_Post( id ) { if( !is_user_alive( id ) ) return HAM_IGNORED; g_bAlive[ id ] = true; return HAM_IGNORED; }
public Ham_PlayerKilled_Post( iVictim, iKiller, iShouldGib ) { g_bAlive[ iVictim ] = false; if( iVictim == g_iLastRequest[ LR_PRISONER ] ) { EndLastRequest( g_iLastRequest[ LR_GUARD ], iVictim ); } else if( iVictim == g_iLastRequest[ LR_GUARD ] ) { EndLastRequest( g_iLastRequest[ LR_PRISONER ], iVictim ); } if( !g_bLastRequestAllowed && cs_get_user_team( iVictim ) == CS_TEAM_T ) { if( get_playercount( CS_TEAM_T, ALIVE ) == 1 ) { ColorChat( 0, NORMAL, "%s !gLast Request!n is now allowed.", g_szPrefix ); g_bLastRequestAllowed = true; } } }
public Ham_DeagleFire_Post( iEnt ) { if( g_iCurrentGame != LR_S4S ) { return; } new id = pev( iEnt, pev_owner ); new iOpponentEnt; if( cs_get_weapon_ammo( iEnt ) == 0 ) { if( id == g_iLastRequest[ LR_PRISONER ] ) { iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_GUARD ] ); if( pev_valid( iOpponentEnt ) ) cs_set_weapon_ammo( iOpponentEnt, 1 ); } else if( id == g_iLastRequest[ LR_GUARD ] ) { iOpponentEnt = fm_find_ent_by_owner( -1, "weapon_deagle", g_iLastRequest[ LR_PRISONER ] ); if( pev_valid( iOpponentEnt ) ) cs_set_weapon_ammo( iOpponentEnt, 1 ); } } }
public Ham_TakeDamage_Pre( iVictim, iInflictor, iAttacker, Float:flDamage, iBits ) { if( !( 1 <= iAttacker <= g_iMaxPlayers ) ) return HAM_IGNORED; new bool:g_bVictimLR = iVictim == g_iLastRequest[ LR_PRISONER ] || iVictim == g_iLastRequest[ LR_GUARD ]; new bool:g_bAttackerLR = iAttacker == g_iLastRequest[ LR_PRISONER ] || iAttacker == g_iLastRequest[ LR_GUARD ]; if( g_bVictimLR && !g_bAttackerLR ) { return HAM_SUPERCEDE; } else if( !g_bVictimLR && g_bAttackerLR ) { return HAM_SUPERCEDE; } return HAM_IGNORED; }
public Event_RoundStart() { g_bLastRequestAllowed = false; g_iCurrentGame = LR_NONE; }
public Logevent_RoundStart() { if( !g_bLastRequestAllowed && get_playercount( CS_TEAM_T, ALIVE ) == 1 ) { g_bLastRequestAllowed = true; ColorChat( 0, NORMAL, "%s !gLast Request!n is now allowed.", g_szPrefix ); } }
public Forward_EntityThink_Pre( iEnt ) { if( !pev_valid( iEnt ) || g_iCurrentGame != LR_NADETOSS ) return FMRES_IGNORED; new id = pev( iEnt, pev_owner ); if( id != g_iLastRequest[ LR_PRISONER ] && id != g_iLastRequest[ LR_GUARD ] ) return FMRES_IGNORED; new szModel[ 32 ]; pev( iEnt, pev_model, szModel, charsmax( szModel ) ); if( equal( szModel, "models/w_smokegrenade.mdl" ) ) { set_pev( iEnt, pev_renderfx, kRenderFxGlowShell ); set_pev( iEnt, pev_renderamt, 125.0 ); set_pev( iEnt, pev_rendermode, kRenderTransAlpha ); set_pev( iEnt, pev_rendercolor, id == g_iLastRequest[ LR_GUARD ] ? { 0.0, 0.0, 255.0 } : { 255.0, 0.0, 0.0 } ); return FMRES_SUPERCEDE; } return FMRES_IGNORED; }
public Message_TextMsg() { if( g_iCurrentGame == LR_NONE ) { return PLUGIN_CONTINUE; } static szText[ 25 ]; get_msg_arg_string( 2, szText, charsmax( szText ) ); if( equal( szText, "#Round_Draw" ) || equal( szText, "#Game_will_restart_in" ) || equal( szText, "#Game_Commencing" ) ) { g_iCurrentGame = LR_NONE; strip_user_weapons( g_iLastRequest[ LR_PRISONER ] ); strip_user_weapons( g_iLastRequest[ LR_GUARD ] ); GiveWeapons( g_iLastRequest[ LR_GUARD ] ); g_iLastRequest[ LR_PRISONER ] = 0; g_iLastRequest[ LR_GUARD ] = 0; } return PLUGIN_CONTINUE; }
public Cmd_LastRequest( id ) { if( !g_bAlive[ id ] ) { ColorChat( id, NORMAL, "%s You must be !talive!n to have a !gLast Request!n.", g_szPrefix ); return PLUGIN_HANDLED; } else if( cs_get_user_team( id ) != CS_TEAM_T ) { ColorChat( id, NORMAL, "%s You must be a !tprisoner!n to have a !gLast Request!n.", g_szPrefix ); return PLUGIN_HANDLED; } else if( !g_bLastRequestAllowed ) { ColorChat( id, NORMAL, "%s There are too many !tprisoners!n remaining to have a !gLast Request!n.", g_szPrefix ); return PLUGIN_HANDLED; } else if( g_iCurrentGame != LR_NONE ) { ColorChat( id, NORMAL, "%s There's a !gLast Request!n already in progress!", g_szPrefix ); return PLUGIN_HANDLED; } else LastRequestMenu( id ); return PLUGIN_HANDLED; }
public LastRequestMenu( id ) { new hMenu = menu_create( "\yChoose a Game:", "LastRequestMenu_Handler" ); new szInfo[ 6 ]; for( new i = 0; i < MAX_GAMES; i++ ) { num_to_str( i, szInfo, charsmax( szInfo ) ); menu_additem( hMenu, g_szGameNames[ i ], szInfo ); } menu_setprop( hMenu, MPROP_NEXTNAME, "Next Page" ); menu_setprop( hMenu, MPROP_BACKNAME, "Previous Page" ); menu_display( id, hMenu, 0 ); }
public LastRequestMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT ) { menu_destroy( hMenu ); return PLUGIN_HANDLED; } new szData[ 6 ]; new iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), _, _, hCallback ); g_iChosenGame[ id ] = str_to_num( szData ); if( g_iCurrentGame != LR_NONE ) { menu_destroy( hMenu ); g_iChosenGame[ id ] = LR_NONE; ColorChat( id, NORMAL, "%s There's already a !gLast Request!n in progress.", g_szPrefix ); return PLUGIN_HANDLED; } ShowPlayerMenu( id ); menu_destroy( hMenu ); return PLUGIN_HANDLED; } public ShowPlayerMenu( id ) { new hMenu = menu_create( "\yChoose an Opponent:", "PlayerMenu_Handler" ); new szPlayerName[ 32 ], szInfo[ 6 ]; for( new i = 1; i < g_iMaxPlayers; i++ ) { if( !g_bAlive[ i ] || cs_get_user_team( i ) != CS_TEAM_CT ) continue; get_user_name( i, szPlayerName, charsmax( szPlayerName ) ); num_to_str( i, szInfo, charsmax( szInfo ) ); menu_additem( hMenu, szPlayerName, szInfo ); } menu_setprop( hMenu, MPROP_NEXTNAME, "Next Page" ); menu_setprop( hMenu, MPROP_BACKNAME, "Previous Page" ); menu_display( id, hMenu, 0 ); }
public PlayerMenu_Handler( id, hMenu, iItem ) { if( iItem == MENU_EXIT || !g_bAlive[ id ] || !g_bLastRequestAllowed || g_iCurrentGame != LR_NONE ) { g_iChosenGame[ id ] = LR_NONE; menu_destroy( hMenu ); return PLUGIN_HANDLED; } new szData[ 6 ], szPlayerName[ 64 ]; new iAccess, hCallback; menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), szPlayerName, charsmax( szPlayerName ), hCallback ); new iGuard = str_to_num( szData ); if( !g_bAlive[ iGuard ] || cs_get_user_team( iGuard ) != CS_TEAM_CT ) { ColorChat( id, NORMAL, "%s That player is no longer available for !gLast Request!n.", g_szPrefix ); menu_destroy( hMenu ); ShowPlayerMenu( id ); return PLUGIN_HANDLED; } StartGame( g_iChosenGame[ id ], id, iGuard ); menu_destroy( hMenu ); return PLUGIN_HANDLED; }
public StartGame( iGame, iPrisoner, iGuard ) { g_iCurrentGame = iGame; g_iLastRequest[ LR_PRISONER ] = iPrisoner; g_iLastRequest[ LR_GUARD ] = iGuard; new szPrisonerName[ 32 ], szGuardName[ 32 ]; get_user_name( iPrisoner, szPrisonerName, charsmax( szPrisonerName ) ); get_user_name( iGuard, szGuardName, charsmax( szGuardName ) ); ColorChat( 0, NORMAL, "%s !t%s!n against !t%s!n in a !g%s!n!", g_szPrefix, szPrisonerName, szGuardName, g_szGameNames[ iGame ] ); strip_user_weapons( iPrisoner ); strip_user_weapons( iGuard ); set_user_health( iPrisoner, 100 ); set_user_health( iGuard, 100 ); set_user_armor( iPrisoner, 0 ); set_user_armor( iGuard, 0 ); StartBeacon(); ColorChat( iPrisoner, NORMAL, "%s !tObjective: %s", g_szPrefix, g_szDescription[ iGame ] ); ColorChat( iGuard, NORMAL, "%s !tObjective: %s", g_szPrefix, g_szDescription[ iGame ] ); switch( iGame ) { case LR_S4S: { LR_Shot4Shot( iPrisoner ); LR_Shot4Shot( iGuard ); } case LR_RACE: { LR_Race( iPrisoner ); LR_Race( iGuard ); } case LR_KNIFE: { LR_Knife( iPrisoner ); LR_Knife( iGuard ); } case LR_SPRAY: { LR_Spray( iPrisoner ); LR_Spray( iGuard ); } case LR_GUNTOSS: { LR_GunToss( iPrisoner ); LR_GunToss( iGuard ); } case LR_NADETOSS: { LR_NadeToss( iPrisoner ); LR_NadeToss( iGuard ); } case LR_SCOUT: { LR_Scout( iPrisoner ); LR_Scout( iGuard ); } case LR_SHOTGUN: { LR_Shotgun( iPrisoner ); LR_Shotgun( iGuard ); } } }
public StartBeacon() { if( g_iCurrentGame == LR_NONE ) { return; } new id; for( new i = 0; i < 2; i++ ) { id = g_iLastRequest[ i ]; static origin[3] emit_sound( id, CHAN_ITEM, g_szBeaconSound, 1.0, ATTN_NORM, 0, PITCH_NORM ) get_user_origin( id, origin ) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( TE_BEAMCYLINDER ) write_coord( origin[0] ) //position.x write_coord( origin[1] ) //position.y write_coord( origin[2]-20 ) //position.z write_coord( origin[0] ) //axis.x write_coord( origin[1] ) //axis.y write_coord( origin[2]+200 ) //axis.z write_short( g_iSprite ) //sprite index write_byte( 0 ) //starting frame write_byte( 1 ) //frame rate in 0.1's write_byte( 6 ) //life in 0.1's write_byte( 10 ) //line width in 0.1's write_byte( 1 ) //noise amplitude in 0.01's switch( cs_get_user_team( id ) ) { case CS_TEAM_CT: { write_byte( 0 ); write_byte( 0 ); write_byte( 255 ); } case CS_TEAM_T: { write_byte( 255 ); write_byte( 0 ); write_byte( 0 ); } } write_byte( 255 ); // brightness write_byte( 0 ); // scroll speed in 0.1's message_end(); } } public EndLastRequest( iWinner, iLoser ) { new szWinnerName[ 32 ], szLoserName[ 32 ]; get_user_name( iWinner, szWinnerName, 31 ); get_user_name( iLoser, szLoserName, 31 ); ColorChat( 0, NORMAL, "%s !t%s!n beat !t%s!n in the !gLast Request!n.", g_szPrefix, szWinnerName, szLoserName ); strip_user_weapons( iLoser );
g_iCurrentGame = LR_NONE; g_iLastRequest[ LR_PRISONER ] = 0; g_iLastRequest[ LR_GUARD ] = 0; set_task( 0.1, "Task_EndLR", TASK_ENDLR + iWinner ); }
public Task_EndLR( iTaskID ) { new id = iTaskID - TASK_ENDLR;
strip_user_weapons( id ); set_user_health( id, 100 ); if( cs_get_user_team( id ) == CS_TEAM_CT ) GiveWeapons( id ); }
////////////////////////////// // LR Games // //////////////////////////////
LR_Knife( id ) { new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ]; give_item( id, "weapon_knife" ); get_mapname( szMapName, charsmax( szMapName ) ); if( equali( szMapName, "some1s_jailbreak" ) ) { iCTOrigin = { -759, 1047, 100 }; iTOrigin = { -585, 867, 100 }; if( id == g_iLastRequest[ LR_PRISONER ] ) set_user_origin( id, iTOrigin ); else set_user_origin( id, iCTOrigin ); } }
LR_Shotgun( id ) { give_item( id, "weapon_m3" ); cs_set_user_bpammo( id, CSW_M3, 28 ); }
LR_Scout( id ) { new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ];
give_item( id, "weapon_scout" ); cs_set_user_bpammo( id, CSW_SCOUT, 90 ); get_mapname( szMapName, charsmax( szMapName ) ); if( equali( szMapName, "some1s_jailbreak" ) ) { iCTOrigin = { -2898, -2040, 37 }; iTOrigin = { -2908, 905, 37 }; if( id == g_iLastRequest[ LR_PRISONER ] ) set_user_origin( id, iTOrigin ); else set_user_origin( id, iCTOrigin ); } }
LR_Shot4Shot( id ) { new szMapName[ 32 ], iCTOrigin[ 3 ], iTOrigin[ 3 ]; if( id == g_iLastRequest[ LR_PRISONER ] ) { cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 1 ); } else cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 ); get_mapname( szMapName, charsmax( szMapName ) ); if( equali( szMapName, "some1s_jailbreak" ) ) { iCTOrigin = { -1352, 271, 38 }; iTOrigin = { -1338, -782, 38 }; if( id == g_iLastRequest[ LR_PRISONER ] ) set_user_origin( id, iTOrigin ); else set_user_origin( id, iCTOrigin ); } }
LR_Race( id ) { give_item( id, "weapon_knife" ); }
LR_Spray( id ) { give_item( id, "weapon_knife" ); }
LR_GunToss( id ) { give_item( id, "weapon_knife" ); cs_set_weapon_ammo( give_item( id, "weapon_deagle" ), 0 ); }
LR_NadeToss( id ) { give_item( id, "weapon_knife" ); give_item( id, "weapon_smokegrenade" ); ColorChat( id, NORMAL, "%s Do not throw the nade until you are doing the toss!", g_szPrefix ); }
public Task_Advertise() { ColorChat( 0, NORMAL, "%s This server is running !tLast Request v%s !nby !tH3avY Ra1n!n.", g_szPrefix, g_szVersion ); }
GiveWeapons( id ) { give_item( id, "weapon_m4a1" ); give_item( id, "weapon_deagle" ); give_item( id, "weapon_smokegrenade" ); cs_set_user_bpammo( id, CSW_M4A1, 90 ); cs_set_user_bpammo( id, CSW_DEAGLE, 120 ); }
ColorChat( id, colour, const text[], any:... ) { if( !get_playersnum() ) { return; } static message[192]; message[0] = 0x01; vformat(message[1], sizeof(message) - 1, text, 4); replace_all(message, sizeof(message) - 1, "!g", "^x04"); replace_all(message, sizeof(message) - 1, "!n", "^x01"); replace_all(message, sizeof(message) - 1, "!t", "^x03"); static index, MSG_Type; if( !id ) { static i; for(i = 1; i <= g_iMaxPlayers; i++) { if( g_bConnected[i] ) { index = i; break; } } MSG_Type = MSG_ALL; } else { MSG_Type = MSG_ONE; index = id; } static bool:bChanged; if( colour == GREY || colour == RED || colour == BLUE ) { message_begin(MSG_Type, g_msgTeamInfo, _, index); write_byte(index); write_string(g_szTeamName[colour]); message_end(); bChanged = true; } message_begin(MSG_Type, g_msgSayText, _, index); write_byte(index); write_string(message); message_end(); if( bChanged ) { message_begin(MSG_Type, g_msgTeamInfo, _, index); write_byte(index); write_string(g_szTeamName[_:cs_get_user_team(index)]); message_end(); } }
get_playercount( CsTeams:iTeam, iStatus ) { new iPlayerCount; for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( !g_bConnected[ i ] || cs_get_user_team( i ) != iTeam ) continue; switch( iStatus ) { case DEAD: if( g_bAlive[ i ] ) continue; case ALIVE: if( !g_bAlive[ i ] ) continue; } iPlayerCount++; } return iPlayerCount; }
Countdown sounds download:
https://forums.alliedmods.net/attach...2&d=1313456463
Last edited by KleirPlays; 07-22-2013 at 23:57.
|
|