Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Есть ли решение?
Remyc
Отправлено: 01 Октября, 2020 - 14:24:29
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019  
Репутация: 1




На данный момент есть скрипт загруженный на сервер.
Пользователи загружают демонстрационное приложение и используют скрипт.
Проблема:
Скрипт часто меняется и обновляется (в части ресурсов!) для чего необходима постоянная пересборка и перекачка пользователями приложения.

Пробовал организовать обновление как описано в одной из тем (создаем переменную с версией, на фтп ложим файл txt c актуальной версией и новый собранный ехе, скрипт при старте проверяет версию и скачивает, если версия забитая в скрипте, не соответствует версии написанной в тхт на фтп)
В итоге столкнулся с проблемой, что при обновлении скрипта на сервере Кибор, переменная с новой версией подгружается у пользователя при старте пользовательского ехе, само собой обновления ехе (и ресурсов в нем в частности) не происходит и ничего не работает (у пользователя)

Есть ли варианты решения этой проблемы?

На ум пока приходит 2 варианта:
1. Если возможно сравнить блок RESOURCE в скрипте и упакованные файлы в приложении, сравниваем и при отличии в ресурсах скачиваем новую версию. Но Как это выполнить я не знаю, есть ли такая возможность?

2. (Не особо мне нравится, но на первый взгляд выполним) При распаковке ресурсов, проверять, все ли распаковалось и если какая-то из функций unpack возвращает -1 ( или меньше ноля?) перекачивать версию. Минус этого метода еще в том, что при попытке распаковать отсутствующий ресурс, вылетит сообщение с ошибкой. Можно ли избежать этого сообщения, чтобы работа скрипта не прерывалась?

Есть еще третий вариант, загружать с фтп каждый рисунок, длл, базу, но это только изображений больше 90.... Так что сколько это будет по времени не совсем ясно

(Отредактировано автором: 01 Октября, 2020 - 14:32:53)

 
 Top
Zireael
Отправлено: 02 Октября, 2020 - 01:48:49
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
при попытке распаковать отсутствующий ресурс, вылетит сообщение с ошибкой. Можно ли избежать этого сообщения, чтобы работа скрипта не прерывалась?

CODE:
if(fopen("C:\1.bmp", "rb")==0)
{
messagebox("Файл отсутствует");
// нужные действия
}
else fclose();
 
 Top
Remyc
Отправлено: 02 Октября, 2020 - 17:23:11
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019  
Репутация: 1




Попробовал сделать так:
CODE:

int Image_0_KIB[96][28];
...
int Image_90_KIB[47][45];
char text[9999999];
string path;
int count_byte;
int max=90;
string name[99999];
string location[99999];
name[0]="çíàíèÿ2.bmp";
...
name[90]="ïëãåð.bmp";

location[0]="media/9ebce3_53edc606e61344eab09e17fefe09ab53~mv2.png";
...
location[90]="media/9ebce3_acb9becdb9e4443bad7795b4314a721a~mv2.png";
for (int foto=0; foto <= max; foto++)
{
path = tempfolder()+name[foto];
count_byte=sendgetweb(#text[0], "Mozilla", "GET", "https:/^/static.wixstatic.com", location[foto]);
if (fopen(path, "r"))
{
fclose();
}
else
{
if(count_byte>0)
{
if(fopen(path, "wb"))
{
fwriteb(#text[0], count_byte);
fclose();
}
}
}
loadimage ("#Image_"+format(foto)+"_KIB[0][0]", path);
}


И все нормально, кроме:
CODE:
loadimage ("#Image_"+format(foto)+"_KIB[0][0]", path);

Функция принимает первым аргументом указатель, а в итоге получает string. Не пойму пока как обойти можно.
Есть варианты? Ну кроме как 90 раз вызывать loadimage ......

(Отредактировано автором: 02 Октября, 2020 - 17:24:36)

 
 Top
Kibor
Отправлено: 02 Октября, 2020 - 17:32:03
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Может так?
CODE:
int Image_KIB[90][47][45];
loadimage (#Image_KIB[foto][0][0], path);
 
 Top
Remyc
Отправлено: 02 Октября, 2020 - 17:56:34
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019  
Репутация: 1




 Kibor пишет:
Может так?
CODE:
int Image_KIB[90][47][45];
loadimage (#Image_KIB[foto][0][0], path);


Тогда весь скрипт переписывать надо....

дописал так:
CODE:

if (fopen ("C:\000001.txt", "w")!=0)
{
for (int m=0; m<foto; m++)
{
fwrite("loadimage (#Image_");fwrite(m); fwrite("_KIB[0][0], tempfolder()+^"");
fwrite(name[m]); fwrite("^");");fwrite(ENDL);
}
fwrite("messagebox(^"loadimage ^"+format(m));");
fclose();
}

#include "C:\000001.txt";


Но это 13 секунд если все ресурсы есть в Temp уже.... А если ресурсов нет вообще, то 115 секунд запуска...

(Отредактировано автором: 02 Октября, 2020 - 18:00:18)

 
 Top
Kibor
Отправлено: 02 Октября, 2020 - 18:08:03
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Хм...
И что вы хотите с этим делать?
В exe это работать не будет.

Не путайте исполняемый код и данные string
Это ваше #include "C:\000001.txt";
сработает только при сборке EXE и то что в 000001.txt превратится в исполняемый код, который не меняется после сборки exe.
 
 Top
Remyc
Отправлено: 02 Октября, 2020 - 18:20:25
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 67
Дата рег-ции: Апр. 2019  
Репутация: 1




 Kibor пишет:
Не путайте исполняемый код и данные string
Это ваше #include "C:\000001.txt";
сработает только при сборке EXE и то что в 000001.txt превратится в исполняемый код, который не меняется после сборки exe.


А вот этого я не учел... Спасибо!!!
Видимо все-таки придется руками вписывать loadimage для каждого рисунка...

Хотя они у меня уже есть в "C:\000001.txt"

то- есть можно спокойно убирать блок кода, который записывает C:\000001.txt, а #include "C:\000001.txt" оставлять, просто при добавлении новых изображений вручную его дописывать?

(Отредактировано автором: 02 Октября, 2020 - 18:25:00)

 
 Top
Kibor
Отправлено: 02 Октября, 2020 - 18:46:25
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Почему бы так не сделать?

CODE:
int image0[200][200];
int image1[200][200];
int image2[200][200];

//-1 ошибка
//0 файл есть
//>0 загружен
messagebox (load_image(#image0[0][0], "C:\bot\image0.bmp", "files/Image_0.bmp"));
messagebox (load_image(#image1[0][0], "C:\bot\image1.bmp", "files/Image_1.bmp"));
messagebox (load_image(#image2[0][0], "C:\bot\image2.bmp", "files/Image_2.bmp"));


function load_image(int #Image[0][0], string file_C, string file_S)
{
if (fopen (file_C, "r")!=0){fclose(); return 0;}
else
{
char text[9999999];
int count_byte=sendgetweb(#text[0], "Mozilla", "GET", "https:/^/kibor-bot.com", file_S);
if(count_byte>0)
{
if(fopen(file_C, "wb"))
{
fwriteb(#text[0], count_byte);
fclose();
}
}
return loadimage (#Image[0][0], file_C);
}
return -1;
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by