W swoim TuTku Benio101 pisze:
Kolejną zaletą jest możliwość bardzo sprawnego wyzerowania bitów dla wszystkich graczy:players=0;
zamiast
for(new i=1; i<=32; ++i){ players[i]=false;}
Łopatologicznie, używamy:
if(CheckBit(players, id))
zamiast
if(players[id])
przy sprawdzaniu bitu.
SetBit(players, id);
zamiast
players[id]=true;
przy ustawianiu bitu na "tak".
ClearBit(players, id);
zamiast
players[id]=false;przy ustawianiu bitu na "nie".
A ja mam pytanie
1.Jak zastosować to do np. takiego perku? Bo tam jest ma_perk[33]?
2.Czy powinno dawać sie [33] czy [32]??
#include <amxmodx> #include <hamsandwich> #include <codmod> #define DMG_BULLET (1<<1) new const perk_name[] = "Tajemnica Szturmowca"; new const perk_desc[] = "Dostajesz M4A1 i dodatkowe 10 obrazen z niego"; new bool:ma_perk[33]; public plugin_init() { register_plugin(perk_name, "1.0", "QTM_Peyote"); cod_register_perk(perk_name, perk_desc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_perk_enabled(id) { cod_give_weapon(id, CSW_M4A1); ma_perk[id] = true; } public cod_perk_disabled(id) { cod_take_weapon(id, CSW_M4A1); ma_perk[id] = false; } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_perk[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_M4A1 && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 10.0, 0.0, idinflictor, damagebits); return HAM_IGNORED; }