[Advance-RP] /delacc полная копия. - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: [CM]OlegEhtler, Getbackthere, Phoenixxx_Czar  
[Advance-RP] /delacc полная копия.
[CM]JacobMaster Дата: Воскресенье, 21.05.2017, 11:54 | Сообщение # 1
ПАПКИН ХУЙ
Сообщений: 874
Статус: Offline
Всем доброго времени суток.
Давно сделал полную копию команды /delacc с проекта Advance-RP (копия 99%, не было информации о выводе подсказки при вводе /delacc без ник-нейма). Ну вот и пришло время её выложить.


До этого в паблике данной команды не было, максимум были похожие, у меня же полная копия.
Информация о команде взята с видео слива главного администратора orange сервера.


Автор команды: [CM]JacobMaster.

Ко всем переменным персонажа:
Код
pDellacc

При авторизации, там же где и проверка на бан аккаунта.
Код

if(PI[playerid][pDellacc] == 1)
{
    SCM(playerid, 0xFF0000AA, "Ваш аккаунт удалён за нарушение правил сервера!");
    return KickEx(playerid);
}

К командам:
Код
CMD:delacc(playerid, params[])
{
    if(PI[playerid][pAdmin] == 5)
    {
        new Name[24], dellaccname[24];
    if(sscanf(params,"s[24]",Name) && !GetPVarString(playerid, "dellaccname", dellaccname, 24)) return SendClientMessage(playerid,0xbdbabdff,"Подсказка: /delacc [ник]");
        if(sscanf(params,"s[24]",Name) && GetPVarString(playerid, "dellaccname", dellaccname, 24))
        {
     DeletePVar(playerid, "dellaccname");
     SCM(playerid, 0xffff00ff, "Удаление аккаунта отменено");
     return 1;
        }
        GetPVarString(playerid, "dellaccname", dellaccname, 24);
        if(!GetPVarString(playerid, "dellaccname", dellaccname, 24))
        {
            string="";
     mysql_format(connects, string, 90, "SELECT `Name`, `id`, `pLevel` FROM `accounts` WHERE `Name` = '%s'", Name);
     mysql_tquery(connects, string, "dellacc", "ds",playerid,Name);
     return 1;
        }
    if(!strcmp(Name, dellaccname, true))
    {
     mysql_format(connects, string, 80, "SELECT `Name`, `id` FROM `accounts` WHERE `Name` = '%s'", Name);
     mysql_tquery(connects, string, "Delete", "ds",playerid,Name);
     return 1;
    }
    else if(strcmp(Name, dellaccname, true))
    {
     DeletePVar(playerid, "dellaccname");
     SCM(playerid, 0xffff00ff, "Удаление аккаунта отменено");
     return 1;
        }
    }
    return 1;
}

В конец мода:
Код

publics: dellacc(playerid,tmp[])
{
    new f,d;
    cache_get_data(f,d);
    new rows = f;
    if(!rows) return 1;
    new pid, level;
    pid = cache_get_field_content_int(0, "id", connects);
    level = cache_get_field_content_int(0, "pLevel", connects);
    SCMF(playerid, 0xff6600ff, "Ник: %s, номер: %d, лвл: %d. Удалить аккаунт?", tmp,pid,level);
    SCM(playerid, 0xffff00ff, "Для ОТМЕНЫ удаления введите /delacc без ника");
    SCM(playerid, 0xffff00ff, "Для ПОДТВЕРЖДЕНИЯ повторите /delacc [ник]");
    SetPVarString(playerid,"dellaccname",tmp);
    return 1;
}

Код
publics: Delete(playerid,tmp[])
{
    new f,d;
    cache_get_data(f,d);
    new rows = f;
    if(!rows) return 1;
    mysql_format(connects, string,83,"UPDATE `accounts` SET `pDellacc` = '1' WHERE `Name` = '%s'",tmp);
    mysql_empty(connects, string);
    new pid;
    pid = cache_get_field_content_int(0, "id", connects);
    SCMF(playerid, 0x66cc00FF, "Аккаунт №%d удалён", pid);
    format(string, 89, "[Внимание] %s[%d] удалил аккаунт игрока %s.", PI[playerid][pNames],playerid,tmp);
    ABroadCast(0xFF0000FF, string, 1);
    DeletePVar(playerid,"dellaccname");
    tforeach(i)
    {
  if(!strcmp(PI[i][pNames], tmp, true, 24))
  {
      SendClientMessage(i, 0xFF0000AA,"Ваш аккаунт удалён за нарушение правил сервера");
   KickEx(i);
  }
    }
    return true;
}


Все функции и переменные меняйте на свои.
KickEx - кик игрока.
ABroadCast - отправка сообщений всем администраторам.
if(PI[playerid][pAdmin] == 5) - проверка на админку.

Если у Вас выдает ошибку на "publics", добавьте ко всем #define:
Код
#define publics:%0(%1) forward %0(%1); public %0(%1)

Если у Вас выдает ошибку на "SCMF", добавьте ко всем #define:
Код
#define SCMF(%0,%1,%2,%3) format(format_string, 144, %2,%3) && SendClientMessage(%0, %1, format_string)


Проблему с табуляцией думаю решите сами, это 2 минуты, это проблема форума Ucoz, к сожалению я её тут никак не настрою.

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

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

Если будут какие-то вопросы или проблемы - пишите в теме или мне в личные сообщения.




Сообщение отредактировал [CM]JacobMaster - Воскресенье, 21.05.2017, 16:02
NEAZZ123 Дата: Вторник, 25.07.2017, 15:55 | Сообщение # 2
Боец
Сообщений: 258
Статус: Offline
А смысл так делать, если аккаунт должен удалиться?



[PAWN] Добавление новых скинов и моделей

[Программа] AvatarGenerator
[FPS UP] FPS UP by Neazzy
[Программа] SA-MP CFG EDITOR
[CM]JacobMaster Дата: Среда, 01.11.2017, 14:40 | Сообщение # 3
ПАПКИН ХУЙ
Сообщений: 874
Статус: Offline
Цитата NEAZZ123 ()
А смысл так делать, если аккаунт должен удалиться?

Я делал, чтобы при каждом входе игроку писало, о том что его аккаунт удален. Ранее думал, что так же и на адвансе. Но, на адвансе всё таки такая надпись показывается только при первом входе в игру, а далее аккаунт удаляется навсегда.
Изменить команду под "первый вход - надпись - удаление" не составит труда, это минут 5, не более.


  • Страница 1 из 1
  • 1
Поиск: