Хочу упаковать координаты например такого вида:
Можно наверное вставлять их в массив и там упаковывать а потом использовать где надо, но можно еще как то лучше это сделать?Код:SetPlayerPos(playerid, 1461.6449, -1717.6471, 14.0469)
Вид для печати
Хочу упаковать координаты например такого вида:
Можно наверное вставлять их в массив и там упаковывать а потом использовать где надо, но можно еще как то лучше это сделать?Код:SetPlayerPos(playerid, 1461.6449, -1717.6471, 14.0469)
А зачем?
PHP код:
#define MAX_COUNT_COORD (100) // максимальное кол-во ячеек с координатами
#define COUNT_PACK_COORD (3) // кол-во значений в одной ячейке (x, y, z) = 3
new coord_save[MAX_COUNT_COORD][COUNT_PACK_COORD] =
{
{ 0.0, 0.0, 5.0 },
{ 2.0, 2.0, 5.0 }
};
// ну и примеры вывода/ввода информации ячеек
// юзаем первую строку координат для спавна
SetPlayerPos(playerid, coord_save[0][0], coord_save[0][1], coord_save[0][2]);
// записываем в первую(нулевую) ячейку координаты
coord_save[0][0] = x;
coord_save[0][1] = y;
coord_save[0][2] = z;
Упаковать их более лучше не получится, поскольку все вещественные числа занимают полностью 4 байта, следовательно, упаковать их можно только в массив. Однако помните, что скорость к двумерному массиву меньше, чем скорость к одномерному. Таким образом, вы можете упаковать их в один массив.
К тому же, можно сделать макросы, которые помогут вам.PHP код:
const COUNT_PACK=3;
new array[MAX_ITEMS] = {0.0, 0.0, 5.0, 2.0, 2.0, 5.0};
new index;
SetPlayerPos(playerid, array[index], array[index+1], array[index+2]);
// Для перехода к другому элементу.
index += COUNT_PACK;
array[index] = x;
array[index+1] = y;
array[index+2] = z;
PHP код:
#define GetPackedArrayX(%1,%2) (%1[(%2)])
#define GetPackedArrayY(%1,%2) (%1[(%2)+1])
#define GetPackedArrayZ(%1,%2) (%1[(%2)+2])
#define SetPackedArrayX(%1,%2,%3) (%1[(%2)] = (%3))
#define SetPackedArrayY(%1,%2,%3) (%1[(%2)+1] = (%3))
#define SetPackedArrayZ(%1,%2,%3) (%1[(%2)+2] = (%3))
#define GetNextPackedItem(%1) ((%1) + COUNT_PACK)
Сейчас бы убивать читаемость и усложнять код ради сохранения десятка байт -_-
Тогда ещё для понятности писать так =)
PHP код:
new array[MAX_ITEMS] =
{
0.0, 0.0, 5.0,
2.0, 2.0, 5.0
};