Zmiana HP o losową ilość
Filip1512
24.09.2012
Cześć,
do rzeczy - chce, aby ta funkja dawała losowe hp, lecz nie działa. Na czacie informuje, że hp zostało zmienione, hp wzrasta, lecz nie działa funkcja, że jeśli hp > 100, to zmienić hp na 100
Co tu jest źle?
Użytkownik `NN edytował ten post 24.09.2012 21:40
do rzeczy - chce, aby ta funkja dawała losowe hp, lecz nie działa. Na czacie informuje, że hp zostało zmienione, hp wzrasta, lecz nie działa funkcja, że jeśli hp > 100, to zmienić hp na 100
case 11: {
new hp = get_user_health(id)
new losowe_hp = random_num(20,50)
ColorChat(id, BLUE, "Otrzymujesz dodatkowe %dhp i granat na pocieszenie ", losowe_hp)
cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)
give_item(id, "weapon_hegrenade")
dodatkowe_hp[id] = true;
if(dodatkowe_hp[id] == true && is_user_alive(id)){
set_user_health(id, hp+losowe_hp)
}
else if(get_user_health(id) > 100)
set_user_health(id, 100)
}
Co tu jest źle?
Użytkownik `NN edytował ten post 24.09.2012 21:40
Zapalka
25.09.2012
Źle jest tutaj:
Jeśli "if" się wykona to "else if" się nie wykona, i na odwrót jeżeli "if" się nie wykona to "else if" się wykona. "else if" oznacza "jeżeli nie".
Więc aby działało musisz postawić dwa niezależne warunki.
if(dodatkowe_hp[id] == true && is_user_alive(id)){
set_user_health(id, hp+losowe_hp)
}
else if(get_user_health(id) > 100) set_user_health(id, 100)
Jeśli "if" się wykona to "else if" się nie wykona, i na odwrót jeżeli "if" się nie wykona to "else if" się wykona. "else if" oznacza "jeżeli nie".
Więc aby działało musisz postawić dwa niezależne warunki.
if(dodatkowe_hp[id] == true && is_user_alive(id)){
set_user_health(id, hp+losowe_hp)
}
if(get_user_health(id) > 100) set_user_health(id, 100)
Filip1512
25.09.2012
Zapomniałem dopisać do pierwszego postu, że właśnie przy zwykłym ifie było tak samo.
Pan PrO
25.09.2012
Sprawdź to
case 11:
{
new hp = get_user_health(id)
new losowe_hp = random_num(20,50)
ColorChat(id, BLUE, "Otrzymujesz dodatkowe %dhp i granat na pocieszenie ", losowe_hp);
cs_set_user_money(id, cs_get_user_money(id)-get_cvar_num("kasa_bonus"));
give_item(id, "weapon_hegrenade");
if(is_user_alive(id))
{
if(get_user_health(id) > 100)
set_user_health(id, 100);
else set_user_health(id, hp+losowe_hp);
}
}
ogieR8
26.09.2012
Moze pomoże Ci is_user_connected(id), a na dodatek nie dałeś zabezpieczenia, czy gracz ma taką kasę, by to kupić. Jak ma 5$, a to np kosztuje 10$, to będzie miał na minusie, a nie powinien mieć, wywali Ci błędami. Sprawdzeń typu alive, is_bot, connected, spectator nigdy za wiele, sam o tym sie przekonalem w evencie round_start nie raz.. niby glupie connected, a nic nie chcialo dzialac ; d
Użytkownik ogieR- edytował ten post 26.09.2012 22:43
Użytkownik ogieR- edytował ten post 26.09.2012 22:43
Gość_21977_* 16.10.2012
@up jeśli jest is_user_alive, to is_user_connected zawsze w tym wypadku będzie prawdziwe.
Można mieć ujemną sumę pieniędzy, nic nie stoi na przeszkodzie i żadnych errorów nie będzie.
A is_user_bot nie zdaje żadnego rezultatu w tym wypadku, gdyż bot i tak symuluje gracza z AI.
@topic:
Można mieć ujemną sumę pieniędzy, nic nie stoi na przeszkodzie i żadnych errorów nie będzie.
A is_user_bot nie zdaje żadnego rezultatu w tym wypadku, gdyż bot i tak symuluje gracza z AI.
@topic:
new hp = get_user_health(id)
new losowe_hp = random_num(20,50)
ColorChat(id, BLUE, "Otrzymujesz dodatkowe %dhp i granat na pocieszenie ", losowe_hp);
cs_set_user_money(id, cs_get_user_money(id)-get_cvar_num("kasa_bonus"));
give_item(id, "weapon_hegrenade");
set_user_health(id, min(hp+losowe_hp,100));
radim
17.10.2012
Btw. dla autora tematu, zamiast:
A gdy zwracasz false to wykrzyknik przed zmienną, ale to chyba już wiesz ;D
if(dodatkowe_hp[id] == true && is_user_alive(id))używaj tak:
if(dodatkowe_hp[id] && is_user_alive(id))gdyż tak jest bardziej "estetyczniej"
A gdy zwracasz false to wykrzyknik przed zmienną, ale to chyba już wiesz ;D