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

Problem z hudem i sprite'ami


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

#1 SopeleQ1337

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Patrick
  • Lokalizacja:Łódź
Offline

Napisano 07.06.2017 18:59

Witam.
Mam pewien problem z hudem, ponieważ chciałbym aby wyświetlał się on podczas gry, czyli jak jesteśmy żywi, oraz jak umrzemy, czyli żebyśmy widzieli nick, rangę etc. innych osób. Pierwsza część działa, natomiast hud, który ma być wyświetlany po śmierci niestety nie działa. Wyskakują mi błędy w kompilacji i nie wiem jak je naprawić. 
Jakby ktoś mógł jeszcze tylko dodać ścieżki do sprite'ów, tzn. jeżeli ktoś ma range silver 1 w hudzie, to nad jego głową jest sprite silver1, itd. Wystarczy mi sprite dla jednej rangi, zresztą sobie poradzę.
Będę bardzo wdzięczny za wszelką pomoc!  ;)
Plugin w załączniku.

Załączone pliki


  • +
  • -
  • 0

SNAX, PASHA, TAZ, NEO & BYALI

Na nich się wzoruję.


#2 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 07.06.2017 19:30

Wywal to i sprawdź

 
public client_PreThink(id)
{
    if(!is_user_alive(id))
{
set_hudmessage(0, 64, 128, 0.01, 0.22)
ShowSyncHudMsg(id, sync, "^n| Forum: Frag-Armia.pl |^n| Nick: %s |^n| Ranga: %s |^n| Zabojstwa: %d |^n| K/D ratio: %0.2f% |^n| VIP: %s |", name , rangi[ranga[id]][1], stats[0], kdratio[id], get_user_flags(id) & VIP_FLAG ? "Tak" : "Nie")
}
}

  • +
  • -
  • 0

#3 SopeleQ1337

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Patrick
  • Lokalizacja:Łódź
Offline

Napisano 07.06.2017 20:22

Hud się wyświetla, ale co to ma za sens, skoro po przejściu na innego gracza mam cały czas swój. Powinno być tak, że przechodząc na innego gracza, widzimy jego rangę, nick, k/d ratio etc.


  • +
  • -
  • 0

SNAX, PASHA, TAZ, NEO & BYALI

Na nich się wzoruję.


#4 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 08.06.2017 06:16

Aby rozwiązać ten problem musisz rozważyć 2 przypadki.
1. Gracz obserwujący żyje {chyba oksymoron xD} (wtedy widzi swoje statystyki) - to już posiadasz
2. Gracz obserwujący nie żyje ( wtedy widzi statystyki osoby obserwowanej - identyfikator pev(id, pev_iuser2) ) - to też, z tego co widzę posiadasz, lecz w błędnej formule.

W funkcji wyświetlającej hud musisz sprawdzić, czy gracz jest żywy i w zależności od tego, wyświetlać mu statystyki własne lub innego gracza.

Jednak cały problem tkwi w zmiennej 'id'. Zauważ, że sprytnie zmieniasz ją na początku funkcji na wspomnianą pev(id, pev_iuser2), lecz jak widzisz, pod koniec funkcji używasz tego samego, zmienionego 'id' do wyświetlania HUD'u. Wniosek? Gdy ty nie żyjesz i obserwujesz gracza, to napis zamiast Tobie, wyświetla się podwójnie temu właśnie graczowi ;)

Odseparuj zmienną 'id' do obliczeń, a może raczej ją sklonuj i modyfikuj, podczas gdy oryginalną zastosuj do wyświetlania HUD'a.
  • +
  • -
  • 2

#5 SopeleQ1337

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Patrick
  • Lokalizacja:Łódź
Offline

Napisano 08.06.2017 21:14

_McHappy, napisałeś to takim profesjonalnym językiem, że mnie (jako osobie nie tak bardzo zaawansowanej) jest cholernie trudno to zrozumieć :D
Jakbyś mógł pokazać mi, jak wykonać te czynności na podstawie mojego sma, byłbym Ci bardzo wdzięczny! ;) 
Ps. Oczywiście punkt reputacji przyznałem, ponieważ rozwiązanie napisałeś, ale ja sam nie wiem jak się do niego ustosunkować :c


  • +
  • -
  • 0

SNAX, PASHA, TAZ, NEO & BYALI

Na nich się wzoruję.


#6 Yellon

    Życzliwy

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:25
  • GG:
  • Steam:steam
  • Imię:Dawid
Offline

Napisano 14.06.2017 11:44

Trzymaj dodałem ci sprite i naprawiłem hud. Tylko zmień scieżki do sprite bo dałem przykładowe. I jak coś to nie testowałem ale raczej powinno być okej.

Załączone pliki


  • +
  • -
  • 1

#7 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 14.06.2017 11:47

Ciało funkcji rank():

public rank(param[])
{
	static id, stats[8], body[8], iTarget;
	
	id = param[0]; //id obserwatora
	iTarget = ( is_user_alive(id) ? id : pev(id, pev_iuser2) ); //obserwator żyje? TAK: obliczenia dla obserwatora (czyli gracza). NIE: obliczenia dla obserwowanego gracza
	
	if(!iTarget) //jeżeli gracz nie  obserwuje nikogo (free cam itp) - dajemy spokój
		return PLUGIN_CONTINUE;
	
	get_user_stats(iTarget, stats, body)		
	
	static Float:kdratio[33]
	kdratio[iTarget] = float(stats[0]) / float(stats[1])

	if((kdratio[iTarget] >= liczby[ranga[iTarget]]) && (stats[0] >= rangi[ranga[iTarget]][0]) && ranga[iTarget] < limit)
		ranga[iTarget]++
		
	else if(kdratio[iTarget] < liczby[ranga[iTarget]] || stats[0] < rangi[ranga[iTarget]][0])
	{
		if(ranga[iTarget] > limit_min)
			ranga[iTarget]--
	}
		
	static name[33]
	get_user_name(iTarget,name,32)
	cvar = get_cvar_num("rangi_kolor")
	switch(cvar)
	{
		case 0:
		{
			set_hudmessage(255, 255, 255, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])
		}
		case 1:
		{
			set_hudmessage(255, 0, 0, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])
		}
		case 2:
		{
			set_hudmessage(0, 255, 0, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])	
		}
		case 3:
		{
			set_hudmessage(0, 64, 128, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "^n| Forum: Frag-Armia.pl |^n| Nick: %s |^n| Ranga: %s |^n| Zabojstwa: %d |^n| K/D ratio: %0.2f% |^n| VIP: %s |", name , rangi[ranga[iTarget]][1], stats[0], kdratio[iTarget], get_user_flags(iTarget) & VIP_FLAG ? "Tak" : "Nie")
		}
	}
	
	return PLUGIN_CONTINUE;
}

Poanalizuj, potestuj, popytaj etcetera...


Użytkownik _McHappy edytował ten post 14.06.2017 11:49

  • +
  • -
  • 1

#8 TWZ

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:38
Offline

Napisano 14.06.2017 13:24

@Yellon nadal rangi się tzw. buguja (zmieniają się)


  • +
  • -
  • 0

#9 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 14.06.2017 15:05

Ponieważ ten algorytm wyliczania rang jest kompletnie nieoptymalny oraz bezsensowny...
Ale to już temat na odrębny wątek.
  • +
  • -
  • 0

#10 Yellon

    Życzliwy

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:25
  • GG:
  • Steam:steam
  • Imię:Dawid
Offline

Napisano 14.06.2017 18:19

No ja skopiowałem to z tych twoich rang nawet nie zwracałem na to uwagi tylko zająłem się hudem i sprite
A tak ogólnie to jak one ci się dokładnie zmieniają ?

Sprawdz może to bd działać.

Załączone pliki


Użytkownik Yellon edytował ten post 14.06.2017 18:44

  • +
  • -
  • 0

#11 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 14.06.2017 18:57

To że plugin jest w cholerę nieoptymalny swoją drogą, ale nie działa m.in. dlatego że po 1. get_user_stats z tego co mi wiadomo nie zmienia na bieżąco fragów w rankingu, tylko co rundę jak nie lepiej (sam nie wiem dokładnie, raz próbowałem zmieniać wczytywać co zabójstwo i lipa). Druga sprawa to sprawdzanie czy awansował - nie klej się kupy, przeanalizuj dokładnie: 

 

@edit i **** w pizde strzelił, napisałem już chyba można to nazwać referatem pod [.code] co tutaj jest źle, a było po prostu o czym pisać, to mi się usunęło, poprawcie to w końcu xD

To co napisałem wyżej to tylko garstka błędów w tym pluginie, ale one pierwsze rzucają mi się w oczy.

@edit2 nawet ta wersja z while nie zadziała, to else działa tak: nie możesz awansować? spadek  :giggle:

if((kdratio[target] >= liczby[ranga[target]]) && (stats[0] >= rangi[ranga[target]][0]) && ranga[target] < limit)
ranga[target]++
 
else if(kdratio[target] < liczby[ranga[target]] || stats[0] < rangi[ranga[target]][0])
{
if(ranga[target] > limit_min)
ranga[target]--
}

  • +
  • -
  • 1

#12 SopeleQ1337

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Patrick
  • Lokalizacja:Łódź
Offline

Napisano 15.06.2017 22:57

Oke jakoś to ogarnę. Wszyscy dostają po plusie i można zamknąć temat :D


  • +
  • -
  • 0

SNAX, PASHA, TAZ, NEO & BYALI

Na nich się wzoruję.





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

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