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

Blokowanie wyświetlanie informacji, w momencie pojawienia się drugiej


Najlepsza odpowiedź FejmZPolski , 01.03.2015 12:26

Mysle, ze chcesz zablokowac wiadomosc na 5 sekund, bo tyle trwa czas pokazywania wiadomosci o awansie, mozesz to zrobic za pomocą pobrania czasu, dla danego gracza a potem sprawdzenia, proszę:

ew awansowal[33]
public client_connect(id) {
    awansowal[id] = 0
public SmiercGraczaPost(id, attacker, shouldgib)
{    
    if(!is_user_connected(attacker))
        return PLUGIN_CONTINUE;
    
    if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
    {
        new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
        
        new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
        
        if(poziom_gracza[id] > poziom_gracza[attacker])
            
        nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
        
        if(!perk_gracza[attacker])
            
        UstawPerk(attacker, -1, -1, 1);
        
        doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
        
        new cod_hs = get_pcvar_num(cod_cvar);
        if(get_gametime() >= float(awansowal[attacker]+5)) {
            if(get_pdata_int(id, 75, 5) == HIT_HEAD)
            {
                cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs);
                set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
                show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
            }
            else
            {
                set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
                
                show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
            }
        }
    }
    
    
    SprawdzPoziom(attacker);
    
    return PLUGIN_CONTINUE;
}
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]-madrosc_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);
        set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
        show_dhudmessage(id,"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]-madrosc_gracza[id];
        set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
        show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
        client_cmd(id, "spk QTM_CodMod/levelup");
        awansowal[id] = floatround(get_gametime())
    }
    
    
    ZapiszDane(id);
}

Od razu mowie, ze nie mam calego kodu, tak wiec nawet nie moglem skompilowac,   i zobaczyzc czy dziala ;P

Przejdź do postu


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

#21 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 10.02.2015 20:56

Dalej się wyświetlają 2 wiadomośći w moemcie wbicia lvl


  • +
  • -
  • 0

#22 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.02.2015 21:10

Dziwne, skoro SprawdzPoziom(id) zwraca 0 w momencie wbicia lvl to warunek jest fałszywy i dalszy kod nie ma prawa się wykonać...

 

 

Sprawdź dokładnie czy masz ten kod co dałem... Coś mi się nie widzi...


  • +
  • -
  • 1

#23 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 10.02.2015 21:12

Mam dokładnie w silniku twój kod wklejony 


  • +
  • -
  • 0

#24 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.02.2015 21:17

Po co w silniku używasz cod_set_user_xp? Masz zmienną co trzyma EXP gracza, możliwe że to przez to...

 

Sprawdz kod z załącznika, jeżeli nie zadziała to odkomentuj zakomentowane linijki.

 

Załączone pliki


  • +
  • -
  • 1

#25 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 10.02.2015 21:44

Dalej nie działa czasami się nie wyświetla w ogóle, czasami 2 wiadomości, a czasami jedna oto logi

L 02/10/2015 - 21:41:36: Log file started (file "cstrike/addons/amxmodx/lol.txt") (game "cstrike") (amx "1.8.1.3746")
L 02/10/2015 - 21:41:36: awans
L 02/10/2015 - 21:41:36: awans
L 02/10/2015 - 21:41:36: awans
L 02/10/2015 - 21:41:58: wiadomosc
L 02/10/2015 - 21:42:04: wiadomosc
L 02/10/2015 - 21:42:04: awans
L 02/10/2015 - 21:42:24: awans
L 02/10/2015 - 21:42:51: wiadomosc
L 02/10/2015 - 21:42:51: awans 


  • +
  • -
  • 0

#26 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 10.02.2015 21:51

Dziwne jest to:

L 02/10/2015 - 21:41:36: awans
L 02/10/2015 - 21:41:36: awans
L 02/10/2015 - 21:41:36: awans

w tym samym czasie 3 razy funkcja awansujaca... A spróbuj z funkcji gzdie jest exp za dmg zakomentować sprawdzanie expa i wstaw log wtedy.

Załączone pliki


  • +
  • -
  • 1

#27 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 11.02.2015 18:02

Dalej wyświetlają się razem

 

 

Oto logi

L 02/11/2015 - 18:00:18: bez awansu
L 02/11/2015 - 18:00:19: bez awansu
L 02/11/2015 - 18:00:19: bez awansu
L 02/11/2015 - 18:00:19: awans
L 02/11/2015 - 18:00:19: bez awansu
L 02/11/2015 - 18:00:19: awans
L 02/11/2015 - 18:00:49: bez awansu
L 02/11/2015 - 18:00:49: bez awansu
L 02/11/2015 - 18:00:49: awans
L 02/11/2015 - 18:00:49: bez awansu
L 02/11/2015 - 18:00:49: awans
L 02/11/2015 - 18:01:19: bez awansu
L 02/11/2015 - 18:01:19: wiadomosc
L 02/11/2015 - 18:01:19: bez awansu
L 02/11/2015 - 18:01:19: awans
L 02/11/2015 - 18:01:36: bez awansu
L 02/11/2015 - 18:01:36: bez awansu
L 02/11/2015 - 18:01:36: wiadomosc
L 02/11/2015 - 18:01:36: bez awansu
L 02/11/2015 - 18:01:36: awans
L 02/11/2015 - 18:01:47: bez awansu 

  • +
  • -
  • 0

#28 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.02.2015 18:17

A odpiąłeś sprawdzanie poziomu z obrażeń?


Brak pomysłu :X
  • +
  • -
  • 1

#29 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 11.02.2015 18:28

Tak, też nie mam pomysłu

 

 

A jak by to tak zrobić

 

 

Zabrać zmienną dodaną w SprawdzPoziom dodać ją ogólnie

new bool:zdobyl_poziom = false

i w śmierć gracza dodać takie coś

		if(zdobyl_poziom[id])
		{
			if(get_pdata_int(id, 75, 5) == HIT_HEAD)
			{
				doswiadczenie_gracza[attacker] += cod_hs
				if(SprawdzPoziom(attacker))
				{
					log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
					set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
					show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
				}
			}
			else
			{
				if(SprawdzPoziom(attacker))
				{
					log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
					set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
					
					show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
				}
			}
		}

  • +
  • -
  • 0

#30 wooDy.

    Pomocny

  • Użytkownik

Reputacja: 24
Życzliwy

  • Postów:71
  • Lokalizacja:Kraków
Offline

Napisano 11.02.2015 19:17

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return PLUGIN_CONTINUE;
	
	if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		
		new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		
		if(poziom_gracza[id] > poziom_gracza[attacker])
			
		nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
		
		if(!perk_gracza[attacker])
			
		UstawPerk(attacker, -1, -1, 1);
		
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
		
		new cod_hs = get_pcvar_num(cod_cvar);
		new bool:lvl;
		if( SprawdzPoziom )
			lvl=true;
			
		if(get_pdata_int(id, 75, 5) == HIT_HEAD)
		{
			cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs);
			if( !lvl ) {
				set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
				show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
			}
		}
		else if( !lvl )
		{
			set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
			
			show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
		}
	}
	SprawdzPoziom(attacker);
	
	return PLUGIN_CONTINUE;
}
public bool: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]-madrosc_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);
		set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
		show_dhudmessage(id,"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]-madrosc_gracza[id];
		set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
		show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
		client_cmd(id, "spk QTM_CodMod/levelup");
	}
	
	
	ZapiszDane(id);
	
	return zdobyl_poziom;
}

a tak?


  • +
  • -
  • 1
b_350_20_00DF04_000000_FFFFFF_00DF04.png
b_350_20_00DF04_000000_FFFFFF_00DF04.png

#31 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 11.02.2015 19:35

Zrobiłem tak i ciągle piszę, po trafieniu zabiciu i kupieniu expa awansowałeś

public SprawdzPoziom(id)
{	
	new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
	
	new 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]-madrosc_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);
		set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
		show_dhudmessage(id,"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]-madrosc_gracza[id];
		set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
		show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
		client_cmd(id, "spk QTM_CodMod/levelup");
		ZapiszDane(id);
		log_to_file("addons/amxmodx/lol.txt", "awans")
		return 0;
	}
	
	
	ZapiszDane(id);
	log_to_file("addons/amxmodx/lol.txt", "bez awansu")
	return 1;
}

public SmiercGraczaPost(id, attacker, shouldgib)
{    
	if(!is_user_connected(attacker))
		return PLUGIN_CONTINUE;
	
	if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{
		new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		
		new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
		
		if(poziom_gracza[id] > poziom_gracza[attacker])
			nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
		
		if(!perk_gracza[attacker])
			UstawPerk(attacker, -1, -1, 1);
		
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
		
		new cod_hs = get_pcvar_num(cod_cvar);
		
		new sprawdzenie = zdobyl_poziom = false;
		
		if(!sprawdzenie)
		{
			if(get_pdata_int(id, 75, 5) == HIT_HEAD)
			{
				doswiadczenie_gracza[attacker] += cod_hs
				if(SprawdzPoziom(attacker))
				{
					log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
					set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
					show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
				}
			}
			else
			{
				if(SprawdzPoziom(attacker))
				{
					log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
					set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
					
					show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
				}
			}
		}
	}
	
	
	return PLUGIN_CONTINUE;
}

  • +
  • -
  • 0

#32 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.02.2015 21:31

Kurczę, nie rozkminiam już.

Sprawdzpoziom musi zwracać wartość która porównujemy podczas śmierci.

Przysiade do tego i pomyślę. CzY Masz inne pluginy dające xp za frag?
  • +
  • -
  • 1

#33 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 11.02.2015 21:50

Nie

 

Ten plugin jest w silniku, bo był za hs i dodałem do silnika


  • +
  • -
  • 0

#34 plx211

    Wszechpomocny

  • Użytkownik

Reputacja: 231
Wszechwidzący

  • Postów:397
  • Lokalizacja:Polska
Offline

Napisano 11.02.2015 22:07

Do sprawdzpoziom dodaj na początek:
new bool:zdobyl_poziom = false;
Po za tym ta 2 funkcja wymaga przepisania (jak dla mnie to WTF!?)

Użytkownik plx211 edytował ten post 11.02.2015 22:08

  • +
  • -
  • 1

#35 GoldenKill

    Guru

  • Autor tematu
  • Power User

Reputacja: 507
Wszechwiedzący

  • Postów:792
  • Steam:steam
  • Imię:Damian
  • Lokalizacja:Trzebnica
Offline

Napisano 11.02.2015 22:25

na samym początku  dodałem new bool -.-


  • +
  • -
  • 0

#36 plx211

    Wszechpomocny

  • Użytkownik

Reputacja: 231
Wszechwidzący

  • Postów:397
  • Lokalizacja:Polska
Offline

Napisano 11.02.2015 22:31

Lepiej gdy jest wewnątrz tamtej funkcji (wykonuje się zawsze)
Brak średnika:
doswiadczenie_gracza[attacker] += cod_hs
Zobacz czy tak samo jest gdy będziesz drukował do servera zamiast do pliku
  • +
  • -
  • 0

#37 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.02.2015 22:37

Srednik nie jest wymagany, plik czy konsola, jeden ...

Przepisze ta funkcję jakoś muszę pomyśleć
  • +
  • -
  • 1

#38 plx211

    Wszechpomocny

  • Użytkownik

Reputacja: 231
Wszechwidzący

  • Postów:397
  • Lokalizacja:Polska
Offline

Napisano 11.02.2015 22:59

A może problem nie leży po stronie codmoda, postaw na nowym servie (choćby lokalnie) lub daj komuś do przetestowania (wystarczy wersja skompilowana, jeśli nie chcesz udostępniać kodu)
  • +
  • -
  • 1

#39 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 12.02.2015 00:09

To wina kodu, sprzęt nie ma nic do rzeczy...
  • +
  • -
  • 1

#40 plx211

    Wszechpomocny

  • Użytkownik

Reputacja: 231
Wszechwidzący

  • Postów:397
  • Lokalizacja:Polska
Offline

Napisano 12.02.2015 00:27

Moja wina (opierałem się na podst. Ostatnich postów)

Do czystego silnika (takiego jakiego miales gdy rozpoczoles temat) zastosuje to (uwaga pisane na fonie):
http://wklej.org/id/1632744/
  • +
  • -
  • 1




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

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