Вопросы

Новичок

Как сделать табличку после бана аккаунта? Типо как на малиновке, когда тебя банят, выдают табличку(скрин приложил), и при входе на сервер такую же табличку давало??

MMNXbM8Y56I.jpg

Поделиться сообщением


Ссылка на сообщение

10 ответов на этот вопрос

  • 0
Завсегдатый

@Мемен Томорли Тебе нужно при выдаче бана сохранять данные о бане в диалог: ID игрока, причину и дату окончания чтобы человеку выдавал этот диалог.

Поделиться сообщением


Ссылка на сообщение
  • 0
Свой человек
format(string, sizeof(string),
    "Вы заблокированы и больше не сможете играть на серверах Малиновки.\n\n\"\
    "ID аккаунта:\t{0d7417}%s\n\"\
    "{ffffff}ID персонажа:\t{0d7417}%s\n\"\
    "{ffffff}ID блокировки:\t{0d7417}%s\n\"\
    "{ffffff}Дата и время:\t{0d7417}%s\n\n\"\
    "{1e4674}Если Вы уверены, что блокировка ошибочная - обратитесь в техническую\n"\
    "поддержку, прикрепив к своему обращению скриншот данного диалога (F8)."
    accId, 
    persId, 
    banId, 
    bantime);
ShowPlayerDialogEx(playerid, 0, DIALOG_STYLE_MSGBOX, "{c8486e}Упс", string, "OK", "");

Это лишь пример того как должно выглядеть то о  чём вы попросили.
Как и сказал angel_sinvaysвсе данные нужно сохранять, что бы потом их выводить.

Отредактировано пользователем gais_st

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@gais_st брат, не совсем понимаю что да и куда писать, не подскажешь какой паблик? сам только недавно стал изучать данный язык, не совсем все знаю

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Постоянный

брат ты при логине игрока проверяешь его на бан и в случае нахождения данных при выборке показываешь диалог или что тебе нужно, тренируйся! 

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@Доналдо Фарекелка ну я же расписал вроде все четко, когда тебя банят админы, тебе выдает эту табличку, если тип захочет поиграть на сервере и зайдет прежде чем истекет бан, табличка еще будет, только после того как его разбанит система, чтобы табличка не появлялась

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Постоянный

@Мемен Томорли Именно это я и спрашивал. После его присоединения на сервер или после его авторизации. Ну вот после присоединения:
 

}
public OnPlayerConnect(playerid)
{
    string = "";
    mysql_format(1,string, 128"SELECT * FROM `BanList` WHERE Nick = '%e' AND `Status` = '1'", PlayerInfo[playerid][pNames]);
    mysql_tquery(1, string, "CheckBanListTwo""d", playerid);
}
publics: CheckBanListTwo(playerid)
{
    new rows,fields;
    cache_get_data(rows,fields);
    string = "";
    if(rows)
    {
        new new_gettime = cache_get_field_content_int(1"Status");
        // сюда ещё взятие переменных из бд, как сверху. 
        if(new_gettime && new_gettime < unix)
        {
            return true;
        }
        else
        {
            format(string, sizeof(string),
            "{FFFFFF}Вы заблокированы и больше не сможете играть на серверах Малиновки.\n\n\
            {FFFFFF}ID аккаунта: {007304}%d\n\
            {FFFFFF}ID персонажа: {007304}%d\n\
            {FFFFFF}ID блокировки: {007304}%s\n\
            {FFFFFF}Дата и время: {007304}%s\n\n\
            {004fbd}Если Вы уверены, что блокировка ошибочная - обратитесь в техническую\nподдержку, прикрепив к своему обращению скриншот данного диалога (F8)."); //, сюда переменные);
            ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{ff0051}Упс", string, "ОК""");
        }
    }
    return 1;
}

Не забудь вставить свои переменные. Проверил у себя. Всё работает.

Отредактировано пользователем Доналдо Фарекелка

Поделиться сообщением


Ссылка на сообщение
  • 0
Свой человек

@Мемен Томорли 
Вот простой пример того как это должно выглядеть, когда ты банишь игрока данные должны отправляться в эту таблицу в твоей БД.
После того как игрок будет подключатся к серверу и вводить пароль, то будет проверятся находится ли игрок в бане, если да, то ему выведет инфу о том что он в бане.

public OnPlayerConnect(playerid)
{
    new string[256];
    OnPlayerLoading[playerid]=false;
    format(querr, sizeof(querr), "SELECT `accId`, `persId`, `banId`, `bantime` FROM `bannames` WHERE `ip` = '%s'", PlayerIp[playerid]);
    mysql_tquery(mysql, querr, "bancheck""d", playerid);
}

forward bancheck(playerid);
public bancheck(playerid)
{
    new rows, fields;
    cache_get_data(rows, fields);
    
    if (rows)
    {
        new accId[10], persId[10], banId[10], bantime[30];
        cache_get_field(fields, 0, accId, sizeof(accId)); // ID акка
        cache_get_field(fields, 1, persId, sizeof(persId)); // ID перса
        cache_get_field(fields, 2, banId, sizeof(banId)); // ID банана
        cache_get_field(fields, 3, bantime, sizeof(bantime)); // Дата и время банана
        
        new string[512];
        format(string, sizeof(string),
            "Вы заблокированы и больше не сможете играть на серверах Малиновки.\n\n"\
            "ID аккаунта:\t{0d7417}%s\n"\
            "{ffffff}ID персонажа:\t{0d7417}%s\n"\
            "{ffffff}ID блокировки:\t{0d7417}%s\n"\
            "{ffffff}Дата и время:\t{0d7417}%s\n\n"\
            "{1e4674}Если Вы уверены, что блокировка ошибочная - обратитесь в техническую\n"\
            "поддержку, прикрепив к своему обращению скриншот данного диалога (F8).",
            accId, 
            persId, 
            banId, 
            bantime);
        ShowPlayerDialogEx(playerid, 0, DIALOG_STYLE_MSGBOX, "{c8486e}Упс", string, "OK""");
        J_Kick(playerid);
    }
    
    return 1;
}

В помощь тебе оставлю ещё дополнительно запрос на создание таблицы в БД
 

CREATE TABLE `bannames` (
    `accId` INT NOT NULL,
    `persId` INT NOT NULL,
    `banId` INT NOT NULL AUTO_INCREMENT,
    `bantime` DATETIME NOT NULL,
    PRIMARY KEY (`banId`),
    INDEX `idx_accId_persId` (`accId`, `persId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Так же не забудь добавить вот это в свою команду бана, для записи блокировки в таблицу

 

new bantime[20];
    gettime("%Y-%m-%d %H:%M:%S", bantime, sizeof(bantime));
    format(string, sizeof(string), "INSERT INTO `bannames` (`accId`, `persId`, `bantime`) VALUES (%d, %d, '%s')", PlayerInfo[id][pAccountId], id, bantime);
    mysql_tquery(mysql, string);



Возможно я что то забыл либо же где то допусти ошибку, что скорее всего т.к вырывал из своего кода, т.к расписывать тут полностью всю систему блокировок нет желания, логику основную я тебе дал, дальше ты должен сам начинать понимать логику и ЯП в целом, а не надеться на то что кто то за тебя напишет полностью твою хотелку. Извиняюсь если грубо.

К коду Доналдо Фарекелка тоже советую присмотреться, они у нас схожи, используй их для изучения.

Отредактировано пользователем gais_st

Поделиться сообщением


Ссылка на сообщение
  • 0
Свой человек

@Мемен Томорли 
Та и в общем ты начинаешь слишком сложно, ты должен начинать постепенно при таких знаниях, начни с просто системы блокировки.

Запрос на создание таблицы в БД

CREATE TABLE bannames (
    id INT AUTO_INCREMENT PRIMARY KEY,
    player_name VARCHAR(32) NOT NULL,
    ban_reason VARCHAR(255),
    ban_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
stock bool IsPlayerBanned(playerid)
{
    new name[32];
    GetPlayerName(playerid, name, sizeof(name));
    
    new query[256];
    format(query, sizeof(query), "SELECT * FROM bannames WHERE player_name = '%s'", name);

    if (mysql_query(mysql_connection, query))
    {
        return false;
    }

    new result = mysql_store_result(mysql_connection);
    if (result > 0)
    {
        mysql_free_result(result);
        return true// если забанен
    }
    
    mysql_free_result(result);
    return false// если не забанен
}
// подключение к серверу
public OnPlayerConnect(playerid)
{
    if (IsPlayerBanned(playerid))
    {
        Kick(playerid); // кик игрока, если он в бане
        SendClientMessage(playerid, COLOR_RED, "Вы в бане!");
        return 0;
    }
    
    SendClientMessage(playerid, COLOR_GREEN, "Добро пожаловать на сервер!"); //запускаем если всё гуд (тут должен быть твой диалог за место вывода сообщения, а так для теста)
    return 1;
}

Вот проще некуда, начинай от этого и отталкиваться, адаптируй этот код в свой мод и начни от него уже расшаривать систему бана. добавил пару комментариев что бы тебе было проще понять что да как.

 

Поделиться сообщением


Ссылка на сообщение
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)