←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

iMessage - dodanie informacje o rankingu

  • +
  • -
MrStrajker's Photo MrStrajker 12.02.2023

Witam,

 

Czy byłby ktoś tak dobry i dodał do pluginu imessage w wiadomości hud informacje o aktualnej pozycji w rankingu danego gracza oraz jej całkowitą ilość?

Aktualnie wygląda to tak:

amx_imessage "Witamy na serwerze %hostname%\nZyczmy udanej zabawy!" "000100255"

A potrzebowałbym coś na zasadzie:

amx_imessage "Witamy na serwerze %hostname%\nTwoj ranking wynosi %rank% na %rankmax% graczy\nZyczymy udanej zabawy!" "000100255"

Attached Files

Quote

  • +
  • -
Boski Z Polski's Photo Boski Z Polski 12.02.2023

Pewnie można byłoby inaczej pobrać index gracza, do której idzie wiadomość.

 

Attached Files

Quote

  • +
  • -
MrStrajker's Photo MrStrajker 12.02.2023

%rankmax% wyświetla poprawnie natomiast przy %rank% jest 0

Quote

  • +
  • -
Boski Z Polski's Photo Boski Z Polski 12.02.2023

%rankmax% wyświetla poprawnie natomiast przy %rank% jest 0

Interesujące. U mnie na serwerze wszystko normalnie pokazuje. Pozdrawiam 

Quote

  • +
  • -
MrStrajker's Photo MrStrajker 13.02.2023

No to nie mam pojęcia co jest nie tak, ponieważ testowałem na dwóch różnych klientach i u mnie %rank% wyświetla jako 0

Quote

  • +
  • -
PANDA_2zl's Photo PANDA_2zl 14.02.2023

A głupie pytanie, byłeś wogóle w rankingu? Czy zmieniałes konto i po wbiciu od razu sprawdzałeś?
Quote

  • +
  • -
MrStrajker's Photo MrStrajker 14.02.2023

A głupie pytanie, byłeś w ogóle w rankingu? Czy zmieniałes konto i po wbiciu od razu sprawdzałeś?


Na pierwszym koncie steamowym jestem na 2 miejscu spośród tysiąca graczy a na drugim nonsteamowym również wyświetla się 0 pomimo tego, że jestem wysoko w ranku.
Quote

  • +
  • -
MrStrajker's Photo MrStrajker 14.02.2023

Zresetowałem całkowicie ranking na serwerze i teraz %rank% pokazuje, lecz pokazuje różne rankingi graczy którzy są aktualnie na serwerze.

Czyli jeśli jestem ja i kolega na serwerze to wyświetla na zmianę w wiadomości raz jego rank raz mój.


Edited by MrStrajker, 14.02.2023 19:10.
Quote

  • +
  • -
Deus Vult's Photo Deus Vult 14.02.2023

Musisz przypisać identyfikator do funkcji infoMessage() bo jest ona wywoływana taskiem więc użycie pętli for może nie być skutecznym rozwiązaniem w tym przypadku.
 

Zamień:

if (freq_im > 0.0)
set_task(freq_im, "infoMessage", 12345)

Na:
 

if (freq_im > 0.0) {
for(new i=1; i<=32; i++) {
if(!is_user_connected(i) || is_user_hltv(i)) continue;
set_task(freq_im, "infoMessage", i+12345)
}
}

Oraz te podmień te funkcje
 

public infoMessage(id)
{
	id -= 12345
	if (g_Current >= g_MessagesNum)
		g_Current = 0
	
	// No messages, just get out of here
	if (g_MessagesNum==0)
	{
		return;
	}
	
	new values[3];
	new Message[384];
	
	ArrayGetString(g_Messages, g_Current, Message, charsmax(Message));
	ArrayGetArray(g_Values, g_Current, values);
	
	new hostname[64];
	
	get_cvar_string("hostname", hostname, charsmax(hostname));
	replace(Message, charsmax(Message), "%hostname%", hostname);
	
	new rankmax[10];
	formatex(rankmax, charsmax(rankmax), "%i", get_statsnum());
	replace(Message, charsmax(Message), "%rankmax%", rankmax);
	
	set_hudmessage(values[0], values[1], values[2], X_POS, Y_POS, 0, 0.5, HOLD_TIME, 2.0, 2.0, -1);
		
	new stats[8], bodyhits[8] //tworzymy tablice na dane statystyk
	new pos = get_user_stats(id, stats, bodyhits) // pobieramy statysytki gracza
		
	new rank[10];
	formatex(rank, charsmax(rank), "%i", pos);
	replace(Message, charsmax(Message), "%rank%", rank);
		
	show_hudmessage(i, "%s", Message);
	
	client_print(0, print_console, "%s", Message);
	++g_Current;
	
	new Float:freq_im = get_pcvar_float(amx_freq_imessage);
	
	if (freq_im > 0.0)
		set_task(freq_im, "infoMessage", id+12345);
}

Powyższa funkcja jest modyfikacją modyfikacji boskiego wiec nie gwarantuje ze sie skompiluje, ale jest przykładem jak to powinno działać


Edited by Deus Vult, 14.02.2023 19:28.
Quote

  • +
  • -
MrStrajker's Photo MrStrajker 16.02.2023

Zeedytowałem plugin i chyba coś poknociłem, bo występują dwa błędy:

1) Po zmianie mapy/restarcie serwera pierwsza wiadomość wyświetla na serwerze zamiast prawidłowego ranku wyświetla 0 a każda kolejna pojawiająca się wiadomość wyświetla już poprawnie rank.

2) Mam dodane kilka wiadomości które powinny jedna po drugiej się pojawiać natomiast często jest tak, że pojawiają się wszystkie na raz i nachodzą na siebie.

Attached Files

Quote

  • +
  • -
Deus Vult's Photo Deus Vult 16.02.2023

1) ranking ładuje się dopiero po odrodzeniu gracza więc, jeżeli dołączy i mu się wyświetli wiadomość przed respawnem to ranking będzie zawsze 0. Można to łatwo ominąć ustawiając start pierwszej wiadomości gdy gracz się odrodzi. (event)
2) Zamień show_hudmessage(i, "%s", Message); zamiast i wpisz id
Edited by Deus Vult, 16.02.2023 11:43.
Quote