Regisss
Умник
Видел данные системы и не раз. Но они сильно отличались от моей. Было то на MxINI, то на MySQL, но как-то "тупо".
Ну, приступим.
Создаём таблицу с кодами:
Теперь идём в мод. Сначала я создам команду для добавление кодов.
OnPlayerCommandText:
DC_CMD:
Теперь диалог:
Теперь в OnDialogResponse:
Вот и все. Знаю, что уже было. Но всё же.
И чуть не забыл
Ну, приступим.
Создаём таблицу с кодами:
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","Далее","Отмена");
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
Последнее редактирование:
