Page 1 of 1
Player list
Posted: 2011 Sep 08 17:36
by morka
Kaip atvaizduot serveryje esanciu zaideju sarasa menu formoje?
main menu
1. player
2. zero
3. jack
.....
Paspaudi 2 ir permeta varda i kintamaji.
Re: Player list
Posted: 2011 Sep 08 18:17
by hleV
Code: Select all
// new iMenu = menu_create("Pavadinimas", "OnMenu"); new iPlayers[32], iCount; get_players(iPlayers, iCount); // Galima flag'u dadet del HLTV, botu for (new i, szName[32]; i < iCount; i++) { get_user_name(iPlayers[i], szName, charsmax(szName)); menu_additem(iMenu, szName); }// public OnMenu(iClient, iMenu, iItem){ if (iItem == MENU_EXIT) { menu_destroy(iMenu); return; } new iAccess, szName[32], iCallback; menu_item_getinfo(iMenu, iItem, iAccess, szName, 0, szName, charsmax(szName), iCallback); // szName[] dabar turi pasirinkto zaidejo varda. Galima gauti ID su get_user_index(szName) menu_destroy(iMenu);}
Re: Player list
Posted: 2011 Sep 08 21:25
by morka
Padariau taip ir nelabai veikia, prisijungia 2 zaidejai paspaudi ir nieko nevyksta. Su 1 zaideju viskas veikia.
Code: Select all
public player_list_menu(id){ new item[99] formatex(item, charsmax(item), "%L", LANG_PLAYER, "TITLE_PLAYER_LIST"); new iMenu = menu_create(item, "player_list_menu_handler") new iPlayers[32], iCount; get_players(iPlayers, iCount); // Galima flag'u dadet del HLTV, botu for (new i, szName[32]; i < iCount; i++) { get_user_name(iPlayers[i], szName, charsmax(szName)); menu_additem(iMenu, szName); menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL) menu_display(id, iMenu, 0) }} public player_list_menu_handler(id, iMenu, item){ if (item == MENU_EXIT) { menu_destroy(iMenu); return; } new iAccess, szName[32], iCallback; menu_item_getinfo(iMenu, item, iAccess, szName, 0, szName, charsmax(szName), iCallback); copy(gName[id], charsmax(gName), szName); transfer_menu(id) menu_destroy(iMenu);}
Re: Player list
Posted: 2011 Sep 09 12:21
by hleV
Tuos menu_setprop() ir menu_display() dek už for() ciklo, o ne jame.
Re: Player list
Posted: 2011 Sep 09 14:13
by newb
Galima dar taip padaryt
Code: Select all
#include <amxmodx> new Players[32] public plugin_init() { register_clcmd("say a", "Create_Menu")} public Create_Menu(id) { new num, Menu = menu_create("\rPlayers:", "MainMenu_Handler") get_players(Players, num) for (new i, Name[33]; i < num; i++) { get_user_name(Players[i], Name, charsmax(Name)) menu_additem(Menu, Name) } menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, Menu) } public MainMenu_Handler(id, Menu, item) { if (item == MENU_EXIT) { menu_destroy(Menu) return } new Name[33]; get_user_name(Players[item], Name, charsmax(Name)) client_print(id, 3, "name %s", Name) menu_destroy(Menu)}
Nors nezinau ar tai optimaliau ^_^
Re: Player list
Posted: 2011 Sep 16 12:28
by hleV
Man visai patinka newb'o variantas. Vienmačio masyvo pagalba nereikia naudot nei menu_item_getinfo(), nei get_user_index(), nei num_to_str(). Manojo varianto pliusas, kad jei žaidėjas atsijungė (arba pasikeitė vardą :|), get_user_index() jo neras. Išsaugant žaidėjo ID, žaidėją rastų, bet nebūtų aišku ar tai tas pats žaidėjas (gal senas atsijungė ir prisijungė naujas, gavęs tą patį ID).