Pasek ładowania
darkman
30.12.2008
Funkcja ta umieszcza pasek, taki jak przy podkładaniu/rozbrajaniu bomby.
Użycie:
Parametry:
id - index gracza na którym funkcja ma być wykonana;
czas - okres czasu w jakim ma się ten pasek wypełnić;
startprogress - kiedy pasek zaczyna się pokazywać, jaka jego część ma być wypełniona(wartość w procentach(%)) od 0-100 (0 zaczyna od pustego);
W przypadku kiedy chcemy pokazać pasek wszystkim graczom, należy zmienić typ wiadomości na MSG_ALL, i w miejsce indexu wpisać 0.
Użytkownik DarkGL edytował ten post 20.03.2011 13:01
stock set_bartime(id, czas, startprogress=0) { message_begin((id)?MSG_ONE:MSG_ALL, get_user_msgid("BarTime2"), _, id) write_short(czas); write_short(startprogress); message_end(); }
Użycie:
set_bartime(id, czas, startprogress)
Parametry:
id - index gracza na którym funkcja ma być wykonana;
czas - okres czasu w jakim ma się ten pasek wypełnić;
startprogress - kiedy pasek zaczyna się pokazywać, jaka jego część ma być wypełniona(wartość w procentach(%)) od 0-100 (0 zaczyna od pustego);
W przypadku kiedy chcemy pokazać pasek wszystkim graczom, należy zmienić typ wiadomości na MSG_ALL, i w miejsce indexu wpisać 0.
Użytkownik DarkGL edytował ten post 20.03.2011 13:01
wizu
31.12.2008
Jak już tak, to można to rozwinąć:
public set_bartime(id, czas) { if (id == 0) { message_begin(MSG_ALL, get_user_msgid("BarTime"), _, 0) write_short(czas) message_end() } else { message_begin(MSG_ONE, get_user_msgid("BarTime"), _, id) write_short(czas) message_end() } }Jeśli chcemy wyświetlić wszystkim, to zamiast id wpisujemy 0. Np:
set_bartime(0, 15)
mgr inż. Pavulon
31.12.2008
wizu, to jak coś możemy trochę zwinąć
public set_bartime(id, czas) { if (!id) message_begin(MSG_ALL, get_user_msgid("BarTime"), _, 0) else message_begin(MSG_ONE, get_user_msgid("BarTime"), _, id) write_short(czas) message_end() }
wizu
31.12.2008
No tak Ale obawiałem się, że jakby if nie zadziałał, a plugin zobaczy message_end, to scrashuje serwer.
Miczu
31.12.2008
Pavulon, zamienil bys all/one ze soba i bys mogl zrezygnowac z negacji
PS. Ja bym dodal, ze pasek mozna showac w czacie odliczania przez wyslanie komendy z czasem = 0
PS. Ja bym dodal, ze pasek mozna showac w czacie odliczania przez wyslanie komendy z czasem = 0
R3X
31.12.2008
To może:
set_bartime(id,czas,start=0){ new bool:nd=start>0; new msgType=(id)?MSG_ONE:MSG_ALL; new bar=(nd)?get_user_msgid("BarTime2"):get_user_msgid("BarTime"); message_begin(msgType, bar, _, id); write_short(czas); if(nd) write_short(start); message_end(); }+kilka poprawek natury wizualnej
wizu
31.12.2008
Teraz wytłumacz linijka po linijce
A szczególnie te te dwie pierwsze w funkcji.
A szczególnie te te dwie pierwsze w funkcji.
mgr inż. Pavulon
31.12.2008
new bool:nd=start>0; //jeśli start jest większe od 0 to nd ma wartość TRUE new msgType=(id==0)?MSG_ALL:MSG_ONE; //jeśli id jest równe 0 to msgType przyjmuje wartość MSG_ALL w przeciwnym razie MSG_ONE new bar=(nd)?get_user_msgid("BarTime2"):get_user_msgid("BarTime"); //jeśli nd ma wartość TRUE to bar przyjmuję wartość get_user_msgid("BarTime2") w przeciwnym razie get_user_msgid("BarTime") if(nd)write_short(start); //jeśli nd ma wartość TRUE to write_short(start)pasi ?
R3X
31.12.2008
Funkcja obsługuje też parametr startowy - gdy chcemy by pasek zaczął się przesuwać od połowy w do końca w czasie 10s. używamy tak:
Można tej funkcji używać tak jak tych wyżej:
Opis funkcji
Reszta chyba wiadomo.
set_bartime(id,20,50)id + czas przesunięcia całego paska+50 (%) ;oznacza, że zacznie od połowy == zajmie to połowę z 20s.
Można tej funkcji używać tak jak tych wyżej:
set_bartime(id,10)Wypełniać się będzie cały pasek w czasie 10 sekund.
Opis funkcji
set_bartime(id,czas,start=0){Nagłówek funkcji, argumenty id ,czas i start (liczba z zakresu 0,100), którego wartość domyślna=0.
new bool:nd=start>0;zmienna typu bool zawiera wartość logiczną (0 lub 1). Przechowuje informację o tym, czy zaczynamy od 0 czy chcesz iluśtam procent. Potrzebujemy dowiedzieć się tego 2-krotnie więc lepiej niech komputer sprawdza to raz.
new msgType=(id)?MSG_ONE:MSG_ALL;informacja o typie wiadomości jeśli id>0 typ będzie MSG_ONE, jeśli id==0 typ będzie MSG_ALL
new bar=(nd)?get_user_msgid("BarTime2"):get_user_msgid("BarTime");Wybieramy jedną z wiadomości. BarTime wyłącznie od 0, BarTime2 od wartości początkowej
Reszta chyba wiadomo.
Miczu
31.12.2008
Nie bedzie przypadkiem latwiej uzywac zawsze bar2 i tylko domyslnie dac start na 0?
Jak nikt chyba nie zauwazy roznicy jak to bedzie bar czy bar2 z parametrem startowym 0, a cod bedzie ladniejszy dla oka...
Jak nikt chyba nie zauwazy roznicy jak to bedzie bar czy bar2 z parametrem startowym 0, a cod bedzie ladniejszy dla oka...
Miczu
31.12.2008
public set_bartime(id, czas, startprogress=0)
To da nam efekt domyslnego zera:
set_bartime(0,10)
set_bartime(0,10,50)
tak beda obie komendy poprawne ;-)
R3X
31.12.2008
Sam przed chwilą o tym pisałeś darkman
public set_bartime(id, czas, startprogress) { message_begin((id)?MSG_ONE:MSG_ALL, get_user_msgid("BarTime2"), _, id) write_short(czas); write_short(startprogress); message_end(); }
R3X
21.04.2009
trochę odkop, ale chyba warto
Akurat chciałem wykorzystać tę funkcję i zdaje się, że argumenty publicznej funkcji nie mogą mieć wartości domyślnych - deklaracja funkcji powinna mieć postać
Akurat chciałem wykorzystać tę funkcję i zdaje się, że argumenty publicznej funkcji nie mogą mieć wartości domyślnych - deklaracja funkcji powinna mieć postać
stock set_bartime(id, czas, startprogress=0)
Arthemjusz
23.12.2010
Chciałbym zrobić pasek który będzie pokazywał ładowanie się kuszy.
I pytanie jak dobrze uzupełnić tą funkcje 1 by dobrze działała ?
Bo mi wyskakuje błąd podczas kompilacji albo po prostu nie pokazuje tego paska.
I pytanie jak dobrze uzupełnić tą funkcje 1 by dobrze działała ?
Bo mi wyskakuje błąd podczas kompilacji albo po prostu nie pokazuje tego paska.
sebul
15.04.2011
Sry za odkop, ale mam pytanie. Nie da się jakoś do takiego paska dodać wartość float?