KILL > 1

Статус
В этой теме нельзя размещать новые ответы.

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Как правильно реализовать такое?
DoubleKill - Двойное убийство — Даётся за убийство 2 врагов за 1.5 секунды.
TripleKill - Тройное убийство — Даётся за убийство трех врагов за 2,5 секунды.
QuadKill - Четверное убийство — Даётся за убийство 4 врагов за 4.5 секунды.
DoubleHeadshot - Двойное убийство в голову — Даётся за убийство 2 человек в голову за 1.5 секунды.
Это из игры Contract Wars

Пример с DoubleKill но как я понял он не правильный. инфы в гугле по такому я больше не нашёл да и плагинов подобных тоже
Код:
new Float:fGameTime = get_gametime()
if (g_fLastKillTimeStamp[Killer] > fGameTime)
{
    // Code...
}
g_fLastKillTimeStamp[Killer] = fGameTime + 0.1
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
741
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
Анатолий, плагины есть. Да и в кс немного не так считаются мультикиллы.
 
Последнее редактирование:

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
963
Симпатии
685
Пол
Мужской
мультикиллы идут в одно тоже время (gametime будет ровным) так что сравнение lastkill с gametime бесполезный. самый простой способ это временный счетчик
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
963
Симпатии
685
Пол
Мужской
Анатолий,
C++:
new Float:g_flLastKill[MAX_CLIENTS + 1]
new g_iCountKill[MAX_CLIENTS + 1]

public CBasePlayer_Killed(const pPlayer, const pevAttacker, const iGib)
{
    if (!is_user_connected(pevAttacker))
        return

    new Float:flTime = get_gametime()

    static const szText[][] = { "", "DOUBLE", "TRIPLE", "QUAD" }

    if (g_iCountKill[pevAttacker] >= 3 || (flTime - g_flLastKill[pevAttacker]) > 4.5) // обнулить после "QUAD" или 4.5 сек
    {
        g_iCountKill[pevAttacker] = 0
    }
    else
    {
        g_iCountKill[pevAttacker]++
    }

    if (g_iCountKill[pevAttacker] >= 1)
    {
        client_print(pevAttacker, print_chat, "%s kill", szText[g_iCountKill[pevAttacker]])   
    }

    g_flLastKill[pevAttacker] = flTime // время посл. килла
}
[DOUBLEPOST=1567933897][/DOUBLEPOST]
new Float:g_flLastKill[MAX_CLIENTS + 1] new g_iCountKill[MAX_CLIENTS + 1]
я думаю можно и статик внутри функции вместо глобала
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
685
Симпатии
195
Пол
Мужской
ВКонтакте
e1337ace
Анатолий,
C++:
new Float:g_flLastKill[MAX_CLIENTS + 1]
new g_iCountKill[MAX_CLIENTS + 1]

public CBasePlayer_Killed(const pPlayer, const pevAttacker, const iGib)
{
    if (!is_user_connected(pevAttacker))
        return

    new Float:flTime = get_gametime()

    static const szText[][] = { "", "DOUBLE", "TRIPLE", "QUAD" }

    if (g_iCountKill[pevAttacker] >= 3 || (flTime - g_flLastKill[pevAttacker]) > 4.5) // обнулить после "QUAD" или 4.5 сек
    {
        g_iCountKill[pevAttacker] = 0
    }
    else
    {
        g_iCountKill[pevAttacker]++
    }

    if (g_iCountKill[pevAttacker] >= 1)
    {
        client_print(pevAttacker, print_chat, "%s kill", szText[g_iCountKill[pevAttacker]])  
    }

    g_flLastKill[pevAttacker] = flTime // время посл. килла
}
[DOUBLEPOST=1567933897][/DOUBLEPOST]
я думаю можно и статик внутри функции вместо глобала
Спасибо) все работает.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу