Форум Pawn.Wiki - Воплоти мечту в реальность!: UUID4 - Universal Unique Identifiers - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

UUID4 - Universal Unique Identifiers Оценка: -----

#1
Пользователь офлайн   Mars_Flex 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Доброго времени суток Pawn-Wiki.Ru!
Не видел темы про 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

2

#2
Пользователь офлайн   Mars_Flex 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Что нету даже вопрос по плагину?)

Сообщение отредактировал Mars_Flex: 14 мая 2018 - 20:06

0

#3
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Кто-нибудь пользуется этим?
0

#4
Пользователь офлайн   elmir.kuba 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Есть версия не для sampctl, потому что он не работает с open mp?
0

#5
Пользователь офлайн   Nexius 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияelmir.kuba (20 июня 2025 - 14:32) писал:

Есть версия не для sampctl, потому что он не работает с open mp?

Да, бинарники скачиваешь руками со страницы релизов, а .inc лежит в репозитории

Сообщение отредактировал Nexius: 20 июня 2025 - 15:35

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика