Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для LowRider
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.04.2017
    Сообщений
    12
    Репутация:
    0 ±

    Как упаковать координаты, быстро и легально?

    Хочу упаковать координаты например такого вида:

    Код:
    SetPlayerPos(playerid, 1461.6449, -1717.6471, 14.0469)
    Можно наверное вставлять их в массив и там упаковывать а потом использовать где надо, но можно еще как то лучше это сделать?

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А зачем?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    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.00.05.0 },
    2.02.05.0 }
    };

    // ну и примеры вывода/ввода информации ячеек
    // юзаем первую строку координат для спавна
    SetPlayerPos(playeridcoord_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
    Последний раз редактировалось vovandolg; 08.06.2017 в 10:19.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  4. #4
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Упаковать их более лучше не получится, поскольку все вещественные числа занимают полностью 4 байта, следовательно, упаковать их можно только в массив. Однако помните, что скорость к двумерному массиву меньше, чем скорость к одномерному. Таким образом, вы можете упаковать их в один массив.

    PHP код:
    const COUNT_PACK=3;
    new array[
    MAX_ITEMS] = {0.00.05.02.02.05.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) 

  5. Пользователь сказал cпасибо:
    LowRider (09.06.2017)
  6. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Сейчас бы убивать читаемость и усложнять код ради сохранения десятка байт -_-
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    LowRider (09.06.2017)
  8. #6
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Однако помните, что скорость к двумерному массиву меньше, чем скорость к одномерному. Таким образом, вы можете упаковать их в один массив.
    А там разве не одинаково будет если работать на прямую по указанной ячейке?
    И откуда такие данные что одномерный быстрее двумерного, с плюсов или откуда?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  9. #7
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    А там разве не одинаково будет если работать на прямую по указанной ячейке?
    И откуда такие данные что одномерный быстрее двумерного, с плюсов или откуда?
    Я говорил про доступ к ячейке. Доступ к одномерному массиву быстрее, поскольку генерируется меньше инструкций.

  10. #8
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Тогда ещё для понятности писать так =)
    PHP код:
    new array[MAX_ITEMS] =
    {
        
    0.00.05.0,
        
    2.02.05.0
    }; 
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •