Last players sound

Last players sound 1.0

Нет прав для скачивания
Сообщения
453
Реакции
255
Помог
9 раз(а)
malniata,
Код:
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : error 029: invalid expression, assumed zero
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : warning 215: expression has no effect
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : warning 215: expression has no effect
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : error 001: expected token: ";", but found ")"
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : error 029: invalid expression, assumed zero
// C:\Users\skynet\Desktop\cs\ъюьяшы ЄюЁ√ amxx\amx 1.9.0\last_players.sma(126) : fatal error 107: too many error messages on one line
Через Notepad++

CTRL+F

Заменить

в первой строке: rg_send_audio([play
во второй строке: rg_send_audio(play
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
malniata, вроде работает
fox, пробуй :D
Код:
#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[3];

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);
    RegisterHookChain(RG_CSGameRules_RestartRound, "GameRules_RestartRound", .post=true);

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

public GameRules_RestartRound()
    for (new i; i < 3; i++)
        g_alreadyPlayed[i] = false;

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_alive(id) && (TEAM_UNASSIGNED < get_member(id, m_iTeam) < TEAM_SPECTATOR))
        {
            players[get_member(id, m_iTeam)]++;
            playerId[get_member(id, m_iTeam)] = id;
        }
    }

    new untitled = -1;

    if (!g_alreadyPlayed[0] && (players[TEAM_CT] < 2 > players[TEAM_TERRORIST]))
    {
        rg_send_audio(playerId[TEAM_CT], MUSIC_FILE);
        rg_send_audio(playerId[TEAM_TERRORIST], MUSIC_FILE);

        untitled = 0;
    }
    else if (!g_alreadyPlayed[1] && players[TEAM_CT] == 1 && players[TEAM_TERRORIST] > 1)
    {
        rg_send_audio(playerId[TEAM_CT], MUSIC_FILE);

        untitled = 1;
    }
    else if (!g_alreadyPlayed[2] && players[TEAM_TERRORIST] == 1 && players[TEAM_CT] > 1)
    {
        rg_send_audio(playerId[TEAM_TERRORIST], MUSIC_FILE);

        untitled = 2;
    }

    if (untitled == -1)
        return;

    g_alreadyPlayed[untitled] = true;
}
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Ух вы тут обсудили все и вся. Мой вариант только из-за спортивного интереса поиска линного способа не более. Не стоит его аоспинимать как единственный или лучшый. Да и не тестировал я его толком.
 
Сообщения
579
Реакции
338
Предупреждения
1
Помог
9 раз(а)
alabamaster1337,
Код:
    for (new i; i < 3; i++)
        g_alreadyPlayed[i] = false;
я конечно не скриптор, но можно сделать через arrayset
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
steelzzz, я тоже не скриптор, и даже не скриптер, могу только ктрл+ц и ктрл+в, ну и + - что-то сам, все :scratch_one-s_head::dntknw:
 
Сообщения
1,667
Реакции
1,489
Помог
24 раз(а)
Сразу видно не шарите за оптимизацию.

Надо так:
Код:
new bool:g_alreadyPlayed[3 char];
Обнуление:
Код:
g_alreadyPlayed{0} = g_alreadyPlayed{1} = g_alreadyPlayed{2} = false;

Сами вы щизанутый.
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
С последними изменениями работает, когда остается 1х3 звук проигрывается, когда 1х2 звука нет и это правильно, когда 1х1 звук снова воспроизводится. Может есть способ как то считать сколько раз функция вызывалась за команду
4 Авг 2019
Почти пришли к идеалу, еще сообщений 20 в теме и перед нами воссияет чудо
 
Сообщения
453
Реакции
255
Помог
9 раз(а)
Сразу видно не шарите за оптимизацию.

Надо так:
Код:
new bool:g_alreadyPlayed[3 char];
Обнуление:
Код:
g_alreadyPlayed{0} = g_alreadyPlayed{1} = g_alreadyPlayed{2} = false;

Сами вы щизанутый.
Теперь буду знать такой метод, спасибо. в чем умысел char? до этого я использовал такой способ обнуления, но не использовал char в создании переменной
 

Garey

ninjaCow
Сообщения
411
Реакции
1,051
Помог
10 раз(а)
C-like:
#include <amxmodx>
#include <reapi>

enum ( <<=1 ) {
    CT_PLAYED = 1,
    TT_PLAYED
}
new played;
new HookChain:HookKilled;
new const MUSIC_FILE[] = "lasthuman.wav";

public plugin_precache()
{
    precache_sound(MUSIC_FILE);
}

public plugin_init()
{
    register_plugin("Last Man Standing", "1.0", "Garey");
    HookKilled = RegisterHookChain(RG_CBasePlayer_Killed, "HC_CBasePlayer_Killed_Post", true);
    RegisterHookChain(RG_CSGameRules_RestartRound, "HC_RoundStarted", true);
    DisableHookChain(HookKilled);
}

public HC_RoundStarted()
{
    played = 0;
    EnableHookChain(HookKilled);
}

public HC_CBasePlayer_Killed_Post()
{
    new players_ct[32], players_t[32], ict, ite;
    get_players(players_ct,ict,"ae","CT")    
    get_players(players_t,ite,"ae","TERRORIST")    

    if(ict == 1 && ~played & CT_PLAYED)
    {
        rg_send_audio(players_ct[0], MUSIC_FILE);
        played |= CT_PLAYED;
    }
    if(ite == 1 && ~played & TT_PLAYED)
    {
        rg_send_audio(players_t[0], MUSIC_FILE);
        played |= TT_PLAYED;
    }

    if(played & CT_PLAYED && played & TT_PLAYED)
    {
        DisableHookChain(HookKilled);
    }
}
не проверял :-D
 
Сообщения
316
Реакции
131
Помог
4 раз(а)
Garey, сексуально, то что нужно, fox ты где, проверить нужно на живых людях
 
Сообщения
453
Реакции
255
Помог
9 раз(а)
Сообщения
1,667
Реакции
1,489
Помог
24 раз(а)
malniata, запакованные строки, значения до 255 могут быть
 

fox

Сообщения
173
Реакции
49
Помог
7 раз(а)
alabamaster1337, постараюсь сегодня, после работы проверить
 
Сообщения
7
Реакции
-3
Ребята, кто может сделать данный плагин без поддержки reapi ?
 

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

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