←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Za duzo expa

  • +
  • -
maska1's Photo maska1 19.11.2019

Witam mam serwer cod mod 45k lvl z tabelka expa i gdy powiedzmy ktos ma 40000 lvl wejdzie nowy gracz i zabije takiego gracza to dostaje ponad 40000lvl jak to zmienic?

Quote

  • +
  • -
Aexis's Photo Aexis 19.11.2019

Rozumiem że COD nowy ?

To jeżeli nie masz osobnych pluginów dających dodatkowy exp, to wystarczy odpowiednio zmienić cvary:
 

cod_killxp  //Doswiadczenie za zabojstwo.
cod_winxp  //Doswiadczenie za wygrana.
cod_damagexp  //Doswiadczenie za 20 obrazen.
Quote

  • +
  • -
maska1's Photo maska1 19.11.2019

No tak to wiem ale to nie chodzi o to powiedzmy jest gracz ktory ma 20000 my wchodzimy z 1LVL zabijamy go i dostajemy powiedzmy 22000 gdzie jest to nie mozliwe aby tyle sie uzbieralo z tych obrazen killa itd poprostu im wyzszy level gracz ma tym dostajemy wiecej tych tego expa nie wiem dlaczego

Quote

  • +
  • -
Aexis's Photo Aexis 19.11.2019

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
		
	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;
	}
	
	SprawdzPoziom(attacker);
	
	return HAM_IGNORED;
}

Znajdź taki fragment w sma silnika.
Chodzi tutaj głownie o ten fragment:
 

nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);

Doświadczenie które dostaje gracz, jeżeli zabija gracza z wyższym poziomem jest równe=
[(lvl gracza z wyższym lvl) - (lvl gracza z niższym lvl)] * (wartość cvara cod_killxp)/10

 

np. gracz z lvl 5000 został zabity przez gracza z lvl 10:
doświadczenie=(5000-10)*cod_killxp/10

Więc generalnie musisz sobie pokombinowac tak z tym algorytmem jak Ci odpowiada.
Jak bedziesz miał jakis problem pisz, spróbuję pomóć.


Edited by Aexis, 19.11.2019 21:58.
Quote

  • +
  • -
maska1's Photo maska1 19.11.2019

dzięki a mozna to jakos usunac? zeby niezaleznie jaki poziom dawalo expa tylko za kille i obrazenia?

Quote

  • +
  • -
Aexis's Photo Aexis 19.11.2019

Jak zamienisz na coś takiego bedzie przyznawana tylko wartośc z cod_killxp:

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
		
	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 += (doswiadczenie_za_zabojstwo);
			
		if(!perk_gracza[attacker])
			UstawPerk(attacker, -1, -1, 1);
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	
	SprawdzPoziom(attacker);
	
	return HAM_IGNORED;
}

Natomiast doświadczenie za obrazenia nie zależy od różnicy lvl, nic nie musisz zmieniać

 

Quote

  • +
  • -
maska1's Photo maska1 21.11.2019

Zmienilem na to ale nadal jest to samo w tabelce expa na 45k mam ponac 360000000 po zabiciu gracza 45k lvl dostaje 45k lvl cvary 3k za 20 obrazen 100k za killa i 100k za wygrana runde dziwne

Quote