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
Zombie Plague Advance

Jak dodać dodatkowe obrażenia dla klasy

zombie plague advance

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

#1 lexar

    Wszechwiedzący

  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 07.05.2014 17:28

Witam

Używam pluginu klasy ludzi na swoim zm i chciałbym dodać do wojownika ciemności dodatkowe obrażenia z każdej broni. Jak to zrobić?

 

Pozdrawiam


  • +
  • -
  • 0

#2 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 07.05.2014 18:03

Kod z dokumentacji (funkcja SetHamParamFloat:

Spoiler

W plugin init rejestrujesz odpowiednie zdarzenie poprzez RegisterHam - typu Ham_TakeDamage. Następnie w funkcji podanej w parametrze callback (fw_HamPlayerTakeDamage) modyfikujesz zdarzenie w locie poprzez którąś funkcję typu SetHamParam. W tym przypadku chcesz zmienić czwarty parametr zdarzenia Ham_TakeDamage (Float:damage) na wartość 1.0.


  • +
  • -
  • 0

#3 lexar

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 07.05.2014 18:23

Próbowałem dodać tą funkcje do klasy ale wyskakuje error zamieszczę sma

Załączone pliki


  • +
  • -
  • 0

#4 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 07.05.2014 20:56

Spoiler

Obrażenia zadawane przez gracza z klasą wojownik ciemności obecnie są zwiększone dwukrotnie, wartość zmieniasz tutaj:

SetHamParamFloat(4, damage * 2.0)

Po damage może być tez inne działanie matematyczne (na przykład dodawanie), jednak liczba, o którą jest zmieniona wartość obrażeń, musi być liczbą zmiennoprzecinkową (to znaczy mieć przecinek - tak jak ta wyżej). Sama liczba 2 nie przejdzie, musi to być koniecznie 2.0.

Załączone pliki


  • +
  • -
  • 1

#5 lexar

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 08.05.2014 21:20

Dzięki działa ;)


  • +
  • -
  • 0

#6 lexar

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 09.05.2014 21:22

Plugin działa ale sypie errorami :/

 

[AMXX] Run time error 4: index out of bounds 
L 05/09/2014 - 22:06:52: [AMXX]    [0] klasy_ludzi.sma::fwHamPlayerTakeDamage (line 27)
 

  • +
  • -
  • 0

#7 VertekS

    Zaawansowany

  • Użytkownik

Reputacja: 48
Pomocny

  • Postów:80
  • Lokalizacja:amxxpc.exe
Offline

Napisano 10.05.2014 08:26

Spoiler

W jakich sytuacjach plugin powiadamia o błędach? Używasz pluginów typu Sentry Gun?

Załączone pliki


  • +
  • -
  • 0

#8 Drago36

    Profesjonalista - if you know what i mean

  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 10.05.2014 11:39

VertekS error pewnie wywala dlatego, gdyż nie ma warunku is_user_connected/alive. ;)

Więc zamiast tego:

public fwHamPlayerTakeDamage(id, inflictor, attacker, Float:damage, damagebits){
	if ( !(1 <= attacker <= max_players) )
		return HAM_IGNORED
		
	if(ma_klase[attacker] == 7 && !zp_get_user_zombie(attacker) || !zp_get_user_nemesis(attacker) || !zp_get_user_survivor(attacker))
		SetHamParamFloat(4, damage * 2.0)
		
	return HAM_IGNORED
}

Daj:

public fwHamPlayerTakeDamage(id, inflictor, attacker, Float:damage, damagebits){
	if(!is_user_connected(attacker))
		return HAM_IGNORED
		
	if(ma_klase[attacker] == 7 && !zp_get_user_zombie(attacker) || !zp_get_user_nemesis(attacker) || !zp_get_user_survivor(attacker))
		SetHamParamFloat(4, damage * 2.0)
		
	return HAM_IGNORED
}

  • +
  • -
  • 1





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

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

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