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

Haseek

йфя
Сообщения
472
Реакции
79
Вот так я проверял вроде работает
C-подобный:
public void OnPluginStart()
{
    HookEvent("player_team", EventChangeTeam);
}

public void EventChangeTeam(Event hEvent, const char[] sEvent, bool db)
{
    if(GetUserFlagBits(GetClientOfUserId(hEvent.GetInt("userid"))))
    {
        ServerCommand("sv_vote_issue_kick_allowed 0");
    }
}

public void OnClientDisconnect(int client)
{
    int iAdminCount;
   
    for(int i = 1; i < MaxClients; i++)
    {
        if(IsClientInGame(i) && i != client && !IsFakeClient(i))
        {
            if(GetUserFlagBits(i))
                iAdminCount++;
        }
    }
   
    if(!iAdminCount)
    {
        ServerCommand("sv_vote_issue_kick_allowed 1");
        iAdminCount = 0;
    }
   
    else
        ServerCommand("sv_vote_issue_kick_allowed 0");
}
Вроде работает, пару раз тестил. Спасибо
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
C-подобный:
    if(!iAdminCount)
    {
        ...
        iAdminCount = 0;
    }
Я чего-то не знаю? 🤔
Я написал бы вот так:
C-подобный:
bool
    bAdmin[MAXPLAYERS+1];
int
    iAdmins;

public void OnClientPostAdminCheck(int client)
{
    if(!client || IsFakeClient(client)
    // нас интересуют только те, кто имеет право кикнуть или создать голосование об этом
    || !(bAdmin[client] = !!(GetUserFlagBits(client) & ADMFLAG_KICK|ADMFLAG_VOTE|ADMFLAG_RCON|ADMFLAG_ROOT)))
        return;

    if(!iAdmins) ServerCommand("sv_vote_issue_kick_allowed 0");
    iAdmins++;
}

public void OnClientDisconnect(int client)
{
    if(!bAdmin[client]) return;

    bAdmin[client] = false;
    if(iAdmins == 1) ServerCommand("sv_vote_issue_kick_allowed 1");
    iAdmins--;
}
 

🟡differend🟢

Что хочу - то и делаю
Сообщения
975
Реакции
661
Всем хай, можете пожалуйста добавить один момент, мне нужно запретить стороне кт decoy, остальные гранаты запрещать не нужно👀
 

Вложения

  • remove_grenades.sp
    1.5 КБ · Просмотры: 11
Последнее редактирование:

Svyatoy

Участник
Сообщения
335
Реакции
137
Всем хай, можете пожалуйста добавить один момент, мне нужно запретить стороне кт decoy, остальные гранаты запрещать не нужно👀
Я не тестировал, но думаю работать будет
Пробуй!

P.S. Если что, он только блочит КТ Decoy и всё. Если не так понял - пиши :)
 

Вложения

  • remove_grenades.sp
    1.1 КБ · Просмотры: 10
  • remove_grenades.smx
    3.2 КБ · Просмотры: 2

🟡differend🟢

Что хочу - то и делаю
Сообщения
975
Реакции
661
Я не тестировал, но думаю работать будет
Пробуй!

P.S. Если что, он только блочит КТ Decoy и всё. Если не так понял - пиши :)
Мне нужно было добавить блокировку дикоя за кт, мне просто остальные функции плагина также нужны)
 

Svyatoy

Участник
Сообщения
335
Реакции
137
Мне нужно было добавить блокировку дикоя за кт, мне просто остальные функции плагина также нужны)
Плагин запрещет покупать любые гранаты всем. Так и оставить?
Или сделать запрет покупки любых гранат для Т и запрет покупки только Decoy для КТ?
 

🟡differend🟢

Что хочу - то и делаю
Сообщения
975
Реакции
661
Плагин запрещет покупать любые гранаты всем. Так и оставить?
Или сделать запрет покупки любых гранат для Т и запрет покупки только Decoy для КТ?
Да, нужно сделать так, чтобы кт сторона не могла использовать дикой и оставить все функции за т.
 

Svyatoy

Участник
Сообщения
335
Реакции
137

Вложения

  • remove_grenades.smx
    3.4 КБ · Просмотры: 2
  • remove_grenades.sp
    2 КБ · Просмотры: 2

WodiX

Участник
Сообщения
202
Реакции
29
Ребят, кто может написать бесметрие для команды Т?! Очень нужно
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
0serg0, много раз уже писали.
В теме должно быть. Просто воспользуйся поиском.
 

Virus_OzZz

Участник
Сообщения
163
Реакции
42
Плагин Seasons
1. Команда для покупки "билета" на сезон, который длится 3 месяца. Покупка рублями или кредитами шопа (настраивается)
2. Контент, доступный только для купивших билет: скины в шопе, предметы в шопе, акции и скидки для них на сайте (в лк и шопе)
3. Билет действует только определенное время (3 месяца), после которого сгорает.
4. Система выполнения заданий, или баттл-пасс, который сгорает вместе с билетом.
 

lesha

Участник
Сообщения
84
Реакции
7
Добрый вечер!
Нужен плагин, блокирующий переключение камеры (переключение на вид от третьего лица или полёт камеры) при наблюдении за игроком как в спектрах, так и наблюдая после смерти. Должен быть доступен только вид от первого лица, а также наблюдение как за своими тимейтами, так и за противоположной командой. Спасибо!
 

D1fox

Просто люблю чай
Сообщения
902
Реакции
212
Здравствуйте был бы очень признателен если бы работа выполнилась как можно скорее:)
1. Плагин писать не нужно, по факту нужно дописать код для уже готово плагина
2. Скачал я конект переписал его: (убрал лишнее, добавил что надо и тд) но не получается сделать последнего надо что бы когда конектился новый игрок, который еще не заходил на сервер было так, скриншот ниже и информация которая будет писать типо (=========== НОВЫЙ ИГРОК ===========) бралась тоже из phares ниже все приложил, надеюсь понятно.
 

Вложения

  • connect.sp
    2.5 КБ · Просмотры: 20
  • 1.PNG
    1.PNG
    855 байт · Просмотры: 80
  • connect.phrases.txt
    1.3 КБ · Просмотры: 15

Denisad

Участник
Сообщения
165
Реакции
7
Эхх, был бы плагин, который блокирует урон по своим от взрыва бочки, а то на спавне КТ стоит бочка и они её взрывают при спавне и тем самым убивая тиммейтов -_-
 

Александр33333

Участник
Сообщения
46
Реакции
1
Привет всем кто нибудь сможет мне помочь сделать плагин Game Events
Как на картинке
сразу говорю картинка с сервера css 34
 

Вложения

  • Безымянный.png
    Безымянный.png
    24.6 КБ · Просмотры: 84
  • sm_ca.sp
    2.4 КБ · Просмотры: 10

babka68

Участник
Сообщения
2,124
Реакции
956
Привет всем кто нибудь сможет мне помочь сделать плагин Game Events
Как на картинке
сразу говорю картинка с сервера css 34
не совсем ясна суть,что нужно сделать

C-подобный:
#include <sourcemod>

char teams[3][] =
{
    "Наблюдателей", "Террористов", "Контров"
}

public Plugin myinfo =
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    description = "",
    version = "1.0",
    url = "css32.ru"
}
public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}

public Action event_PlayerTeam(Handle event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"))
    if (!dontBroadcast && !GetEventBool(event, "disconnect") && !GetEventBool(event, "silent") && IsClientConnected(client))
    {
        SetEventBroadcast(event, true);
        PrintToChatAll("\x03● \x04Игрок \x03%N \x04зашёл за \x03%s \x04✔", client, teams[GetEventInt(event, "team") - 1]);
    }
}
public Action event_PlayerConn(Handle event, const char[] name, bool dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    char rawmsg[255];
    char rawadmmsg[255];
    char steam[24];
    char nick[48];
    char ip[16];
    char reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name, "player_connect"))
    {
        int client = GetClientOfUserId(GetEventInt(event, "userid"))
        if (client < 1)return;
        GetEventString(event, "reason", reason, sizeof(reason));
        GetClientIP(client, ip, sizeof(ip)); // В player_disconnect нет address
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawadmmsg, sizeof(rawadmmsg), "\x03✘ \x04Игрок \x03%s \x04покинул сервер \x03✔", nick);
        Format(rawmsg, sizeof(rawmsg), "\x03✘ \x04Игрок \x03%s \x04покинул сервер \x03✔", nick, reason);
    }
    else
    {
        GetEventString(event, "address", ip, sizeof(ip));
        SplitString(ip, ":", ip, sizeof(ip));
        Format(rawadmmsg, sizeof(rawadmmsg), "\x03ツ \x04Игрок \x03%s \x04подключается \x03✔", nick);
        Format(rawmsg, sizeof(rawmsg), "\x03ツ \x04Игрок \x03%s \x04подключается \x03✔", nick);
    }
    
    for (new i = 1; i <= MaxClients; i++)
        if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
            if (GetUserFlagBits(i))
                PrintToChat(i, "%s", rawadmmsg);
            else
                PrintToChat(i, "%s", rawmsg);
}
 
Последнее редактирование:

Александр33333

Участник
Сообщения
46
Реакции
1
Я хотел чтобы были такие же цвета как на сомой картинке
не совсем ясна суть,что нужно сделать

C-подобный:
#include <sourcemod>

char teams[3][] =
{
    "Наблюдателей", "Террористов", "Контров"
}

public Plugin myinfo =
{
    name = "[KDLP] Game Events",
    author = "KorDen",
    description = "",
    version = "1.0",
    url = "css32.ru"
}
public OnPluginStart()
{
    HookEvent("player_disconnect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_connect", event_PlayerConn, EventHookMode_Pre);
    HookEvent("player_team", event_PlayerTeam, EventHookMode_Pre);
}

public Action event_PlayerTeam(Handle event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"))
    if (!dontBroadcast && !GetEventBool(event, "disconnect") && !GetEventBool(event, "silent") && IsClientConnected(client))
    {
        SetEventBroadcast(event, true);
        PrintToChatAll("\x03● \x04Игрок \x03%N \x04зашёл за \x03%s \x04✔", client, teams[GetEventInt(event, "team") - 1]);
    }
}
public Action event_PlayerConn(Handle event, const char[] name, bool dontBroadcast)
{
    if (!dontBroadcast)
        SetEventBroadcast(event, true);
    char rawmsg[255];
    char rawadmmsg[255];
    char steam[24];
    char nick[48];
    char ip[16];
    char reason[192];
    GetEventString(event, "networkid", steam, sizeof(steam));
    GetEventString(event, "name", nick, sizeof(nick));
    if (strcmp(name, "player_connect"))
    {
        int client = GetClientOfUserId(GetEventInt(event, "userid"))
        if (client < 1)return;
        GetEventString(event, "reason", reason, sizeof(reason));
        GetClientIP(client, ip, sizeof(ip)); // В player_disconnect нет address
        ReplaceString(reason, sizeof(reason), "\n", " ");
        Format(rawadmmsg, sizeof(rawadmmsg), "\x03✘ \x04Игрок \x03%s \x04покинул сервер \x03✔", nick);
        Format(rawmsg, sizeof(rawmsg), "\x03✘ \x04Игрок \x03%s \x04покинул сервер \x03✔", nick, reason);
    }
    else
    {
        GetEventString(event, "address", ip, sizeof(ip));
        SplitString(ip, ":", ip, sizeof(ip));
        Format(rawadmmsg, sizeof(rawadmmsg), "\x03ツ \x04Игрок \x03%s \x04подключается \x03✔", nick);
        Format(rawmsg, sizeof(rawmsg), "\x03ツ \x04Игрок \x03%s \x04подключается \x03✔", nick);
    }
   
    for (new i = 1; i <= MaxClients; i++)
        if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i))
            if (GetUserFlagBits(i))
                PrintToChat(i, "%s", rawadmmsg);
            else
                PrintToChat(i, "%s", rawmsg);
}
я хотел бы чтобы были цвета как на самой картинке
 
Сверху Снизу