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

[ROZWIĄZANE] 1/x z Broni , 1/1 z Granatu, Dmg + Int Przy Pomocy SetParamFloat ?

cod nowy

Najlepsza odpowiedź BlackPerfum, 27.06.2014 14:21

Nie rozumiem dlaczego mam nie uzywac cod_inflict_damage().

Już tłumaczę:
 
Funkcja cod_inflict_damage to nic innego niż:

ExecuteHam(Ham_TakeDamage,id,ent,attacker,Float:damage,damagebits)

Tylko dodatkowo w dmg może zostać uwzgledniony pewien procent int'a gracza. Jeśli to hamsandwich zadaje dmg to co jest złe?? A to że używasz ExecuteHam a nie ExecuteHamB różnica ogromna choć pozornie mała. Dodanie na samym końcu nazwy funkcji "B" sprawi  iż tą funkcję będą mogły złapać inne pluginy. Tzn. tak jak mówiłem wyżej. Grasz klasą np. Szturmowiec która ma dodatkowe 10 dmg z m4(dodane twoim sposobem). a jakis gracz w przeciwnym teamie gra klasa AntySzturmowiec która posiada w evencie ham_takeDamage blokuje wszystkie dmg z m4. W pewnym momęcie strzelacie do siebie (twoja bron to m4)  i o dziwo zadajesz mu dmg!!! Bo on nie był w stanie satrzymać tego dodatkowego dmg! Dlatego udało ci się go zabić biggrin.png
Przykład w którym widac że dmg zadawane tym sposobem nie mozna modyfikować (za pomocą hamsandwich'a)
 
Wniosek: Jeśli zmodyfikujesz swojego cod'a i dodasz tam "B" to możesz używać tej funkcji to zadawania dmg. Nadal nie możesz używać jej do zwiększenia dmg. Dlaczego?? Bo jak za pomocą jej zwiększysz dmg == ∞ (wtf? moja nieskończonośc zmalała :( )
Dlaczego? Bo wykonujesz pętle nieskończoną. Zadając komuś dmg (normalnie pistoletem) sprawiasz że wykonuje się funkcja zarejestrowana w ham'ie nastepnie dodajesz w ten sposób dmg co sprawia że znowu ta funkcja się wykonuje i znowu dodajesz dmg i znowu...

 

 

Jak modyfikować dmg?

Według mnie najlepiej robic to tak:

 

W Ham_TakeDamage (pre) dodawać / odejmować dmg (za pomocą SetHamParmFloat)

Mozna także tutaj zrobić blokowanie dmg za pomoca zwrócenia supercode a także można tu robic 1/x za pomocą Ham_Killed

 

W Ham TakeDamage (post) mnożyć / dzielić dmg  (za pomocą SetHamParmFloat) oraz dopiero tutaj pytać się jakie gracz zadał dmg. tzn. dopiero tutaj np. zabierać wytrzymalośc przedmiotu (w zależności od dmg) albo dodawać expa (w zależności od dmg) dlaczego dopiero tutaj bo to jest dmg końcowe to dmg już nie podlega zmianie (a to w pre tak)

 

Tak naprawdę to by sie przydały trzy eventy:

- pierwszy na doddawanie/odejmowanie dmg

- drugi na mnożenie/dzielenie dmg

- i trzeci: pobieranie dmg i działanie nad nim ale nie zmienianie go

 

 

 

Przejdź do postu


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

#21 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.06.2014 12:09

Dobra. Dziekuje Ci bardzo. Spisuje sobie teraz liste pewników dotyczących Damage xD :)

A dmg z rakiety/miny/dynamitu to jakie damagebits? Tylko mi nie mów ze (1<<24) bo się odstrzele jeszcze dziś.
  • +
  • -
  • 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