Доступ к готовым решениям

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

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

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

Мануал Система доната по кодам [MYSQL R6-2]

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

Regisss

Умник
Видел данные системы и не раз. Но они сильно отличались от моей. Было то на MxINI, то на MySQL, но как-то "тупо".

Ну, приступим.

Создаём таблицу с кодами:

PHP:
CREATE TABLE `donatekeys` (
  `key` int(11) NOT NULL,
  `money` int(11) NOT NULL,
  ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Теперь идём в мод. Сначала я создам команду для добавление кодов.

OnPlayerCommandText:
PHP:
	if(strcmp(cmd,"/addcode",true) == 0)
	{
	    if(PlayerInfo[playerid][pAdmin] < 10) return 1; // Если админ < 10 ничего
	    if(sscanf(params,"d",params[0])) return send(playerid,COLOR_GREY,"Введите: /addcode [Кол-во кодов]"); // если параметров не хватает
	    new donates[] = { 100,250,500,750,1000,2000 }; // создадим массив, хранящий донат-цены
	    new dobav = 0; // создадим переменную, хранящую число созданных кодов (дальше поймёте, почему не params[0])
	    for(new i; i < params[0]; i++) // сделаем цикл на кол-во кодов
	    {
	        new query[78]; // сделаем переменную для запроса
	        new randoms = randomEx(100000,999999); // сделаем наш рандом код
	        format(size(query),"SELECT * FROM `donatekeys` WHERE `key` = %i",randoms); mysql_query(query);  mysql_store_result(); // Сделаем выбор кода с нашим рандомом
	        if(mysql_num_rows() != 0) continue; // если данный код уже есть - пропускаем
	        format(size(query),"INSERT INTO `donatekeys` (`key`,`money`) VALUES ('%d','%d')",randoms,donates[random(sizeof(donates))]); // Если есть - вставляем в базу данных наш код
	        mysql_query(query); // выполняем запрос
	        dobav++; // прибавляем к числу кодов 1
	    }
	    format(size(string),"Вы успешно добавили %d донат-кодов!",dobav); // форматируем
	    send(playerid,-1,string); // отправляем
	    return 1; // возвращаем 1
	}

DC_CMD:
PHP:
	CMD:addcode(playerid,params[])
	{
	    if(PlayerInfo[playerid][pAdmin] < 10) return 1; // Если админ < 10 ничего
	    if(sscanf(params,"d",params[0])) return send(playerid,COLOR_GREY,"Введите: /addcode [Кол-во кодов]"); // если параметров не хватает
	    new donates[] = { 100,250,500,750,1000,2000 }; // создадим массив, хранящий донат-цены
	    new dobav = 0; // создадим переменную, хранящую число созданных кодов (дальше поймёте, почему не params[0])
	    for(new i; i < params[0]; i++) // сделаем цикл на кол-во кодов
	    {
	        new query[78]; // сделаем переменную для запроса
	        new randoms = randomEx(100000,999999); // сделаем наш рандом код
	        format(size(query),"SELECT * FROM `donatekeys` WHERE `key` = %i",randoms); mysql_query(query);  mysql_store_result(); // Сделаем выбор кода с нашим рандомом
	        if(mysql_num_rows() != 0) continue; // если данный код уже есть - пропускаем
	        format(size(query),"INSERT INTO `donatekeys` (`key`,`money`) VALUES ('%d','%d')",randoms,donates[random(sizeof(donates))]); // Если есть - вставляем в базу данных наш код
	        mysql_query(query); // выполняем запрос
	        dobav++; // прибавляем к числу кодов 1
	    }
	    format(size(string),"Вы успешно добавили %d донат-кодов!",dobav); // форматируем
	    send(playerid,-1,string); // отправляем
	    return 1; // возвращаем 1
	}

Теперь диалог:

PHP:
SPD(playerid,5565,DIALOG_STYLE_INPUT,"Донат","Введите код, полученный Вами при оплате и нажмите {FFBC00}'Далее':\n","Далее","Отмена");
Теперь в OnDialogResponse:

PHP:
	else if(dialogid == 5565)
	{
		if(response)
		{
			if(!strlen(inputtext)) return SPD(playerid,5565,DIALOG_STYLE_INPUT,"Донат","Введите код, полученный Вами при оплате и нажите {FFBC00}'Далее':\n","Далее","Отмена"); // Если ничего не введено - показываем диалог
			new code = strval(inputtext); // преобразуем строку в число
			new query[64]; // сделаем переменную для запроса
			format(size(query),"SELECT `money` FROM `donatekeys` WHERE `key` = %i",code); // форматируем
			mysql_query(query);  // выполняем
			mysql_store_result(); // смотрим полученные данные
			if(mysql_num_rows() == 1) // Если есть такой код
			{
			    new val[32],donate; // переменные
			    while(mysql_retrieve_row()) // пока не кончатся строки
			    {
			        mysql_fetch_field_row(val,"money"); donate = strval(val); // берём нашу донат-цену
			    }
				PlayerInfo[playerid][pDonateMoney] += donate; // даём игроку
                                new string[70 + 10]; // переменную делаем
				format(string,sizeof(string),"Поздравляем! Вы успешно пополнили свой счет на {FFBC00}%d DonateMoney!",donate); // форматим
				SPD(playerid,5654,DIALOG_STYLE_MSGBOX,"Донат",string,"Ok",""); // показываем диалог
				mysql_free_result(); // очищаем память
				format(size(query),"DELETE FROM `donatekeys` WHERE `key` = %i",code); // форматим запрос
				mysql_query(query); // удаляем код
			}
			else // Если кода нет
			{
				SPD(playerid,5654,DIALOG_STYLE_MSGBOX,"*","{ff0000}Код не найден в платежной базе","Ок",""); // Показываем запрос
			}
			mysql_free_result(); // очищаем память
		}
		return true;
	}
Вот и все. Знаю, что уже было. Но всё же.

И чуть не забыл
PHP:
#define randomEx(%0,%1) (%0+random(%1-%0))
#define COLOR_GREY 0xAFAFAFAA
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу