Меню в начале раунда

Сообщения
11
Реакции
0
Как сделать чтобы меню появилась в начале раунда?
 

Вложения

Сообщения
19
Реакции
1
Код:
public plugin_init() {
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}

public event_round_start() {
    for(new id = 1; id <= 32; id++) {
        if (!is_user_connected(id)) continue;

        // вызываешь меню и добавляешь нужные проверки перед открытием меню, если их в меню нету
    }
}

Если есть регейм, то можешь отлавливать через хук RG_CSGameRules_RestartRound
 
Сообщения
1,097
Реакции
61
Помог
11 раз(а)
RedStreet, а хук спавна игрока??? И там уже есть include <hamsandwich>
 
Сообщения
19
Реакции
1
Code_0xABC, Можно и через Ham_CS_RoundRespawn, но насколько помню, мне встречался рес через
ExecuteHam(Ham_CS_RoundRespawn, id), поэтому, как по мне, объективно лучше мой предложенный метод - через отлов начала раунда
 
Сообщения
1,097
Реакции
61
Помог
11 раз(а)
Code_0xABC, Можно и через Ham_CS_RoundRespawn, но насколько помню, мне встречался рес через
ExecuteHam(Ham_CS_RoundRespawn, id), поэтому, как по мне, объективно лучше мой предложенный метод - через отлов начала раунда
Спавн игрока!!!
 
Сообщения
5
Реакции
0
Код:
#include <amxmodx>

#include <amxmisc>

#include <hamsandwich>

#include <reapi>



new cvar_on



#define VIP_FLAG ADMIN_RESERVATION



#define ROUNDS 3 //Какой раунд вы хотите, чтобы он открылся?

new bool:g_bRound;

new g_iCount;



public plugin_init() {

        register_plugin(" Weapons", "1.0", "Mekanın Sahibi")

        RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)

    register_logevent("ElSonu", 2, "1=Round_End");

    register_event("TextMsg","eRestart","a","2=#Game_will_restart_in","2=#Game_Commencing");

        cvar_on = register_cvar("mkn_weapons", "1");

        AutoExecConfig(true, "mkn_weaponssetting")

}



public ElSonu()

{

    g_iCount++;



    if(g_iCount >= ROUNDS){

        g_bRound = true;

    }

}

public eRestart() {

    g_bRound = false;

    g_iCount = 0;

}

public fwHamPlayerSpawnPost(id)

{

    if(g_bRound == true && is_user_alive(id) && get_user_flags(id) & VIP_FLAG)

    {

    if(get_pcvar_num(cvar_on))

    {   

    {

        client_cmd(id, "amxx_mymenu")

    }

}

}

}



//ПРИ ИЗМЕНЕНИИ КАРТЫ И СБРОСЕ ТУРА НИЧЕГО НЕ СЛОМАЕТСЯ.
 
Последнее редактирование:
Сообщения
218
Реакции
22
Помог
6 раз(а)
Код:
public event_round_start() {
    for(new id = 1; id <= 32; id++) {
        if (!is_user_connected(id)) continue;

        // вызываешь меню и добавляешь нужные проверки перед открытием меню, если их в меню нету
    }
}
Этот цикл следует использовать с get_players, если вы не хотите использовать другой метод.
 
Сообщения
35
Реакции
8
Code_0xABC, Можно и через Ham_CS_RoundRespawn, но насколько помню, мне встречался рес через
ExecuteHam(Ham_CS_RoundRespawn, id), поэтому, как по мне, объективно лучше мой предложенный метод - через отлов начала раунда
А как насчёт такого момента, когда игрок заходит через пару секунд после начала раунда, его ресает? Меню не выводит! Можно отследить спавн, а там, например, если оставшееся время раунда < mp_roundtime + mp_buytime , меню не выводить.
 
Сообщения
19
Реакции
1
А как насчёт такого момента, когда игрок заходит через пару секунд после начала раунда, его ресает? Меню не выводит! Можно отследить спавн, а там, например, если оставшееся время раунда < mp_roundtime + mp_buytime , меню не выводить.
Все зависит от задач человека. Можно множество недочетов приводить, к примеру если на его сервере (допустим это паблик) стоит Revive Teammates, и за это mp_roundtime игрок умрет и его снова реснут. Спавн может снова сработать (код плагина я не смотрел, но наверняка он хукнет спавн), тогда придется добавлять булевую переменную для блока повторного открытия меню и в конце/начале раунда обнулять ее.


Если это какой-нибудь детран, то тоже самое будет, только еще чаще, поскольку возрождения там постоянные.


P.S. Лично сам пользуюсь стоком для других задач, который считает отыгранное время от раунда:

Код:
stock Float:rg_get_duration_time() {
    return get_gametime() - Float:get_member_game(m_fRoundStartTimeReal);
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу