Witam,
W związku z masą tematów "Nie mogę dodać 1/x z broni" albo "Jak dodać 1/x z broni" postanowiłem napisać poradnik, który pokaże, jak to zrobić.
1.W includach dodaj:
#include <hamsandwich>
*Jeśli już masz, to nie musisz dodawać
2.Pod wszystkimi include:
#define DMG_BULLET (1<<1)
3.Zmienna:
new ma_klase[33];
4. W plugin_init rejestrujemy:
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
*Jeśli nie mamy, to dodajemy:
public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; }
5. A następnie dodajemy public:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); return HAM_IGNORED; }
CSW_BRON - Zmieniasz na wybraną broń np. CSW_AK47
6. W zarejestrowanym publicu zwróć uwagę na to:
random_num(1, x) == 1)
x zmieniasz na szansę na zabicie. Jeśli ustawisz 3, to klasa będzie miała 1/3 szans na zabicie z danej broni.
7. Jeśli chcemy, aby klasa miała natychmiastowe zabicie, to usuwamy:
&& random_num(1, x) == 1
Czyli nasz warunek będzie wyglądał tak:
if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
8*. Jeśli w klasie zarejestrowany jest już powyższy public, a chcemy dodać 1/x z innej broni to pod:
if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
dodajemy:
if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
To chyba wszystko jasne.
Aby dodać 1/x z kosy (PPM):
Aby dodać 1/x z HE:
Mam nadzieję, że poradnik zrozumiały i w miarę się przydał. POWODZENIA !