Last players sound

Last players sound 1.0

Нет прав для скачивания
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
C++:
public round_start()
{
    new iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead|GetPlayers_ExcludeBots|GetPlayers_ExcludeHLTV);

    if(iPlayerCount > 2){
        //плагин работает
    }
}
3 Авг 2019
что типо того мона встроить
 
Последнее редактирование:

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
alabamaster1337, обнови плагин во вкладке "Исходный код".
 
Сообщения
20
Реакции
7
Помог
2 раз(а)
А сам sound не идет в комплекте с плагином?
 
Сообщения
453
Реакции
255
Помог
9 раз(а)
Код:
#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
    new MaxClients;
#endif

// to /cstrike/sound
new const MUSIC_FILE[] = "lasthuman.wav"; // sound .wav

public plugin_precache()
{
    precache_sound(MUSIC_FILE);
}

public plugin_init()
{
    register_plugin("Last Players","0.2","alabamaster1337 & dev-cs");

    RegisterHookChain(RG_CBasePlayer_Killed, "HC_CBasePlayer_Killed_Post", true);
    RegisterHookChain(RH_SV_DropClient, "HookDropClient", .post=true);

    #if AMXX_VERSION_NUM < 183
        MaxClients = get_maxplayers();
    #endif
}

public HookDropClient()    {
    check_last_players();
}

// amx-x.ru
public HC_CBasePlayer_Killed_Post()    {
    check_last_players();
}

check_last_players()    {
    new players[TeamName], playerId[TeamName];

    for (new id = 1; id <= MaxClients; id++)
    {
        if (!is_user_connected(id))
            continue;

        if (is_user_alive(id) && (TEAM_UNASSIGNED < get_member(id, m_iTeam) < TEAM_SPECTATOR))
        {
            players[get_member(id, m_iTeam)]++;
            playerId[get_member(id, m_iTeam)] = id;
        }
    }

    if (playerId[TEAM_CT] && players[TEAM_CT] == 1)
        rg_send_audio(playerId[TEAM_CT], MUSIC_FILE);

    if (playerId[TEAM_TERRORIST] && players[TEAM_TERRORIST] == 1)
        rg_send_audio(playerId[TEAM_TERRORIST], MUSIC_FILE);
}
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
malniata, у меня нынче проблемы с загрузками на этот сайт, даю ссылку на архив с плагином, там твоя версия и та с которой помогли, ну и звук еще. Мэйби кто-то из модеров обновит))
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
malniata, зачем в цикле проверка на коннект, если в следующей проверке есть проверка на жив ли игрок, в которой уже есть проверка на коннект?!
 

Ayk

Сообщения
763
Реакции
476
Помог
19 раз(а)
malniata, твой вариант не подходит по ТЗ.
При 4 КТ и 1 Т, этот 1 Т убив 3 КТ, услышит 3 раза звук. И также, если кто-то выйдет.
 
Сообщения
453
Реакции
255
Помог
9 раз(а)
malniata, твой вариант не подходит по ТЗ.
При 4 КТ и 1 Т, этот 1 Т убив 3 КТ, услышит 3 раза звук. И также, если кто-то выйдет.
Код:
#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
    new MaxClients;
#endif

// to /cstrike/sound
new const MUSIC_FILE[] = "lasthuman.wav"; // sound .wav
new bool: g_alreadyPlayed;

public plugin_precache()
{
    precache_sound(MUSIC_FILE);
}

public plugin_init()
{
    register_plugin("Last Players","0.2","alabamaster1337 & dev-cs");

    register_event("HLTV", "HookEvent_Hltv", "a", "1=0", "2=0");
    RegisterHookChain(RG_CBasePlayer_Killed, "HC_CBasePlayer_Killed_Post", true);
    RegisterHookChain(RH_SV_DropClient, "HookDropClient", .post=true);

    #if AMXX_VERSION_NUM < 183
        MaxClients = get_maxplayers();
    #endif
}

public HookEvent_Hltv()
    g_alreadyPlayed = false;

public HookDropClient()    {
    if (!g_alreadyPlayed)
        check_last_players();
}

// amx-x.ru
public HC_CBasePlayer_Killed_Post()    {
    if (!g_alreadyPlayed)
        check_last_players();
}

public check_last_players()    {
    new players[TeamName], playerId[TeamName];

    for (new id = 1; id <= MaxClients; id++)
    {
        if (is_user_alive(id) && (TEAM_UNASSIGNED < get_member(id, m_iTeam) < TEAM_SPECTATOR))
        {
            players[get_member(id, m_iTeam)]++;
            playerId[get_member(id, m_iTeam)] = id;
        }
    }

    if (players[TEAM_CT] == 1)
        rg_send_audio(playerId[TEAM_CT], MUSIC_FILE);

    if (players[TEAM_TERRORIST] == 1)
        rg_send_audio(playerId[TEAM_TERRORIST], MUSIC_FILE);

    g_alreadyPlayed = bool:(players[TEAM_CT] || players[TEAM_TERRORIST]);
}
}
4 Авг 2019
Minni, исправил
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
malniata, register_event("HLTV", "HookEvent_Hltv", "a", "1=0", "2=0"); А чо не на реопи?
 
Сообщения
48
Реакции
-1
Помог
1 раз(а)
необычно так, такого еще не встречал, кроме как стандартных, мне понравилось:good2:
 
Сообщения
271
Реакции
347
Помог
15 раз(а)
malniata, если кт и тт останутся 1х1, то у последнего оставшегося звука не будет.
 
Последнее редактирование:
Сообщения
48
Реакции
-1
Помог
1 раз(а)
кстати если на сервере игроков нет и ты играешь 1 на 1 у тебя каждый раунд выходит этот звук, надо пофиксить и сделать проверку на кол-во игроков чтобы при каком то онлайне типо больше 2х был звук, а то так ерунда какая-то выходит
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
Интересно что 1 микроплагин который служит всего для одной цели может быть написано по разному, да еще и столько раз?
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
alabamaster1337, да, у всех своя точка зрения, но есть косяки которые другие видят, помогают что бы было норм в использовании, я тоже писал уже, что бы плагин работал только от кол-ва определенного игроков:


C++:
public round_start()
{
    new iPlayers[MAX_PLAYERS], iPlayerCount;
    get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead|GetPlayers_ExcludeBots|GetPlayers_ExcludeHLTV);

    if(iPlayerCount > 2){
        //плагин работает
    }
}
3 Авг 2019
что типо того мона встроить
но как тебе реализовать твое дело)
4 Авг 2019
тут просто речь именно от колва игроков работа плагина, а не то что бы 1×1 остался игрок когда их много.

Нужна просто проверка сколько человек на сервере (и если меньше чем в кваре например, то плагин не буит работать), до твоего кода основного с воспроизведением музыки по правилам.
 
Сообщения
285
Реакции
251
Помог
7 раз(а)
C++:
    if(tt_count == 1 && ct_count == 1 ) // если тт и кт 1х1
    {
        rg_send_audio(lastT, MUSIC_FILE);
        rg_send_audio(lastCT, MUSIC_FILE);
    }
    else if(tt_count == 1 && ct_count > 1) // если тт остался 1
    {
        rg_send_audio(lastT, MUSIC_FILE);
    }
    else if(ct_count == 1 && tt_count > 1) // если кт остался 1
    {
        rg_send_audio(lastCT, MUSIC_FILE);
    }
читобы при 1х1 звуки не издавались, по поводу поста pasha_belan
 

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

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