enum (<<= 1){MUNKA_NONE, // 0b00000000000000000000000000000000MUNKA_1 = 1, // 0b00000000000000000000000000000001MUNKA_2, // 0b00000000000000000000000000000010MUNKA_3, // 0b00000000000000000000000000000100MUNKA_4, // 0b00000000000000000000000000001000MUNKA_5, // 0b00000000000000000000000000010000MUNKA_6, // 0b00000000000000000000000000100000MUNKA_7, // 0b00000000000000000000000001000000MUNKA_8, // 0b00000000000000000000000010000000MUNKA_9, // 0b00000000000000000000000100000000MUNKA_10, // 0b00000000000000000000001000000000MUNKA_11, // 0b00000000000000000000010000000000MUNKA_12, // 0b00000000000000000000100000000000MUNKA_13, // 0b00000000000000000001000000000000MUNKA_14, // 0b00000000000000000010000000000000MUNKA_15, // 0b00000000000000000100000000000000MUNKA_16, // 0b00000000000000001000000000000000MUNKA_17, // 0b00000000000000010000000000000000MUNKA_18, // 0b00000000000000100000000000000000MUNKA_19, // 0b00000000000001000000000000000000MUNKA_20, // 0b00000000000010000000000000000000MUNKA_21, // 0b00000000000100000000000000000000MUNKA_22, // 0b00000000001000000000000000000000MUNKA_23, // 0b00000000010000000000000000000000MUNKA_24, // 0b00000000100000000000000000000000MUNKA_25, // 0b00000001000000000000000000000000MUNKA_26, // 0b00000010000000000000000000000000MUNKA_27, // 0b00000100000000000000000000000000MUNKA_28, // 0b00001000000000000000000000000000MUNKA_29, // 0b00010000000000000000000000000000MUNKA_30, // 0b00100000000000000000000000000000MUNKA_31, // 0b01000000000000000000000000000000MUNKA_32 // 0b10000000000000000000000000000000}
Job[playerid] |= MUNKA_2; // Ez az érték megadása a következõ sor szemléltetése végett szerepel. // 0b00000000000000000000000000000010Job[playerid] = MUNKA_1 | MUNKA_4 | MUNKA_3; // Ez a megoldás töröl minden korábban beállított munkát!! // // 0b00000000000000000000000000001101
Job[playerid] |= MUNKA_5; // 0b00000000000000000000000000011101Job[playerid] |= MUNKA_10; // 0b00000000000000000000001000011101Job[playerid] |= MUNKA_15; // 0b00000000000000000100001000011101Job[playerid] |= MUNKA_20; // 0b00000000000010000100001000011101Job[playerid] |= MUNKA_25; // 0b00000001000010000100001000011101Job[playerid] |= MUNKA_30; // 0b00100001000010000100001000011101Job[playerid] |= MUNKA_32; // 0b10100001000010000100001000011101
Job[playerid] &= ~MUNKA_5; // 0b10100001000010000100001000001101
Job[playerid] ^= MUNKA_20; // Ez esetben törlés mivel már aktiválva van. // 0b10100001000000000100001000001101Job[playerid] ^= MUNKA_21; // Ez esetben aktiválás mivel nincs hozzáadva. // 0b10100001000100000100001000001101
Job[playerid] |= MUNKA_11 | MUNKA_31 | MUNKA_22; // 0b11100001001100000100011000001101 <--Ez az érték kerül egy kis ellenõrzésre a példában. (printf(\"%d - %d -> %b\")
static constM_name[][] = {\"MUNKA_1\", \"MUNKA_2\", \"MUNKA_3\", \"MUNKA_4\", \"MUNKA_5\", \"MUNKA_6\", \"MUNKA_7\", \"MUNKA_8\", \"MUNKA_9\", \"MUNKA_10\", \"MUNKA_11\", \"MUNKA_12\", \"MUNKA_13\", \"MUNKA_14\", \"MUNKA_15\", \"MUNKA_16\", \"MUNKA_17\", \"MUNKA_18\", \"MUNKA_19\", \"MUNKA_20\", \"MUNKA_21\", \"MUNKA_22\", \"MUNKA_23\", \"MUNKA_24\", \"MUNKA_25\", \"MUNKA_26\", \"MUNKA_27\", \"MUNKA_28\", \"MUNKA_29\", \"MUNKA_30\", \"MUNKA_31\", \"MUNKA_32\"};for(new i; i < cellbits; i++){if(Job[playerid] & (1 << i)) printf(\"Vállalt: %s\", M_name);}
stockbitcount(num) // Ezt természetesen valahova máshova kell másolni a módban, szkriptben.{new count = 0 ;while(num) {num &= (num - 1) ;printf(\"--- %b\", num);count++;}return count ;}printf(\"%d elvállalt munkád van.\", bitcount(Job[playerid]));
if(Job[playerid] == MUNKA_NONE) printf(\"Nincs egy munka sem: MUNKA_NONE\");if(Job[playerid] & MUNKA_1) printf(\"Vállalt munka: MUNKA_1\");if(Job[playerid] & MUNKA_2) printf(\"Vállalt munka: MUNKA_2\");if(Job[playerid] & MUNKA_3) printf(\"Vállalt munka: MUNKA_3\");if(Job[playerid] & MUNKA_4) printf(\"Vállalt munka: MUNKA_4\");if(Job[playerid] & MUNKA_5) printf(\"Vállalt munka: MUNKA_5\");if(Job[playerid] & MUNKA_6) printf(\"Vállalt munka: MUNKA_6\");if(Job[playerid] & MUNKA_7) printf(\"Vállalt munka: MUNKA_7\");if(Job[playerid] & MUNKA_8) printf(\"Vállalt munka: MUNKA_8\");if(Job[playerid] & MUNKA_9) printf(\"Vállalt munka: MUNKA_9\");if(Job[playerid] & MUNKA_10) printf(\"Vállalt munka: MUNKA_10\");if(Job[playerid] & MUNKA_11) printf(\"Vállalt munka: MUNKA_11\");if(Job[playerid] & MUNKA_12) printf(\"Vállalt munka: MUNKA_12\");if(Job[playerid] & MUNKA_13) printf(\"Vállalt munka: MUNKA_13\");if(Job[playerid] & MUNKA_14) printf(\"Vállalt munka: MUNKA_14\");if(Job[playerid] & MUNKA_15) printf(\"Vállalt munka: MUNKA_15\");if(Job[playerid] & MUNKA_16) printf(\"Vállalt munka: MUNKA_16\");if(Job[playerid] & MUNKA_17) printf(\"Vállalt munka: MUNKA_17\");if(Job[playerid] & MUNKA_18) printf(\"Vállalt munka: MUNKA_18\");if(Job[playerid] & MUNKA_19) printf(\"Vállalt munka: MUNKA_19\");if(Job[playerid] & MUNKA_20) printf(\"Vállalt munka: MUNKA_20\");if(Job[playerid] & MUNKA_21) printf(\"Vállalt munka: MUNKA_21\");if(Job[playerid] & MUNKA_22) printf(\"Vállalt munka: MUNKA_22\");if(Job[playerid] & MUNKA_23) printf(\"Vállalt munka: MUNKA_23\");if(Job[playerid] & MUNKA_24) printf(\"Vállalt munka: MUNKA_24\");if(Job[playerid] & MUNKA_25) printf(\"Vállalt munka: MUNKA_25\");if(Job[playerid] & MUNKA_26) printf(\"Vállalt munka: MUNKA_26\");if(Job[playerid] & MUNKA_27) printf(\"Vállalt munka: MUNKA_27\");if(Job[playerid] & MUNKA_28) printf(\"Vállalt munka: MUNKA_28\");if(Job[playerid] & MUNKA_29) printf(\"Vállalt munka: MUNKA_29\");if(Job[playerid] & MUNKA_30) printf(\"Vállalt munka: MUNKA_30\");if(Job[playerid] & MUNKA_31) printf(\"Vállalt munka: MUNKA_31\");if(Job[playerid] & MUNKA_32) printf(\"Vállalt munka: MUNKA_32\");
printf(\"%d - %d -> %b\", 0b11100001001100000100011000001101, Job[playerid], Job[playerid]); // Egy kis ellenõrzés tényleg jók-e a bitmûveletek.Job[playerid] = MUNKA_NONE; // 0b00000000000000000000000000000000
#include <a_samp> enum (<<= 1){MUNKA_NONE, // 0b00000000000000000000000000000000MUNKA_1 = 1, // 0b00000000000000000000000000000001MUNKA_2, // 0b00000000000000000000000000000010MUNKA_3, // 0b00000000000000000000000000000100MUNKA_4, // 0b00000000000000000000000000001000MUNKA_5, // 0b00000000000000000000000000010000MUNKA_6, // 0b00000000000000000000000000100000MUNKA_7, // 0b00000000000000000000000001000000MUNKA_8, // 0b00000000000000000000000010000000MUNKA_9, // 0b00000000000000000000000100000000MUNKA_10, // 0b00000000000000000000001000000000MUNKA_11, // 0b00000000000000000000010000000000MUNKA_12, // 0b00000000000000000000100000000000MUNKA_13, // 0b00000000000000000001000000000000MUNKA_14, // 0b00000000000000000010000000000000MUNKA_15, // 0b00000000000000000100000000000000MUNKA_16, // 0b00000000000000001000000000000000MUNKA_17, // 0b00000000000000010000000000000000MUNKA_18, // 0b00000000000000100000000000000000MUNKA_19, // 0b00000000000001000000000000000000MUNKA_20, // 0b00000000000010000000000000000000MUNKA_21, // 0b00000000000100000000000000000000MUNKA_22, // 0b00000000001000000000000000000000MUNKA_23, // 0b00000000010000000000000000000000MUNKA_24, // 0b00000000100000000000000000000000MUNKA_25, // 0b00000001000000000000000000000000MUNKA_26, // 0b00000010000000000000000000000000MUNKA_27, // 0b00000100000000000000000000000000MUNKA_28, // 0b00001000000000000000000000000000MUNKA_29, // 0b00010000000000000000000000000000MUNKA_30, // 0b00100000000000000000000000000000MUNKA_31, // 0b01000000000000000000000000000000MUNKA_32 // 0b10000000000000000000000000000000}newJob[MAX_PLAYERS];publicOnFilterScriptInit(){// Több munka egyszerre történõ megadása:Job[0] |= MUNKA_2; // Ez az érték megadása a következõ sor szemléltetése végett szerepel. // 0b00000000000000000000000000000010Job[0] = MUNKA_1 | MUNKA_4 | MUNKA_3; // Ez a megoldás töröl minden korábban beállított munkát!! // // 0b00000000000000000000000000001101// Munkák egyesével történû hozzáadása:Job[0] |= MUNKA_5; // 0b00000000000000000000000000011101Job[0] |= MUNKA_10; // 0b00000000000000000000001000011101Job[0] |= MUNKA_15; // 0b00000000000000000100001000011101Job[0] |= MUNKA_20; // 0b00000000000010000100001000011101Job[0] |= MUNKA_25; // 0b00000001000010000100001000011101Job[0] |= MUNKA_30; // 0b00100001000010000100001000011101Job[0] |= MUNKA_32; // 0b10100001000010000100001000011101// Egy munka törlése:Job[0] &= ~MUNKA_5; // 0b10100001000010000100001000001101// Egy munka törlése ha aktív, vagy aktiválása ha nincs beállítva:Job[0] ^= MUNKA_20; // Ez esetben törlés mivel már aktiválva van. // 0b10100001000000000100001000001101Job[0] ^= MUNKA_21; // Ez esetben aktiválás mivel nincs hozzáadva. // 0b10100001000100000100001000001101// Több munka egyszerre történõ megadása régi értékek megtartása mellett:Job[0] |= MUNKA_11 | MUNKA_31 | MUNKA_22; // 0b11100001001100000100011000001101// Ellenõrzés hogy melyik munkát vállalta a játékos:if(Job[0] == MUNKA_NONE) printf(\"Nincs egy munka sem: MUNKA_NONE\");if(Job[0] & MUNKA_1) printf(\"Vállalt munka: MUNKA_1\");if(Job[0] & MUNKA_2) printf(\"Vállalt munka: MUNKA_2\");if(Job[0] & MUNKA_3) printf(\"Vállalt munka: MUNKA_3\");if(Job[0] & MUNKA_4) printf(\"Vállalt munka: MUNKA_4\");if(Job[0] & MUNKA_5) printf(\"Vállalt munka: MUNKA_5\");if(Job[0] & MUNKA_6) printf(\"Vállalt munka: MUNKA_6\");if(Job[0] & MUNKA_7) printf(\"Vállalt munka: MUNKA_7\");if(Job[0] & MUNKA_8) printf(\"Vállalt munka: MUNKA_8\");if(Job[0] & MUNKA_9) printf(\"Vállalt munka: MUNKA_9\");if(Job[0] & MUNKA_10) printf(\"Vállalt munka: MUNKA_10\");if(Job[0] & MUNKA_11) printf(\"Vállalt munka: MUNKA_11\");if(Job[0] & MUNKA_12) printf(\"Vállalt munka: MUNKA_12\");if(Job[0] & MUNKA_13) printf(\"Vállalt munka: MUNKA_13\");if(Job[0] & MUNKA_14) printf(\"Vállalt munka: MUNKA_14\");if(Job[0] & MUNKA_15) printf(\"Vállalt munka: MUNKA_15\");if(Job[0] & MUNKA_16) printf(\"Vállalt munka: MUNKA_16\");if(Job[0] & MUNKA_17) printf(\"Vállalt munka: MUNKA_17\");if(Job[0] & MUNKA_18) printf(\"Vállalt munka: MUNKA_18\");if(Job[0] & MUNKA_19) printf(\"Vállalt munka: MUNKA_19\");if(Job[0] & MUNKA_20) printf(\"Vállalt munka: MUNKA_20\");if(Job[0] & MUNKA_21) printf(\"Vállalt munka: MUNKA_21\");if(Job[0] & MUNKA_22) printf(\"Vállalt munka: MUNKA_22\");if(Job[0] & MUNKA_23) printf(\"Vállalt munka: MUNKA_23\");if(Job[0] & MUNKA_24) printf(\"Vállalt munka: MUNKA_24\");if(Job[0] & MUNKA_25) printf(\"Vállalt munka: MUNKA_25\");if(Job[0] & MUNKA_26) printf(\"Vállalt munka: MUNKA_26\");if(Job[0] & MUNKA_27) printf(\"Vállalt munka: MUNKA_27\");if(Job[0] & MUNKA_28) printf(\"Vállalt munka: MUNKA_28\");if(Job[0] & MUNKA_29) printf(\"Vállalt munka: MUNKA_29\");if(Job[0] & MUNKA_30) printf(\"Vállalt munka: MUNKA_30\");if(Job[0] & MUNKA_31) printf(\"Vállalt munka: MUNKA_31\");if(Job[0] & MUNKA_32) printf(\"Vállalt munka: MUNKA_32\");// Összes munka törlése. Pl.: OnPlayerConnect-hezprintf(\"%d - %d -> %b\", 0b11100001001100000100011000001101, Job[0], Job[0]); // Egy kis ellenõrzés tényleg jók-e a bitmûveletek.Job[0] = MUNKA_NONE; // 0b00000000000000000000000000000000printf(\"%b\", Job[0]);// Tényleg törölt minden munkát? if(Job[0] == MUNKA_NONE) printf(\"Nincs egy munka sem: MUNKA_NONE\");if(Job[0] & MUNKA_1) printf(\"Vállalt munka: MUNKA_1\");if(Job[0] & MUNKA_2) printf(\"Vállalt munka: MUNKA_2\");if(Job[0] & MUNKA_3) printf(\"Vállalt munka: MUNKA_3\");if(Job[0] & MUNKA_4) printf(\"Vállalt munka: MUNKA_4\");if(Job[0] & MUNKA_5) printf(\"Vállalt munka: MUNKA_5\");if(Job[0] & MUNKA_6) printf(\"Vállalt munka: MUNKA_6\");if(Job[0] & MUNKA_7) printf(\"Vállalt munka: MUNKA_7\");if(Job[0] & MUNKA_8) printf(\"Vállalt munka: MUNKA_8\");if(Job[0] & MUNKA_9) printf(\"Vállalt munka: MUNKA_9\");if(Job[0] & MUNKA_10) printf(\"Vállalt munka: MUNKA_10\");if(Job[0] & MUNKA_11) printf(\"Vállalt munka: MUNKA_11\");if(Job[0] & MUNKA_12) printf(\"Vállalt munka: MUNKA_12\");if(Job[0] & MUNKA_13) printf(\"Vállalt munka: MUNKA_13\");if(Job[0] & MUNKA_14) printf(\"Vállalt munka: MUNKA_14\");if(Job[0] & MUNKA_15) printf(\"Vállalt munka: MUNKA_15\");if(Job[0] & MUNKA_16) printf(\"Vállalt munka: MUNKA_16\");if(Job[0] & MUNKA_17) printf(\"Vállalt munka: MUNKA_17\");if(Job[0] & MUNKA_18) printf(\"Vállalt munka: MUNKA_18\");if(Job[0] & MUNKA_19) printf(\"Vállalt munka: MUNKA_19\");if(Job[0] & MUNKA_20) printf(\"Vállalt munka: MUNKA_20\");if(Job[0] & MUNKA_21) printf(\"Vállalt munka: MUNKA_21\");if(Job[0] & MUNKA_22) printf(\"Vállalt munka: MUNKA_22\");if(Job[0] & MUNKA_23) printf(\"Vállalt munka: MUNKA_23\");if(Job[0] & MUNKA_24) printf(\"Vállalt munka: MUNKA_24\");if(Job[0] & MUNKA_25) printf(\"Vállalt munka: MUNKA_25\");if(Job[0] & MUNKA_26) printf(\"Vállalt munka: MUNKA_26\");if(Job[0] & MUNKA_27) printf(\"Vállalt munka: MUNKA_27\");if(Job[0] & MUNKA_28) printf(\"Vállalt munka: MUNKA_28\");if(Job[0] & MUNKA_29) printf(\"Vállalt munka: MUNKA_29\");if(Job[0] & MUNKA_30) printf(\"Vállalt munka: MUNKA_30\");if(Job[0] & MUNKA_31) printf(\"Vállalt munka: MUNKA_31\");if(Job[0] & MUNKA_32) printf(\"Vállalt munka: MUNKA_32\");return 1;}
stock CountSetBits(i){i = i - ((i >> 1) & 0x55555555);i = (i & 0x33333333) + ((i >> 2) & 0x33333333);return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;}