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 !


 
Dodatki SourceMod







				
				
  codclass_konspirant.amxx






