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

Туник

Участник
Сообщения
1,281
Реакции
263
Как правильно вписать проверку на вип?
Этот плагин защищает админов от кик-бан, хочу еще проверку на вип сделать.
PHP:
#pragma semicolon 1

#include <sourcemod>

public Plugin:myinfo =
{
    name = "Basic Kickvote Immunity",
    author = "psychoninc",
    description = "Causes player kick votes to obey SM immunity levels",
    version = "1.2",
    url = "http://nicholashastings.com"
};

stock min(a, b) { return (((a) < (b)) ? (a) : (b)); }

public OnPluginStart()
{
    AddCommandListener(callvote, "callvote");
}

public Action:callvote(client, const String:cmd[], argc)
{
    // kick vote from client, "callvote %s \"%d %s\"\n;"
    if (argc < 2)
        return Plugin_Handled;

    decl String:votereason[16];
    GetCmdArg(1, votereason, sizeof(votereason));

    if (!!strcmp(votereason, "kick", false))
        return Plugin_Handled;

    decl String:therest[256];
    GetCmdArg(2, therest, sizeof(therest));

    new userid = 0;
    new spacepos = FindCharInString(therest, ' ');
    if (spacepos > -1)
    {
        decl String:temp[12];
        strcopy(temp, min(spacepos+1, sizeof(temp)), therest);
        userid = StringToInt(temp);
    }
    else
    {
        userid = StringToInt(therest);
    }

    new target = GetClientOfUserId(userid);
    if (target < 1)
        return Plugin_Continue;

    new AdminId:clientAdmin = GetUserAdmin(client);
    new AdminId:targetAdmin = GetUserAdmin(target);

    if (clientAdmin == INVALID_ADMIN_ID && targetAdmin == INVALID_ADMIN_ID)
        return Plugin_Continue;

    if (CanAdminTarget(clientAdmin, targetAdmin))
        return Plugin_Continue;

    PrintToChat(client, "\x07ERROR\x01: Вы не можете забанить - \x04\"%N\"", target);

    return Plugin_Handled;
}
 

HAIRAKE

Участник
Сообщения
36
Реакции
4
сделайте так чтобы было видно в чате кто вырубил войс и кто включил =)
 

Вложения

  • voice.sp
    2 КБ · Просмотры: 11

Yurka_Bear

Участник
Сообщения
61
Реакции
4
Здравствуйте. Всех с наступающим! Кому не сложно, нужен простенький плагин для гангейма:
Когда игрок достигает последнего уровня( всего их допустим 26) , Появляется сообщение-подсказка в хинте, для всех.
Пример - ( Игрок " его ник" достигает последнего уровня!) Игра CSS 34, Sourcemod 1.6.3
Сам плагин гг приложу
 

Вложения

  • gungame.sp
    17.5 КБ · Просмотры: 5

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Здравствуйте. Всех с наступающим! Кому не сложно, нужен простенький плагин для гангейма:
Когда игрок достигает последнего уровня( всего их допустим 26) , Появляется сообщение-подсказка в хинте, для всех.
Пример - ( Игрок " его ник" достигает последнего уровня!) Игра CSS 34, Sourcemod 1.6.3
Сам плагин гг приложу
А разве в стандарте нет такого оповещения?
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
А разве в стандарте нет такого оповещения?
Нет, там есть оповещение кто вырывается вперед и становится лидером. А мне нужно конкретно, чтоб всех оповещало о том, что лидер достигает последнего уровня.
 

HAIRAKE

Участник
Сообщения
36
Реакции
4
как тут поменять тег SM? только не нужно кидать сам плагин на изменение всех sm префиксов мне нужно отдельно игра css
 

Вложения

  • sbpp_main.sp
    74.9 КБ · Просмотры: 11

0-BuTaJIuK-0

Участник
Сообщения
235
Реакции
57
как тут поменять тег SM? только не нужно кидать сам плагин на изменение всех sm префиксов мне нужно отдельно игра css
Это плагин sourcecbans
1671701840618.png
 

₮αй₮оβый

Участник
Сообщения
317
Реакции
35
как тут поменять тег SM? только не нужно кидать сам плагин на изменение всех sm префиксов мне нужно отдельно игра css
А префикс [sm] в данном случае разве не от стандартного soucemoda идет?
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
как тут поменять тег SM? только не нужно кидать сам плагин на изменение всех sm префиксов мне нужно отдельно игра css
взял бы хотя бы приложил скрины или указал в каком именно тексте выводится SM, прежде чем что-то просить
 

HAIRAKE

Участник
Сообщения
36
Реакции
4
взял бы хотя бы приложил скрины или указал в каком именно тексте выводится SM, прежде чем что-то просить
если я сказал что другой плагин может окрашивать этот см значит какой там см стоит?
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
Не подскажите как убрать подсказки в хинте для игроков? Допустим у меня на карте FFA режим. И когда кто то убивает своего, ему пишет, что "осторожно, убийство своих недопустимо" Можно как то это убрать? Может для этого серверная команда есть. Или все же плагин нужно писать? Игра все та же CSS 34, SM 1.6.3
dm_resistance0005.jpg
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
Не подскажите как убрать подсказки в хинте для игроков? Допустим у меня на карте FFA режим. И когда кто то убивает своего, ему пишет, что "осторожно, убийство своих недопустимо" Можно как то это убрать? Может для этого серверная команда есть. Или все же плагин нужно писать? Игра все та же CSS 34, SM 1.6.3
попробуйте

C++:
/* original:
 * https://github.com/zadroot/DeathMatch/blob/master/3.2/addons/sourcemod/scripting/dod_deathmatch.sp
 */
public OnPluginStart()
{
        HookUserMessage(GetUserMessageId("HintText"), Hook_HintText, true);
}

/* Hook_HintText()
 *
 * Block team-attack "tutorial" messages from being shown to players.
 * --------------------------------------------------------------------- */
public Action:Hook_HintText(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
	static const String:hintMessages[][] =
	{
		"#Hint_spotted_a_friend",
		"#Hint_careful_around_teammates",
		"#Hint_try_not_to_injure_teammates"
	};

	decl String:message[64];
	BfReadString(bf, message, sizeof(message));

	for (new i = 0; i < sizeof(hintMessages); i++)
	{
		if (StrEqual(message, hintMessages[i]))
		{
			return Plugin_Handled;
		}
	}

	return Plugin_Continue;
}
 

Yurka_Bear

Участник
Сообщения
61
Реакции
4
попробуйте

C++:
/* original:
 * https://github.com/zadroot/DeathMatch/blob/master/3.2/addons/sourcemod/scripting/dod_deathmatch.sp
 */
public OnPluginStart()
{
        HookUserMessage(GetUserMessageId("HintText"), Hook_HintText, true);
}

/* Hook_HintText()
 *
 * Block team-attack "tutorial" messages from being shown to players.
 * --------------------------------------------------------------------- */
public Action:Hook_HintText(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
    static const String:hintMessages[][] =
    {
        "#Hint_spotted_a_friend",
        "#Hint_careful_around_teammates",
        "#Hint_try_not_to_injure_teammates"
    };

    decl String:message[64];
    BfReadString(bf, message, sizeof(message));

    for (new i = 0; i < sizeof(hintMessages); i++)
    {
        if (StrEqual(message, hintMessages[i]))
        {
            return Plugin_Handled;
        }
    }

    return Plugin_Continue;
}
Нет, подсказка так же появляется(((. Плагин запустился, ошибки в логах отсутствуют.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@shantik2012, скинь сюда архивом txt из папки .../cstrike/resource/ с именами *_russian.txt. Скорей всего сообщения в массиве не те указаны.
Сообщения автоматически склеены:

@shantik2012, попробуй вот так:
C-подобный:
public OnPluginStart()
{
    HookUserMessage(GetUserMessageId("HintText"), Hook_HintText, true);
}

public Action:Hook_HintText(UserMsg:msg_id, Handle:msg, const players[], playersNum, bool:reliable, bool:init)
{
    decl String:sBuffer[52];
    BfReadString(msg, sBuffer, sizeof(sBuffer));
    return StrContains(sBuffer, "Hint_careful_around_teammates", false) != -1 ? Plugin_Handled : Plugin_Continue;
}
 
Последнее редактирование:

Yurka_Bear

Участник
Сообщения
61
Реакции
4
@shantik2012, скинь сюда архивом txt из папки .../cstrike/resource/ с именами *_russian.txt. Скорей всего сообщения в массиве не те указаны.
Сообщения автоматически склеены:

@shantik2012, попробуй вот так:
C-подобный:
public OnPluginStart()
{
    HookUserMessage(GetUserMessageId("HintText"), Hook_HintText, true);
}

public Action:Hook_HintText(UserMsg:msg_id, Handle:msg, const players[], playersNum, bool:reliable, bool:init)
{
    decl String:sBuffer[52];
    BfReadString(msg, sBuffer, sizeof(sBuffer));
    return StrContains(sBuffer, "Hint_careful_around_teammates", false) != -1 ? Plugin_Handled : Plugin_Continue;
}
 

Вложения

  • cstrike_russian.txt
    374.9 КБ · Просмотры: 19

Yurka_Bear

Участник
Сообщения
61
Реакции
4
@shantik2012, вроде должен предложенный мной код работать.
Работает! Спасибо. Только теперь небольшая проблемка: когда своего убиваешь, на долю секунды появляется сообщение по центру экрана. "вы убили товарища по команде"
 
Сверху Снизу