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

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

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

> Без описания
Nikanr
Отправлено: 22 Мая, 2021 - 21:03:33
Post Id



Пользователь
Специалист


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




Можно ли получив адрес массива при помощи address узнать его размер используя только адрес?
 
 Top
Kibor
Отправлено: 22 Мая, 2021 - 21:10:20
Post Id



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


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




Что подразумевается под массивом?
Адрес это просто номер ячейки.
 
 Top
Nikanr
Отправлено: 22 Мая, 2021 - 21:36:26
Post Id



Пользователь
Специалист


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




Есть массив картинок, допустим порядок такой:

CODE:
int Image[4][20][20]
0 - картинка меча
1 - некоторое событие 1
2 - некоторое событие 2
3 - картинка монстра
и т.д


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

CODE:
int Image[5][20][20]
0 - картинка меча
1 - некоторое событие 1
2 - некоторое событие 2
3 - некоторое событие 3
4 - картинка монстра
и т.д


Когда картинок 40+ каждый раз менять - довольно проблематично, поэтому появилась идея раскидать картинки по разным массивам и в нужные массивы просто в конец добавлять нужные картинки. Получился такой код:

P:S: dll взять тут и поместить на диск C\: dll. Картинки взять свои

CODE:
external(INT, "load_image", "load_image", "C:\LoadImage.dll");

// адрес и размер массива
int ad_im[2][2] , Image_q[1][50][50], Image_w[1][50][50];

// имена картинок по группам
string m_namei[2] = {"q", "w"};

ad_im[0][0] = address(#Image_q[0][0][0]); ad_im[0][1] = sizearray(Image_q);
ad_im[1][0] = address(#Image_w[0][0][0]); ad_im[1][1] = sizearray(Image_w);

char buffer_i[99999];

for(int i = 0, n = 0; i < sizearray(ad_im); i++){ // пройтись по адресам массивов

for(int d = 0; d < ad_im[i][1]; d++){ // загрузить изображения соотв. размеру каждого массива изображений

resource(#buffer_i[0], "C:\_work\projects_\game1\Version\Img\"+format(d)+m_namei[n]+".bmp");

load_image(address(#buffer_i[0]), ad_im[i][0], 50, 50);
}

n++;
}

RESOURCE{

"C:\_work\projects_\game1\Version\Img\0w.bmp";
"C:\_work\projects_\game1\Version\Img\0q.bmp";
}


Просто хотелось в load_image(address(#buffer_i[0]), ad_im[0], 50, 50); заменить 50 и 50 на размер ячеек передаваемого массива, вместо выделенного стандарта. Код не рабочий, картинки во 2м массиве не ищет (не довел до ума)
[i](Добавление)

И заодно хотел спросить но не по теме, почему грузится с ресурсов одно и то же изображение в 2 разных массива?
(Добавление)
Хотя вроде понял, адрес ячейки же...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by