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

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

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

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

Система PIN-кода.

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

pol@nder

Умник
Для работы данной системы необходимо наличие системы банкоматов.

Описание: При первом пользовании банкомата вас попросят придумать пинкод состоящий из 4 цифр, последующие пользования будут возможны после ввода вашего PIN-кода. В банке можно Сменить/Узнать PIN код по пикапу. Также есть возможность заказать услугу "Экстренные деньги" если вы забыли свой PIN код, команда /extrapin (Высылается смс-ка с временным PIN-кодом).


В OnPlayerKeyStateChange:
PHP:
if(newkeys == 128)
	{
		if(!IsPlayerInAnyVehicle(playerid))
		{
			if(IsABankomat(playerid))
			{
				if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return true;
				if(PlayerInfo[playerid][pPin] == 0) return ShowPlayerDialog(playerid, 8132, DIALOG_STYLE_INPUT, "{F20F0F}Registration", "{660FF2}Добро пожаловать в банковскую систему {F2AA0F} <<SA Money>>\n\n {0FF21E}Введите ваш новый{0FC1F2}PIN-код {0FF21E}для пользования\n\tбанковскими услугами и запомните его.\n Внимание!PIN-код должен состоять из 4 цифр!", "Сохранить", "Отмена");
				if(PlayerInfo[playerid][pPin] != 0) return ShowPlayerDialog(playerid, 8133, DIALOG_STYLE_INPUT, "{F20F0F}Identification", "Введите ваш {0FC1F2}PIN-код:", "Продолжить", "Отмена");
			}
		}
	}
Диалоги:

PHP:
case 8132:
	{
	    if(response)
	    {
	        if(strlen(inputtext) != 4)
	        {
	            SendClientMessage(playerid, COLOR_LIGHTRED, "PIN-код должен состоять из 4 цифр!");
	            ShowPlayerDialog(playerid, 8132, DIALOG_STYLE_INPUT, "{F20F0F}Registration", "{660FF2}Добро пожаловать в банковскую систему {F2AA0F} <<SA Money>>\n\n {0FF21E}Введите ваш новый{0FC1F2}PIN-код {0FF21E}для пользования\n\tбанковскими услугами и запомните его.\n Внимание!PIN-код должен состоять из 4 цифр!", "Сохранить", "Отмена");
	            return true;
	        }
   			if(strval(inputtext) < 1000 || strval(inputtext) > 9999)
	    	{
      			SendClientMessage(playerid, COLOR_LIGHTRED, "PIN-код должен состоять из 4 цифр и не должен начинаться с нуля!");
                ShowPlayerDialog(playerid, 8132, DIALOG_STYLE_INPUT, "{F20F0F}Registration", "{660FF2}Добро пожаловать в банковскую систему {F2AA0F} <<SA Money>>\n\n {0FF21E}Введите ваш новый{0FC1F2}PIN-код {0FF21E}для пользования\n\tбанковскими услугами и запомните его.\n Внимание!PIN-код должен состоять из 4 цифр!", "Сохранить", "Отмена");
		        return true;
		    }
	        PlayerInfo[playerid][pPin] = strval(inputtext);
	        SendClientMessage(playerid, COLOR_WHITE, "{2880CC}PIN-код {F6F8F9}успешно сохранен! Восстановить PIN можно в банке Los Santos!");
	        ShowPlayerDialog(playerid, 8133, DIALOG_STYLE_INPUT, "{F20F0F}Identification", "Введите ваш {0FC1F2}PIN-код:", "Продолжить", "Отмена");
	    }
	}
	case 8133:
	{
	    if(response)
	    {
	        if(strval(inputtext) != PlayerInfo[playerid][pPin] && strval(inputtext) != TimePin[playerid] || strval(inputtext) == 0)
	        {
				SendClientMessage(playerid, COLOR_LIGHTRED, "{2B92ED}PIN-код {F22121}не верный!  {63F221}Восстановите PIN в банке Los Santos");
				ShowPlayerDialog(playerid, 8133, DIALOG_STYLE_INPUT, "{F20F0F}Identification", "Введите ваш {0FC1F2}PIN-код:", "Продолжить", "Отмена");
				return true;
			}
			TimePin[playerid] = 0;
			ApplyAnimation(playerid,"CRIB","CRIB_Use_Switch",4.0,0,0,0,0,0);
			new listitems[] = "{FFFFFF}Снять\nПоложить\nБаланс\nСотовая связь";
			ShowPlayerDialog(playerid, 8900, DIALOG_STYLE_LIST, "{FFFFFF}Банкомат", listitems, "Далее", "Закрыть");
	    }
	}
case 8855:
	{
	    if(response)
	    {
			switch(listitem)
			{
			    case 0:ShowPlayerDialog(playerid, 8132, DIALOG_STYLE_INPUT, "Смена {0C81F4}PIN", "Введите новый {0C81F4}PIN-код:", "Сохранить", "Отмена");
			    case 1:
			    {
			    	new stringe[60];
			    	format(stringe, sizeof(stringe), "Ваш действующий {096C8C}PIN-код: {F40C0C}%d", PlayerInfo[playerid][pPin]);
			    	SendClientMessage(playerid, COLOR_WHITE, stringe);
			    }
			    case 2:SendClientMessage(playerid, COLOR_WHITE, "Недоступно!");
			}
	    }
	}
Команда:
PHP:
else if(strcmp(cmd, "/extrapin", true) == 0)
	{
		if(PlayerInfo[playerid][pCash] < 100000) return SendClientMessage(playerid, COLOR_RED, "Недостаточно денег!");
	    new pinkod = random(5000)+1000;
	    TimePin[playerid] = pinkod;
	    PlayerInfo[playerid][pCash] -= 100000;
	    SendClientMessage(playerid, COLOR_WHITE, "С вас взяли 100000$ за услугу");
		format(string, sizeof(string), "[SMS]Ваш временный PIN: {770D0D}%d", pinkod);
		SendClientMessage(playerid, COLOR_WHITE, string);
	}
Переменные:
PHP:
new PinPic;
new TimePin[MAX_PLAYERS];
enum pInfo:
PHP:
pPin,
OnPlayerPickupPickup:
PHP:
else if(pickupid == PinPic)
	{
	    new sendernamee[50];
		GetPlayerName(playerid, sendernamee, sizeof(sendernamee));
		format(string,sizeof(string), "%s показал(а) свой паспорт банкиру",sendernamee);
        ProxDetector(10.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
		ShowPlayerDialog(playerid,8855,DIALOG_STYLE_LIST,"Кредитная карточка.","Сменить PIN\nУзнать PIN\nЗаблокировать карточку","Выбрать","Отмена");
	}
OnGameModeInit:
PHP:
PinPic = CreatePickup(1274,2,2316.6155,-7.3066,26.7422);
Сохранение:
PHP:
OnPLayerLogin: ini_getInteger(File, "Pin",PlayerInfo[playerid][pPin]);
OnPlayerRegister: ini_setInteger(File, "Pin",PlayerInfo[playerid][pPin]);
OnPlayerConnect: PlayerInfo[playerid][pPin] = 0;
OnPlayerUpdate: ini_setInteger(File,"Pin",PlayerInfo[playerid][pPin]);
Автор я. Насчет оптимизации даже не говорите х) Жду тапков.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу