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
Inny

Informacja przy wibici lvl bądź expa

inny

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

#1 OfertaDni

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 06.11.2017 14:54

Elo, mam pytanie jak wyświetlić informacje dla wszystkich graczy gdy ktoś wbije 50lvl? (Poziom[id] / Exp[id])

Gracz X wbil 50 poziom! Gratulacje!, i żeby ta informacja wyświetliła się tylko raz po wbiciu tego poziomu, dla wszystkich graczy online.
(W sensie raz na gracza, jak nastepna osoba wbije 50 to tez sie wyswietli)

Użytkownik OfertaDni edytował ten post 06.11.2017 14:54

  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 117
Super Hero

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

Napisano 06.11.2017 15:13

Ale daj jakieś sma odnośnie tego całego lvl'owania?


  • +
  • -
  • 0

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


#3 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 06.11.2017 17:01

Bazuje na tym https://amxx.pl/topi...zykład-exp-mod/

.sma z ostatniego postu autora
  • +
  • -
  • 0

#4 NiczegoWinien

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:334
  • Lokalizacja:No Disc
Offline

Napisano 06.11.2017 21:45

w SprawdzPoziom(id) dodaj na koncu

new name[ 35 ]
get_user_name( id, name, 34 )

if(Poziom[id] == 50)

client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);


  • +
  • -
  • 1

#5 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 06.11.2017 22:58

w SprawdzPoziom(id) dodaj na koncu


new name[ 35 ]
get_user_name( id, name, 34 )
if(Poziom[id] == 50)
client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);


To wyświetli tylko raz po wbiciu tego levela? Czy jeśli będzie miał cały czas 50 i zmieni się mapa znów wyświetli?
  • +
  • -
  • 0

#6 dredek

    Wszechobecny

  • Użytkownik

Reputacja: 162
Profesjonalista

  • Postów:476
  • GG:
  • Imię:Dawid
  • Lokalizacja:OLK
Offline

Napisano 06.11.2017 23:17

 

w SprawdzPoziom(id) dodaj na koncu


new name[ 35 ]
get_user_name( id, name, 34 )
if(Poziom[id] == 50)
client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);


To wyświetli tylko raz po wbiciu tego levela? Czy jeśli będzie miał cały czas 50 i zmieni się mapa znów wyświetli?

 

 

Wyświetli się tylko raz gdy poziom będzie równy 50


  • +
  • -
  • 0

#7 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 06.11.2017 23:34

Okey, przetestuje jutro i dam znać.
  • +
  • -
  • 0

#8 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 07.11.2017 09:53

A to nie za każdym razem będzie pokazywać przy wywołaniu public SprawdzPoziom(id). Bo ten public wywołuje się za każdym razem gdy ktoś zdobędzie exp (kill, paka itd.) i w przypadku gdy wywoła się ten public a gracz będzie posiadał 50 poziom to będzie pokazywać to za każdym razem wywołania się publicu. Przydała by się chyba jakaś zmienna logiczna (true/false), który przybierała by wartość true po pokazaniu informacji o awansie gracza i potem by blokowała pojawienie się informacji na say gdy ona już raz zostanie wyświetlona graczom. 


  • +
  • -
  • 0

#9 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 07.11.2017 11:55

A to nie za każdym razem będzie pokazywać przy wywołaniu public SprawdzPoziom(id). Bo ten public wywołuje się za każdym razem gdy ktoś zdobędzie exp (kill, paka itd.) i w przypadku gdy wywoła się ten public a gracz będzie posiadał 50 poziom to będzie pokazywać to za każdym razem wywołania się publicu. Przydała by się chyba jakaś zmienna logiczna (true/false), który przybierała by wartość true po pokazaniu informacji o awansie gracza i potem by blokowała pojawienie się informacji na say gdy ona już raz zostanie wyświetlona graczom.


Sprawdziłem i wyświetliło informacje tylko raz wtedy gdy wbił, jak rozpoczęła się runda kolejna informacji nie było.
  • +
  • -
  • 0

#10 NiczegoWinien

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:334
  • Lokalizacja:No Disc
Offline

Napisano 07.11.2017 13:36

Strzelam ze tak wyglada twoj SprawdzPoziom

public SprawdzPoziom(id)
{    
    new name[ 35 ];
    get_user_name( id, name, 34 );

    while( Exp[ id ] >= POZIOMY[ Poziom[ id ] ] && Poziom[ id ] < MAXPOZIOM ){
        Poziom[ id ] ++
        if(Poziom[id] == 50)
            client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);
    }
}

 

Tutaj informacja pokaze sie tylko raz w momencie wbicia 50 poziomu przez gracza


  • +
  • -
  • 0

#11 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 08.11.2017 14:56

Strzelam ze tak wyglada twoj SprawdzPoziom

public SprawdzPoziom(id)
{    
    new name[ 35 ];
    get_user_name( id, name, 34 );

    while( Exp[ id ] >= POZIOMY[ Poziom[ id ] ] && Poziom[ id ] < MAXPOZIOM ){
        Poziom[ id ] ++
        if(Poziom[id] == 50)
            client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);
    }
}

 
Tutaj informacja pokaze sie tylko raz w momencie wbicia 50 poziomu przez gracza


Jednak jest problem, jeśli wbije ten 50lvl to informacja się wyświetli i teraz jeśli gracz ma cały czas 50 i zabije kogoś dostaje powiedzmy 10% do kolejnego lvl i ta informacja się wtedy wyświetli znów, do czasu aż nie wbije 51.
  • +
  • -
  • 0

#12 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 08.11.2017 21:29

Do tego chciałem też zrobić informacje gdy wbije określoną ilość expa ale tej informacji nie wyświetla :/ Strzelam, że to wina tego iż informacja wymaga np. 40000 XP a gracz wbije 40100 i już d*pa nie wyświetla :(
  • +
  • -
  • 0

#13 Robiin

    Godlike

  • Support Team

Reputacja: 1 117
Super Hero

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

Napisano 08.11.2017 21:46

Do tego chciałem też zrobić informacje gdy wbije określoną ilość expa ale tej informacji nie wyświetla :/ Strzelam, że to wina tego iż informacja wymaga np. 40000 XP a gracz wbije 40100 i już d*pa nie wyświetla :(

Określ jaką maksymalnie ilość expa może dostać gracz za zabójstwo, asysty itd. łącznie, a potem zrób zakres. if(xp>40000&&<40150) (przykładowo) ale musisz się liczyć z możliwością podwójnego wyświetlenia informacji.


  • +
  • -
  • 0

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


#14 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 08.11.2017 21:55

Do tego chciałem też zrobić informacje gdy wbije określoną ilość expa ale tej informacji nie wyświetla :/ Strzelam, że to wina tego iż informacja wymaga np. 40000 XP a gracz wbije 40100 i już d*pa nie wyświetla :(

Określ jaką maksymalnie ilość expa może dostać gracz za zabójstwo, asysty itd. łącznie, a potem zrób zakres. if(xp>40000&&<40150) (przykładowo) ale musisz się liczyć z możliwością podwójnego wyświetlenia informacji.


Jeśli chodzi o exp to właśnie o takim czymś myślałem, lecz nadal nie wiem jak rozwiązać sprawę z informacją za level.
  • +
  • -
  • 0

#15 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 08.11.2017 23:21

Tak wygląda kod wspominanej funkcji we wspomnianym wyżej kodzie pluginu:

public SprawdzPoziom( zeka )
{
	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
		Poziom[ zeka ] ++
}

Kolega wyżej już napisał, jak powinno wyglądać rozwiązanie:

public SprawdzPoziom(id)
{    
    while( Exp[ id ] >= WymaganyExp( Poziom[ id ] ) && Poziom[ id ] < MAXPOZIOM ){
        Poziom[ id ] ++
        if(Poziom[id] == 50)
        {
            new name[ 35 ];
            get_user_name( id, name, 34 );

            client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);
        }
    }
}

Informacja na czacie nie ma prawa ukazać więcej niż jeden raz (tylko wtedy, gdy następuje awans na poziom - w tym wypadku - 50).

Ogólnie plug pisany raczej for-fun, bo na optymalizacji podupada. Nie mówiąc już o samym stylu nazewnictwa...

 

Cały kod pluginu:

Załączone pliki


Użytkownik _McHappy edytował ten post 08.11.2017 23:25

  • +
  • -
  • 0

#16 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 09.11.2017 00:02

Tak wygląda kod wspominanej funkcji we wspomnianym wyżej kodzie pluginu:

public SprawdzPoziom( zeka )
{
	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
		Poziom[ zeka ] ++
}
Kolega wyżej już napisał, jak powinno wyglądać rozwiązanie:
public SprawdzPoziom(id)
{    
    while( Exp[ id ] >= WymaganyExp( Poziom[ id ] ) && Poziom[ id ] < MAXPOZIOM ){
        Poziom[ id ] ++
        if(Poziom[id] == 50)
        {
            new name[ 35 ];
            get_user_name( id, name, 34 );

            client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);
        }
    }
}
Informacja na czacie nie ma prawa ukazać więcej niż jeden raz (tylko wtedy, gdy następuje awans na poziom - w tym wypadku - 50).
Ogólnie plug pisany raczej for-fun, bo na optymalizacji podupada. Nie mówiąc już o samym stylu nazewnictwa...
 
Cały kod pluginu:


No i w tym problem, że jeśli wbije ten 50 i potem kogoś zabije ale ten ktoś nie da mu tyle expa by wbił się 51 to ta informacja i tak się wyświetla po raz kolejny.
I takie drugie pytanko, jak zrobić by wiadomość wyświetlała się jeśli exp jest pomiędzy 24200 a 24240? Mam takie coś ale nie chce się w ogóle wyświetlić.
if(Exp[zeka] == 24200 && Exp[zeka] <= 24240)
  • +
  • -
  • 0

#17 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 09.11.2017 09:41

Podaj kod swojego pluginu (twojego, nie tego na którym 'bazujesz')
  • +
  • -
  • 0

#18 OfertaDni

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:36
Offline

Napisano 09.11.2017 12:38

Podaj kod swojego pluginu (twojego, nie tego na którym 'bazujesz')


public SprawdzPoziom( zeka )
{
	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
		Poziom[ zeka ] ++
	
	new name[ 35 ]
	get_user_name( zeka, name, 34 )

if(Poziom[zeka] == 50)
{
		ColorChat(zeka, GREEN, "^x01 Gracz^x04 %s^x01 osiagnal^x04 50 Poziom^x01!",name)
}

}
Całego .sma nie mogę wysłać bo jest w nim dużo rzeczy ode mnie, ale ta funkcja nie została zmieniona jest taka sama jak w oryginale.

Użytkownik OfertaDni edytował ten post 09.11.2017 12:39

  • +
  • -
  • 0

#19 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 10.11.2017 16:00

Ta funkcja różni się od tych, które Ci przedstawiliśmy. Przerób ją na powyższy odpowiednik i wszystko będzie działało poprawnie.
  • +
  • -
  • 0

#20 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 10.11.2017 17:41

Moje przypuszczenia z informacja o awansie sprawdziły się :) Na szybkiego zrobione. Nie wiem czy będzie działać tak jak należy i tak jak ty chcesz.

public SprawdzPoziom( zeka )
{
	new bool:awansowal;

	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
	{	
		Poziom[ zeka ] ++
		awansowal = true;
	}
    
	new name[ 35 ]
	get_user_name( zeka, name, 34 )

	if(awansowal)
	{
		ColorChat(0, GREEN, "^1Gracz^4 %s^1 osiagnal^4 %i Poziom^1!", name, Poziom[ zeka ])
		awansowal = false;
	}

}

  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: inny

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

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