Изменение плагина

alexandr200121

Участник
Сообщения
41
Реакции
1
Здраствуйте, хотелось бы исправить немного функцию обезоружить. Чтобы она обезоруживала игрока полностью включая нож.
COMMANDS_DISARM:
//------------------------------------------------------------------------------------------------------------------------------------
void Disarm(int iClient)
{
    switch(g_iTarget[iClient])
    {
        case SA_TARGET:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i))
                {
                    int iIndex = g_aUserId[iClient].FindValue(GetClientUserId(i));
                    if (iIndex != -1)
                    {
                        SAMeleeClient(i, 1);
                        SayTranslite(iClient, i, g_iTarget[iClient], TYPE_DISARM, "", false);
                    }
                }
            }
        }
        case SA_TARGET_ALL:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i))
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
        case SA_TARGET_TEAM_CT:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_CT)
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
        case SA_TARGET_TEAM_T:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_T)
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
    }
}
 

Вложения

  • super_admin_v1.5.3 test.7z
    3.6 МБ · Просмотры: 6

Synd1qate

Участник
Сообщения
745
Реакции
259
По коду он и так вроде как удаляет, к тому же вы не правильный участок кода приложили
 

alexandr200121

Участник
Сообщения
41
Реакции
1
@Synd1qate, копировал непосредственно с sp. Файла. При выборе команды, уже проверял, обезоруживает игроков только до ножа
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Здраствуйте, хотелось бы исправить немного функцию обезоружить. Чтобы она обезоруживала игрока полностью включая нож.
COMMANDS_DISARM:
//------------------------------------------------------------------------------------------------------------------------------------
void Disarm(int iClient)
{
    switch(g_iTarget[iClient])
    {
        case SA_TARGET:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i))
                {
                    int iIndex = g_aUserId[iClient].FindValue(GetClientUserId(i));
                    if (iIndex != -1)
                    {
                        SAMeleeClient(i, 1);
                        SayTranslite(iClient, i, g_iTarget[iClient], TYPE_DISARM, "", false);
                    }
                }
            }
        }
        case SA_TARGET_ALL:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i))
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
        case SA_TARGET_TEAM_CT:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_CT)
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
        case SA_TARGET_TEAM_T:
        {
            for (int i = 1; i <= MaxClients; i++)
            {
                if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_T)
                    SAMeleeClient(i, 1);
            }
            SayTranslite(iClient, 0, g_iTarget[iClient], TYPE_DISARM, "", false);
        }
    }
}
SAMeleeClient

C-подобный:
void SAMeleeClient(int iClient, int iNum)
{
    // iNum = 0 все ; 1 остаются ножи ; 2 остаются грены и ножи
    if (!IsClientInGame(iClient))
        return;

    if(g_iGameTyp == GAMETYP_TF2)
    {
        switch(iNum)
        {
            case 0: TF2_RemoveAllWeapons(iClient);
            case 1:
            {
                for (int c = 0; c <= 1; c++)
                    TF2_RemoveWeaponSlot(iClient, c);
                for (int c = 3; c <= 5; c++)
                    TF2_RemoveWeaponSlot(iClient, c);
            }
            case 2:
            {
                for (int c = 0; c <= 1; c++)
                    TF2_RemoveWeaponSlot(iClient, c);
                for (int c = 4; c <= 5; c++)
                    TF2_RemoveWeaponSlot(iClient, c);
            }
        }
    }
    else
    {
        switch(iNum)
        {
            case 0:
            {
                for (int c = 0; c <= 5; c++)
                    RemoveWeaponSlot(iClient, c);
            }
            case 1:
            {
                for (int c = 0; c <= 1; c++)
                    RemoveWeaponSlot(iClient, c);
                for (int c = 3; c <= 5; c++)
                    RemoveWeaponSlot(iClient, c);
            }
            case 2:
            {
                for (int c = 0; c <= 1; c++)
                    RemoveWeaponSlot(iClient, c);
                for (int c = 4; c <= 5; c++)
                    RemoveWeaponSlot(iClient, c);
            }
        }
        if (iNum)
            FakeClientCommand(iClient, "use weapon_knife");
    }
}

Возможно имеет смысл удалить строки

C-подобный:
if (iNum)
            FakeClientCommand(iClient, "use weapon_knife");
 

alexandr200121

Участник
Сообщения
41
Реакции
1
if (iNum)
FakeClientCommand(iClient, "use weapon_knife");
удалил код. Скомпилировал все.
@Nekro,
Сообщения автоматически склеены:

но лучше я думаю другой плагин версия sm_super menu 0.6. Но там единственная проблема. при выборе команды террористов и контр террористов , команда не выполняется.
Сообщения автоматически склеены:

команда почему-то работает только на 1 игрока а не на всех - sm_disarm @t; sm_disarm @ct; sm_disarm @All @Nekro,
 

Вложения

  • Source_Super_Vers_0.6.zip
    25.8 КБ · Просмотры: 1
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Возможно имеет смысл удалить строки
Не имеет: это просто заставляет брать в руки нож, если он у игрока имеется. И всё.
Нужно всего лишь вызывать функцию так: SAMeleeClient(iClient, 0);
С этим параметром будет пытаться забрать вообще всё, что есть (и бомбу тоже).
 
Сверху Снизу