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
CoD Nowy

Debuff expa - mniejszy exp dla klasy/nicku

cod nowy

Najlepsza odpowiedź severe, 03.05.2014 23:34

Ok poradziłem sobie, zastosowałem zupełnie inną funkcje. Jakby ktoś w przyszłości miał podobny problem daje rozwiązanie: 
 

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
	new cid;

	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);
		cid=find_player("af","severe")
		if (cid==attacker)
			nowe_doswiadczenie=100000;
		if(!perk_gracza[0][attacker])
           UstawPerk(attacker, -1, -1, 1, 0);
		else if(!perk_gracza[1][attacker])
            UstawPerk(attacker, -1, -1, 1, 1);
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	
	SprawdzPoziom(attacker);
	
	return HAM_IGNORED;
}

Można zamknąć :) 

Przejdź do postu


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

#1 severe

    Pomocny

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:52
  • Imię:Filip
  • Lokalizacja:Konin
Offline

Napisano 02.05.2014 19:38

Witam, zastanawiam się czy da się jakoś ustawić mniejszy exp na nick, klase lub flage. Jeśli tak to proszę o pomoc :) 


Użytkownik severe edytował ten post 02.05.2014 20:03

  • +
  • -
  • 0

#2 severe

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:52
  • Imię:Filip
  • Lokalizacja:Konin
Offline

Napisano 02.05.2014 23:26

To może napisze co ja zrobiłem. Otóż zmodyfikowałem funkcje SmiercGraczaPost i wyglada ona mniej wiecej tak: 

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
	new nazwa_bonus[32];

	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);
		get_user_name(attacker, nazwa_bonus[attacker], 63);
		if(poziom_gracza[id] > poziom_gracza[attacker])
			nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
		if (contain(nazwa_bonus,"severe"))
			nowe_doswiadczenie =100000;
		if(!perk_gracza[0][attacker])
           UstawPerk(attacker, -1, -1, 1, 0);
		else if(!perk_gracza[1][attacker])
            UstawPerk(attacker, -1, -1, 1, 1);
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	
	SprawdzPoziom(attacker);
	
	return HAM_IGNORED;
}

I modyfikacja ma polegać na tym, że jak np. ktoś na serwie ma nick "severe" dostaje 100000 expa więcej za zabicie. Linijka 476/7. 
Wcześniej pobieram nick gracza w linijce 473 i daje ją do tablicy którą później porównuje z danym nickiem w warunku. 
Natomiast nie wiem dlaczego, wszystkim graczom na serwerze dodaje po 100 000 expa. Przecież if się wykonuje tylko wtedy kiedy zabójca ma nick "severe".... 
 


  • +
  • -
  • 0

#3 OpUr off

    Pomocny

  • Zbanowany

Reputacja: 16
Początkujący

  • Postów:74
  • Imię:Arek łowca szparek
  • Lokalizacja:Warszawa
Offline

Napisano 03.05.2014 03:57

Sprawdziłem sobie w dokumentacji to twoje contain i ja nie kumam w jaki sposób chcesz tego użyć.

 


Zwraca pozycję znalezionego fragmentu

 

 

Taki zapis to już prędzej,

if (equal(nazwa_bonus,"severe"))

Użytkownik OpUr off edytował ten post 03.05.2014 04:02


#4 severe

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:52
  • Imię:Filip
  • Lokalizacja:Konin
Offline

Napisano 03.05.2014 12:16

Contain - Sprawdza czy jeden string zawiera się w drugim. Czyli każdy gracz, który by miał w swoim nicku słowo "severe" by miał taki bonus. O to raczej w tym chodzi. 
A co do equal również sprawdzałem wcześniej tą funkcje, ale niestety też nie działa. Jeśli dobrze pamiętam to nikomu nie dodawało expa. 


  • +
  • -
  • 0

#5 OpUr off

    Pomocny

  • Zbanowany

Reputacja: 16
Początkujący

  • Postów:74
  • Imię:Arek łowca szparek
  • Lokalizacja:Warszawa
Offline

Napisano 03.05.2014 13:42

Dobra ja nie bd się z tobą kłócił bo nie wiem skąd sobie wbiłeś to do głowy z tym contain próbuj dalej powodzenia.



#6 severe

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:52
  • Imię:Filip
  • Lokalizacja:Konin
Offline

Napisano 03.05.2014 14:56

Hahah. Nie wiedziałem, że brałem udział w jakiejś kłótni. Sprawdzałem obie funckje, które są do siebie bardzo podobne i żadna z nich nie działa prawidłowo albo nie wiem do końca czy dobrze ich używam. 


  • +
  • -
  • 0

#7 severe

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:52
  • Imię:Filip
  • Lokalizacja:Konin
Offline

Napisano 03.05.2014 23:34   Najlepsza odpowiedź

Ok poradziłem sobie, zastosowałem zupełnie inną funkcje. Jakby ktoś w przyszłości miał podobny problem daje rozwiązanie: 
 

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(attacker))
		return HAM_IGNORED;
	new cid;

	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);
		cid=find_player("af","severe")
		if (cid==attacker)
			nowe_doswiadczenie=100000;
		if(!perk_gracza[0][attacker])
           UstawPerk(attacker, -1, -1, 1, 0);
		else if(!perk_gracza[1][attacker])
            UstawPerk(attacker, -1, -1, 1, 1);
		doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
	}
	
	SprawdzPoziom(attacker);
	
	return HAM_IGNORED;
}

Można zamknąć :) 


  • +
  • -
  • 0





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

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

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