42
if(!is_user_alive(attacker) || !is_user_connected(attacker))
Wystarczy samo sprawdzenie, czy gracz żyje.
Jeśli żyje, to znaczy, że jest połączony z serwerem.
Warto natomiast sprawdzić, czy atakujący jest w ogóle graczem (id ∈ [1 ; 32] ∩ ℕ).
46
if(mikolaj[id]){
To samo,wypadałoby sprawdzić, czy ofiarą jest gracz.
27
public Odrodzenie(id){
mikolaj[id] = false
cs_reset_user_model(id)
return PLUGIN_CONTINUE;
}
Dodać należy warunek, czy odrodzony gracz żyje.
Zauważ, że Ham_Spawned_Post wykonuje się także w momencie dołączenia do serwera.
Przydałoby się także dodać drobny interwał, aby mieć pewność, że wykonane zostały podstawowe komendy spawnu.
53
los_mikolaj_ct()
i adekwatnie 68
los_mikolaj_tt
Nie, nie, jeszcze raz nie.
Bardzo łatwo o zapętlenie się i crash. Nie masz absolutnie żadnej pewności, że funkcja się kiedykolwiek zakończy.
Nie możesz założyć, że istnieje przynajmniej jeden gracz, który spełnia warunki na zostanie wylosowanym.
Już o wydajności funkcji nie wspomnę. Ponadto, nie sprawdzasz, czy gracz to osoba, bot, czy HLTV.
Podam Ci przykład, jak powinno zostać to wylosowane.
public los_mikolaj_ct(){
new ct[33],num=-1;//w tablicy ct będziemy przechowywać numery id osób, spełniających warunek do zostania wylosowanymi, num to liczba tych kandydatów
for(new id=1;id<get_maxplayers();++id){// dla każdego gracza
if(is_user_alive(id) && get_user_team(id)==2 && !is_user_bot(id) && !is_user_hltv(id)){// sprawdzamy, czy żyje (jeśli nie ma go na serwerze, to nie żyje), czy spełnia warunek bycia CT, czy nie jest botem ani HLTV
ct[++num]=id;//jeśli spełnia warunki, to dodajemy go do tablicy i preinkrementujemy liczbę kandydatów
}
}
if(++num){//jeśli istnieje chociaż jeden kandydat, to losujemy mikołaja, w przeciwnym przypadku, nie.
new rand=ct[random(num)];//losujemy zwycięzcę i pobieramy jego id z tabeli, reszta jest oczywista
ColorChat(rand, BLUE, "Jestes Mikolajem CT");
cs_set_user_model(rand, "santact");
set_user_health(rand, get_user_health(rand)+get_cvar_num("santa_hp"));
set_user_armor(rand, get_cvar_num("santa_armor"));
mikolaj[rand]=true;
}
return PLUGIN_CONTINUE;
}