Frend Williams
Умник
Такая проблема взял мануал по созданию промокодов. У меня используется версия MySQL R39-6. Но..У автора более новая.. Не могу понять как переделать
Потому что в данный момент промокод тупо не создается. Косяк с отправление запроса в БД. Так же есть лог
Полностью система.
Код:
mysql_function_query(dbHandle, "SELECT * FROM `promo`", true, "mysql_PromoCodeShow", "i", playerid);
C#:
[18:14:56] [mysql] 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{FFFFFF}Вы хотите создать промокод '#TEST'?
Выдача ' at line 1, mysql_PromoCreate, {FFFFFF}Вы хотите создать промокод '#TEST'?
Выдача VIP на 0 дней
Выдача денег на 30000$
Выдача вод.прав: Нет
C#:
CMD:aediter(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 14) return SendClientMessage(playerid,COLOR_GRAD2,"У Вас недостаточно полномочий для использования этой команды."); // Проверка на админку. У Вас другая.
ShowPlayerDialog(playerid,2374,DIALOG_STYLE_LIST,"{66CC00}Панель управления","1. Список промкодов\n2. Создать промокод","Выбрать","Закрыть");
return true;
}
CMD:promo(playerid) return ShowPlayerDialog(playerid,2388,DIALOG_STYLE_INPUT,"{FFCC00}Ввод промокода","{FFFFFF}Введите промо-код,который Вам был выдан:","Закрыть","");
C#:
case 2374:
{
if(!response) return true;
switch(listitem)
{
case 0:
{
mysql_format(1, string, sizeof string, "SELECT * FROM `promo`", true, "mysql_PromoCodeShow", "i", playerid);
mysql_query(1, string, true);
}
case 1: ShowPlayerDialog(playerid,2380,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите код для промо-кода:","Далее","Отмена");
}
}
case 2380:
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2380,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите код для промо-кода:\nИспользуйте от 3 до 16 символов","Далее","Отмена");
if(strlen(inputtext) < 3 || strlen(inputtext) > 16) return ShowPlayerDialog(playerid,2380,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите код для промо-кода:\n{FF0000}Используйте от 3 до 16 символов","Далее","Отмена");
SetPVarString(playerid,"PROMONAME",inputtext);
ShowPlayerDialog(playerid,2381,DIALOG_STYLE_MSGBOX,"{66CC00}Создание промокода","Вы хотите создать промокод для кол-ва людей или кол-ва дней?","Дней","Людей");
}
case 2381:
{
if(response) ShowPlayerDialog(playerid,2382,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На какое кол-во дней Вы хотите создать промокод?\nВводите от 1 до 7 дней","Далее","Отмена");
else ShowPlayerDialog(playerid,2383,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На сколько человек Вы хотите создать промокод?\nВводите от 1 до 500","Далее","Отмена");
}
case 2382:
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2382,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На какое кол-во дней Вы хотите создать промокод?\nВводите от 1 до 7 дней","Далее","Отмена");
if(strval(inputtext) < 1 || strval(inputtext) > 7) return ShowPlayerDialog(playerid,2382,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На какое кол-во дней Вы хотите создать промокод?\n{FF0000}Вводите от 1 до 7 дней","Далее","Отмена");
SetPVarInt(playerid,"PROMODAYS",strval(inputtext));
SetPVarInt(playerid,"PROMOLUD",0);
ShowPlayerDialog(playerid,2384,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Хотите что-бы при вводе этого промокода выдавало VIP?\nЕсли не хотите,то вводите число равное 0\nЕсли хотите,то введите количество дней на которое будет выдано VIP","Ввести","Отмена");
}
case 2383:
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2383,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На какое кол-во людей Вы хотите создать промокод?\nВводите от 1 до 500 дней","Далее","Отмена");
if(strval(inputtext) < 1 || strval(inputtext) > 500) return ShowPlayerDialog(playerid,2383,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","На какое кол-во людей Вы хотите создать промокод?\n{FF0000}Вводите от 1 до 500 дней","Далее","Отмена");
SetPVarInt(playerid,"PROMOLUD",strval(inputtext));
SetPVarInt(playerid,"PROMODAYS",-1);
ShowPlayerDialog(playerid,2384,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Хотите что-бы при вводе этого промокода выдавало VIP?\nЕсли не хотите,то вводите число равное 0\nЕсли хотите,то введите количество дней на которое будет выдано VIP","Ввести","Отмена");
}
case 2384:
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2384,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Хотите что-бы при вводе этого промокода выдавало VIP?\nЕсли не хотите,то вводите число равное 0\nЕсли хотите,то введите количество дней на которое будет выдано VIP","Ввести","Отмена");
if(strval(inputtext) < 0 || strval(inputtext) > 30) return ShowPlayerDialog(playerid,2384,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Хотите что-бы при вводе этого промокода выдавало VIP?\n{FF0000}Если не хотите,то вводите число равное 0\nЕсли хотите,то введите количество дней на которое будет выдано VIP","Ввести","Отмена");
SetPVarInt(playerid,"PROMOVIP",strval(inputtext));
ShowPlayerDialog(playerid,2385,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите кол-во денег,которое будет выдано при вводе промокода:\nИспользуйте от 2.000$ до 30.000$","Ввести","Отмена");
}
case 2385:
{
if(!response) return true;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2385,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите кол-во денег,которое будет выдано при вводе промокода:\nИспользуйте от 2.000$ до 30.000$","Ввести","Отмена");
if(strval(inputtext) < 2000 || strval(inputtext) > 30000) return ShowPlayerDialog(playerid,2385,DIALOG_STYLE_INPUT,"{66CC00}Создание промокода","Введите кол-во денег,которое будет выдано при вводе промокода:\n{FF0000}Используйте от 2.000$ до 30.000$","Ввести","Отмена");
SetPVarInt(playerid,"PROMOMONEY",strval(inputtext));
ShowPlayerDialog(playerid,2386,DIALOG_STYLE_MSGBOX,"{66CC00}Создание промокода","Вы хотите что бы при вводе этого промокода выдавались водительские права?","Да","Нет");
}
case 2386:
{
new promoname[16];
// new string[256];
GetPVarString(playerid, "PROMONAME", promoname, sizeof(promoname));
new promoday = GetPVarInt(playerid,"PROMODAYS");
new promolud = GetPVarInt(playerid,"PROMOLUD");
new promovip = GetPVarInt(playerid,"PROMOVIP");
new promomoney = GetPVarInt(playerid,"PROMOMONEY");
if(response)
{
format(string,sizeof(string),"{FFFFFF}Вы хотите создать промокод '%s'?\nВыдача VIP на %d дней\nВыдача денег на %d$\nВыдача вод.прав: Да\n\nПромокод действует на %d дн. или %d чел.",promoname,promovip,promomoney,promoday,promolud);
ShowPlayerDialog(playerid,2387,DIALOG_STYLE_MSGBOX,"{66CC00}Создание промокода",string,"Создать","Отмена"),SetPVarInt(playerid,"PROMOLIC",1);
}
else
{
format(string,sizeof(string),"{FFFFFF}Вы хотите создать промокод '%s'?\nВыдача VIP на %d дней\nВыдача денег на %d$\nВыдача вод.прав: Нет\n\nПромокод действует на %d дн. или %d чел.",promoname,promovip,promomoney,promoday,promolud);
ShowPlayerDialog(playerid,2387,DIALOG_STYLE_MSGBOX,"{66CC00}Создание промокода",string,"Создать","Отмена"),SetPVarInt(playerid,"PROMOLIC",0);
}
}
case 2387:
{
if(!response) return true;
new qstring[128],promoname[16];
GetPVarString(playerid, "PROMONAME", promoname, sizeof(promoname));
// format(string, 512, "SELECT * FROM `promo` WHERE `code`='%s'", promoname);
// mysql_query(1, string, true);
format(qstring,sizeof(qstring), "SELECT * FROM `promo` WHERE `code`='%s'", promoname);
mysql_tquery(1,string, "mysql_PromoCreate", "is", playerid,promoname);
// mysql_tquery(1, string, "mysql_PromoCreate", "is", playerid,promoname);
}
case 2388:
{
if(PlayerInfo[playerid][pLevel] >= 3)
{
new qstring[128];
// new query[512];
{
format(qstring,sizeof(qstring), "SELECT * FROM `promo` WHERE `code`='%s'", inputtext);
mysql_format(1,string, sizeof(string), "mysql_PromoCheck", "is", playerid,inputtext);
}
}
else SendClientMessage(playerid, 1,"Активация Промо-Кода доступна с 3 уровня");
}
C#:
forward mysql_PromoCheck(playerid,code[]);
public mysql_PromoCheck(playerid,code[])
{
new rows,fields;
cache_get_data(rows, fields);
if(!rows)
{
format(stringer, sizeof(stringer), "Промокод '%s' не обнаружен",code);
SendClientMessage(playerid, 0x63CB00ff, stringer);
}
// new string[128];
new vipka = cache_get_field_content_int(0, "vip");
new money = cache_get_field_content_int(0, "money");
new license = cache_get_field_content_int(0, "lic");
new ludi = cache_get_field_content_int(0, "ludi");
// SendClientMessage(playerid,COLOR_GREEN,"Промокод '%s' содержит:",code);
if(vipka >= 1)
{
// SendClientMessage(playerid,COLOR_GREEN,"VIP на %d дн.",vipka),pData[playerid][pVIP] = vipka;
format(stringer, sizeof(stringer), "VIP на %d дн.",vipka),PlayerInfo[playerid][pDRInections] = vipka;
SendClientMessage(playerid, 0x63CB00ff, stringer);
}
if(license >= 1)
{
format(stringer, sizeof(stringer), "Водительские права"),PlayerInfo[playerid][pLicenses] = 1;
SendClientMessage(playerid, 0x63CB00ff, stringer);
// SendClientMessage(playerid,COLOR_GREEN,"Водительские права"),pData[playerid][pLicDrive] = 1;
}
format(stringer, sizeof(stringer),"Деньги %d$",money),PlayerInfo[playerid][pCash] += money;
SendClientMessage(playerid, 0x63CB00ff, stringer);
ludi --;
format(string,sizeof(string),"UPDATE `promo` SET `ludi` = '%d' WHERE `code` = '%s'",ludi,code);
mysql_format(1,string, false, "", "");
if(ludi == 0)
{
format(string,sizeof(string), "DELETE FROM `promo` WHERE `code`='%s'", code);
mysql_format(1,string, false, "", "");
}
if(gettime() >= cache_get_field_content_int(0, "data") && ludi == 0)
{
format(string,sizeof(string), "DELETE FROM `promo` WHERE `code`='%s'", code);
mysql_format(1,string, false, "", "");
}
return 1;
}
forward mysql_PromoCreate(playerid,code[]);
public mysql_PromoCreate(playerid,code[])
{
new rows,fields;
cache_get_data(rows, fields);
if(rows)
{
format(stringer, sizeof(stringer), "[A] Промокод '%s' уже есть в списке",code);
SendClientMessage(playerid, 0x63CB00ff, stringer);
}
//SendMes(playerid, COLOR_GRAD1, "[A] Промокод '%s' уже есть в списке",code);
new licname[12];
new promoday = GetPVarInt(playerid,"PROMODAYS");
new promolud = GetPVarInt(playerid,"PROMOLUD");
new promovip = GetPVarInt(playerid,"PROMOVIP");
new promomoney = GetPVarInt(playerid,"PROMOMONEY");
new promolic = GetPVarInt(playerid,"PROMOLIC");
format(string,sizeof(string),"INSERT INTO `promo` (`code`,`vip`,`money`,`lic`,`days`,`ludi`,`data`) VALUES ('%s','%d','%d','%d','%d','%d','%d')",code,promovip,promomoney,promolic,promoday,promolud,gettime()+promoday);
mysql_format(1,string, false, "", "");
switch(promolic)
{
case 0: licname = "Нет";
case 1: licname = "Да";
}
format(string,sizeof(string),"{FFFFFF}Промокод '%s' успешно создан\nВыдача VIP на %d дней\nВыдача денег на %d$\nВыдача вод.прав: %s\n\nПромокод действует на %d дн. или %d чел.",code,promovip,promomoney,licname,promoday,promolud);
ShowPlayerDialog(playerid, 999999, DIALOG_STYLE_MSGBOX, "{66CC00}Создание промокода", string, "Закрыть", "");
return DeletePVar(playerid,"PROMONAME"),DeletePVar(playerid,"PROMODAYS"),DeletePVar(playerid,"PROMOLUD"),DeletePVar(playerid,"PROMOVIP"),DeletePVar(playerid,"PROMOMONEY"),DeletePVar(playerid,"PROMOLIC");
}
forward mysql_PromoCodeShow(playerid);
public mysql_PromoCodeShow(playerid)
{
new rows,fields;
cache_get_data(rows, fields);
if(!rows) return SendClientMessage(playerid, COLOR_GRAD1, "[A] Список промокодов отсутствует");
new promolist[1256],code[32],licname[12];
for(new i; i<rows; i++)
{
cache_get_field_content(i, "code", code);
new vipka = cache_get_field_content_int(i, "vip");
new money = cache_get_field_content_int(i, "money");
new license = cache_get_field_content_int(i, "lic");
new dayss = cache_get_field_content_int(i, "days");
new ludi = cache_get_field_content_int(i, "ludi");
switch(license)
{
case 0: licname = "Нет";
case 1: licname = "Да";
}
format(promolist,sizeof(promolist),"%s%d. Название: %s | VIP: %d дн. | Деньги: %d$ | Лицензии: %s | %d дн. или %d люд\n", promolist, i+1,code,vipka,money,licname,dayss,ludi);
}
ShowPlayerDialog(playerid, 999999, DIALOG_STYLE_LIST,"{66CC00}Список промокодов", promolist, "Закрыть", "");
return 1;
}
Последнее редактирование:
