Рекомендованные сообщения



Не найдено.

16 posts in this topic

Как сделать промокоды, чтобы при создании еще нужно было вписать кол-во часов сколько нужно отыграть для получения бонуса,

 

Спойлер

case CREATEPROMO:
		{
		    if(!response) return false;
		    switch(listitem)
		    {
		        case 0: SPD(playerid,CREATEPROMO+1,DIALOG_STYLE_INPUT,"{F7860D}>> VIP аккаунт","{FFFFFF}Введите в строчку ниже уровень VIP аккаунта для приза(от 1 до 3):","Далее","Отмена"),SetPVarInt(playerid,"TYPEPRIZ",1);
                case 1: SPD(playerid,CREATEPROMO+2,DIALOG_STYLE_INPUT,"{F7860D}>> Донат-очки","{FFFFFF}Введите в строчку ниже количество донат-очков для приза(на Ваше усмотрение):","Далее","Отмена"),SetPVarInt(playerid,"TYPEPRIZ",2);
                case 2: SPD(playerid,CREATEPROMO+3,DIALOG_STYLE_INPUT,"{F7860D}>> Игровая Валюта","{FFFFFF}Введите в строчку ниже количество игровой валюты для приза(на Ваше усмотрение):","Далее","Отмена"),SetPVarInt(playerid,"TYPEPRIZ",3);
		    }
		}
		case CREATEPROMO+1:
		{
		    if(!response) return false;
		    SetPVarInt(playerid,"PRIZ",strval(inputtext));
			SPD(playerid,CREATEPROMO+4,DIALOG_STYLE_INPUT,"{F7860D}>> Придумайте промокод","Теперь Вам необходимо придумать промокод\n{FFFFFF}Промокод должен состоять из 6 символов(Только латинские буквы и цифры)\nПример: AA11AA","Далее","Отмена");
		}
		case CREATEPROMO+2:
		{
		    if(!response) return false;
		    SetPVarInt(playerid,"PRIZ",strval(inputtext));
			SPD(playerid,CREATEPROMO+4,DIALOG_STYLE_INPUT,"{F7860D}>> Придумайте промокод","Теперь Вам необходимо придумать промокод\n{FFFFFF}Промокод должен состоять из 6 символов(Только латинские буквы и цифры)\nПример: AA11AA","Далее","Отмена");
		}
		case CREATEPROMO+3:
		{
		    if(!response) return false;
		    SetPVarInt(playerid,"PRIZ",strval(inputtext));
			SPD(playerid,CREATEPROMO+4,DIALOG_STYLE_INPUT,"{F7860D}>> Придумайте промокод","Теперь Вам необходимо придумать промокод\n{FFFFFF}Промокод должен состоять из 6 символов(Только латинские буквы и цифры)\nПример: AA11AA","Далее","Отмена");
		}
		case CREATEPROMO+4://azaza
		{
		    if(!response) return false;
		    if(mysql_fetch_row(inputtext)) return ShowPlayerDialog(playerid,D_PROMO,DIALOG_STYLE_INPUT,""MODE_PREF">> Введите промокод","{F21111}Ошибка: {FFFFFF}данный промокод уже есть в базе данных\n{FFFFFF}Придумайте другой промокод:","Далее","Отмена");
		    if(strlen(inputtext) < 6 || strlen(inputtext) > 6 || IsTextRussian(inputtext)) return SPD(playerid,CREATEPROMO+4,DIALOG_STYLE_INPUT,"{F7860D}>> Введите промокод","{FFFFFF}Промокод должен состоять из 6 символов(Только латинские буквы и цифры)\nПример: AA11AA","Далее","Отмена");
			new PRIZ = GetPVarInt(playerid,"PRIZ"),TYPEPRIZ = GetPVarInt(playerid,"TYPEPRIZ");
			AllPromo++;
			promoinfo[AllPromo][prAmount] = PRIZ;
			promoinfo[AllPromo][prPriz] = TYPEPRIZ;
			promoinfo[AllPromo][prID] = AllPromo;
			format(promoinfo[AllPromo][prName],24,"%s",inputtext);
			CreatePromo(AllPromo);
			SendMes(playerid,COLOR_ORANGE,"Вы успешно создали промокод: %s.",inputtext);
            SendMes(playerid,COLOR_ORANGE,"Тип приза(%d) | количество приза: %d",TYPEPRIZ,PRIZ);
		}

 

 

Edited by MuhammadPawn
Причина: Убрал код под спойлер

Заметка от MuhammadPawn , создано

Правила форума Пункт 3. ОФОРМЛЕНИЕ ТЕМЫ НА ФОРУМЕ (ОБЩЕЕ): 3.2. Код больше 10 строк брать еще и под спойлер.

Share this post


Link to post
Share on other sites

Возьми с мода Perfomance RolePlay или тот же Radmir RolePlay (Не реклама)

Share this post


Link to post
Share on other sites

@archiboy6 у вас есть сохранение отыгранных часов? Если да, то скиньте переменные

Share this post


Link to post
Share on other sites

@Jaliba Baron Нету, может можно сделать как-то по PayDay допустим надо отыграть 8 PayDay чтобы получить промо-код

 

Share this post


Link to post
Share on other sites

@archiboy6 Можно, но есть еще выриант, можно проверять LVL игрока, и если допустим у него 3 LVL то ему разрешены промо-коды

Share this post


Link to post
Share on other sites

@Jaliba Baron Не, я именно хочу чтобы игрок отыграл время, и ему тогда выдавало приз

@Jaliba Baron Вообщем, нужно как-то сделать чтобы игрок отыграл определенное кол-во PayDay и ему выдавался бонус

выбирать сколько отыграть, от 0 до 20, помоги пожалуйста

Share this post


Link to post
Share on other sites

@archiboy6 Ко всем enum PI (PlayerInfo):
 

priz

в payday:
 

PI[playerid][priz]++;
if(PI[playerid][priz] == 1800) //Время для отыгровки
{
	PI[playerid][priz] = 0;
	GameTextForPlayerEx(playerid, "+50 rub donate", 4000, 7);
	PI[playerid][/* переменная приза */] += 50; //За место "50" ваше кол-во
	SendClientMessage(playerid, COLOR_MSG, "Информация: вы получили 10 rub donate за 30 минут на сервере");
}

Как то так, надеюсь помог

Share this post


Link to post
Share on other sites

Да не, не так поняли, я хотел чтобы при создании промокода можно было вписывать сколько игрок должен отыграть для получения призза

Share this post


Link to post
Share on other sites

@archiboy6 Ко всем enum:
 

Спойлер

	DIALOG_PROMO_CREATE,			// создание промокода
	DIALOG_PROMO_ACTIVATE,			// активация промокода

	PROMO_TYPE_MONEY = 0, 	// деньги
	PROMO_TYPE_DONATE,		// донат
	PROMO_TYPE_EXP,			// опыт

 

К диалогам:
 

Спойлер

 


			case DIALOG_PROMO_CREATE:
			{
				if(response)
				{
					new code[32], type, amount, usings, paydays;

					if(sscanf(inputtext, "P<,>s[32]dddd", code, type, amount, usings, paydays))
					{
						SendClientMessage(playerid, 0x999999FF, "Некорректный ввод");
						cmd::createpromo(playerid, "");

						return 1;
					}
					else
					{
						if(!(0 <= type <= 2))
						{
							SendClientMessage(playerid, 0x999999FF, "Тип должен быть от 0 до 2 (деньги, донат, exp)");
							cmd::createpromo(playerid, "");

							return 1;
						}

						if(!(1 <= amount <= 1_000_000))
						{
							SendClientMessage(playerid, 0x999999FF, "Количество должно быть от 1 до 1.000.000");
							cmd::createpromo(playerid, "");

							return 1;
						}

						if(!(1 <= usings <= 1_000))
						{
							SendClientMessage(playerid, 0x999999FF, "Количество использований должно быть от 1 до 1000");
							cmd::createpromo(playerid, "");

							return 1;
						}

						if(!(0 <= paydays <= 20))
						{
							SendClientMessage(playerid, 0x999999FF, "Количество PayDay должно быть от 0 до 20");
							cmd::createpromo(playerid, "");

							return 1;
						}

						new query[128],
							Cache: result,
							rows;

						mysql_format(mysql, query, sizeof query, "SELECT * FROM promocode WHERE code='%s'", code);
						result = mysql_query(mysql, query, true);

						rows = cache_num_rows();

						cache_delete(result);

						if(rows)
						{
							SendClientMessage(playerid, 0x999999FF, "Такой промокод уже есть в базе данных");
							cmd::createpromo(playerid, "");

							return 1;
						}

						mysql_format(mysql, query, sizeof query, "INSERT INTO promocode (code, type, amount, usings, paydays) VALUES ('%s', %d, %d, %d, %d)",
						code, type, amount, usings, paydays);

						mysql_query(mysql, query);

						format(query, sizeof query, "Промокод \"%s\" создан (Т: %s, К: %d, И: %d, PD: %d)", code, promo_info[type][P_NAME], amount, usings, paydays);
						SendClientMessage(playerid, 0x66CC33FF, query);
					}
				}
			}
			case DIALOG_PROMO_ACTIVATE:
			{
				if(response)
				{
					if(!strlen(inputtext))
					{
						cmd::promo(playerid, "");

						return 1;
					}

					new query[256],
						Cache: result,
						rows,
						type,
						amount,
						paydays,
						usings;

					mysql_format(mysql, query, sizeof query, "SELECT * FROM promocode_activations WHERE uid='%d' AND code='%s'", GetPlayerAccountID(playerid), inputtext);
					result = mysql_query(mysql, query, true);

					rows = cache_num_rows();

					if(rows)
					{
						// type = cache_get_field_content_int(0, "type");
						paydays = cache_get_field_content_int(0, "paydays");

						format(query, sizeof query, "Вы уже активировали этот промокод");

						if(paydays)
							format(query, sizeof query, "%s. Вы получите свой приз через %d PayDay", query, paydays);

						SendClientMessage(playerid, 0x3399FFFF, query);

						cache_delete(result);

						return 1;
					}

					cache_delete(result);

					mysql_format(mysql, query, sizeof query, "SELECT * FROM promocode WHERE code='%s' AND usings > 0", inputtext);
					result = mysql_query(mysql, query, true);

					rows = cache_num_rows();

					if(rows)
					{
						type = cache_get_field_content_int(0, "type");
						amount = cache_get_field_content_int(0, "amount");
						usings = cache_get_field_content_int(0, "usings");
						paydays = cache_get_field_content_int(0, "paydays");
					}

					cache_delete(result);

					if(!rows)
					{
						SendClientMessage(playerid, 0x999999FF, "Введенный промокод не существует");
						cmd::promo(playerid, "");

						return 1;
					}

					if(usings > 0)
					{
						if(!paydays)
						{
							AddPlayerData(playerid, promo_info[type][P_DATA], +, amount);
							UpdatePlayerDatabaseInt(playerid, promo_info[type][P_SQL_NAME], GetPlayerData(playerid, promo_info[type][P_DATA]));
						}

						format(query, sizeof query, "Вы активировали промокод \"%s\"", inputtext);

						if(paydays > 0)
							format(query, sizeof query, "%s. Вы получите свой приз через %d PayDay", query, paydays);

						SendClientMessage(playerid, 0x66CC33FF, query);

						mysql_format(mysql, query, sizeof query, "UPDATE promocode SET usings='%d' WHERE code='%s'", usings - 1, inputtext);
						mysql_query(mysql, query, false);

						mysql_format(mysql, query, sizeof query, "INSERT INTO promocode_activations (uid, code, paydays) VALUES (%d, '%s', %d)",
						GetPlayerAccountID(playerid), inputtext, paydays);
						mysql_query(mysql, query, false);
					}
					else
					{
						SendClientMessage(playerid, 0x999999FF, "Лимит использования промокода исчерпан");
						cmd::promo(playerid, "");
					}
				}
			}
		}
	}

К паблику/стоку payday
 

Спойлер

			new rows,
				Cache: result;

			mysql_format(mysql, fmt_str, sizeof fmt_str, "SELECT id, paydays, code FROM promocode_activations WHERE uid=%d AND paydays > 0", GetPlayerAccountID(playerid));
			result = mysql_query(mysql, fmt_str, true);

			rows = cache_num_rows();

			if(rows)
			{
				for(new idx; idx < rows; idx ++)
				{
					new id = cache_get_row_int(idx, 0),
						paydays = cache_get_row_int(idx, 1),
						code[32];

					cache_get_row(idx, 2, code);

					mysql_format(mysql, fmt_str, sizeof fmt_str, "UPDATE promocode_activations SET paydays='%d' WHERE id='%d'", paydays - 1, id);
					mysql_query(mysql, fmt_str, false);

					if(paydays == 1)
					{
						new Cache: p_cache;

						mysql_format(mysql, fmt_str, sizeof fmt_str, "SELECT type, amount FROM promocode WHERE code='%s'", code);
						p_cache = mysql_query(mysql, fmt_str, true);

						new type = cache_get_row_int(0, 0),
							amount = cache_get_row_int(0, 1);

						cache_delete(p_cache);

						AddPlayerData(playerid, promo_info[type][P_DATA], +, amount);
						UpdatePlayerDatabaseInt(playerid, promo_info[type][P_SQL_NAME], GetPlayerData(playerid, promo_info[type][P_DATA]));

						SendClientMessage(playerid, -1, "");

						format(fmt_str, sizeof fmt_str, "Получен приз за промокод \"%s\"", code);
						SendClientMessage(playerid, 0x66CC33FF, fmt_str);
					}
				}
			}

			cache_delete(result);
		}
		SetPlayerData(playerid, P_GAME_FOR_HOUR, 0);
	}

 

К командам:
 

Спойлер

 


CMD:createpromo(playerid, params[])
{
	if(GetPlayerAdminEx(playerid) < 5) return 1;

	Dialog
	(
		playerid, DIALOG_PROMO_CREATE, DIALOG_STYLE_INPUT,
		"{FFCD00}Создание промокода",
		"{FFFFFF}Для создания промокода введите\n"\
		"следующие параметры в окно ниже:\n\n"\
		"{33CC66}Параметры: Код, Тип, Кол-во, Использования, PayDay\n\n"\
		"{888888}Примечание:\n"\
		"{FFFFFF}- Код может содержать от 1 до 30 символов\n"\
		"- Тип от 0 до 2 (деньги, донат, exp)\n"\
		"- Количество от 1 до 1.000.000\n"\
		"- Количество использований от 1 до 1000\n"\
		"- Количество PayDay от 0 до 20",
		"Далее", "Отмена"
	);

	return 1;
}

CMD:promo(playerid, params[])
{
	Dialog
	(
		playerid, DIALOG_PROMO_ACTIVATE, DIALOG_STYLE_INPUT,
		"{FFCD00}Активация промокода",
		"{FFFFFF}Введите промокод в окно ниже:",
		"Далее", "Отмена"
	);

	return 1;
}

В базу данных:

 

Спойлер

 


CREATE TABLE `promocode` (
  `id` int(11) NOT NULL,
  `code` varchar(32) CHARACTER SET utf8 NOT NULL,
  `type` int(11) NOT NULL,
  `amount` int(11) NOT NULL,
  `usings` int(11) NOT NULL,
  `paydays` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Дамп данных таблицы `promocode`
--


-- --------------------------------------------------------
--
-- Структура таблицы `promocode_activations`
--

CREATE TABLE `promocode_activations` (
  `id` int(11) NOT NULL,
  `uid` int(11) NOT NULL,
  `code` varchar(32) NOT NULL,
  `paydays` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `promocode_activations`
--

--
-- Индексы таблицы `promocode`
--
ALTER TABLE `promocode`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `promocode_activations`
--
ALTER TABLE `promocode_activations`
  ADD PRIMARY KEY (`id`);


 

Если будут ошибки пишите

Edited by MuhammadPawn
Причина: Убрал код под спойлер

Share this post


Link to post
Share on other sites

@Jaliba Baron Крашит павно

Share this post


Link to post
Share on other sites

@Jaliba Baron я хотел мод кинуть, а там сам посмотришь

Share this post


Link to post
Share on other sites

@archiboy6 это разве нельзя сделать в личных сообщения мода? И зачем буду смотреть ваш мод?

Share this post


Link to post
Share on other sites

@Jaliba Baron Вопрос зачем ты скинул ему левую систему промокода.... Когда он просит доработать свою?

Если не понимаешь как помочь, то лучше не отвечай 

Edited by MuhammadPawn

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • misha_makilov
      By misha_makilov


      Просмотр файла Arizona RP | Nike
      1. Система каршеринга (Полностью написана с 0 и готова).
      2. Система дрифта. (Написана с 0, не доделан магазин аксессуаров).
      3. Система заточек, а так же улучшения на них, как на аризоне рп, по типу больше хп или урона. (Система готова до конца)
      4. Динамическая система казино, казино работает как бизнес, можно добавить несколько казино и управлять ими, в них можно менять цены на все, что имеет цену в самом казино (Полностью написана с 0 и готова).
      5. Система для слетов бизнесов и домов, можно выставить через сколько он слетит (Полностью написана с 0 и готова).
      6. Система люкс каров (Полностью написана с 0 и готова, даже с таймеров, но необходим плагин на машины)
      7. Полностью был оптимизирован весь мод, а так же подправлен код + убраны все ошибки связанные с БД
      8. Исправлены все возможные баги, который находили игроки на Arizona Nike и мною.
      9. Система урона с заточенными аксессуарами. (Копия оригинальной аризоны рп)
      10. Смена текста у организаций на стенде. (Копия оригинальной аризоны рп)
      11. Начата разработка системы майнинга (Система будет не много другой, не как на оригинальной аризоне)
      12. Сайт с логами, с небольшими переделками.
       
      Обзор мода - https://www.youtube.com/watch?v=MrQ6tFQsD2o
       
      Цена данного мода 800 рублей + еженедельная подписка навсегда(включает в себя еженедельные обновления)

      Для получения сайта с логами, обратитесь сюда - https://vk.com/jenyahuntwill (Необходимо предоставить док-ва, что вы купили данный мод)
      Добавил misha_makilov Добавлено 29.05.2021 Категория Моды Автор Mayota_Nebr  
    • glvde.
      By glvde.
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
    • glvde.
      By glvde.


      Просмотр файла Arizona RolePlay | Paige
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
      Добавил glvde. Добавлено 16.06.2021 Категория Моды Автор glvde.  
    • Человек-редиска
      By Редиска
      ПОМОГИТЕ!!!!!!!!
      НЕ СОХРАНЯЮТСЯ НОМЕРА НА АВТО.
      ПОЛУЧАЮ НОМЕРА, А ОНИ ПРОПАДАЮТ ПОСЛЕ ПОЛУЧЕНИЯ.
      ТО ЕСТЬ, КОГДА ПРОПИСЫВАЮ КОМАНДУ /FIXCAR И ВЫБЕРАЮ ВЫГРУЗИТЬ А ПОТОМ ЗАГРУЗИТЬ.
      ТО НОМЕРОВ УЖЕ НЕТУ, ТУПО ПРОПАЛИ!
      ЗАХОДИЛ В БД ТАМ ОНИ ПОЯВЛЯЮТСЯ, А НА АВТО ПОЧЕМУ ТО НЕ ОТОБРАЖАЮТСЯ.
      ПОТОМ Я РЕШИЛ ЗАЙТИ В ТАБЛИЦУ ПОД НАЗВАНИЕМ OWNABLE_CARS ТАМ Я УВИДЕЛ СТРОКУ C_NUMBERS
      В ЭТОМ СТРОКЕ Я ПРОПИСАЛ СВОЁ ИМЯ, ПОТОМ ЗАШЁЛ В ИГРУ, ЗАГРУЖАЮ АВТО И ЕСТЬ НОМЕРА.
      А ТО ЧТО У МЕНЯ ЕСТЬ ЕЩЁ ОДНА ТАБЛИЦА ПОД НАЗВАНИЕМ OWNABLE_NUMBERS.
      ТАМ У МЕНЯ ТОЛЬКО НОМЕРА ПОЯВЛЯЮТСЯ И ВСЁ. ТОЕСТЬ ОНИ НЕ ПРИВЯЗЫВАЮТСЯ К АВТО КОРОЧЕ ВОТ И ВСЁ!!!!!!
      ПОМОГИТЕ УЖЕ ПОЖАЛУЙСТА СРОЧНО НУЖНО.