←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Zapisywanie paru rzeczy do jednej zmiennej

  • +
  • -
Qes - zdjęcie Qes 04.01.2017

Witam,

Chciałbym w zmiennej zapisać parę informacji, czyli coś w tym stylu

zmienna abcd domyślnie ma taką wartość 0 0 0 0, po wpisywaniu /asd ta wartość zmieni się w 1 0 0 0, jeżeli wpiszemy te dwie komendy, to wartość zmiennej wyniesie 1 1 0 0, potem po wpisaniu /asd3 będzie już miała taką wartość 1 1 1 0.

 

Podam też dokładniejszy przykład

Mamy mapę de_dust2, domyślna wartość warunku abcd wynosi 0 0 0 0.

Teraz wpisujemy /asd2 i wartość zmienia się na 0 1 0 0.

 

Zmienia się mapa na de_dust i znowu abcd przyjmuje swoją domyślną wartość czyli 0 0 0 0.

Jednak tym razem wpiszemy dwie komendy /asd3 oraz /asd2 i tak będzie wyglądała wartość 0 1 1 0.

Odpowiedz

  • +
  • -
Master Yoga - zdjęcie Master Yoga 04.01.2017

bity !!!

#define ASD1 (1<<1)
#define ASD2 (1<<2)
#define ASD3 (1<<3)
#define ASD4 (1<<4)

(...)

new suma[33];

(...)

bool:check_bitsum(param1, param2)
{
     if( (param1 & param2) == param2 )
           return true;

     return false;
}

public asd(id)
{
       if( suma[id] == 0 )
		suma[id] += ASD1;
        else if( check_bitsum(suma[id], ASD1) )
		suma[id] += ASD2;
	else if( check_bitsum(suma[id], ASD2) )
		suma[id] += ASD3;
	else if( check_bitsum(suma[id], ASD3) )
		suma[id] += ASD4;

       if( check_bitsum(suma[id], ASD1 | ASD2 | ASD3 | ASD4 ) )
           client_print(id, print_chat, "Wow, your bitsum is full
}

W przykładzie wyżej podałem ci jak sprawdzać bity pojedynczo i jak sprawdzać kilka (np.: wszystkie na raz )

Nie zdziw się jak spróbujesz wyświetlić sobie tę liczbę, bowiem zostanie ona (suma potęg) wyświetlona w systemie dziesiętnym :)


Użytkownik Master Yoga edytował ten post 04.01.2017 21:12
Odpowiedz