Skip to content

emildalalyan/uint64_for_pawn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uint64_for_pawn — 64-битные числа для игровых режимов SAMP

Данная библиотека реализует хранение и арифметику над 64-битными числами при помощи штатной 32-битной арифметики языка Pawn.

ВНИМАНИЕ! Библиотека предназначена для работы с фанатским компилятором Pawn.

Преимущества

💳 Такие числа могут быть полезными при реализации внутриигровых систем банков, казино, и т.д., так как игрок может заиметь достаточное кол-во денег, чтобы ощутить максимум, накладываемый 32-битным знаковым представлением чисел (максимум всего 2 147 483 647).

Хранение же значения баланса при помощи 64-битного беззнакового представления позволяет "поднять планку" максимума ((2^64)-1 = 18 446 744 073 709 551 615)

🧰 При этом, библиотека является "header-only", т.е. встраивается в код при помощи директивы #include и не требует подгрузки плагинов.

Пример использования

Следующая программа преобразовывает строки в два числа, складывает их и показывает результат в консоли:

#include <uint64>

main()
{
    new number1[uint64]; // создание переменной для числа (выделение памяти под число)
    uint64fromstr(number1, "550000000"); // преобразование из строки
    
    new number2[uint64]; // создание переменной для числа (выделение памяти под число)
    uint64fromstr(number2, "48255024242"); // преобразование из строки
    
    uint64add(number1, number2); // сложение чисел, результат записывается в первую переменную
    
    new string[50];
    uint64tostr(string, sizeof(string), number1); // преобразование в строку
    print(string);
}

Скорость вычислений

⏱️ Самым главным недостатком этой реализации является скорость вычислений.

Несмотря на оптимизацию операций (например, некоторые функции были переписаны на языке AMX ассемблера), время выполнения многих операций в несколько раз больше аналогичных штатных операций над 32-битными числами.

🚨 Этот недостаток нивелируется применением этих чисел. Рекомендуется их использовать только в необходимых местах (см. Преимущества). В этом случае, скорость операций не станет "камнем преткновения".

Документация

Okay, what if i don't understand Russian?

About

This library implements storage and arithmetic on 64-bit numbers using standard 32-bit Pawn arithmetic.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages