Как отловить убийство с ножа

xstage

🏹
Сообщения
726
Реакции
754
Здравствуйте. Решил написать что-то на подобии этого плагина [CS: Source] knife Ownd
Только столкнулся с проблемой: если css нож один, то в cs go их множество. И если пытаться отловить knife, то плагин будет работать только, если его убьет тешник с дефолтным ножом.

Код:
#include <sourcemod>
#include <sdktools>

new Handle:g_hSound = INVALID_HANDLE;

new String:path[256];

public Plugin myinfo =
{
    name = "KnifeKill",
    author = "xstage",
    description = "",
    version = "1.0.0",
    url = ""
};

public OnPluginStart()
{
    HookEvent("player_death", player_death);
    g_hSound = CreateConVar("jsa_sound", "muz_sound/test.mp3", "Укажите путь до звукового файла");
}

public OnMapStart()
{
    GetConVarString(g_hSound, path, sizeof(path));

    decl String:buffer[256];
    Format(buffer, sizeof(buffer), "sound/%s", path);
    AddFileToDownloadsTable(buffer);

    PrecacheSound(path);
}

public Action player_death(Event hEvent, const char[] shEvent, bool dontBroadcast)
{
    char gWeapon[64];
    hEvent.GetString("weapon", gWeapon, sizeof(gWeapon));
    int iClient = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
    int xClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if (StrEqual(gWeapon, "knife"))
    {
        if(iClient)
        {
            decl String:name[MAX_NAME_LENGTH];
            decl String:attaker[MAX_NAME_LENGTH];
            GetClientName(xClient, name, MAX_NAME_LENGTH);
            GetClientName(iClient, attaker, MAX_NAME_LENGTH);

            ClientCommand(iClient, "playgamesound %s", path);
            PrintToChatAll("\x01\x01Игрок - \x07%s \x01убил ножом игрока - \x07%s", attaker, name);
           
        }
    }
    return Plugin_Changed;
}
 
Последнее редактирование:

dvernoff

Добрая душа
Сообщения
638
Реакции
591
Здравствуйте. Решил написать что-то на подобии этого плагина [CS: Source] knife Ownd
Только столкнулся с проблемой: если css нож один, то в cs go их множество. И если пытаться отловить knife, то плагин будет работать только, если его убьет тешник с дефолтным ножом.

Код:
#include <sourcemod>
#include <sdktools>

new Handle:g_hSound = INVALID_HANDLE;

new String:path[256];

public Plugin myinfo =
{
    name = "KnifeKill",
    author = "xstage",
    description = "",
    version = "1.0.0",
    url = ""
};

public OnPluginStart()
{
    HookEvent("player_death", player_death);
    g_hSound = CreateConVar("jsa_sound", "muz_sound/test.mp3", "Укажите путь до звукового файла");
}

public OnMapStart()
{
    GetConVarString(g_hSound, path, sizeof(path));

    decl String:buffer[256];
    Format(buffer, sizeof(buffer), "sound/%s", path);
    AddFileToDownloadsTable(buffer);

    PrecacheSound(path);
}

public Action player_death(Event hEvent, const char[] shEvent, bool dontBroadcast)
{
    char gWeapon[64];
    hEvent.GetString("weapon", gWeapon, sizeof(gWeapon));
    int iClient = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
    int xClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if (StrEqual(gWeapon, "knife"))
    {
        if(iClient)
        {
            decl String:name[MAX_NAME_LENGTH];
            decl String:attaker[MAX_NAME_LENGTH];
            GetClientName(xClient, name, MAX_NAME_LENGTH);
            GetClientName(iClient, attaker, MAX_NAME_LENGTH);

            ClientCommand(iClient, "playgamesound %s", path);
            PrintToChatAll("\x01\x01Игрок - \x07%s \x01убил ножом игрока - \x07%s", attaker, name);
          
        }
    }
    return Plugin_Changed;
}
Как решил проблему то?)
 
Сверху Снизу