Не видел темы про UUID плагине, решил написать, Оф.Источник.
Pawn-uuid
GitHub
UUID - обеспечивает простую функцию генератора UUID версии 4.
Что такое UUID? UUID (Universal Unique Identifier) ??- стандартизированная реализация генерации уникальных последовательностей байтов. В строковом формате эти UUID выглядят следующим образом:
e338fae6-9df9-4e21-bb59-667c29e419cf 0149476c-cf42-4432-b946-d9695656aec0 dcd2d8bd-0fb8-44db-93fd-b00efaa610ae

Вероятно, вы увидите эти строки стиля повсюду от информационных бюллетеней до идентификаторов учетной записи веб-сайта. Они очень полезны для однозначной идентификации вещей, не отступая от пользовательских имен или увеличивая идентификаторы.
Для чего они полезны?
Идентификаторы, подобные этому, идеально подходят для идентификации игроков, не полагаясь на их имя пользователя - это позволяет игрокам свободно изменять свое имя пользователя, не изменяя тонны отношений с базой данных.
Это также идеально подходит для идентификации объектов, таких как транспортные средства, пикапы, предметы и т. Д. Хорошим примером этого является игра «Масштаб и выживание»: при каждом перезапуске сервера в мире создается и размещается около 10-20 000 предметов, каждый из которых присваивается уникальный идентификатор, поэтому, если игрок выбирает один из них и сохраняет его в инвентаре или в багажнике транспортного средства, уникальный идентификатор сохраняется в течение всего срока службы элемента и везде, где он проходит, можно отслеживать. Это очень полезно для аудита и анти-читов.
Почему бы не использовать инкрементирующий идентификатор?
Если вы являетесь пользователем SQL, вы, вероятно, используете AUTOINCREMENT для назначения уникальных идентификаторов для объектов, которые вы сохраняете в базе данных.
Проблема с этим заключается в том, что вы полагаетесь на реализацию базы данных для обработки уникальности. Это блокирует вас в использовании этой базы данных, а также означает, что существует зависимость от последовательности в идентификаторах.
Почему бы не использовать случайное целое число?
Конечно, есть 2 ^ 32 действительных состояния, которые вы можете использовать в ячейке Pawn (integer), какова вероятность столкновения? На самом деле это не очень много энтропии, особенно если вы создаете новые сущности на каждом перезапуске сервера / несколько раз в день. Лучше быть в безопасности при попытке создания уникальных идентификаторов.
Установка
Источник и бинарные материалы на GitHub
Просто установите в свой проект:
пакет sampctl install Southclaws / pawn-uuid

Включите в свой код и начните использовать инклуд:
#include <uuid>

И добавьте в свою конфигурацию исполнения:
{ "plugins": ["Southclaws/pawn-uuid"] }

Применение
Есть только одна функция и одна константа, в следующем примере должно быть достаточно документации для использования:
new uuid[UUID_LEN]; UUID(uuid, UUID_LEN); printf("UUID: '%s'", uuid); // prints a nice unique string shaped like: 00000000-0000-0000-0000-000000000000

Тестирование
Запуск модульных тестов с помощью:
Windows
make test-windows

Linux
Требуется установка и доступ к Docker в командной строке. Если вы на самом деле находитесь на машине Linux, просто запустите команду make make Windows выше, и она все равно будет работать в Linux!
make test-debian

Сообщение отредактировал Mars_Flex: 08 мая 2018 - 22:07