Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Добавить проверку при старте CW не пускать новых подключившихся игроков за команду

Статус пользователя proffi666
сообщение 26.12.2015, 19:27
Сообщение #1
Стаж: 11 лет
Город: Тюмень

Сообщений: 178
Благодарностей: 13
Полезность: < 0

Есть плагин CW, нужно что бы при запуске CW всех новых игроков не пускало ни за одну команду кроме наблюдателей, т.е. блокировать подключение к командам CT и TT
Код:
#include < amxmodx >
#include < cstrike >
#include < colorchat >

#define ADMIN_LEVEL ADMIN_BAN
#define MR get_pcvar_num( g_pRoundsCvar )

new const VERSION[] = "0.0.3";
new const PREFIX[] = "[Dangerous]";

//new g_iHudSync;
new g_iMaxPlayers;
new g_iTeamScore[ 2 ]; // 0 = T ; 1 = CT

new g_pTeamNames[ 2 ]; // 0 = T ; 1 = CT
new g_pRoundsCvar;

new bool:g_bHalf_First;
new bool:g_bHalf_Second;

new g_pDuel;
new bool:g_bDuel;

new g_szDuelists[ 2 ][ 33 ];
new g_iDuelistScore[ 2 ];

public plugin_init()
{
register_plugin( "ClanWar Mod", VERSION, "Juice" );

register_clcmd( "say /start", "start_game" );
register_clcmd( "say /scrim", "start_game" );

register_clcmd( "say /scrimstop", "stop_game" );
register_clcmd( "say /stop", "stop_game" );

register_clcmd( "say /swap", "swap_teams" );

register_clcmd( "say /score", "print_score" );

g_pTeamNames[ 0 ] = register_cvar( "scrim_team_t", "Mix1" );
g_pTeamNames[ 1 ] = register_cvar( "scrim_team_ct", "Mix2" );

g_pRoundsCvar = register_cvar( "scrim_rounds" , "8" );

g_pDuel = register_cvar( "scrim_duel", "0" );

register_logevent( "eRoundEnd", 2, "0=World triggered", "1=Round_Draw", "1=Round_End" );

//g_iHudSync = CreateHudSyncObj( );
g_iMaxPlayers = get_maxplayers( );
}

public start_game( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
new szName[ 33 ];
get_user_name( id, szName, 32 );
ScrimReset( );

if( get_pcvar_num( g_pDuel ) )
{
new players[32],num;
get_players( players, num, "ae", "TERRORIST" );
if( num != 1 )
ColorChat( 0, GREEN, "^x03%s^x04 Cannot start duel!", PREFIX )
else
{
get_user_name( players[0], g_szDuelists[0], 32 );
// arrayset(players,0,32)
get_players( players, num, "ae", "CT" );

if( num != 1 )
ColorChat( 0, GREEN, "^x03%s^x04 Cannot start duel!", PREFIX )
else
{
g_bDuel = true;
g_iDuelistScore[0] = 0;
g_iDuelistScore[1] = 0;
get_user_name( players[0], g_szDuelists[1], 32 );

ColorChat( 0, RED, "%s %s have started the duel between^x04 %s^x03 and^x04 %s^x03!", PREFIX, szName, g_szDuelists[0], g_szDuelists[1] );
}
}
return PLUGIN_HANDLED;
}
else
{
g_bHalf_First = true;
ColorChat( 0, RED, "%s %s have started the Scrim! [Max Rounds: %d]", PREFIX, szName, get_pcvar_num( g_pRoundsCvar ) );
}
}
return PLUGIN_HANDLED;
}

public eRoundEnd()
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) ) return PLUGIN_CONTINUE;
//client_print( 0, print_chat, "AAA" );
new players[ 32 ], num;
get_players( players, num, "ae", "TERRORIST" );

if( g_bDuel )
{
if( !num )
{
new a = g_iDuelistScore[1];
g_iDuelistScore[1] = g_iDuelistScore[0];
g_iDuelistScore[0] = a;

new poop[32];

formatex( poop, 32, g_szDuelists[1] );
formatex( g_szDuelists[1], 32, g_szDuelists[0] );
formatex( g_szDuelists[0], 32, poop );

swap();
}
else
{
if( ++g_iDuelistScore[0] >= 3 )
{
new szName[33];
get_user_name( players[0], szName, 32 );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ColorChat( 0, RED, "%s %s wins! (%d-%d)", PREFIX, szName, g_iDuelistScore[0], g_iDuelistScore[1] );
ScrimReset();
}
else ssay_score(0);
}
}
else
{
if( !num )
{
if( g_bHalf_First )
{
g_iTeamScore[ 1 ]++; round_end(); // give point to CT
}
else if( g_bHalf_Second )
{
g_iTeamScore[ 0 ]++; round_end(); // give point to T
}
}
else
{
if( g_bHalf_First )
{
g_iTeamScore[ 0 ]++; round_end(); // give point to T
}
else if( g_bHalf_Second )
{
g_iTeamScore[ 1 ]++; round_end(); // give point to CT
}
}
}
return PLUGIN_CONTINUE;
}

public round_end()
{
if ( !g_bHalf_First && !g_bHalf_Second ) return

if ( g_bHalf_First )
{
ssay_score( 0 );
if ( g_iTeamScore[ 0 ] + g_iTeamScore[ 1 ] == MR )
{
ColorChat( 0, GREEN, "%s Half of scrim is over! Switching teams...", PREFIX );
g_bHalf_First = false;
g_bHalf_Second = true;

swap( );
server_cmd( "sv_restartround 1" );
}
}
else if ( g_bHalf_Second )
{
new szTeamNames[ 2 ][ 33 ];
get_pcvar_string( g_pTeamNames[ 0 ], szTeamNames[ 0 ], 32 );
get_pcvar_string( g_pTeamNames[ 1 ], szTeamNames[ 1 ], 32 );
ssay_score( 0 );
if ( g_iTeamScore[ 0 ] == MR + 1 )
{
ColorChat( 0, RED, "%s Team^x04 %s^x03 have won the game!", PREFIX, szTeamNames[ 0 ] );
ScrimReset( );
}
else if ( g_iTeamScore[ 1 ] == MR + 1 )
{
ColorChat( 0, RED, "%s Team^x04 %s^x03 have won the game!", PREFIX, szTeamNames[ 1 ] );
ScrimReset( );
}
else if ( g_iTeamScore[ 0 ] + g_iTeamScore[ 1 ] == (MR+MR) )
{
ColorChat( 0, GREEN, "%s The game has ended with a draw!", PREFIX );
ScrimReset( );
}
}
}

public ScrimReset( )
{
g_bHalf_First = false;
g_bHalf_Second = false;
g_iTeamScore[ 0 ] = g_iTeamScore[ 1 ] = 0;
g_bDuel = false;

arrayset( g_iDuelistScore, 0, 33 );

server_cmd( "sv_restartround 1" );
}

public stop_game( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) )
{
client_print( id, print_chat, "%s Scrim is not started!", PREFIX );
return PLUGIN_HANDLED;
}
new szName[ 33 ];
get_user_name( id, szName, 32 );
ColorChat( 0, BLUE, "%s %s have stopped the scrim!", PREFIX, szName );
ScrimReset( );
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}

public swap_teams( id )
{
if( get_user_flags( id ) & ADMIN_LEVEL )
{
swap( );
ScrimReset( );
}
}

public print_score( id )
{
if ( (!g_bHalf_First && !g_bHalf_Second) && (get_pcvar_num( g_pDuel )&&!g_bDuel) )
{
client_print( id, print_chat, "%s Scrim is not started!", PREFIX );
return PLUGIN_HANDLED;
}
ssay_score( id );
return PLUGIN_HANDLED;
}

public ssay_score( id )
{
if( g_bDuel )
{
ColorChat( id, BLUE, "%s [^x04 %s : %d^x03 ]^x04 |^x03 [^x04 %s : %d^x03 ]", PREFIX, g_szDuelists[0], g_iDuelistScore[0], g_szDuelists[1], g_iDuelistScore[1] );
}
else
{
new szTeamNames[ 2 ][ 33 ];
get_pcvar_string( g_pTeamNames[ 0 ], szTeamNames[ 0 ], 32 );
get_pcvar_string( g_pTeamNames[ 1 ], szTeamNames[ 1 ], 32 );

ColorChat( id, BLUE, "%s Half: %s (MR: %d) - Score: [^x04 %s : %d^x03 ]^x04 |^x03 [^x04 %s : %d^x03 ]"
, PREFIX, g_bHalf_First ? "1st" : "2nd", MR, szTeamNames[ 0 ], g_iTeamScore[ 0 ], szTeamNames[ 1 ], g_iTeamScore[ 1 ] );
}
//set_hudmessage( 255, 255, 255, -1.0, -0.5, 0, 2.0, 5.0 );
//ShowSyncHudMsg( g_bNotice ? 0 : id, g_iHudSync, "Half: %s^n[ %s : %d ] | [ %s : %d ]"
//, g_bHalf_First ? "1st" : "2nd", szTeamNames[ 0 ], g_iTeamScore[ 0 ], szTeamNames[ 1 ], g_iTeamScore[ 1 ] );

}

public swap( )
{
for( new i = 1; i <= g_iMaxPlayers; i++ )
{
if( is_user_connected( i ) )
{
switch( cs_get_user_team( i ) )
{
case CS_TEAM_T: cs_set_user_team( i, CS_TEAM_CT );
case CS_TEAM_CT: cs_set_user_team( i,CS_TEAM_T );
}
} else continue;
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя iser
сообщение 26.12.2015, 20:53
Сообщение #2
Стаж: 10 лет

Сообщений: 57
Благодарностей: 2
Полезность: < 0

Пробуй добавить это:

Код:

#include <amxmodx>
#include <fakemeta>

#define m_iJoinedState 121
#define m_iMenu 205

/*
m_iJoinedState
0 => first connect
1 => not found where is used
2 => stands to some state in HL where you can join the game using JUMP+ATTACK+ATTACK2
3 => ready to choose team
4 => team menu sent
5 => player in game
*/

#define VERSION "0.0.1"
#define PLUGIN "Force Join Team"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
register_event("ShowMenu", "EventMenu_Team_Select", "b", "4&#Team_Select")
register_event("VGUIMenu", "EventMenu_Team_Select", "b", "1=2")
}

public EventMenu_Team_Select( id )
{
set_pdata_int(id, m_iMenu, 1)
set_pdata_int(id, m_iJoinedState, 4)
engclient_cmd(id, "jointeam", "6")
}

public sjointeam( id )
{
engclient_cmd(id, "jointeam", "6")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iser
сообщение 26.12.2015, 22:22
Сообщение #3
Стаж: 10 лет

Сообщений: 57
Благодарностей: 2
Полезность: < 0

Сорри я забыл две строчки дописать:
Код:

#include <amxmodx>
#include <fakemeta>

#define m_iJoinedState 121
#define m_iMenu 205

/*
m_iJoinedState
0 => first connect
1 => not found where is used
2 => stands to some state in HL where you can join the game using JUMP+ATTACK+ATTACK2
3 => ready to choose team
4 => team menu sent
5 => player in game
*/

#define VERSION "0.0.1"
#define PLUGIN "Force Join Team"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
register_event("ShowMenu", "EventMenu_Team_Select", "b", "4&#Team_Select")
register_event("VGUIMenu", "EventMenu_Team_Select", "b", "1=2")
register_clcmd("jointeam", "sjointeam");
register_clcmd("choseteam", "sjointeam");
}

public EventMenu_Team_Select( id )
{
set_pdata_int(id, m_iMenu, 1)
set_pdata_int(id, m_iJoinedState, 4)
engclient_cmd(id, "jointeam", "6")
}

public sjointeam( id )
{
engclient_cmd(id, "jointeam", "6")
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iser
сообщение 27.12.2015, 0:21
Сообщение #4
Стаж: 10 лет

Сообщений: 57
Благодарностей: 2
Полезность: < 0

В общем я посмотрел на сервере и не смог сделать в твоем плагине, короче говоря ставь через отдельно pause() и unpause() будешь делать.
Вот сделал
Код:

#include <amxmodx>
#include <fakemeta>

#define m_iJoinedState 121
#define m_iMenu 205

#define VERSION "0.0.1"
#define PLUGIN "Force Join Team"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, "ConnorMcLeod")
register_event("ShowMenu", "EventMenu_Team_Select", "b", "4&#Team_Select")
register_event("VGUIMenu", "EventMenu_Team_Select", "b", "1=2")
register_clcmd("jointeam", "sjointeam");
register_clcmd("choseteam", "sjointeam");
}

public EventMenu_Team_Select( id )
{
set_pdata_int(id, m_iMenu, -1)
/*
m_iJoinedState
0 => first connect
1 => not found where is used
2 => stands to some state in HL where you can join the game using JUMP+ATTACK+ATTACK2
3 => ready to choose team
4 => team menu sent
5 => player in game
*/
set_pdata_int(id, m_iJoinedState, 1)
engclient_cmd(id, "jointeam", "6")
}

public sjointeam( id )
{
cs_set_user_team(id,CS_TEAM_SPECTATOR)
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proffi666
сообщение 4.2.2016, 7:09
Сообщение #5
Стаж: 11 лет
Город: Тюмень

Сообщений: 178
Благодарностей: 13
Полезность: < 0

Спасибо, мне помогли сделать ! Теперь у меня все прекрасно работает !
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zylex
сообщение 4.2.2016, 10:34
Сообщение #6


Стаж: 10 лет

Сообщений: 128
Благодарностей: 6
Полезность: 40

Цитата(proffi666 @ 4.2.2016, 8:04) *
Спасибо, мне помогли сделать ! Теперь у меня все прекрасно работает !

Скинь пожалуйста плагин если тебе не жалко
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: