PDA

Просмотр полной версии : [Вопрос] Упакованные строки



Found
18.05.2016, 19:00
Здравствуйте. Недавно, при прочтении одной темы от Daniel_Cortez, я наткнулся на очень интересный участок кода. К сожалению, толковой информации я не нашёл, поэтому я прошу вас, пожалуйста, объяснить в чём смысл упакованных строк.


new const vehicle_models_names[611 - 399 + 1][] =
{
/* 0 */ {!"No vehicle"}, // Для случаев, когда (model == 0), т.е. когда игрок не в машине.
/* 400 */ {!"Landstalker"}, // Также обратите внимание, что строки с названиями упакованные.
/* 401 */ {!"Bravura"},
/* ... */
/* 611 */ {!"Utility Trailer"}
}

stock GetVehicleModelName(model, name, size = sizeof(name))
{
// Если номер модели неизвестен (в т.ч. нулевой)...
if (model < 400 || 611 < model)
return strunpack(name, vehicle_models_names[0], size);
// Модели #400 соответствует название в vehicle_models_names[1], а не [0],
// поэтому следует прибавить 1 к индексу.
return strunpack(name, vehicle_models_names[model - 400 + 1], size);
}


За ранее благодарю за ответ.

VVWVV
18.05.2016, 19:04
Меньше места занимает в памяти.

Found
18.05.2016, 19:12
Меньше места занимает в памяти.

Есть ли какие-то ограничения, либо же минусы?

VVWVV
18.05.2016, 19:14
Минус один: не все функции поддерживают упакованные строки. Есть, конечно, ограничение, но это уже связано с ASM.

Found
18.05.2016, 19:16
В целом всё понятно.

Тему можно закрыть.