DMG / damagebits HE
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.
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.
Edited by Robiin, 23.06.2022 11:04.