Most arra gondoltam hogy 4 számmezõt hoznál létre játékosonként mysql-ben majd ezt az adatot tárolnád egy ilyen változóban:
new
ajandek[MAX_PLAYERS][4]; // 32, 64, 96, 128 bit, tehát 128 ajándékdoboz
ajandek[playerid][0] = cache_get_row_int(...
ajandek[playerid][1] = cache_get_row_int(...
ajandek[playerid][2] = cache_get_row_int(...
ajandek[playerid][3] = cache_get_row_int(...
Majd bitmûveletekkel állítanád be melyiket vette fel és kérdeznéd is le ellenõrzésként.
#include <a_samp>
new
ajandek[MAX_PLAYERS][4]; // 32, 64, 96, 128 bit, tehát 128 ajándékdoboz
stock
set_bitarray(array[], const value, size = sizeof(array))
{
if(1 <= value <= (size * cellbits))
{
new
slot = value >>> 5,
bit = value & 31;
array[slot] |= 1 << bit;
}
}
stock
get_bitarray(array[], const value, size = sizeof(array))
{
if(1 <= value <= (size * cellbits))
{
return (array[value >>> 5] & (1 << (value & 31))) || false;
}
return false;
}
public
OnFilterScriptInit()
{
for(new i = 0; i < 10; i++)
{
new
rand = random(100) + 1;
printf(\"Randomként 10 darab felvett ajándék azonosítószáma: %d\", rand);
set_bitarray(ajandek[0], rand); // Felvett ajándék beállítása
}
for(new i; i < 100; i++)
{
if(get_bitarray(ajandek[0], i)) printf(\"A 20 darab felvett ajándék azonosítószáma: %d\", i); // Lekérdezés melyiket vette fel
}
return 1;
}