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

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

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

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

Бан mxINI

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

lancelot

Новичок
Возникла проблема с банами на mxini.
Баню человека, бан записывается в ини файл с аккаунтом, но если человек перезаходит он не забанен.

Коды:

PHP:
enum pInfo {
    pMoney,
    pAdmin,
    pScore,
    pBanned,
    pWarns,
    pMuted,
    pMuteTime,
};
forward SaveAccounts();

public OnPlayerConnect:
PHP:
   new PlayerNick[500]; // Для админки
    GetPlayerName(playerid,PlayerNick,sizeof(PlayerNick)); // Узнаем ник игрока
    new users[128];
    format(users,sizeof(users),"users/%s.ini",PlayerNick); // Создаем аккаунт
    if(!fexist(users))
    {
    	ShowPlayerDialog(playerid,7000,DIALOG_STYLE_INPUT, "{00ff00}Регистрация", "{ffffff}Введите пароль:", "Войти", ""); // Регистрация
    }
        else
    {
    	ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", ""); // Авторизация
    }
	PlayerInfo[playerid][pAdmin] = 0; // При заходе 0 лвл админки
	PlayerInfo[playerid][pScore] = 0; // При заходе очков 0
    PlayerInfo[playerid][pWarns] = 0;
    PlayerInfo[playerid][pMuted] = 0;
    PlayerInfo[playerid][pMuteTime] = 0;
    PlayerInfo[playerid][pBanned] = 0;
    TextDrawShowForPlayer(playerid,Text:Times);
	h[playerid]=21;m[playerid]=20;
	new str[128];
	format(str,128,"{00ff00}**>>** {ffffff}%s вошёл (ла) на сервер.", PlayerName(playerid));
	SendClientMessageToAll(COLOR_GREEN,str);

Дисконнект:
PHP:
     SaveAccount(playerid);

В диалогах:
PHP:
	    if(dialogid == 7000) 
    {
        if(!strlen(inputtext)) return ShowPlayerDialog(playerid,7000,DIALOG_STYLE_INPUT, "{00ff00}Регистрация", "{ffffff}Введите пароль:", "Войти", "");
        if(response)
        {
            new PlayerNick2[MAX_PLAYER_NAME];
            GetPlayerName(playerid,PlayerNick2,sizeof(PlayerNick2)); 
            new account[128];
            format(account,sizeof(account),"users/%s.ini",PlayerNick2); 
            if(fexist(account)) return ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", "");
            new iniFile = ini_createFile(account); 
            if(iniFile < 0) ini_openFile (account); 
            {
                ini_setString(iniFile,"Password",inputtext); 
                ini_setInteger(iniFile, "Money", 0);
                ini_setInteger(iniFile,"Admin",0); 
                ini_setInteger(iniFile,"COP",0); 
                ini_setInteger(iniFile, "Score", 0); 
                ini_setInteger(iniFile, "Ban", 0);
                ini_setInteger(iniFile, "Warn", 0); 
                ini_setInteger(iniFile, "Muted", 0); 
                ini_setInteger(iniFile, "MuteTime", 0); 
                ini_closeFile(iniFile); 
                SetPVarInt(playerid, "Logged", 0); 
                new p[MAX_PLAYER_NAME];
                GetPlayerName(playerid,p,23);
    			SendClientMessage(playerid, 0x21DD00FF, "{00ff00}[Информация]: {ffffff}Вы успешно зарегестрировались");
    			ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", "");
            }
        }
        else 
        {
    		ShowPlayerDialog(playerid,7000,DIALOG_STYLE_INPUT, "{00ff00}Регистрация", "{ffffff}Введите пароль:", "Войти", "");
        }
    }
//------------------------------------------------------------------------------
    if(dialogid == 7002) 
    {
        if(!strlen(inputtext)) return ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", ""); // Авторизация
        if(response) 
        {
            new PlayerNick4[MAX_PLAYER_NAME], password[64];
            GetPlayerName(playerid,PlayerNick4,sizeof(PlayerNick4));
            new account[128];
            format(account,sizeof(account),"users/%s.ini",PlayerNick4); 
            if(IsPlayerNPC(playerid))return 1;
            new iniFile = ini_openFile(account);
            ini_getString(iniFile, "Password",password); 
            if(!strcmp(inputtext, password, true))
            {
                ini_getInteger(iniFile, "Money", PlayerInfo[playerid][pMoney]); 
                ini_getInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]); 
                ini_getInteger(iniFile,"Score",PlayerInfo[playerid][pScore]); 
                ini_getInteger(iniFile, "Ban", PlayerInfo[playerid][pBanned]); // Запишем кол-во денег в переменную.
                ini_getInteger(iniFile, "Warn", PlayerInfo[playerid][pWarns]); // Запишем кол-во денег в переменную.
                ini_getInteger(iniFile, "Muted", PlayerInfo[playerid][pMuted]); // Запишем кол-во денег в переменную.
                ini_getInteger(iniFile, "MuteTime", PlayerInfo[playerid][pMuteTime]); // Запишем кол-во денег в переменную.

                SetPlayerScore(playerid, PlayerInfo[playerid][pScore]); 
                GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); 
    			SendClientMessage(playerid, 0x21DD00FF, "{00ff00}[Информация]: {ffffff}Вы вошли в свой аккаунт");
                ini_closeFile(iniFile);
                return 1;
            }
            else
            {
				SendClientMessage(playerid, 0xF60000AA, "{00ff00}[Ошибка]: {ffffff}Неверный пароль");
    			ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", ""); // Авторизация
                return 1;
            }
        }
        else //Если нажать Esc, то...
        {
    		ShowPlayerDialog(playerid,7002,DIALOG_STYLE_INPUT, "{00ff00}Авторизация", "{ffffff}Введите свой пароль:", "Войти", ""); // Авторизация
        }
    }

Сток
PHP:
stock SaveAccount(playerid) // Сохраняет данные
{
    new PlayerNick6[MAX_PLAYER_NAME], account[128];
    GetPlayerName(playerid,PlayerNick6,sizeof(PlayerNick6));
    format(account,sizeof(account), "users/%s.ini", PlayerNick6);
    new iniFile = ini_openFile(account);
    ini_setInteger(iniFile, "Money", GetPlayerMoney(playerid));
    ini_setInteger(iniFile,"Admin",PlayerInfo[playerid][pAdmin]);
    ini_setInteger(iniFile, "Score", GetPlayerScore(playerid));
    ini_setInteger(iniFile, "Ban", PlayerInfo[playerid][pBanned]);
    ini_setInteger(iniFile, "Warn", PlayerInfo[playerid][pWarns]);
    ini_setInteger(iniFile, "Muted", PlayerInfo[playerid][pMuted]);
    ini_setInteger(iniFile, "MuteTime", PlayerInfo[playerid][pMuteTime]);
    ini_closeFile(iniFile);
    return 1;
}



Сама команда:
PHP:
		if(strcmp(cmd, "/ban", true) == 0)
	{
	   	tmp = strtok(cmdtext, idx);
		if(!strlen(tmp) && PlayerInfo[playerid][pAdmin] >= 1) return SendClientMessage(playerid, COLOR_GREEN, "{00ff00}[Правка]: {ffffff}/ban [id] [причина]");
		giveplayerid = ReturnUser(tmp);
		if (PlayerInfo[playerid][pAdmin] >= 1)
		{
		    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[giveplayerid][pAdmin]) return SendClientMessage(playerid,COLOR_GREEN,"[Ошибка]: Нельзя забанить Администратора, который старше вас");
		    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)) return SendClientMessage(playerid, COLOR_GREEN, "{00ff00}[Правка]: {ffffff}/ban [id] [причина]");
					format(string, sizeof(string), "{00ff00}[Информация]: {ffffff}Администратор {00ff00}%s {ffffff}забанил игрока {00ff00}%s", sendername, giveplayer);
					SendClientMessageToAll(COLOR_GREEN, string);
					WriteRusLog("Ban.cfg", string);
					format(string, sizeof(string), "{00ff00}[Информация]: {ffffff}Причина {00ff00}|%s|",(result));
					SendClientMessageToAll(COLOR_GREEN, string);
					WriteRusLog("Ban.cfg", string);
					PlayerInfo[giveplayerid][pBanned] = true;
					Kick(giveplayerid);
					return 1;
				}
			}
			else
			{
				format(string, sizeof(string), "{00ff00}[Ошибка]: {ffffff}%d не в сети", giveplayerid);
				SendClientMessage(playerid, COLOR_GREEN, string);
			}
		}
		return 1;
	}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу