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

[ROZWIĄZANE] Wyświetlanie informacji wszystkim graczom na say'u po wbiciu x Level'a


Najlepsza odpowiedź sebul, 09.08.2014 19:07

I czemu się dziwić, że wiadomość pokazuje się przy każdym trafieniu, skoro w warunku nie ma sprawdzenia czy gracz zyskał poziom?

else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
    }
    if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
    {
        client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
    }
na
else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
        if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
        {
            client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
        }
    }
a jeśli chcesz, żeby wiadomość pokazywała się po prostu co 50 poziom, to od tego masz % (reszta z dzielenia), czyli
if(!(poziom_gracza[id] % 50))
Przejdź do postu


  • Zamknięty Temat jest zamknięty
12 odpowiedzi w tym temacie

#1 kakus002

    (-.(-.(-.-).-).-)

  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 08.08.2014 18:17

Witam, zastanawiałem się jak zrobić by ta wiadomość:

client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]);

 wyświetlana była gdy ktoś wbije 50/100/150/200 level. Kombinowałem już troche ale nic nie działało ;x

Z góry dziękuje : ]


Użytkownik kakus002 edytował ten post 08.08.2014 18:20


#2 dredek

    Wszechobecny

  • Użytkownik

Reputacja: 162
Profesjonalista

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

Napisano 08.08.2014 21:11

 
if(poziom_gracza[id] < 200)

{

client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]);

}
: x

Użytkownik dredek edytował ten post 08.08.2014 21:17

  • +
  • -
  • 1

#3 kakus002

    (-.(-.(-.-).-).-)

  • Autor tematu
  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 08.08.2014 21:35

 

 
if(poziom_gracza[id] < 200)

{

client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]);

}
: x

 

Gdyby to działało to bym nawet nie napisał tego tematu : ] Przy tym informacja wyświetla się potrójnie, w dodatku co level & i to oznacza że informacja będzie pokazywana aż do 200 level'a : ]



#4 dredek

    Wszechobecny

  • Użytkownik

Reputacja: 162
Profesjonalista

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

Napisano 08.08.2014 22:19

Sprawdź teraz.

 

 

if(poziom_gracza[id] == 50 || poziom_gracza[id] == 100 || poziom_gracza[id] == 150 || poziom_gracza[id] == 200)

{ 

client_print(0, print_chat, "[COD:MW] Gracz %s awansowal do %i poziomu!", nazwa_gracza[id], poziom_gracza[id]);

}

 

To ,że Ci się potrójnie wyświetla to już nie moja wina... obczaj teraz bo wcześniej nie zakumałem tematu.


Użytkownik dredek edytował ten post 08.08.2014 22:19

  • +
  • -
  • 3

#5 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 08.08.2014 22:20

Najłatwiejszym sposobem jest użycie warunków ( if ) czy dany grasz o danym id osiągnał dany level.

if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
client_print( 0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);

A to że wyskakuje CI kilka razy wiadomość to prawdopodobnie w/w kod masz w funkcji która jest powtarzana w jakimś tasku.


  • +
  • -
  • 3

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#6 kakus002

    (-.(-.(-.-).-).-)

  • Autor tematu
  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 08.08.2014 22:39


Sprawdź teraz.

 


A to że wyskakuje CI kilka razy wiadomość to prawdopodobnie w/w kod masz w funkcji która jest powtarzana w jakimś tasku.

Wszystko działa ale gdy gracz ma np. 50 level bądz 100 przy każdym uderzeniu wroga wyskakuje ta informacja : ]


Użytkownik kakus002 edytował ten post 08.08.2014 22:40


#7 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 08.08.2014 22:52

Być może kod umieściłeś w evencie damage lub damage w kanapce. Pokaz cały public i wszystkie linijki z nim związane (np. gdy jest on gdzieś indziej używany)


  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#8 kakus002

    (-.(-.(-.-).-).-)

  • Autor tematu
  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 08.08.2014 23:09


Być może kod umieściłeś w evencie damage lub damage w kanapce. Pokaz cały public i wszystkie linijki z nim związane (np. gdy jest on gdzieś indziej używany)
public SprawdzPoziom(id)
{    
    if(!is_user_connected(id))
        return;
        
    new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
    
    new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
    
    while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
    {
        poziom_gracza[id]++;
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        zdobyl_poziom = true;
    }
        
    while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
    {
        poziom_gracza[id]--;
        stracil_poziom = true;
    }
        
    if(poziom_gracza[id] > limit_poziomu)
    {
        poziom_gracza[id] = limit_poziomu;
        ResetujPunkty(id);
    }
    
    if(stracil_poziom)
    {
        ResetujPunkty(id);
        tutorMake(id,TUTOR_GREEN,5.0,"Spadles do %i poziomu!", poziom_gracza[id])
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
    }
    else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
    }
    if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
    {
        client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
    }
            
    ZapiszDane(id);
}

W publicu ObrazeniaPost jest coś takiego

SprawdzPoziom(attacker);

To przez to ? : ]


Użytkownik kakus002 edytował ten post 08.08.2014 23:34


#9 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 08.08.2014 23:49

Tak to przez to. Zamiast 'if' użyj 'while'.

while( poziom_gracza[ id ] == 50 || poziom_gracza ==100 )
client_print(0, print_chat, "Blablabla")

  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#10 kakus002

    (-.(-.(-.-).-).-)

  • Autor tematu
  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 08.08.2014 23:57


Śmieszny sposób ale zadziała

Cały public ma wyglądać tak? Bo jeśli Tak to nie działa to : ] + Gdy uderzymy swojego to także wyskakuje informacja że gracz osiagnął 100 lvl .

public SprawdzPoziom(id)
{    
    if(!is_user_connected(id))
        return;
        
    if(poziom_gracza[id] != 50 || poziom_gracza[id] != 100)
    costam[id] = false;
    
    new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
    
    new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
    
    while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
    {
        poziom_gracza[id]++;
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        zdobyl_poziom = true;
    }
        
    while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
    {
        poziom_gracza[id]--;
        stracil_poziom = true;
    }
        
    if(poziom_gracza[id] > limit_poziomu)
    {
        poziom_gracza[id] = limit_poziomu;
        ResetujPunkty(id);
    }
    
    if(stracil_poziom)
    {
        ResetujPunkty(id);
        tutorMake(id,TUTOR_GREEN,5.0,"Spadles do %i poziomu!", poziom_gracza[id])
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
    }
    else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
    }
    if( !costam[id] && (poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 ))
    {
        client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
        costam[id] = true;
    }
    
    
    ZapiszDane(id);
}

Użytkownik kakus002 edytował ten post 08.08.2014 23:59


#11 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 08.08.2014 23:59

Edytowałem post, sprawdź jak napisałem wyżej. Tamten był głupi sposób ale by zadziałał, zapomniałem o pętli while, która jest tutaj najlepszym wyjściem.


  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#12 kakus002

    (-.(-.(-.-).-).-)

  • Autor tematu
  • Zbanowany

Reputacja: 164
Profesjonalista

  • Postów:209
  • Lokalizacja:OS
Offline

Napisano 09.08.2014 00:03

Edytowałem post, sprawdź jak napisałem wyżej. Tamten był głupi sposób ale by zadziałał, zapomniałem o pętli while, która jest tutaj najlepszym wyjściem.

Nadal to samo : ] Rozumiem że bool:costam nie potrzebna i to także :

if(poziom_gracza[id] != 50 || poziom_gracza[id] != 100)
    costam[id] = false;

?

Jeśli to ma wyglądać tak:

while(poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
    {
        client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);

    }
   

To przy uderzeniu gracza serwer się zatrzymuje, zero logów: ]


Użytkownik kakus002 edytował ten post 09.08.2014 00:15


#13 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.08.2014 19:07   Najlepsza odpowiedź

I czemu się dziwić, że wiadomość pokazuje się przy każdym trafieniu, skoro w warunku nie ma sprawdzenia czy gracz zyskał poziom?
else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
    }
    if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
    {
        client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
    }
na
else if(zdobyl_poziom)
    {
        punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-regeneracja_gracza[id]-obrazenia_gracza[id];
        tutorMake(id,TUTOR_GREEN,5.0,"Awansowales do %i poziomu!", poziom_gracza[id]) //TUTOR
        //set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
        //ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
        if( poziom_gracza[ id ] == 50 || poziom_gracza[ id ] == 100 )
        {
            client_print(0, print_chat, "[COD:MW] Gracz %s osiagnal %i poziom!", nazwa_gracza[id], poziom_gracza[id]);
        }
    }
a jeśli chcesz, żeby wiadomość pokazywała się po prostu co 50 poziom, to od tego masz % (reszta z dzielenia), czyli
if(!(poziom_gracza[id] % 50))

  • +
  • -
  • 2

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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