←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

[Stocks] Wiadomości

  • +
  • -
Fili:P - zdjęcie Fili:P 26.01.2012

Cześć, daje wam stock, który tworzy wiadomość BarTime:
DarkGL, dzięki za poprawki i kod ze zmiennymi statycznymi.
BarTime

stock CreateBartime(id, duration)
{
static get_msgid;
if( !get_msgid ) get_msgid = get_user_msgid( "BarTime" );

message_begin( !id ? MSG_ALL : MSG_ONE , get_msgid , {0,0,0} , id )
write_short(duration);
message_end();
}

Przykładowe użycie:

CreateBartime(id, 50)

Czas podajemy w sekundach (liczba int).

BarTime2

stock CreateBartime2(id, duration, startprogress)
{
if( startprogress >= 0 && startprogress <=100 )
{


static get_msgid;
if( !get_msgid ) get_msgid = get_user_msgid( "BarTime2" );

message_begin( !id ? MSG_ALL : MSG_ONE , get_msgid, {0,0,0} , id )
write_short(duration);
write_short(startprogress);
message_end();
}
}

Przykładowe użycie:

CreateBartime2(id, 50, 80)

Czas podajemy w sekundach (liczba int).
Trzeci argument to od ilu % ma zaczynać się BarTime2. Pamiętajmy, że nie istnieje w matematyce coś takiego jak 101% i więcej.

HideWeapon
Dzięki tej wiadomości możemy usuwać różne elementy HUD-a
stock SetDisplayHUD(id, flaga)
{
static get_msgid;
if( !get_msgid ) get_msgid = get_user_msgid( "HideWeapon" );

message_begin( !id ? MSG_ALL : MSG_ONE , get_msgid , {0,0,0} , id )
write_byte(flaga);
message_end();
}

Przykład użycia:

SetDisplayHUD(id, (1<<2))

Co do drugiego argumentu to:
  1   (1<<0)  -  crosshair, ammo, weapons list
  2   (1<<1)  -  flashlight, +
  4   (1<<2)  -  ALL
  8   (1<<3)  -  radar, health, armor, +
16   (1<<4)  -  timer, +
32   (1<<5)  -  money, +
64   (1<<6)  -  crosshair
128   (1<<7)  -  +

źródło: wiki.amxmodx.org
Według mnie na Speedruny/Deathruny przydaje się numer 4 czyli (1<<2).

ScoreAttrib
Wiadomość pozwala zmienić stan, DEAD, BOMB lub VIP.

stock SetStance(pid, flags)
{
static get_msgid;
if( !get_msgid ) get_msgid = get_user_msgid( "ScoreAttrib" );

message_begin(MSG_ALL, get_msgid,{0,0,0});
write_byte(pid);
write_byte(flags);
message_end();
}

Przykład użycia:

SetStance(id, (1<<0));

Co do drugiego parametru:
0 - brak statusu
(1<<0) - DEAD
(1<<1) - BOMB
(1<<2) - VIP

Zamierzam dodać jeszcze kilka stocków z różnymi wiadomościami
Jeżeli id w stoku ma stan false czyli id <= 0 to msg jest MSG_ALL, jeżeli true to MSG_ONE
Odpowiedz

  • +
  • -
QuahodronN - zdjęcie QuahodronN 26.01.2012

Bartime czyli? bo nie czaje :P
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 26.01.2012

Pasek postępu jak w diablo, gdy moc ładujesz na nożu.
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 26.01.2012

Tutaj podałeś trochę niepełny kod, tutaj http://amxx.pl/topic...asek-ladowania/ jest jeszcze drugi parametr, ale nie wiem czemu tam jest użyte "BarTime2", w ogóle tamten kod działa?

Dobra już wiem o co chodzi, ale nie widzę sensu, żeby robić oddzielny temat z wykorzystaniem samego "BarTime".
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 26.01.2012

Tutaj podałeś trochę niepełny kod, tutaj Pasek ładowania - AMXX.pl: Support AMX Mod X jest jeszcze drugi parametr, ale nie wiem czym tam jest użyte "BarTime2", w ogóle tamten kod działa?

Dobra już wiem o co chodzi, ale nie widzę sensu, żeby robić oddzielny temat z wykorzystaniem samego "BarTime".

Ok, więc będę tutaj dodawał stocki na różne wiadomości
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 26.01.2012

te stocki są do poprawy po pierwsze nie ma opcji wysyłania do wszystkich / jednego gracza
po drugie używasz za każdym użyciem get_user_msgid użyj zmiennej static
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 26.01.2012

te stocki są do poprawy po pierwsze nie ma opcji wysyłania do wszystkich / jednego gracza
po drugie używasz za każdym użyciem get_user_msgid użyj zmiennej static

Poprawiłem już czy mes ALL czy ONE, static dodam w najbliższym czasie.
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 26.01.2012

CreateBartime(0, 5)
i masz crasha bez info w logach tylko w konsoli@@Up już jest
Użytkownik Jak się nazwać edytował ten post 26.01.2012 20:18
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 26.01.2012

zamiast
if(id)
		message_begin(MSG_ONE, get_user_msgid("BarTime"),{0,0,0}, id);
	if(!id)
		message_begin(MSG_ALL, get_user_msgid("BarTime"),{0,0,0})
to możesz

message_begin( !id ? MSG_ALL : MSG_ONE , get_user_msgid("BarTime") , .player = id )
z tym get_user_msgid("BarTime") to ci mówiłem co masz zrobić :P
Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie Nakupenda. 26.01.2012

@edit dodawałem na szybko - poprawka



stock CreateBartime(id, duration)
{
if( duration >= 0 && duration <=100 )
{
message_begin( !id ? MSG_ALL : MSG_ONE , get_user_msgid("BarTime") , player = id )
write_short(duration);
message_end();
}
}


jeszcze to by się przydało

Dark, o kropkę przed "players" za dużo ;)
Użytkownik Nakupenda. edytował ten post 26.01.2012 23:33
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 26.01.2012

message_begin(id ? MSG_ONE, get_user_msgid("HideWeapon"),{0,0,0}, id : MSG_ALL,get_user_msgid("HideWeapon"),{0,0,0} );
przecież to się nawet nie kompiluje to co podałem wyżej jest dobre
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 27.01.2012

Poprawione na Darkowy kod :]
Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie Nakupenda. 27.01.2012

Ech.. jeszcze raz.

To:

stock CreateBartime(id, duration)
{
static get_msgid;
if( !get_msgid ) msgid = get_user_msgid( "BarTime" );

message_begin( !id ? MSG_ALL : MSG_ONE , get_msgid , player = id )
write_short(duration);
message_end();
}


na to


stock CreateBartime(id, duration)
{
if( duration >= 0 && duration <=100 )
{
static get_msgid;
if( !get_msgid ) msgid = get_user_msgid( "BarTime" );

message_begin( !id ? MSG_ALL : MSG_ONE , get_user_msgid("BarTime") , player = id )
write_short(duration);
message_end();
}
}

Użytkownik Nakupenda. edytował ten post 27.01.2012 09:31
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 27.01.2012

A nie chodzi ci czasem o BarTime2 i jego 3 argument ?
Odpowiedz

  • +
  • -
Nakupenda. - zdjęcie Nakupenda. 27.01.2012

Fail. :F

stock CreateBartime2(id, duration, startprogress)
{
if(startprogress >= 0 && startprogress <= 100)
{
static get_msgid;
if( !get_msgid ) msgid = get_user_msgid( "BarTime2" );
message_begin( !id ? MSG_ALL : MSG_ONE , get_msgid) , player = id )
write_short(duration);
write_short(startprogress);
message_end();
}
}

Użytkownik Nakupenda. edytował ten post 27.01.2012 09:58
Odpowiedz