←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

DMG / damagebits HE

  • +
  • -
mlekovita's Photo mlekovita 23.06.2022

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.

Quote

  • +
  • -
Robiin's Photo Robiin 23.06.2022

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

Edited by Robiin, 23.06.2022 11:04.
Quote