Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Простенька система бана по аккаунту

Статус
В этой теме нельзя размещать новые ответы.

sub.

Ученик
Требования:
-Инклуд mxINI05 или mxINI
-Админ система pBanned
-Прямые руки

В
PHP:
enum pInfo
Добавляем:
PHP:
pBanned,
Теперь сделаем сохранение, переменной:
В
PHP:
OnPlayerRegister
Вставляем там, где уже идёт функция записи данных:
PHP:
iniSetInt(File,"Banned",PlayerInfo[playerid][pBanned]);
В
PHP:
OnPlayerUpdate_GF
(лично у меня это такой паблик, у кого-то может быть и OnPlayerUpdate)
Вставляем там, где уже идёт функция записи данных:
PHP:
iniSetInt(File,"Banned",PlayerInfo[playerid][pBanned]);

Теперь сделаем загрузку, переменной из файла:
В
PHP:
OnPlayerLogin
Вставляем там, где уже идёт функция чтения данных:
PHP:
iniGetInt(File,"Banned",PlayerInfo[playerid][pBanned]);
После чтения данных, или в конец
PHP:
OnPlayerLogin
вставляем:
PHP:
        if(PlayerInfo[playerid][pBanned] == 1) //autoban
        {
    	ShowPlayerDialog(playerid,82411,DIALOG_STYLE_MSGBOX,"Бан!","Ваш аккаунт заблокирован.\nПодайте заявку на сайте сервера для снятия блокировки.\nПропишите в чате /q для выхода из игры","Oê","");
	SendClientMessage(playerid, COLOR_WHITE,"Pazitronick Life:Ваш аккаунт заблокирован!");
        Kick(playerid);
        }

Теперь сама команда:
В
PHP:
OnPlayerCommandText
PHP:
if(strcmp(cmd, "/ban", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "Сервер: /ban [playerid/PartOfName] [reason]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if (PlayerInfo[playerid][pAdmin] >= 1)
            {
                if(IsPlayerConnected(giveplayerid))
                {
                    if(giveplayerid != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        new length = strlen(cmdtext);
                        while ((idx < length) && (cmdtext[idx] <= ' '))
                        {
                            idx++;
                        }
                        new offset = idx;
                        new result[64];
                        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                        {
                            result[idx - offset] = cmdtext[idx];
                            idx++;
                        }
                        result[idx - offset] = EOS;
                        if(!strlen(result))
                        {
                            SendClientMessage(playerid, COLOR_GRAD2, "Сервер: /ban [playerid/PartOfName] [reason]");
                            return 1;
                        }
                        format(string, sizeof(string), "Сервер: %s был забанен администратором %s, причина: %s", giveplayer, sendername, (result));
                        SendClientMessageToAll(COLOR_LIGHTRED, string);
                        PlayerInfo[giveplayerid][pBanned] = 1;
                        Kick(giveplayerid);
                        return 1;
                    }
                }//not connected
            }
            else
            {
                format(string, sizeof(string), "Сервер: Игрока под идом %d не существует", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
    }
Вот в принципе и всё.
Ах, да разбан можно производить вручную или командой:
PHP:
if(strcmp(cmd, "/unban", true) == 0)
	{
		if(PlayerInfo[playerid][pAdmin] < 4)
		{
			SendClientMessage(playerid,COLOR_RED,"Сервер: Вы не уполномочены использовать эту команду!");
			return 1;
		}
		new akk[32],ssss[64];
		akk = strtok(cmdtext, idx);
		if(!strlen(akk))
		{
			SendClientMessage(playerid,COLOR_GREY,"Сервер: /unban [name_akkaunt]");
			return 1;
		}
		format(string,sizeof(string),"accounts/%s.ini",akk);//если у вас другая папка хранения акков замените accounts на свою
		if(!fexist(string))
		{
			SendClientMessage(playerid,COLOR_RED,"Сервер: Аккаует не найден!");
			return 1;
		}
		else
		{
			new File = iniOpen(string);
			iniSetInt(File,"Banned",0);
			iniClose(File);
			format(ssss,sizeof(ssss),"Сервер: Игрок %s был успешно разбанен",akk);
			SendClientMessage(playerid,COLOR_LIGHTBLUE,ssss);
		}
		return 1;
	}
Автор sub. & Vova_Cor
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу