Русское сообщество по скриптингу

Force Round End: когда игрок 1

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Force Round End: когда игрок 1

Сообщение tempo » 07 авг 2016, 19:30

можно ли изменить force_round_end чтобы работало когда игрок один на сервере ?
он только работает когда больше 2-ух игроков на сервере. Использую вместе с модулем Round Control

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#tryinclude <roundcontrol>

#if AMXX_VERSION_NUM < 182
#endif

#define PLUGIN "Force Round End"
#define VERSION "0.80b"
#define AUTHOR "Safety1st"

#if !defined _roundcontrol_included
#assert "Round Control AMXX module required for plugin!"
#endif

new pWarnBefore
new bool
:gbRoundStarted, bool:gbGameScoringActive, giWarnBefore

#define TASK_ID 7330    // arbitrary value

public plugin_init() 
{
    register_plugin( PLUGIN, VERSION, AUTHOR )
    register_dictionary( "force_round_end.txt" )

    new szObjectivesList[][] = 
    
{
        "func_bomb_target",
        "info_bomb_target",
        "hostage_entity",
        "func_hostage_rescue",
        "info_hostage_rescue",
        "info_vip_start",
        "func_vip_safetyzone",
        "func_escapezone"
    }
    for( new i = 0; i < sizeof szObjectivesList; i++ ) 
    
{
        if( engfunc(EngFunc_FindEntityByString, -1, "classname", szObjectivesList[i] ) )
        pause("d")    // set 'stopped' status when pausing whole plugin; in this status plugin is unpauseable
        // TODO: may be unload module too...
    }

    register_event( "RoundTime", "RoundTimer", "bc" )    // we hook single MSG_ONE message repeated to players
    register_logevent( "Event_RoundStart", 2, "1=Round_Start" )
    register_logevent( "Event_RoundEnd", 2, "1=Round_End" )

    register_event( "TextMsg", "Event_NewGame", "a", "2=#Game_Commencing" )
    register_event( "TextMsg", "Event_RoundRestart", "a", "2=#Game_will_restart_in" )
    register_event( "TextMsg", "Event_GameScoring", "a", "2=#Game_scoring" )

    pWarnBefore = register_cvar( "fre_warn_before", "0" )
}

public Event_RoundStart() 
{
    gbRoundStarted = true
}

public RoundTimer() 
{
    if( gbGameScoringActive || !gbRoundStarted )
    return

    gbRoundStarted 
= false

    giWarnBefore 
= get_pcvar_num( pWarnBefore )

    if( !giWarnBefore )
    set_task( float( read_data(1) ), "ForceRoundEnd", TASK_ID )
    else
    set_task
( float( read_data(1) - giWarnBefore ), "WarnPlayers", TASK_ID )
}

public WarnPlayers() 
{
    // SAMPLE FUNCTION FOR THE FUTURE
    set_hudmessage( 255, 0, 0, -1.0, 0.16, 0, 0.0, 5.0, 1.0, 1.0 )
    show_hudmessage( 0, "%L", LANG_PLAYER, "FRE_WARNING", giWarnBefore )

    set_task( float(giWarnBefore), "ForceRoundEnd", TASK_ID )
}

public ForceRoundEnd()
{
    RoundEndForceControl( WINSTATUS_CT )
}

public Event_RoundEnd()
remove_task(TASK_ID)

public Event_RoundRestart()
remove_task(TASK_ID)

public Event_NewGame() 
{
    gbGameScoringActive = false
    
/* task will be removed in Event_RoundEnd() function because
    Game_Commencing event is followed by Round_End logevent */
}

public Event_GameScoring() 
{
    if( !gbGameScoringActive ) 
    
{
        remove_task(TASK_ID)
        gbGameScoringActive = true
    
}

Тема перемещена в раздел "Вопросы по AMXX и его плагинам" // Subb98
Аватара пользователя
tempo
 
Сообщения: 198
Зарегистрирован: 19 фев 2016, 15:23
Благодарил (а): 60 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около года

Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7