W związku z przestarzałym tematem i kodem, który ciągle widzę, że się pojawia:
Spoiler
new players[32], pnum, tempid; new szName[32], szTempid[10]; get_players(players, pnum); for(new i; i<pnum; i++) { tempid = players[i]; if(!is_user_connected(tempid)) continue; get_user_name(tempid, szName, charsmax(szName)); num_to_str(tempid, szTempid, charsmax(szTempid)); menu_additem(menu, szName, szTempid); }
Dodaję na szybko wam snippet, który wygląda ładniej i generalnie nie używa starych metod:
Przekazywanie indeksu gracza AMXX 1.8.3 i niżej:
Spoiler
public myMenu(index) { new menuIndex = menu_create("Menu:", "myMenu_handler"), userName[33], userIndex[3]; for(new i = 1; i <= 32; i++) { if(!is_user_connected(i)) { continue; } get_user_name(i, userName, charsmax(userName)); formatex(userIndex, charsmax(userIndex), "%i", i); menu_additem(menuIndex, userName, userIndex); } menu_display(index, menuIndex); return PLUGIN_HANDLED; } public myMenu_handler(index, menuIndex, item) { if(item == MENU_EXIT) { menu_destroy(menuIndex); return PLUGIN_HANDLED; } new menuData[2], blank, target; menu_item_getinfo(menuIndex, item, blank, menuData, charsmax(menuData), _, _, blank); menu_destroy(menuIndex); target = str_to_num(menuData); if(!is_user_connected(target)) { return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
Przekazywanie indeksu gracza AMXX 1.9 i wyżej:
Spoiler
public myMenu(index) { new menuIndex = menu_create("Menu:", "myMenu_handler"); for(new i = 1; i <= 32; i++) { if(!is_user_connected(i)) { continue; } menu_additem(menuIndex, fmt("%n", i), fmt("%i", i)); } menu_display(index, menuIndex); return PLUGIN_HANDLED; } public myMenu_handler(index, menuIndex, item) { if(item == MENU_EXIT) { menu_destroy(menuIndex); return PLUGIN_HANDLED; } new menuData[2], target; menu_item_getinfo(menuIndex, item, _, menuData, charsmax(menuData)); menu_destroy(menuIndex); target = str_to_num(menuData); if(!is_user_connected(target)) { return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
Opcja jeszcze krótsza:
Spoiler
public myMenu(index) { new menuIndex = menu_create("Menu:", "myMenu_handler"), i[1]; for(i[0] = 1; i[0] <= 32; i[0]++) { if(!is_user_connected(i[0])) { continue; } menu_additem(menuIndex, fmt("%n", i), i[0]); } menu_display(index, menuIndex); return PLUGIN_HANDLED; } public myMenu_handler(index, menuIndex, item) { if(item == MENU_EXIT) { menu_destroy(menuIndex); return PLUGIN_HANDLED; } new menuData[1], target; menu_item_getinfo(menuIndex, item, _, menuData, charsmax(menuData)); menu_destroy(menuIndex); target = menuData[0]; if(!is_user_connected(target)) { return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
Przekazywanie wielu wartości w menu:
Spoiler
public myMenu(index) { new menuIndex = menu_create("Menu:", "myMenu_handler"), menuData[4]; for(new i = 1; i <= 32; i++) { if(!is_user_connected(i)) { continue; } menuData[0] = i; menuData[1] = cs_get_user_money(i); menuData[2] = index; menu_additem(menuIndex, fmt("%n", i), menuData); } menu_display(index, menuIndex); return PLUGIN_HANDLED; } public myMenu_handler(index, menuIndex, item) { if(item == MENU_EXIT) { menu_destroy(menuIndex); return PLUGIN_HANDLED; } new menuData[6], target; menu_item_getinfo(menuIndex, item, _, menuData, charsmax(menuData)); menu_destroy(menuIndex); target = menuData[0]; value = menuData[1]; otherIndex = menuData[2]; if(!is_user_connected(target)) { return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
Przekazywanie dwóch stringów:
Spoiler
public myMenu(index) { new menuIndex = menu_create("Menu:", "myMenu_handler"), menuData[64]; for(new i = 1; i <= 32; i++) { if(!is_user_connected(i)) { continue; } get_user_name(i, userName, charsmax(userName)); formatex(menuData, charsmax(menuData), "%s#%s", userName, "abcd"); // "aSior abcd" menu_additem(menuIndex, fmt("%n", i), menuData); } menu_display(index, menuIndex); return PLUGIN_HANDLED; } public myMenu_handler(index, menuIndex, item) { if(item == MENU_EXIT) { menu_destroy(menuIndex); return PLUGIN_HANDLED; } new menuData[64], userName[33], additionalText[33]; menu_item_getinfo(menuIndex, item, _, menuData, charsmax(menuData)); menu_destroy(menuIndex); split(menuData, userName, charsmax(userName), additionalText, charsmax(additionalText), "#"); ColorChat(index, NORMAL, "Wybrales %s %s", userName, additionalText); // "Wybrales aSior abcd" return PLUGIN_HANDLED; }
Użytkownik aSiorr edytował ten post 09.08.2019 11:28