Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fakemeta>
- #include <engine>
- #include <fun>
- #include <colorchat>
- #include <dhudmessage>
- #include <xs>
- #define TASK_TELEPORT 12345
- #define VERSION "1.0"
- new bool: pronadji_orig = false
- new bool: hoce_duel, bool: hoce_duel_i[ 33 ], d_started, bool: teleporting_p[ 33 ]
- new broj_igraca = 0, g_broj = 0
- new Float:spremi_duel, Float: time_cup
- new startovao_name[ 32 ]
- new ime_brt[ 33 ][ 32 ]
- new Float:origins[ 33 ][ 3 ]
- new vreme_cupa = 1;
- new bool: naziv_CUPa = false
- new r = 50, g = 35, b = 170
- new playerNum, players[ 32 ]
- new forbiden_say[][] = { "say /cp", "say /tp", "say /gc", "+hook", "say /nc", "say /pause", "say /noclip",
- "say /savepos", "say /checkpoint", "say /spec" }
- new saycmd[ 12 ]
- new p_inDuel[ 33 ]
- new currentPlayer[ 33 ]
- new kz_cup_message
- public plugin_init()
- {
- register_plugin( "CUP Plugin", VERSION, "JocA" )
- kz_cup_message = register_cvar( "kz_cup_message", "1" ) //should be say commands be visible?
- register_clcmd( "say /startcup", "duel_open_pre" )
- register_clcmd( "say /joincup", "join_duel" )
- register_clcmd( "cupname", "duel_open" )
- register_clcmd( "say /tcup", "timeOfcup" )
- register_clcmd( "say /exit", "exitCup" )
- for( new i = 0; i < sizeof( forbiden_say ); i++ )
- {
- formatex( saycmd, charsmax( saycmd ), "%s", forbiden_say[ i ] )
- register_clcmd( saycmd, "forbiden" )
- }
- }
- public forbiden( id )
- {
- if( d_started && hoce_duel_i[ id ] )
- {
- ColorChat( id, RED, "^1[CUP] Sorry,^3 not possible^1 while in Cup." )
- return PLUGIN_HANDLED
- }
- return PLUGIN_CONTINUE
- }
- public client_disconnect( id )
- {
- remove_task( id )
- if( hoce_duel_i[ id ] )
- {
- ColorChat( 0, BLUE, "Player from cup left the server :/" )
- hoce_duel_i[ id ] = false
- broj_igraca -= 1
- }
- }
- public duel_open_pre( id )
- {
- if( hoce_duel )
- {
- ColorChat( id, GREY, "^1[CUP] It's already started, wait some moments." )
- return PLUGIN_HANDLED
- }
- new vreme_cupa_text[ 50 ]; formatex( vreme_cupa_text, 49, "Time of the battle:\y %d minutes^n", vreme_cupa )
- new menu = menu_create( "Start the cup!^n\dVersion: 1.0", "cupHandled" )
- menu_additem( menu, vreme_cupa_text )
- menu_additem( menu, "\wAdd custom name for the battle^n" )
- menu_additem( menu, "\ySTART IT BOIII" )
- menu_display( id, menu, 0 )
- return get_pcvar_num( kz_cup_message ) == 0 ? PLUGIN_HANDLED:PLUGIN_CONTINUE
- }
- public cupHandled( id, menu, item )
- {
- switch( item )
- {
- case 0:
- {
- switch( vreme_cupa )
- {
- case 1:
- {
- vreme_cupa += 1
- duel_open_pre( id )
- }
- case 2:
- {
- vreme_cupa += 1
- duel_open_pre( id )
- }
- case 3:
- {
- vreme_cupa = 5
- duel_open_pre( id )
- }
- case 5:
- {
- vreme_cupa = 7
- duel_open_pre( id )
- }
- case 7:
- {
- vreme_cupa = 1
- duel_open_pre( id )
- }
- }
- }
- case 1:
- {
- client_cmd( id, "messagemode cupname" )
- naziv_CUPa = true
- }
- case 2:
- {
- duel_open( id )
- }
- }
- menu_destroy( menu )
- }
- public duel_open( id )
- {
- if( !naziv_CUPa )
- get_user_name( id, startovao_name, charsmax( startovao_name ) )
- else
- read_args( startovao_name, charsmax( startovao_name ) )
- hoce_duel_i[ id ] = true
- broj_igraca++
- hoce_duel = true
- spremi_duel = get_gametime()
- ColorChat( 0, BLUE, "^1[CUP] Cup started^4 %s ^1%d mins. Waiting^4 10 sec^1 for players...", startovao_name, vreme_cupa )
- set_task( 10.0, "kraj_open", id )
- }
- public join_duel( id )
- {
- new name[ 32 ], Float: get_timing, Float: pred_polazak
- get_user_name( id, name, charsmax( name ) )
- get_timing = get_gametime() - spremi_duel
- if( get_timing >= 10.0 && d_started)
- {
- ColorChat( id, GREY, "^1[CUP] Someone is already playing,^3 wait or go /spec ;)" )
- return PLUGIN_HANDLED
- }
- else
- {
- pred_polazak = 10.0 - get_timing
- set_task( pred_polazak, "pocetak_CUPa", id )
- }
- if( hoce_duel && !d_started )
- {
- hoce_duel_i[ id ] = true
- broj_igraca++
- ColorChat( 0, BLUE, "^1[CUP]^3 %s^1 joined! Cup name:^4 %s", name, startovao_name )
- }
- if( !hoce_duel )
- {
- ColorChat( id, BLUE, "^1[CUP] No one started, go /startcup." )
- return PLUGIN_HANDLED
- }
- return get_pcvar_num( kz_cup_message ) == 0 ? PLUGIN_HANDLED:PLUGIN_CONTINUE
- }
- public kraj_open( id )
- {
- if( broj_igraca <= 1 )
- {
- ColorChat( id, BLUE, "^1[CUP] No enought players, sorry." )
- }
- else
- {
- set_dhudmessage( 255, 85, 0, -1.0, 0.4, 0, 2.5, 2.5 )
- show_dhudmessage( id, "It's starting BOIIIZ ! GL !^nPlayers: %d", broj_igraca )
- pocetak_CUPa( id )
- }
- }
- public pocetak_CUPa( id )
- {
- if( hoce_duel_i[ id ] )
- {
- SendCmd_1( id, "say /start" )
- set_task( 0.1, "frozen", id )
- ColorChat( id, BLUE, "^1[CUP] Starts in 5....4....3....." )
- set_user_rendering(id, kRenderFxGlowShell, r, g, b, kRenderNormal, 15)
- d_started = true
- set_task( 5.0, "start_CUP", id )
- pronadji_orig=false
- }
- }
- public timeOfcup( id )
- {
- if( d_started && hoce_duel_i[ id ] )
- client_print( id, print_center, "^r[ CUP Time Remaining ]^r^r^r%.00f seconds", 60.0*vreme_cupa - ( get_gametime() - time_cup ) )
- }
- public frozen( id )
- {
- fm_set_user_frozen( id, 1 )
- ScreenFade( id )
- }
- public start_CUP( id )
- {
- time_cup = get_gametime()
- fm_set_user_frozen( id, 0 )
- ColorChat( id, BLUE, "^1[CUP]^1 Started ! GL & HF !^4 %dmin^1 remainig", vreme_cupa )
- set_task( vreme*60, "zavrsen_CUP", id )
- }
- public exitCup( id )
- {
- if( hoce_duel_i[ id ] )
- {
- new name[ 32 ]; get_user_name( id, name, charsmax( name ) )
- if( d_started )
- {
- broj_igraca -= 1
- hoce_duel_i[ id ] = false
- remove_task( id )
- }
- else
- {
- hoce_duel_i[ id ] = false
- remove_task( id )
- }
- ColorChat( id, RED, "^1[CUP]^1 One player left the cup:^3 %s", name )
- }
- else
- {
- client_print( id, print_chat, "^1[CUP] From where to exit lol ?" )
- }
- return PLUGIN_HANDLED
- }
- public zavrsen_CUP( id )
- {
- g_broj = broj_igraca
- teleporting_p[ id ] = true
- naziv_CUPa = false
- fm_set_user_frozen( id, 1 )
- ScreenFade( id )
- remove_task( id )
- ColorChat( id, BLUE, ".....one sec...finding (%d plrs) origins....", broj_igraca )
- if( !pronadji_orig )
- {
- pronadji_origine()
- pronadji_orig=true
- }
- SendCmd_1( id, "say /start" )
- set_task( 4.0, "teleport_origin", id + TASK_TELEPORT)
- set_task( 4.0*g_broj+4.0, "pravi_kraj", id ) //real finish
- }
- public pronadji_origine()
- {
- new id, x=0
- get_players( players, playerNum, "a" )
- for( new i = 0; i < playerNum; i++ )
- {
- id = players[ i ]
- if( hoce_duel_i[ id ] )
- {
- entity_get_vector( id, EV_VEC_origin, origins[ id ] )
- get_user_name( id, ime_brt[ id ], 31 )
- p_inDuel[ x++ ] = id //thanks kushfield
- }
- }
- }
- public teleport_origin( id )
- {
- id = id - TASK_TELEPORT;
- //entity_set_vector( id, EV_VEC_origin, origins[ p_inDuel[ currentPlayer[ id ]]] )
- engfunc( EngFunc_SetOrigin, id, origins[ p_inDuel[ currentPlayer[ id ]]] )
- set_dhudmessage( 255, 85, 0, -1.0, 0.4, 0, 2.5, 2.5 )
- show_dhudmessage( id, "Teleported to: %s", ime_brt[ p_inDuel[ currentPlayer[ id ]]] )
- currentPlayer[id]++
- if( broj_igraca > currentPlayer[id] )
- set_task( 4.0, "teleport_origin", id+ TASK_TELEPORT )
- }
- public pravi_kraj( id )
- {
- set_dhudmessage( 255, 85, 0, -1.0, 0.4, 0, 3.0, 3.0)
- show_dhudmessage( id, "THE END! Be fair and tell who won!^nPlayers: %d", g_broj )
- ColorChat( id, BLUE, "^1[CUP] It's finished^1 GG ! For another one, go ^4/startcup^1 !" )
- d_started = false
- broj_igraca = 0
- g_broj = 0
- hoce_duel_i[ id ] = false
- hoce_duel = false
- startovao_name = ""
- fm_set_user_frozen( id, 0 )
- set_user_rendering( id )
- remove_task( id )
- teleporting_p[ id ] = false
- client_cmd( id, "say /start" )
- teleporting_p[ id ] = false
- vreme_cupa = 1
- pronadji_orig = false
- currentPlayer[ id ] = 0
- }
- stock fm_set_user_frozen(client, frozen)
- {
- if( !is_user_alive(client) ) return 0;
- new flags = pev(client, pev_flags);
- if( frozen && !(flags & FL_FROZEN) )
- {
- set_pev(client, pev_flags, (flags | FL_FROZEN))
- }
- else if( !frozen && (flags & FL_FROZEN) )
- {
- set_pev(client, pev_flags, (flags & ~FL_FROZEN));
- }
- return 1;
- }
- public ScreenFade(id )
- {
- message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
- write_short((1<<10)*4)
- write_short((1<<10)*15)
- write_short(0x0000)
- write_byte(150)
- write_byte(100)
- write_byte(5)
- write_byte(80)
- message_end()
- }
- stock SendCmd_1( id , text[] ) //cuz filtercmd 1
- {
- message_begin( MSG_ONE, 51, _, id )
- write_byte( strlen(text) + 2 )
- write_byte( 10 )
- write_string( text )
- message_end()
- }
- stock fm_set_user_origin(index, origin[3]) {
- new Float:orig[3];
- IVecFVec(origin, orig);
- return fm_entity_set_origin(index, orig);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement