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

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
На этой стадии SteamID достоверно неизвестен, нужно позже хотя бы.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
можешь сделать задержку небольшую для проверки флага?
Чёт меня немножк понесло. Попробовал крч через OnClientPostAdminCheck сделать. Игрок успеет подключиться, но его кикнет.
Не знаю, сработает ли эта версия, но попробовать стоит. Сам не тестировал.

P.s.: если используешь не GeoIP2, а обычный GeoIP, лучше перекомпилируй плагин со старой инклудой.

UPD: А ещё, оказывается, есть это - Country Filter 2nd Edition - AlliedModders
 

Вложения

  • CountryFilter 2.0.zip
    27 КБ · Просмотры: 10
Последнее редактирование:

dr lex

Участник
Сообщения
22
Реакции
5
C-подобный:
#pragma semicolon 1
#include <sourcemod>
#include <geoip>
#pragma newdecls required

ConVar cf_mode;
ConVar cf_countries;
ConVar cf_reject_msg;
ConVar cf_connect_msg;

public Plugin myinfo =
{
    name = "Country Filter",
    author = "Knagg0, babka68",
    description = "Этот плагин позволяет вам запретить игрокам из определенных стран подключаться к вашему серверу.",
    version = "1.2",
    url = "www.mfzb.de, tmb-css.ru"
};

public void OnPluginStart()
{
    cf_mode = CreateConVar("cf_mode", "1", "1 = разрешить только cf_countries, 2 = Разрешить все, кроме cf_countries");
    cf_countries = CreateConVar("cf_countries", "", "Список стран Пример: EN US DE NL RU");
    cf_reject_msg = CreateConVar("cf_reject_msg", "Ваша страна %s не разрешена на этом сервере", "Сообщение, показываемое игроку, которое было отклонено");
    cf_connect_msg = CreateConVar("cf_connect_msg", "%s разрешено подключение", "Сообщение, которое отображается всем игрокам, когда игрок подключается");
}

public bool OnClientConnect(int client, char[] rejectmsg, int maxlen)
{
    if (!IsFakeClient(client))
    {
        char ip[15], code2[3], country[45];
        
        GetClientIP(client, ip, sizeof(ip));
        GeoipCode2(ip, code2);
        GeoipCountry(ip, country, sizeof(country));
        
        if (Reject(code2))
        {
            AdminId AId = GetUserAdmin(client);
            int flags = GetAdminFlags(AId, Access_Effective);
            if (flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT)
            {
                GetConVarString(cf_reject_msg, rejectmsg, maxlen);
                Format(rejectmsg, maxlen, rejectmsg, country);
                return false;
            }
        }
        
        char name[32], msg[255];
        
        GetClientName(client, name, 32);
        
        GetConVarString(cf_connect_msg, msg, 255);
        Format(msg, 255, msg, name, country);
        
        PrintToChatAll(msg);
    }
    return true;
}

public bool Reject(const char[] code2)
{
    if (StrEqual("er", code2))
    {
        return false;
    }
    
    char str[255];
    char arr[100][3];
    
    GetConVarString(cf_countries, str, 255);
    
    int total = ExplodeString(str, " ", arr, 100, 3);
    if (total == 0)
    {
        strcopy(arr[total++], 3, str);
    }
    
    if (GetConVarInt(cf_mode) == 2)
    {
        for (int i = 0; i < total; i++)
        {
            if (StrEqual(arr[i], code2))
            {
                return true;
            }
        }
    }
    else
    {
        bool reject = true;
        
        for (int i = 0; i < total; i++)
        {
            if (StrEqual(arr[i], code2))
                reject = false;
        }
        
        return reject;
    }
    return false;
}
 

Туник

Участник
Сообщения
1,281
Реакции
263
Чёт меня немножк понесло. Попробовал крч через OnClientPostAdminCheck сделать. Игрок успеет подключиться, но его кикнет.
Не знаю, сработает ли эта версия, но попробовать стоит. Сам не тестировал.

P.s.: если используешь не GeoIP2, а обычный GeoIP, лучше перекомпилируй плагин со старой инклудой.

UPD: А ещё, оказывается, есть это - Country Filter 2nd Edition - AlliedModders
L 02/11/2021 - 21:26:02: [SM] Warning(s) encountered in translation file "CountryFilter.phrases.txt"
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 23.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 29.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 35.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 41.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 51.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 57.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 63.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 69.
Сообщения автоматически склеены:

Хотя всё залил
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
L 02/11/2021 - 21:26:02: [SM] Warning(s) encountered in translation file "CountryFilter.phrases.txt"
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 23.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 29.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 35.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 41.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 51.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 57.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 63.
L 02/11/2021 - 21:26:02: [SM] Invalid token ' ' in #format property on line 69.
Сообщения автоматически склеены:

Хотя всё залил
 

Вложения

  • CountryFilter.phrases.txt
    3.7 КБ · Просмотры: 5

Туник

Участник
Сообщения
1,281
Реакции
263
L 02/11/2021 - 22:02:20: [SM] Warning(s) encountered in translation file "CountryFilter.phrases.txt"
L 02/11/2021 - 22:02:20: [SM] Invalid token ' ' in #format property on line 29.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
L 02/11/2021 - 22:02:20: [SM] Warning(s) encountered in translation file "CountryFilter.phrases.txt"
L 02/11/2021 - 22:02:20: [SM] Invalid token ' ' in #format property on line 29.
Д блин.. не доглядел снова. Давно б сам просто лишние пробелы убрал
 

Вложения

  • CountryFilter.phrases.txt
    3.7 КБ · Просмотры: 13

Туник

Участник
Сообщения
1,281
Реакции
263
Я их уже поправил)) всё вроде работает норм)админ зашел другие войти не могут, спасибо тебе человеческое за помощь!!!
 

skaeN

Участник
Сообщения
204
Реакции
108
1. Плагин записи данных в бд
2. Плагин, который бы записывал данные в определенную таблицу (например тот же lr, например: lvl_base_time) данные о том, сколько игрок наиграл времени с момента запуска плагина
зы: без вывода куда-то, просто запись в бд
 

NickFox

Обычный лисюк
Сообщения
138
Реакции
148
1. Плагин записи данных в бд
2. Плагин, который бы записывал данные в определенную таблицу (например тот же lr, например: lvl_base_time) данные о том, сколько игрок наиграл времени с момента запуска плагина
зы: без вывода куда-то, просто запись в бд
LR и так записывает это время, разве нет?
 

skaeN

Участник
Сообщения
204
Реакции
108
LR и так записывает это время, разве нет?
ЛР записывает наигранное время с момента добавлена плагина в активные.
А мне нужно не затрагивая и не удаляя эти данные - записать в новую колонку или таблицу. Чтобы узнать, например: сколько опр. игрок наиграл часов за неделю
 

Голос_в_ночи

Племяш Габена
Сообщения
333
Реакции
31
Нужен плагин, который при нажатии на ПКМ будет мгновенно перезаряжать обойму (нужно для AWP сервера) CSS OB. SM 1.10
 

sseah

Участник
Сообщения
23
Реакции
13
ЛР записывает наигранное время с момента добавлена плагина в активные.
А мне нужно не затрагивая и не удаляя эти данные - записать в новую колонку или таблицу. Чтобы узнать, например: сколько опр. игрок наиграл часов за неделю
Видел такое, но только в продаже и для админов AdminReward. Как вариант, можно попробовать сделать подсчет времени для всех, а не только админов и убрать бонусы.
В ресурсах есть общее время (за кт,т,спеки и топ) Most Active / Time played.
 

samec051

Участник
Сообщения
26
Реакции
3
Проверьте еще, отсылает ли хоть что-то в телегу
C-подобный:
#include <ripext>
#include <telegram>

public void OnPluginStart()
{
    Telegram_SendMessage("Проверка запуска", "markdown");
}
Столкнулся с такой же проблемой:C Выпавший дроп в лог пишет, а в телеграм не доходит. Хотя если добавить отправку тестового сообщения в телеграм, как в вашем примере, то это сообщение доходит. Есть варианты как это побороть?
 
Сверху Снизу