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

DMG / damagebits HE


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

#1 mlekovita

    Zaawansowany

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:149
  • Imię:Dawid
Offline

Napisano 23.06.2022 10:27

Witajcie, jest sposób na poprawne przypisywanie dmg z granata do zmiennej?
 

enum _:data {GRENADE = 0, AWP}
new naliczDamage[33][data];

public damage(victim, inflictor, attacker, Float:damage, damagebits)
{
	if(!is_user_alive(attacker))
		return HAM_IGNORED;

	if(get_user_team(attacker) == get_user_team(victim))
		return HAM_IGNORED;
		
	new bron = get_user_weapon(attacker);
		

	if(bron == CSW_HEGRENADE && damagebits & DMG_HE) naliczDamage[attacker][GRENADE] += floatround(damage, floatround_round);
			
	if(bron == CSW_AWP) naliczDamage[attacker][AWP] += floatround(damage, floatround_round);
			
	return HAM_IGNORED;
}

W pierwotnej wersji "Skryptu" nie naliczalo dmg tylko z granatu i poszperalem w amxxie i dostrzeglem ze odpowiada za to damagebits więc ustalilem go w warunku i dmg zaczelo naliczac dla granata

No spoko wszystko fajnie tylko jak zabije z awp to dmg prawidłowo się nalicza tylko do awp, ale jak zabije z granatu to dmg zalicza sie zarówno do awp i grenade.


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

  • Postów:2 043
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 23.06.2022 10:46

Dam Ci wędkę.
 
log_amx lub client_print pozwolą Ci na printowanie kolejno w konsoli lub czacie. W momencie zadania dmg wyprintuj sobie damage, damagebits i bron.
Wtedy zostaje Ci tylko logiczne rozwiązanie problemu naliczania dmg dla złej broni - bo już wiesz jakie wartości ma każda ze zmiennych i możesz sobie manualnie przejść przez kod podkładając pod zmienne konkretne liczby.
 
Sidenotes:

  • Nazwy zmiennych zmien na angielski, to samo tyczy się 'data' (tutaj też przydałoby się jakiejś konwencji nazw użyć, Ja osobiście enumy robię UPPER_SNAKE_CASE, a pola z przedrostkiem nazwy, czyli dla enuma WEAPONS_DATA pola nazywałyby się WD_GRENADE i WD_AWP) 
  • Pierwsza wartość enum domyślnie przyjmuje 0, więc nie musisz jej ręcznie ustawiać
  • Dwa ify możesz zmienić na switcha, żeby schludniej wyglądało
  • Dwa ify na początku (alive i team) możesz połączyć, dla lepszej przejrzystości
  • Nie nazywaj tego "skryptem", tylko skryptem. To jest skrypt.

 

Lektura: https://forums.allie...18&postcount=71

 

Edit: Mniej więcej tak powinien wyglądać kod, według moich wytycznych. Możliwe też, że rozwiązałem Twój problem, ale niczego nie testowałem więc sam popróbuj.

Spoiler

Użytkownik Robiin edytował ten post 23.06.2022 11:04

  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.





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

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