Maksim_navas
Ученик
Всем привет! Сегодня я бы хотел поделиться /ban на MySQL. Итак, начнём:
Скрины:
Когда нас банят
Если пытаемся зайти на сервер
Что пишет в БД ( id 3 - т.е. этот игрок получил 3-ий бан, за игровой процесс, Name - Ник забаненного, NameAdmin - ник админа, который банил, Day - на сколько дней, Date - когда был забанен, Text - причина бана )
Что будет во 2-ой версии:
Таблицу не кидаю, т.к. всё везде стандартное
На этом всё! Всем спасибо за внимание! Автор я.
PHP:
if (!strcmp(cmd, "/ban", true))
{
if(PlayerInfo[playerid][playerAdminka] < 5) return 1; // playerAdminka на своё. 5 - с какого lvl админки можно банить
tmp = strcharsplit(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Подсказка: /ban [id/Nick] [дни] [причина]");
giveplayerid = ReturnUser(tmp);
tmp = strcharsplit(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Подсказка: /ban [id/Nick] [дни] [причина]");
if(PlayerInfo[playerid][playerAdminka] < PlayerInfo[playerid][playerAdminka]) //
{
SendClientMessage(playerid,COLOR_GREY,"Банить администрацию, которая стоит выше вас запрещено!"); // проверка на администрацию, т.е. если вы 5 lvl, то 6.... вы забанить не сможете
return 1;
}
new string[64]; // Если удалили анти-рекламу, то и это удаляйте, т.к. она будет не использоваться
new chislo = strval(tmp);
new length = strlen(cmdtext); // назначаем переменные
new stringr[64];
new stringer2[128];
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
/* Моя сис-ма анти-рекламы в причине, если не надо, удаляйте, если надо, то убирайте /* и */
new count;
for(new i; i < strlen(result); i++)
{
if(result[i] >= '0' && result[i] <= '9') // проверка на цифры
{
count++;
if(count == 6) // макс цифр. в причине
{
format(stringer, sizeof(stringer), "Администратор: %s[%d], был снят сервером: Реклама", PlayerInfo[playerid][pNames],playerid);
SendClientMessageToAll(COLOR_LIGHTRED,string); // пишем всем
PlayerInfo[playerid][playerAdminka] = 0; // снимаем админку
return true;
}
}
}
*/
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Подсказка: /ban [id/часть ника] [дни] [причина]");
format(tmp, sizeof(tmp), "{FF00CC}Администратор: %s[%d] заблокировал(а) %s на %d дней(ня). Причина: %s{FFFFFF}", PlayerInfo[playerid][pNames],playerid,PlayerInfo[giveplayerid][pNames], chislo, (result));
SendClientMessageToAll(COLOR_LIGHTRED,tmp); // Пишем всем
format(stringr, sizeof(stringr), "%s",(result));
format(stringer2, sizeof(stringer2), "{FFCC33}Заблокировал: {CCFF00}%s\n{FFCC33}Ваш Ник: {CCFF00}%s\n{FFCC33}Срок: %d Дней(Дня)\n{FFCC33}Причина: {CCFF00}%s", PlayerInfo[playerid][pNames], PlayerInfo[giveplayerid][pNames], chislo, (result)); // это в одну строчку, т.к. не влезло
ShowPlayerDialog(giveplayerid,13, DIALOG_STYLE_MSGBOX, "Ваш аккаунт заблокирован", stringer2, "ENTER", "OK"); // ShowPlayerDialog назначаем диалога, giveplayerid - выдаём, 13 - id диалога, DIALOG_STYLE_MSGBOX - вид диалога
new ip[56];
antiwarn[playerid] += 8;
new curdate = getdate(year,month,day);
if(antiwarn[playerid] >= 30 && anti[playerid] == 0) anti[playerid] = 1, antiwarn[playerid] = 300;
getdate(year, month, day);
AntiBan[playerid] += 30;
gettime(hour,minuite,second);
FixHour(hour);
PlayerInfo[giveplayerid][pLocked2] = 1;
PlayerInfo[giveplayerid][pBanKol] ++;
PlayerInfo[giveplayerid][pBanTime1] = curdate+chislo;
PlayerInfo[giveplayerid][pBanData1] = curdate;
hour = shifthour;
new data2[64];
GetPlayerIp(giveplayerid,ip,14);
format(data2, 16, "%d-%d-%d %d:%d",day,month,year,hour,minuite); // записываем: время, дата, день, когда выдан бан
format(stringer, sizeof(stringer), "INSERT INTO `banlog` (`Name`, `NameAdmin`, `Day`, `Date`, `Text`) VALUES ('%s','%s','%d','%s','%s')",PlayerInfo[giveplayerid][pNames],PlayerInfo[playerid][pNames],chislo,data2,stringr); // записываем в лог ( в БД ), расположение меняем по себя
mysql_function_query(connects, stringer, false, "","");
format(stringer, sizeof(stringer), "%s, его IP [%s]",PlayerInfo[giveplayerid][pNames], ip); // пишем администрации ip игрока
ABroadCast(COLOR_LIGHTRED,stringer,1);
KickEx(giveplayerid); // кикаем игрока
return true;
}
Когда нас банят
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
1) Исправлю Недочёты, такие как: расширю диалог, который показывает игроку, за что его забанили
2) Добавлю: Когда игрок заходит на сервер, чтобы ему писало, кто, за что и когда его забанил
3) Сделаю, например: Если забанить на 7 дней, то будет писать, что забанен на неделю
2) Добавлю: Когда игрок заходит на сервер, чтобы ему писало, кто, за что и когда его забанил
3) Сделаю, например: Если забанить на 7 дней, то будет писать, что забанен на неделю
На этом всё! Всем спасибо за внимание! Автор я.
Последнее редактирование:
