Dodatkowe AP dla randomowej osoby na serwerze
Best Answer
Ogen Dogen
02.01.2017 02:03
Na szybko pisane, nietestowane:
public random_player() { if (get_playersnum() == 0) return -1; new Array:arr = ArrayCreate(1,32); for (new i=0; i<32; i++) { if (is_user_connected(i)) ArrayPushCell(arr, i); } new choosen = random_num(0, ArraySize(arr)); new choosen_id = ArrayGetCell(arr, choosen); ArrayClear(arr); return choosen_id; }Go to the full post

Robiin
30.12.2016
Cześć,
kodzik taki jak poniżej nie działa, ale według kodu (tak mi się przynajmniej wydaje) wszystko jest okej.
Jest gdzieś na forum gotowa - sprawdzona funkcja "random_player" albo coś w tym rodzaju? Nie jestem 100%towo pewny co do tej na dole.
Public początku rundy wykonuje się, pomijając 1 rundę. Jak wykonać ten event też w pierwszej rundzie - tej, która jest pomijana? Nie mogę użyć
register_logevent("Poczatek_Rundy", 2, "1=Round_Start")
ponieważ public to odliczanie do pierwszego zm, więc póki nie znałbym przyszłości, to nie zadziałałoby to.
public event_round_start() { set_task(1.0, "countdown") new gracze[33], num=-1; for(new id=1; id<=gMaxPlayers; ++id){ if(is_user_alive(id)){ gracze[++num]=id; } } if(++num){ winner=gracze[random(num)]; new losowe_ap = random_num(1, 10) zp_set_user_ammo_packs(winner, zp_get_user_ammo_packs(winner)+losowe_ap) new forum[33], name_winner[33]; get_pcvar_string(NazwaCvara,forum, 31); get_user_name(winner, name_winner, 32); ColorChat(0, GREEN, "[%s] %s^x01 wygral^x04 %i^x01 AP w losowaniu!", forum, name_winner, losowe_ap) } else winner=0; }
Master Yoga
01.01.2017
Czy ty zarejestrowałeś event w taki sposób :
register_logevent("Poczatek_Rundy", 2, "1=Round_Start")
=>
public event_round_start() != public Poczatek_Rundy()
??????????
Robiin
01.01.2017
Czy ty zarejestrowałeś event w taki sposób :
register_logevent("Poczatek_Rundy", 2, "1=Round_Start")=>
public event_round_start() != public Poczatek_Rundy()??????????
Nie, a dlaczego?
Master Yoga
01.01.2017
Nie, a dlaczego?
Cześć,
kodzik taki jak poniżej nie działa
Przy ilu graczach to sprawdzałeś ? 1 ?
Best Answer
Ogen Dogen
02.01.2017
Na szybko pisane, nietestowane:
public random_player() { if (get_playersnum() == 0) return -1; new Array:arr = ArrayCreate(1,32); for (new i=0; i<32; i++) { if (is_user_connected(i)) ArrayPushCell(arr, i); } new choosen = random_num(0, ArraySize(arr)); new choosen_id = ArrayGetCell(arr, choosen); ArrayClear(arr); return choosen_id; }
Robiin
02.01.2017
public random_player() { if (get_playersnum() == 0) return -1; new Array:arr = ArrayCreate(1,32); for (new i=0; i<32; i++) { if (is_user_connected(i)) ArrayPushCell(arr, i); } new choosen = random_num(0, ArraySize(arr)); new choosen_id = ArrayGetCell(arr, choosen); ArrayClear(arr); return choosen_id; }
Na serwerze nie ma 32 slotów, więc
g_maxplayers = get_maxplayers()
w plugin_init się przyda.
_McHappy
02.01.2017
ArraySize(arr) - 1
w
new choosen = random_num(0, ArraySize(arr));
?
Edited by _McHappy, 02.01.2017 13:21.
Master Yoga
02.01.2017
Nie powinno być
ArraySize(arr) - 1
w
new choosen = random_num(0, ArraySize(arr));
?
No oczywiście, że powinno być Size - 1.