007wan |
Отправлено: 19 Сентября, 2019 - 12:38:16
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Доработал я код. Спасибо всем, кто помогал.
Могут быть ошибки кода, но примерно думаю поймете суть, а если нужен целый код без ошибок, я вам его дам, при условии если будет ошибка(Ошибки)Код (Отобразить)CODE:
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";//скачайте ниже, изменить путь
char Text_File[100000];
string Elements[999];
string User_Box, Date_Box, Information_Box;
string Jump = formatic(13)+formatic(10);
string Local_User = individualcode();//ключ, получаемый при запуске программы
int Registered_User;
int Checked_User;
int Difference;
int Result;
char License[255];
string temp_fold = tempfolder();
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
string Settings_File_Path = temp_fold+"Settings.ini";
//могут быть лишние переменные.
function Check_License(string Type)
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Date[0]), sizearray(Date), "%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);
if (Type == "MessageBox")
{//изменить свой фтп на
if (sendgetweb(#Text_File[0], "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)", "GET", "http:/"+"/сайт.zzz.com.ua", "тестовый License.txt") > 0)
{
int Boxes = regexsearch(sizearray(Elements), #Elements[0], format(#Text_File[0]), "[^;]+(?=;|$)");
if (Boxes != 0)
{
for(int ii=0; ii<Boxes; ii++)
{
if(regexsearch(1, #User_Box, Elements[ii], "^.+?(?=\/)"))
{
if (User_Box == Local_User)
{
regexsearch(1, #Date_Box, Elements[ii], "(?<=\/)[\d\.]+(?=\/)");
regexsearch(1, #Information_Box, Elements[ii], "[^\/]+(?=;|$)");
Result = Date_Compare(format(#Date[0]), Date_Box, #Difference);
Checked_User = 1;
break;
}
else
{
Checked_User = 0;
}
}
}
}
}
else
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удается подключиться к серверу. Пожалуйста повторите попытку позже." , "", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
//============================
if (Checked_User == 1)
{
if (Result == 2)
{
Registered_User = 1;
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "1")
{
MessageBeep(MB_OK);
my_message(0, "Поздравляем! Спасибо, что купили наш бот. "+Jump+"Программа будет работать только на этом компьютере."+Jump+Jump+
"Купил/(Причина): "+Information_Box+Jump+
"Для: "+User_Box+Jump+
"До: "+Date_Box+"(осталось: >"+format(Difference)+" дней)", "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "1", Settings_File_Path);
}
}
}
//============================
if (Result == 1 || Result == 0)
{
Registered_User = 0;
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "0")
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "У вас не полная версия программы. "+Jump+"Часть функционала работать не будет." , "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "0", Settings_File_Path);
}
}
}
}
else
{
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "0")
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "У вас не полная версия программы. "+Jump+"Часть функционала работать не будет." , "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "0", Settings_File_Path);
}
}
}
}
//============================
if (Type == "Action")//при вызове без сообщений(Тихо) проверит лицензию и отключит контролы, например, при открытии настроек и обнулит сохраненые контролы в файле всегда будут равны 0, пока не будет активация лицензии
{
if (Registered_User == 1)
{
//доработал в уме) ну тут просто реально, просто я пока удалил этот код, но помню что тут должно быть
}
else
{
//доработал в уме) ну тут просто реально, просто я пока удалил этот код, но помню что тут должно быть
}
}
}
Так же добавил в код систему "антинавязчивого сообщения": раньше при запуске проверало и всегда показывало сообщение, а сейчас при первом запуске кода показывает сообщение, например, о том, что у вас не полная лицензия или куплена лицензия, но покажет 1 раз, а после второго запуска не покажет, а покажет только тогда, когда будет новое сообщение. Сообщение1 = получена лицензия на 5 дней, пример. сообщение2 = Нету лицензии. При запуске покажет одно из двух сообщений, а если при запуске оно повторится, то его не покажет, а покажет если оно будет другим
Файл констант :
Constants.txt(Отредактировано автором: 19 Сентября, 2019 - 12:45:23) |
|
|
Zireael |
Отправлено: 04 Октября, 2019 - 02:37:08
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: есть ли какой минимальный код
CODE:char text[99999];
if (sendgetweb(#text[0], "Mozilla", "GET", "http:/"+"/zireael.zzz.com.ua", "License.txt")>0)
{
messagebox ("Содержимое файла: "+formatic(13)+formatic(10)+formatic(13)+formatic(10)+format(#text[0]));
if(license(format(#text[0]), "konctantin777"))messagebox("konctantin777 лицензия есть");
else messagebox("konctantin777 лицензии нет");
if(license(format(#text[0]), "Zireael"))messagebox("Zireael лицензия есть");
else messagebox("Zireael лицензии нет");
if(license(format(#text[0]), "007wan"))messagebox("007wan лицензия есть");
else messagebox("007wan лицензии нет");
}
function license(string s, string name)
{
regexreplace(1, #s, s, ".*?"+name+" +(\d).*", "$1", MULTILINE | SINGLELINE);
return formatsn(s);
} |
|
|
Zireael |
Отправлено: 05 Октября, 2019 - 04:16:29
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Но всё равно затык со временем
Получить текущую дату с любого сайта и сравнить с той что на фтп.
CODE:char C[999999];
if (sendgetweb(#C[0], "Mozilla", "GET", "http:/"+"/www.xn--80aajbde2dgyi4m.xn--p1ai", "")>0)
{
find_time(format(#C[0]));
}
function find_time(string str)
{
string s[3], date, rn=formatic(13)+formatic(10);
if(regexsearch(1, #date, str, "\d{1,2}\.\d{1,2}\.\d{4}"))
{
messagebox("Текущая дата: "+date);
if(regexsearch(3, #s[0], date, "\d+")) messagebox("День: "+s[0]+rn+"Месяц: "+s[1]+rn+"Год: "+s[2]);
}
} |
|
|
|