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

Poprawne aktualizowanie Bestplayera


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

#1 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

  • Postów:2 043
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 23.02.2017 13:51

Cześć,

część kodu

	for(new i=1; i <= g_iMaxPlayers; i++)
	{
		if (g_iKills[i] > g_iKills[bestplayer])
		{
			bestplayer = i;
		}
	}

zwraca id najlepszego gracza pod względem fragów, które są podliczane przy death_msg. Problem pojawia się przy "odświeżaniu"/"pobieraniu" gracza, ponieważ czasami gracz mający 100 fragów nie będzie bestplayerem, a z kolei gracz z liczbą fragów równą 90 nim właśnie zostanie.

 

Problem powinien się rozwiązać po zmianie w składni z

	for(new i=1; i <= g_iMaxPlayers; i++)

na

	for(new i=0; i <= g_iMaxPlayers; i++)

?

Czy to może mieć wpływ na wybór bestplayera? HLTV przyjmuje id 0 przy tej pętli?


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#2 tytusek

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

Napisano 23.02.2017 21:38

hltv przyjmuje id, takie jak inni gracze to zalezy wszystko od kolejnosci wchodzenia na server wiec hltv moze miec id 1 lub 30

 

id=0 to chyba jest server wiec jak potem nazwe bestplayera o id 0 wyswietlisz bedzie to server


  • +
  • -
  • 0

#3 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 103
Super Hero

  • Postów:2 043
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 23.02.2017 23:27

hltv przyjmuje id, takie jak inni gracze to zalezy wszystko od kolejnosci wchodzenia na server wiec hltv moze miec id 1 lub 30

 

id=0 to chyba jest server wiec jak potem nazwe bestplayera o id 0 wyswietlisz bedzie to server

Akurat o id serwera wiedziałem, ale myślałem, że HLTV przyjmie tak samo (pomimo, że jak teraz na to patrzę to głupie pytanie, bo HTLV będąc same na serwerze nabija slota), ze względu na wyjątek przy "status" w konsoli.

 

Jakiś pomysł, dlaczego odświeżanie/wybieranie gracza się "buguje"?


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#4 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 24.02.2017 00:29

Pętla jest zapisana poprawnie. Wszystko zależy od reszty kodu, tj. jak i kiedy są modyfikowane zmienne g_iKills[x] oraz bestplayer.

Bez ujawnienia całego źródła się nie obejdzie - pozostaje jedynie gdybanie...


Użytkownik _McHappy edytował ten post 24.02.2017 00:31

  • +
  • -
  • 0

#5 Robiin

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 103
Super Hero

  • Postów:2 043
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 24.02.2017 01:59

g_iKills[33], 

public plugin_init() {
	register_event("DeathMsg", "DeathMsg", "a")

}

public DeathMsg()
{
		g_iKills[kid]++;
}

public z hudem i pętlą

	new name[33];
	get_user_name(bestplayer, name, 32);
	new fragi_best = get_user_frags(bestplayer)
	
	for(new i=1; i <= g_iMaxPlayers; i++)
	{
		if (g_iKills[i] > g_iKills[bestplayer])
		{
			bestplayer = i;
		}
	}
 
   set_hudmessage(0, 255, 0, 0.02, 0.15)
    show_hudmessage(id, "== %s ==^n= Ranga: %s^n= Zabojstw: %d^n= Coinsy: %i^n= VIP: %s ^n= Kontakt z Administracja: /kontakt^n^n= Koniec mapy:  %d:%02d^n= Lider gry: %s (%i)", forum,ranga,stats[0], ilosc_point[id], get_user_flags(id) & ADMIN_LEVEL_H ? "Tak":"Nie", timeleft / 60, timeleft % 60, bestplayer == 0? "Brak":name, fragi_best)

To chyba wystarczająca część kodu.


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.





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

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