[CM]JacobMaster |
Дата: Воскресенье, 21.05.2017, 11:54 | Сообщение # 1
|
ПАПКИН ХУЙ
Сообщений: 874
Статус: Offline
|
Всем доброго времени суток. Давно сделал полную копию команды /delacc с проекта Advance-RP (копия 99%, не было информации о выводе подсказки при вводе /delacc без ник-нейма). Ну вот и пришло время её выложить.
До этого в паблике данной команды не было, максимум были похожие, у меня же полная копия. Информация о команде взята с видео слива главного администратора orange сервера.
Автор команды: [CM]JacobMaster.
Ко всем переменным персонажа:
При авторизации, там же где и проверка на бан аккаунта.
Код 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 |
|
|
|
[CM]JacobMaster |
Дата: Среда, 01.11.2017, 14:40 | Сообщение # 3
|
ПАПКИН ХУЙ
Сообщений: 874
Статус: Offline
|
Цитата NEAZZ123 ( ) А смысл так делать, если аккаунт должен удалиться? Я делал, чтобы при каждом входе игроку писало, о том что его аккаунт удален. Ранее думал, что так же и на адвансе. Но, на адвансе всё таки такая надпись показывается только при первом входе в игру, а далее аккаунт удаляется навсегда. Изменить команду под "первый вход - надпись - удаление" не составит труда, это минут 5, не более.
|
|
|
|