←  Pytania dotyczące pluginów

AMXX.pl: Support AMX Mod X i SourceMod

»

iMessage - dodanie informacje o rankingu

  • +
  • -
MrStrajker - zdjęcie 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"

Załączone pliki

Odpowiedz

  • +
  • -
Boski Z Polski - zdjęcie Boski Z Polski 12.02.2023

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

 

Załączone pliki

Odpowiedz

  • +
  • -
MrStrajker - zdjęcie MrStrajker 12.02.2023

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

Odpowiedz

  • +
  • -
Boski Z Polski - zdjęcie 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 

Odpowiedz

  • +
  • -
MrStrajker - zdjęcie 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

Odpowiedz

  • +
  • -
PANDA_2zl - zdjęcie 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ś?
Odpowiedz

  • +
  • -
MrStrajker - zdjęcie 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.
Odpowiedz

  • +
  • -
MrStrajker - zdjęcie 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.


Użytkownik MrStrajker edytował ten post 14.02.2023 19:10
Odpowiedz

  • +
  • -
Deus Vult - zdjęcie 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ć


Użytkownik Deus Vult edytował ten post 14.02.2023 19:28
Odpowiedz

  • +
  • -
MrStrajker - zdjęcie 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.

Załączone pliki

Odpowiedz

  • +
  • -
Deus Vult - zdjęcie 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
Użytkownik Deus Vult edytował ten post 16.02.2023 11:43
Odpowiedz