Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 4.01 Упаковка нужных файлов в ресурсы exe. Изображения, данные и т.д.

Страниц (7): [1] 2 3 4 5 6 7 »
 

1. Kibor - 10 Марта, 2015 - 17:30:21 - перейти к сообщению
Добавлен блок RESOURCE, в котором можно указывать файлы, которые при создание exe упакуются в ресурсы. В ресурсы можно упаковывать абсолютно все файлы, изображения, Длл, данные и даже другие запускные файлы, которые при необходимости можно распаковать и запустить.

синтаксис

CODE:
RESOURCE
{
//тут добавить нужные файлы, которые при генерирование exe добавятся в его ресурсы
"C:\images0.bmp"; "D:\aa\not.txt";
"C:\Windows\system32\calc.exe";
}

в блоке RESOURCE не допускаются переменные. только пути к файлам в кавычках. Не делайте длинный пути!

Данные файлы присоединяются к созданному EXE и могут быть извлечены и использованны при необходимости.
Для распаковки необходимого файла вызывается функция
unpack("C:\Windows\system32\calc.exe", "C:\c.exe", 1);
первый параметр - строка или переменная string в которой содержится путь к файлу каким он прописан в блоке RESOURCE. Этот параметр указывает какой файл извлекаем из ресурсов.
второй - строка или переменная string в которой содержится путь куда запишем файл.
третий параметр 0 или 1
0 - не заменять если есть..
1 - заменять.

возвращает 1 при удачной записи - замене.
0 при не замене так как есть и последний параметр 0.
меньше 0 при неудаче.

пример

 Цитата:
int b[200][200];
if (unpack("C:\images.bmp", tempfolder()+"1.bmp", 1)>-1)
{
loadimage (#b[0][0], tempfolder()+"1.bmp");
}

if (unpack("C:\Windows\system32\calc.exe", pathfolder()+"c.exe", 0)>-1)
{
start(pathfolder()+"c.exe");
}

RESOURCE
{
"C:\images.bmp";
"C:\Windows\system32\calc.exe";
}


При отработке скрипт с Кибор, не собирая в запускной файл unpack просто копирует файл с папки первого параметра, так как в Кибор нет этого ресурса.


Так же можно загрузить файл с ресурса в массив char без распаковки ресурса файл обозначенный "C:\images.bmp" в блоке RESOURCE
 Цитата:
char buf[1000000];
resource(#buf[0], "C:\images.bmp"); //загружает в массив buf ресурс
RESOURCE
{
"C:\images.bmp";
}


Возвращает количество загруженных байт.
пример как загружать рисунки с помощью resource прямо с ресурса http://kibor-bot.com/forum/topic...83929#1426083929

В максимальной версии количество упаковываемых файлов не ограничено. Иначе допускается не более пяти файлов.


Нажмите для увеличения

============================================================

Добавлены функции получения пути к программе и к папке Темп.

pathfolder() - возвращает string типа "C:\Program Files (x86)\Kibor\"
tempfolder() - возвращает string.. путь к временной папке.


=======================================


Для теста распаковки в папку темп можно скачать этот файл
http://kibor-bot.com/files/test_RESOURCE.rar
В нем 41 рисунок и 1 аудио файл.

распаковка в папку темп этих файлов, загрузка в loadimage и включение музыки занимает менее 50 мсек... с пере сохранением, saveimage в папку программы уже после загрузки loadimage 80 мсек..
говорить о каких то задержках не приходится..

код программы
 Цитата:
int zv_vbor[41][40];
int karta1[6][6];
int radiaciya[15][12];
int skil_s1[30][18];
int skil_s2[30][18];
int skil_s3[30][18];
int skil_s4[30][18];
int karta[25][32];
int skil[38][38];
int gru[15][8];
int rem[13][9];
int xp_moi[2][4];
int xp_moi_inv[2][4];
int koord_ch[11][12][12];
int porti[9][9];
int kart_open[20][11];
int baza[7][7];
int baza1[7][7];
int baza2[7][7];
int soedi[53][7];
int fishka[16][13];
int port_beg[4][11];
int porti[9][9];
int knt[7][7];
int targ[7][29][11];
int teleportir[67][8];

string temp_fold;
string path_fold=pathfolder();

int tim=gettime();

unpack("C:\images\0.bmp", temp_fold+"0.bmp", 1);
unpack("C:\images\1.bmp", temp_fold+"1.bmp", 1);
unpack("C:\images\2.bmp", temp_fold+"2.bmp", 1);
unpack("C:\images\3.bmp", temp_fold+"3.bmp", 1);
unpack("C:\images\4.bmp", temp_fold+"4.bmp", 1);
unpack("C:\images\5.bmp", temp_fold+"5.bmp", 1);
unpack("C:\images\6.bmp", temp_fold+"6.bmp", 1);
unpack("C:\images\7.bmp", temp_fold+"7.bmp", 1);
unpack("C:\images\8.bmp", temp_fold+"8.bmp", 1);
unpack("C:\images\9.bmp", temp_fold+"9.bmp", 1);
unpack("C:\images\10.bmp", temp_fold+"10.bmp", 1);
unpack("C:\images\baza.bmp", temp_fold+"baza.bmp", 1);
unpack("C:\images\baza1.bmp", temp_fold+"baza1.bmp", 1);
unpack("C:\images\baza2.bmp", temp_fold+"baza2.bmp", 1);
unpack("C:\images\fishka.bmp", temp_fold+"fishka.bmp", 1);
unpack("C:\images\gru.bmp", temp_fold+"gru.bmp", 1);
unpack("C:\images\karta.bmp", temp_fold+"karta.bmp", 1);
unpack("C:\images\karta1.bmp", temp_fold+"karta1.bmp", 1);
unpack("C:\images\kart_open.bmp", temp_fold+"kart_open.bmp", 1);
unpack("C:\images\knt.bmp", temp_fold+"knt.bmp", 1);
unpack("C:\images\porti.bmp", temp_fold+"porti.bmp", 1);
unpack("C:\images\port_beg.bmp", temp_fold+"port_beg.bmp", 1);
unpack("C:\images\radiaciya.bmp", temp_fold+"radiaciya.bmp", 1);
unpack("C:\images\rem.bmp", temp_fold+"rem.bmp", 1);
unpack("C:\images\skil.bmp", temp_fold+"skil.bmp", 1);
unpack("C:\images\skil_s1.bmp", temp_fold+"skil_s1.bmp", 1);
unpack("C:\images\skil_s2.bmp", temp_fold+"skil_s2.bmp", 1);
unpack("C:\images\skil_s3.bmp", temp_fold+"skil_s3.bmp", 1);
unpack("C:\images\skil_s4.bmp", temp_fold+"skil_s4.bmp", 1);
unpack("C:\images\soedi.bmp", temp_fold+"soedi.bmp", 1);
unpack("C:\images\targ1.bmp", temp_fold+"targ1.bmp", 1);
unpack("C:\images\targ2.bmp", temp_fold+"targ2.bmp", 1);
unpack("C:\images\targ3.bmp", temp_fold+"targ3.bmp", 1);
unpack("C:\images\targ4.bmp", temp_fold+"targ4.bmp", 1);
unpack("C:\images\targ5.bmp", temp_fold+"targ5.bmp", 1);
unpack("C:\images\targ6.bmp", temp_fold+"targ6.bmp", 1);
unpack("C:\images\targ7.bmp", temp_fold+"targ7.bmp", 1);
unpack("C:\images\teleportir.bmp", temp_fold+"teleportir.bmp", 1);
unpack("C:\images\xp_moi.bmp", temp_fold+"xp_moi.bmp", 1);
unpack("C:\images\xp_moi_inv.bmp", temp_fold+"xp_moi_inv.bmp", 1);
unpack("C:\images\zv_vbor.bmp", temp_fold+"zv_vbor.bmp", 1);

loadimage(#koord_ch[0][0][0], temp_fold+"0.bmp");
loadimage(#koord_ch[1][0][0], temp_fold+"1.bmp");
loadimage(#koord_ch[2][0][0], temp_fold+"2.bmp");
loadimage(#koord_ch[3][0][0], temp_fold+"3.bmp");
loadimage(#koord_ch[4][0][0], temp_fold+"4.bmp");
loadimage(#koord_ch[5][0][0], temp_fold+"5.bmp");
loadimage(#koord_ch[6][0][0], temp_fold+"6.bmp");
loadimage(#koord_ch[7][0][0], temp_fold+"7.bmp");
loadimage(#koord_ch[8][0][0], temp_fold+"8.bmp");
loadimage(#koord_ch[9][0][0], temp_fold+"9.bmp");
loadimage(#koord_ch[10][0][0], temp_fold+"10.bmp");
loadimage(#baza[0][0], temp_fold+"baza.bmp");
loadimage(#baza1[0][0], temp_fold+"baza1.bmp");
loadimage(#baza2[0][0], temp_fold+"baza2.bmp");
loadimage(#fishka[0][0], temp_fold+"fishka.bmp");
loadimage(#gru[0][0], temp_fold+"gru.bmp");
loadimage(#karta[0][0], temp_fold+"karta.bmp");
loadimage(#karta1[0][0], temp_fold+"karta1.bmp");
loadimage(#kart_open[0][0], temp_fold+"kart_open.bmp");
loadimage(#knt[0][0], temp_fold+"knt.bmp");
loadimage(#porti[0][0], temp_fold+"porti.bmp");
loadimage(#port_beg[0][0], temp_fold+"port_beg.bmp");
loadimage(#radiaciya[0][0], temp_fold+"radiaciya.bmp");
loadimage(#rem[0][0], temp_fold+"rem.bmp");
loadimage(#skil[0][0], temp_fold+"skil.bmp");
loadimage(#skil_s1[0][0], temp_fold+"skil_s1.bmp");
loadimage(#skil_s2[0][0], temp_fold+"skil_s2.bmp");
loadimage(#skil_s3[0][0], temp_fold+"skil_s3.bmp");
loadimage(#skil_s4[0][0], temp_fold+"skil_s4.bmp");
loadimage(#soedi[0][0], temp_fold+"soedi.bmp");
loadimage(#targ[0][0][0], temp_fold+"targ1.bmp");
loadimage(#targ[1][0][0], temp_fold+"targ2.bmp");
loadimage(#targ[2][0][0], temp_fold+"targ3.bmp");
loadimage(#targ[3][0][0], temp_fold+"targ4.bmp");
loadimage(#targ[4][0][0], temp_fold+"targ5.bmp");
loadimage(#targ[5][0][0], temp_fold+"targ6.bmp");
loadimage(#targ[6][0][0], temp_fold+"targ7.bmp");
loadimage(#teleportir[0][0], temp_fold+"teleportir.bmp");
loadimage(#xp_moi[0][0], temp_fold+"xp_moi.bmp");
loadimage(#xp_moi_inv[0][0], temp_fold+"xp_moi_inv.bmp");
loadimage(#zv_vbor[0][0], temp_fold+"zv_vbor.bmp");


if (getcontrol(CHECK_0)==1)
{
saveimage(#koord_ch[0][0][0], path_fold+"0.bmp");
saveimage(#koord_ch[1][0][0], path_fold+"1.bmp");
saveimage(#koord_ch[10][0][0], path_fold+"10.bmp");
saveimage(#koord_ch[2][0][0], path_fold+"2.bmp");
saveimage(#koord_ch[3][0][0], path_fold+"3.bmp");
saveimage(#koord_ch[4][0][0], path_fold+"4.bmp");
saveimage(#koord_ch[5][0][0], path_fold+"5.bmp");
saveimage(#koord_ch[6][0][0], path_fold+"6.bmp");
saveimage(#koord_ch[7][0][0], path_fold+"7.bmp");
saveimage(#koord_ch[8][0][0], path_fold+"8.bmp");
saveimage(#koord_ch[9][0][0], path_fold+"9.bmp");
saveimage(#baza[0][0], path_fold+"baza.bmp");
saveimage(#baza1[0][0], path_fold+"baza1.bmp");
saveimage(#baza2[0][0], path_fold+"baza2.bmp");
saveimage(#fishka[0][0], path_fold+"fishka.bmp");
saveimage(#gru[0][0], path_fold+"gru.bmp");
saveimage(#karta[0][0], path_fold+"karta.bmp");
saveimage(#karta1[0][0], path_fold+"karta1.bmp");
saveimage(#kart_open[0][0], path_fold+"kart_open.bmp");
saveimage(#knt[0][0], path_fold+"knt.bmp");
saveimage(#porti[0][0], path_fold+"porti.bmp");
saveimage(#port_beg[0][0], path_fold+"port_beg.bmp");
saveimage(#radiaciya[0][0], path_fold+"radiaciya.bmp");
saveimage(#rem[0][0], path_fold+"rem.bmp");
saveimage(#skil[0][0], path_fold+"skil.bmp");
saveimage(#skil_s1[0][0], path_fold+"skil_s1.bmp");
saveimage(#skil_s2[0][0], path_fold+"skil_s2.bmp");
saveimage(#skil_s3[0][0], path_fold+"skil_s3.bmp");
saveimage(#skil_s4[0][0], path_fold+"skil_s4.bmp");
saveimage(#soedi[0][0], path_fold+"soedi.bmp");
saveimage(#targ[0][0][0], path_fold+"targ1.bmp");
saveimage(#targ[1][0][0], path_fold+"targ2.bmp");
saveimage(#targ[2][0][0], path_fold+"targ3.bmp");
saveimage(#targ[3][0][0], path_fold+"targ4.bmp");
saveimage(#targ[4][0][0], path_fold+"targ5.bmp");
saveimage(#targ[5][0][0], path_fold+"targ6.bmp");
saveimage(#targ[6][0][0], path_fold+"targ7.bmp");
saveimage(#teleportir[0][0], path_fold+"teleportir.bmp");
saveimage(#xp_moi[0][0], path_fold+"xp_moi.bmp");
saveimage(#xp_moi_inv[0][0], path_fold+"xp_moi_inv.bmp");
saveimage(#zv_vbor[0][0], path_fold+"zv_vbor.bmp");
messagebox ("Распаковка в папку темп и загрузка loadimage всех рисунков и пересохранение их заняло "+format(gettime()-tim)+" мсек.");
}
else messagebox ("Распаковка в папку темп и загрузка loadimage всех рисунков заняло "+format(gettime()-tim)+" мсек.");

RESOURCE
{
"C:\images\0.bmp";
"C:\images\1.bmp";
"C:\images\10.bmp";
"C:\images\2.bmp";
"C:\images\3.bmp";
"C:\images\4.bmp";
"C:\images\5.bmp";
"C:\images\6.bmp";
"C:\images\7.bmp";
"C:\images\8.bmp";
"C:\images\9.bmp";
"C:\images\baza.bmp";
"C:\images\baza1.bmp";
"C:\images\baza2.bmp";
"C:\images\fishka.bmp";
"C:\images\gru.bmp";
"C:\images\karta.bmp";
"C:\images\karta1.bmp";
"C:\images\kart_open.bmp";
"C:\images\knt.bmp";
"C:\images\porti.bmp";
"C:\images\port_beg.bmp";
"C:\images\radiaciya.bmp";
"C:\images\rem.bmp";
"C:\images\skil.bmp";
"C:\images\skil_s1.bmp";
"C:\images\skil_s2.bmp";
"C:\images\skil_s3.bmp";
"C:\images\skil_s4.bmp";
"C:\images\soedi.bmp";
"C:\images\targ1.bmp";
"C:\images\targ2.bmp";
"C:\images\targ3.bmp";
"C:\images\targ4.bmp";
"C:\images\targ5.bmp";
"C:\images\targ6.bmp";
"C:\images\targ7.bmp";
"C:\images\teleportir.bmp";
"C:\images\xp_moi.bmp";
"C:\images\xp_moi_inv.bmp";
"C:\images\zv_vbor.bmp";
"C:\club.wav";
}

INITDIALOG
{
temp_fold=tempfolder();
unpack("C:\club.wav", temp_fold+"club.wav", 1);
sound (temp_fold+"club.wav", 1);
}

CREATE_INTERFACE
{
DIALOG "тест unpack" 437 100
BUTTONSCRIPT "Запустить" 15 41 400 25
CHECK_0 0 "После распаковки и загрузки пересохранить в папку программы" 10 10 355 18
}




Пример создания папки в директории программы и распаковка в нее
 Цитата:
string pt=pathfolder();
external(INT, "CreateDirectory", "CreateDirectoryA", "kernel32.dll");
CreateDirectory(pt+"res", 0);


unpack("C:\bot\Image_0.bmp", pt+"res\Image_0.bmp", 1);



RESOURCE
{
"C:\bot\Image_0.bmp";
}
2. DeLiberate - 10 Марта, 2015 - 17:58:45 - перейти к сообщению
Полезно, даже очень Ха-ха
Как обстоят дела с кириллицей в пути распаковки?
3. Kibor - 10 Марта, 2015 - 19:41:25 - перейти к сообщению
 DeLiberate пишет:
Как обстоят дела с кириллицей в пути распаковки


норм......
4. yo1 - 10 Марта, 2015 - 22:38:59 - перейти к сообщению
Без распаковки получится использовать файлы в ресурсах?
5. DeLiberate - 10 Марта, 2015 - 22:51:41 - перейти к сообщению
 yo1 пишет:
Без распаковки получится использовать файлы в ресурсах?

Только после распаковки, например в tempfolder
6. yo1 - 11 Марта, 2015 - 02:55:13 - перейти к сообщению
 DeLiberate пишет:
Только после распаковки, например в tempfolder

Это и так понятно. Вот можно было бы подгружать библиотеки, картинки без распаковки ...
7. Kibor - 11 Марта, 2015 - 03:03:12 - перейти к сообщению
 yo1 пишет:
Вот можно было бы подгружать библиотеки, картинки без распаковки


ну это не проблема... только смысл.. с распакованным файлом можно без мороки работать имеющимися функциями, а так надо писать специально еще..

с распаковкой в темп работают многие программы и без проблем.. по времени не заметно..
.

я могу сделать функцию которая заполнит массив char байтами файла. что будете делать с ним? разве удобнее станет?
.
8. yo1 - 11 Марта, 2015 - 04:12:23 - перейти к сообщению
 Kibor пишет:
с распаковкой в темп работают многие программы и без проблем.

Как тогда сделать проверку темп на наличие файлов? В случае их отсутствия - сообщить\распаковать.
9. Kibor - 11 Марта, 2015 - 04:14:22 - перейти к сообщению
 yo1 пишет:
Как тогда сделать проверку темп на наличие файлов? В случае их отсутствия - сообщить\распаковать.


 Kibor пишет:
unpack("C:\Windows\system32\calc.exe", "C:\c.exe", 1);
первый параметр - строка или переменная string в которой содержится путь к файлу каким он прописан в блоке RESOURCE. Этот параметр указывает какой файл извлекаем из ресурсов.
второй - строка или переменная string в которой содержится путь куда запишем файл.
третий параметр 0 или 1
0 - не заменять если есть..
1 - заменять
.


с 0 параметром. распакует только если нет
10. Skycrew - 11 Марта, 2015 - 04:55:25 - перейти к сообщению
Отличная штука!
И да, было бы круто сделать, чтобы файлы можно было юзать не распаковывая на диск.. Это нужно для того, чтобы их "не палить" пользователю бота.

Powered by ExBB FM 1.0 Final