Lekko przerobiłem twoją pętelkę:
public Gracz(id)
{
new menu = menu_create("Wybierz gracza:", "Gracz_handler")
new Players[32], playerCount, team, id2, team2, nick[32], strid[2]
team = get_user_team(id) //Zapisuję team gracza
get_players(Players, playerCount, "h") // Pobieram pełną listę graczy na serwerze (omijam hltv)
for(new i=0; i<playerCount; i++)
{
id2 = Players[i] // Pobieram id gracza z tablicy
if(!is_user_connected(id2)) continue // Nie stety zawsze trzeba sprawdzić czy gracz jest podłączony do serera
team2 = get_user_team(id2) // Zapisuję team gracza
if(team2 == team || !team || team == 3) continue; // Sprawdzam czy gracz jest w twojej dróżynie lub czy jest nie przydzielony do dróżyny albo czy jest na specu (jeśli tak to go omijam)
get_user_name(id2, nick, 31)
num_to_str(id2,strid,1) // Zamieniam id na ciąg znaków
menu_additem(menu, nick, strid) // Dodaje info do itemu (info to id)
}
menu_display(id, menu)
}
Zakładam że zmienna globalna "gracz_id" jest po to aby w funkcji "Gracz_handler" można było wiedzieć którego gracza wybrano. Ja ci przedstawiam troszkę lepszą metodę za pomocą info w przycisku tzn."strid".
Teraz w funkcji wychwytującej naciśnięcie przycisku robisz mniej więcej tak:
public Gracz_handler(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_CONTINUE
}
new access, callback, strid[2],id2 // Marnowanie miejsca
menu_item_getinfo(menu, item, access, data, 1, _, _, callback) //Pobieramy dane przycisku
new id2 = str_to_num(strid) // id2 to id gracza którego nick został przydzielony do przyciśniętego przycisku :D
// Dalszy kod twojej funkcji
}
Chcesz napisać do mnie na
PW to:
Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!
Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują