Написание плагинов

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Подскажите пожалуйста, как подсчитать сколько игрок убил соперников в голову. Нужно в конце раунда вывести текст с информацией сколько игрок убил соперников в голову
 

xstage

🏹
Сообщения
726
Реакции
754
Подскажите пожалуйста, как подсчитать сколько игрок убил соперников в голову. Нужно в конце раунда вывести текст с информацией сколько игрок убил соперников в голову
C-подобный:
#include <sdktools>

public OnPluginStart() HookEvent("round_end", Event_RoundEnd);

void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            PrintToChat(i, "Вы убили в голову %d раз(а)", GetEntProp(i, Prop_Send, "m_iNumRoundKillsHeadshots"));
        }
    }
}
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
C-подобный:
#include <sdktools>

public OnPluginStart() HookEvent("round_end", Event_RoundEnd);

void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            PrintToChat(i, "Вы убили в голову %d раз(а)", GetEntProp(i, Prop_Send, "m_iNumRoundKillsHeadshots"));
        }
    }
}
[SM] Exception reported: Property "m_iNumRoundKillsHeadshots" not found (entity 1/player)
Ошибку выдает
 

xstage

🏹
Сообщения
726
Реакции
754
[SM] Exception reported: Property "m_iNumRoundKillsHeadshots" not found (entity 1/player)
Ошибку выдает
C-подобный:
#include <sdktools>

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("round_end", Event_RoundEnd);
}

int g_iCountHeadshoots[MAXPLAYERS+1];

void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    int attacker = GetClientOfUserId(event.GetInt("attacker"));

    if (event.GetBool("headshot") && GetClientTeam(client) != GetClientTeam(attacker))
        g_iCountHeadshoots[attacker]++;
}

void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            PrintToChat(i, "Вы убили в голову %d раз(а)", g_iCountHeadshoots[i]);
            g_iCountHeadshoots[i] = 0;
        }
    }
}

public void OnClientDisconnect(int client)
{
    g_iCountHeadshoots[client] = 0;
}
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
C-подобный:
#include <sdktools>

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("round_end", Event_RoundEnd);
}

int g_iCountHeadshoots[MAXPLAYERS+1];

void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    int attacker = GetClientOfUserId(event.GetInt("attacker"));

    if (event.GetBool("headshot") && GetClientTeam(client) != GetClientTeam(attacker))
        g_iCountHeadshoots[attacker]++;
}

void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            PrintToChat(i, "Вы убили в голову %d раз(а)", g_iCountHeadshoots[i]);
            g_iCountHeadshoots[i] = 0;
        }
    }
}

public void OnClientDisconnect(int client)
{
    g_iCountHeadshoots[client] = 0;
}
Это именно то что я искал, спасибо большое
 

khood

Участник
Сообщения
214
Реакции
51
напишите плагин чттобы при переподключении на сервер и заход за команды ct\t убивало с ефектом tesla
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Подскажите пожалуйста, как получить в конце раунда время, за которое был сыгран раунд.
Пример: начался раунд и закончился за 40 сек, как эти 40 сек получить в конце раунда (Время может быть любое, нужно получить именно то время за которое раунд закончился)
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Подскажите пожалуйста, как получить в конце раунда время, за которое был сыгран раунд.
Пример: начался раунд и закончился за 40 сек, как эти 40 сек получить в конце раунда (Время может быть любое, нужно получить именно то время за которое раунд закончился)
Можно так например
C-подобный:
int g_iTime[2];

public void OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
    HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
}

void Event_RoundStart(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    g_iTime[0] = GetTime();
}

void Event_RoundEnd(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    g_iTime[1] = GetTime();
    PrintToChatAll("Длительность раунда [%i] секунд!", g_iTime[1] - g_iTime[0]);
}


UPD: Изменил название функции, одинаковые были сори
 
Последнее редактирование:

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Можно так например
C-подобный:
int g_iTime[2];

public void OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
    HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy);
}

void Event_RoundStart(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    g_iTime[0] = GetTime();
}

void Event_RoundEnd(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    g_iTime[1] = GetTime();
    PrintToChatAll("Длительность раунда [%i] секунд!", g_iTime[1] - g_iTime[0]);
}


UPD: Изменил название функции, одинаковые были сори
Спасибо большое
 

Artem Chertov

Участник
Сообщения
55
Реакции
9
Здравствуйте!
Мне нужен плагин на подобие !nz (Раунд без прицела), только !deagle (раунд на диглах)
Когда-то видел такое, но найти не смог.

Custom Rounds - не подходит​

 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Всем доброе утро, подскажите пожалуйста как исправить ошибку
[SM] Unable to load plugin "[LR] Knife_Score.smx": Could not find required plugin "levelsranks"
Сам плагин levelsranks стоит и он работает
Sourcemod 1.9
Если как-то можно плагин оптимизировать, то буду рад советам
 

Вложения

  • [LR] Knife_Score.sp
    2 КБ · Просмотры: 9
Последнее редактирование:

Nekro

Терра инкогнита
Сообщения
4,026
Реакции
2,260
Всем доброе утро, подскажите пожалуйста как исправить ошибку
[SM] Unable to load plugin "[LR] Knife_Score.smx": Could not find required plugin "levelsranks"
Сам плагин levelsranks стоит и он работает
Sourcemod 1.9
Если как-то можно плагин оптимизировать, то буду рад советам
Возможно при композиции инклюд одной версии, а на сервере плагин другой
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Возможно при композиции инклюд одной версии, а на сервере плагин другой
Точно нет, я глянул версию ядра что стоит на сервере, скачал именно эту версию и скомпилил плагин с библиотекой именно этой версии. Так же пробовал с библиотекой с самого сервера компилить, ошибка есть
 

Nekro

Терра инкогнита
Сообщения
4,026
Реакции
2,260
Точно нет, я глянул версию ядра что стоит на сервере, скачал именно эту версию и скомпилил плагин с библиотекой именно этой версии. Так же пробовал с библиотекой с самого сервера компилить, ошибка есть
Версии одинаковые, одинаковые, но в одной ошибка, а в другой нет..
Сообщения автоматически склеены:

@7pElllHuK, лучше сделать так:
1. Скачать с гита ласт версию
2. Залить в см на компьютере и скомпилировать
3. Залить компилированные и прочие необходимые файлы на сервер
4. В том же см создавать модули
 
Последнее редактирование:

DarkerZ

Участник
Сообщения
395
Реакции
175
Всем доброе утро, подскажите пожалуйста как исправить ошибку
[SM] Unable to load plugin "[LR] Knife_Score.smx": Could not find required plugin "levelsranks"
Сам плагин levelsranks стоит и он работает
Sourcemod 1.9
Если как-то можно плагин оптимизировать, то буду рад советам
посмотри у инклуда lvlranks секцию public SharedPlugin, название должно точно совпадать с названием на сервер sm plugins list (регистр тоже)
 

7pElllHuK

Участник
Сообщения
1,416
Реакции
465
Версии одинаковые, одинаковые, но в одной ошибка, а в другой нет..
Сообщения автоматически склеены:

@7pElllHuK, лучше сделать так:
1. Скачать с гита ласт версию
2. Залить в см на компьютере и скомпилировать
3. Залить компилированные и прочие необходимые файлы на сервер
4. В том же см создавать модули
1) Ласт версия не работает на 1.9 см
2) Компилил плагин именно на том см, что стоит на сервере
Сообщения автоматически склеены:

посмотри у инклуда lvlranks секцию public SharedPlugin, название должно точно совпадать с названием на сервер sm plugins list (регистр тоже)
Название совпадает, 1 в 1
 
Сверху Снизу