Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Pasek ładowania


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
30 odpowiedzi w tym temacie

#1 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 30.12.2008 23:02

Funkcja ta umieszcza pasek, taki jak przy podkładaniu/rozbrajaniu bomby.

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

  • +
  • -
  • 2

#2 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 31.12.2008 10:37

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)

  • +
  • -
  • 0

#3 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 31.12.2008 12:01

wizu, to jak coś możemy trochę zwinąć :P
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()
}

  • +
  • -
  • 0

#4 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 31.12.2008 12:22

No tak :P Ale obawiałem się, że jakby if nie zadziałał, a plugin zobaczy message_end, to scrashuje serwer.
  • +
  • -
  • 0

#5 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 31.12.2008 12:23

Pavulon, zamienil bys all/one ze soba i bys mogl zrezygnowac z negacji :P

PS. Ja bym dodal, ze pasek mozna showac w czacie odliczania przez wyslanie komendy z czasem = 0
  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 31.12.2008 14:14

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
  • +
  • -
  • 0

#7 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 31.12.2008 14:18

Teraz wytłumacz linijka po linijce :P
A szczególnie te te dwie pierwsze w funkcji.
  • +
  • -
  • 0

#8 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 31.12.2008 14:23

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 ? :D
  • +
  • -
  • 0

#9 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 31.12.2008 14:28

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:
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.
  • +
  • -
  • 0

#10 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 31.12.2008 14:29

Eeee tam taki kombinowanie :P Ale dzięki za wyjaśnienia.
  • +
  • -
  • 0

#11 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 31.12.2008 15:04

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...
  • +
  • -
  • 0

#12 darkman

    Wszechwiedzący

  • Autor tematu
  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 31.12.2008 15:14

poprawione tak jak Miczu chciał.
  • +
  • -
  • 0

#13 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 31.12.2008 15:18

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 ;-)
  • +
  • -
  • 0

#14 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 31.12.2008 15:20

Sam przed chwilą o tym pisałeś darkman :P
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();   

}

  • +
  • -
  • 0

#15 darkman

    Wszechwiedzący

  • Autor tematu
  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 31.12.2008 15:21

Akurat kopiowałem kod wiza i nie chciało mi sie zmieniać tego ^^
  • +
  • -
  • 0

#16 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 21.04.2009 14:10

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ć
stock set_bartime(id, czas, startprogress=0)

  • +
  • -
  • 0

#17 Janko

    Zaawansowany

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:137
  • GG:
  • Lokalizacja:Słubice
Offline

Napisano 13.04.2010 18:51

Która treść bd dobra do diablo moda do kuszy?
  • +
  • -
  • 0

#18 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 13.04.2010 20:24

ta która jest podana w pierwszym poście ....
  • +
  • -
  • 0

#19 Arthemjusz

    Pomocny

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:67
  • Lokalizacja:Kobiór
Offline

Napisano 23.12.2010 20:36

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.
  • +
  • -
  • 0

#20 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 15.04.2011 23:27

Sry za odkop, ale mam pytanie. Nie da się jakoś do takiego paska dodać wartość float?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych