The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Я прекрасно понимаю, что часто названия плагинов можно очень просто забыть. Однако это становится причиной постоянного создания тем рода "помогите найти плагин X".

Так вот, чтобы содержать форум в порядке и чистоте, поступим следующим образом:
  1. В дальнейшем создаваемые темы с "помогите найти плагин" будут удаляться, а авторам — выдаваться предупреждения
  2. Если Вы захотите найти плагин, то сначала воспользуйтесь поиском

Если всё же не удалось найти плагин, заполните следующую форму и ответьте в этой теме:

  • Функции плагина
  • Мод/Игра, которая использует этот плагин

Прежде чем отвечать в теме, воспользуйтесь поиском гугла, который почти всегда находит нужное.

Старые темы будут перемещены в корзину.
 
Последнее редактирование модератором:

NotToday

Участник
Сообщения
79
Реакции
2
@Deniva, @Grey83, Большое спасибо))!!. Есть ещё одна просьба, можете переделать команду? Не sm_health <target> <amount>, а sm_hp <target> <amount>
?
 

Rostu

Добрая душа
Сообщения
986
Реакции
622
@NotToday,
PHP:
RegAdminCmd("sm_health", CMD_Health, ADMFLAG_KICK, "Set health of player");
=>
PHP:
RegAdminCmd("sm_hp", CMD_Health, ADMFLAG_KICK, "Set health of player");
 

NotToday

Участник
Сообщения
79
Реакции
2
@Rostu, спасибо сделал.
 

Вложения

  • hp.sp
    1.2 КБ · Просмотры: 12
  • hp.smx
    4.7 КБ · Просмотры: 6

wayLANder

Где AlmazON?
Сообщения
1,742
Реакции
577
Ищу плагин для кика за запрещенный ник (список ников указываю в конфиге), игра ксго, см 1.8
 

Rostu

Добрая душа
Сообщения
986
Реакции
622
@wayLANder, Мб так? Он ищет символы в нике
PHP:
static char sBlockNick[][] =
{
    ".ru",
    "nick2"
}
public void OnClientPutInServer(int client)
{
    if (IsFakeClient(client) || IsClientAdmin(client))
    {
        return;
    }

    char name[MAX_NAME_LENGTH];
    GetClientName(client, name, MAX_NAME_LENGTH);

    for (int i; i < sizeof sBlockNick; ++i)
        if(StrContains(name, sBlockNick[i], false) != -1)
        {
            KickClient(client,"Смените ник");
            break;
        }
      
}
 
Последнее редактирование:

Rostu

Добрая душа
Сообщения
986
Реакции
622
@Grey83, Можно использовать и без скобок, кроме исключений :) Спасибо @Kr1kuzya
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@wayLANder, может так?
PHP:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_functions>

static const char sBannedName[][] =
{
    ".ru",
    "nick2"
};

bool bUsedNum[66];
int iBannedNamesNum,
    iNumUsedBy[66];

public void OnPluginStart()
{
    iBannedNamesNum = sizeof(sBannedName);
    HookEvent("player_changename", Event_NewName);
}

public void OnClientPostAdminCheck(int client)
{
    if(IsFakeClient(client) || CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC))
        return;

    static char name[32];
    if(GetClientName(client, name, 32) && IsNameBanned(name)) KickClient(client,"Смените ник");
}

public void OnClientDisconnect(int client)
{
    for(int i; i < 67; i++)
    {
        if(bUsedNum[i] && iNumUsedBy[i] == GetClientSerial(client))
        {
            bUsedNum[i] = false;
            iNumUsedBy[i] = 0;
            break;
        }
    }
}

public Action Event_NewName(Event event, const char[] name, bool dontBroadcast)
{
    static int client;
    client = GetClientOfUserId(event.GetInt("userid"));
    if(IsFakeClient(client) || CheckCommandAccess(client, "sm_admin", ADMFLAG_GENERIC))
        return Plugin_Continue;

    static char oldName[32], newName[32];
    event.GetString("newname", newName, 32);
    if(!IsNameBanned(newName))
        return Plugin_Continue;

    event.GetString("oldname", oldName, 32);
    TrimString(oldName);
    if(!oldName[0] || IsNameBanned(oldName))
    {
        for(int i; i < 67; i++)
        {
            if(!bUsedNum[i])
            {
                Format(oldName, 32, "NoName_%i", i);
                bUsedNum[i] = true;
                iNumUsedBy[i] = GetClientSerial(client);
                break;
            }
        }
    }
    SetClientName(client, oldName);

    return Plugin_Handled;
}

stock bool IsNameBanned(const char[] name)
{
    for(int i; i < iBannedNamesNum; i++) if(StrContains(name, sBannedName[i], false) != -1) return true;

    return false;
}
Кикает входящих игроков с ником, содержащим запрещённый текст (поосторожней с этим) и переименовывает в NoName_0 - NoName_66, если игрок меняет во время игры имя на запрещённое и при этом старое имя было пустым или запрещённым.
Если старое было нормальным, то возвращает старое.
Админов, конечно, игнорит.
--- Добавлено позже ---
@Rostu, а где в коде текст функции IsClientAdmin(client)?
 

Вложения

  • check_banned_names.sp
    1.8 КБ · Просмотры: 13
  • check_banned_names.smx
    4.8 КБ · Просмотры: 4
Последнее редактирование:

wayLANder

Где AlmazON?
Сообщения
1,742
Реакции
577
@Grey83, спасибо, позже проверю.
п.с у меня пиратка, так что на лету ник не поменяют)
 

T1x0n

Участник
Сообщения
33
Реакции
1
0EFEDFA00E307C68A013554C028E4A84AF16A061

ребят как называется плагин ? после смерти остается шарик
 

over_trax

Участник
Сообщения
1,451
Реакции
488
Ищу плагин, который выводит логотип в худ игроку (не умершему и спектаторам, а абсолютно всем)
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Ищю модуль для шопа на скины с отдельной покупкой скина для команды (t, ct, можно и spec :3)
 
Сверху Снизу