Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Include Система хранения лицензий в битовой реализации

Prolific

Эксперт
Пользователь
Регистрация
16 Апр 2013
Сообщения
1,166
Лучшие ответы
0
Репутация
216
На форуме почти в каждом уроке посвященному битовым операциям упоминается про систему лицензий, которую можно сделать с их помощью, но никто (по крайней мере я не видел) не делал конкретный пример, который можно подключить и пользоваться. Я написал инклуд, который использует всего 1 одномерный массив на MAX_PLAYERS ячеек, который и будет хранить все лицензии.

PHP:
#include <a_samp>

stock licenses[MAX_PLAYERS];

//Посмотреть лицензию
#define GetLicCar(%0)             (licenses[%0] & 1 ? true : false)
#define GetLicPlane(%0)           (licenses[%0] & (1<<1) ? true : false)
#define GetLicShip(%0) 	       (licenses[%0] & (1<<2) ? true : false)
#define GetLicBiz(%0) 		    (licenses[%0] & (1<<3) ? true : false)
#define GetLicFish(%0) 	       (licenses[%0] & (1<<4) ? true : false)

//Выдать лицензию
#define GiveLicCar(%0) 	       (licenses[%0] |= 1)
#define GiveLicPlane(%0) 	     (licenses[%0] |= (1<<1))
#define GiveLicShip(%0) 	      (licenses[%0] |= (1<<2))
#define GiveLicBiz(%0) 	       (licenses[%0] |= (1<<3))
#define GiveLicFish(%0) 	      (licenses[%0] |= (1<<4))

//Забрать лицензию
#define TakeLicCar(%0) 	       (licenses[%0] &= ~1)
#define TakeLicPlane(%0) 	     (licenses[%0] &= ~(1<<1))
#define TakeLicShip(%0) 	      (licenses[%0] &= ~(1<<2))
#define TakeLicBiz(%0) 	       (licenses[%0] &= ~(1<<3))
#define TakeLicFish(%0) 	      (licenses[%0] &= ~(1<<4))

#define GetPlayerLicsValue(%0)    licenses[%0]
#define SetPlayerLicsValue(%0,%1) (licenses[%0] = %1)

Просто вставляем это в мод, либо подключаем в виде инклуда.

P.S. Хранить в БД нужно всего 1-о число.
Пример сохранения:
PHP:
mysql_format(DATABASE, string, sizeof(string), "UPDATE `accounts` SET `pLicenses` = %d  WHERE `pID` = %d LIMIT 1", 
    GetPlayerLicsValue(playerid), pInfo[playerid][pID]);
Пример инициализации:
PHP:
SetPlayerLicsValue(playerid, cache_get_field_content_int(0, "pLicenses", DATABASE));
 
Последнее редактирование:
Сверху Снизу