Indexy graczy i zmienne
KRAKOW
08.02.2017
Witam.
Piszę plugin na FFa i mam zagwozdkę z indexami i zmiennymi. Dla każdego gracza wywołującego komendę przypisywana jest zmienna (zwykle 1 lub 0 oznaczająca stan danej rzeczy) i tu pojawia się pytanie.
Tworzę jedną zmienną w pluginie - czy dla każdego gracza będzie się tworzyć osobna czy np. jeden gracz ustawi dla siebie 1, drugi 0 i dla pierwszego też wtedy będzie 0?
No i też indexy - czy serwer będzie rozpoznawał indexy graczy wywołujących komendę czy przy każdym wywołaniu będzie się on zmieniał?
Ogólnie rzecz ujmując - czy to co się dzieje w pluginie dzieje się niezależnie dla wielu graczy?
Mam nadzieję, że wiecie o co mi chodzi
Pozdrawiam
_McHappy
08.02.2017
Jest to zależne od samego typu zmiennej (zmienna, czy tablica zmiennych) oraz sposobu jej modyfikacji.
Najlepiej będzie, jak przedstawisz przykładowy kod ilustrujący Twój problem.
Robiin
08.02.2017
Mozesz ustawic/pokazac cos wszystkim graczom, kiedy jeden z nich wpisuje komende.
To,co komenda wywoluje mozesz ustawic sam, albo dla wszystkich np. Pętlą for lub indexem 0.
KRAKOW
08.02.2017
public zaczep1(index,menuh,item){ switch(item){ case 0:{ id=index; if(m1==0){ m1=1; set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(id,"m1 jest aktywne") } } ... } public newRound(){ if(m1==1){ set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(id,"m1 jest aktywne"); } else { set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(id,"m1 nie aktywne"); } }
Mam takie coś i tu pytanie : czy to będzie działać tak jak powinno? Czyli jeśli dany gracz wybierze pierwszą opcję z danego menu to tylko wtedy mu pokaże "m1 jest aktywne", czy wystarczy, że jeden gracz ją wybierze a wszyscy z serwera będą mieli "m1 jest aktywne"?
Użytkownik KRAKOW edytował ten post 08.02.2017 18:27
_McHappy
08.02.2017
new bool:m1[33]; //bool: oszczędność pamięci - zmienna tak/nie. Domyślnie jest 0 = nie. public zaczep1(id,menuh,item) { switch(item) { case 0: { if(m1[id]==0){ m1[id]=1; set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(id,"m1 jest aktywne") } } ... } } public newRound() { new maxP = get_maxplayers(); for(new i = 1; i<=maxP; i++) { if(m1[i]==1) { set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(i,"m1 jest aktywne"); } else { set_hudmessage(0, 255, 0, 0.1, 0.1, 0, 0.0, 3600.0, 0.0, 0.0, 3); show_hudmessage(i,"m1 nieaktywne"); } } }
Powyższy kod modyfikuje zmienną osobno dla każdego gracza.
Należy pamiętać o zerowaniu stanu zmiennej przy wyjściu danego gracza z serwera
Użytkownik _McHappy edytował ten post 08.02.2017 18:37