Offline |
|
|
Csatlakozott: 2015.12.27. 11:34 Hozzászólások: 295
Megköszönt másnak: 944 alkalommal Megköszönték neki: 16 alkalommal
|
ultraibolya írta: Fonok:
A case legelső szàma csak akkor lesz 0,ha megadod. Megadhatsz ‘a’-t is a helyére,vagy 1-et. Ha nincs indexelve akkor viszont igen,mindig 0 lesz. Nem kell túlbonyolítani a handlert,menu_item_getinfo egyáltalán nem kell. Itemben tárolja a “lenyomott gombot”. Ergó:
public m_handler(id,menu,item)
ak[id]=item+1 (mert nálad 0 a legelső és 1 kell hogy legyen) Megspórolsz egy switchet és a végtelen case-t,sőt még a bővítésnél sem kell akkor foglalkozni a casekkel
Illetve még annyit,hogy nem kell 2x a MENU_EXIT. Amúgy korrekt,csak a fele ebben az esetben felesleges. Nem oktatásnak szántam,hanem inkább egy tippnek. (Kevesebb változó) Köszönöm, gyorsan csináltam. Máskor jobban oda figyelek. Itt van egy másik, kicsivel másképp össze rakva. De ezt sem fogja megérteni, azért csináltam az előzőt. Azzal hátha jobban megfogja érteni. #include <amxmodx> #include <colorchat> #include <fakemeta> new const PLUGIN[] = "Admin fegyverskin"; new const VERSION[] = "1.0"; new const AUTHOR[] = "author"; //NE ÍRD A NEVEM, KÖSZI #define ACCESS_FLAG ADMIN_LEVEL_C enum _:Adatok { Nevei[64], Model[64]}; new const ak_list[][Adatok] = { {"AK47 | Assiimov", "models/ak1/ak1.mdl"}, {"AK47 | Transparent", "models/uzimac2/uzimac2.mdl"}, {"AK47 | Cafrev", "models/ak3/ak3.mdl"}, {"AK47 | Redline", "models/ak4/ak4.mdl"}, {"AK47 | Furios", "models/ak5/ak5.mdl"}, {"AK47 | Wasteland", "models/ak6/ak6.mdl"}, {"AK47 | \rThe Empress", "models/ak7/ak7.mdl"}, {"AK47 | Astronaut", "models/ak8/ak1..mdl"}, {"AK47 | Nightmare", "models/ak9/ak9.mdl"}, {"AK47 | Red Galaxy", "models/ak10/ak10.mdl"}, {"AK47 | BLUE", "models/ak11/ak11.mdl"}, {"AK47 | VIP", "models/ak12/ak12.mdl"}, {"AK47 | Crystal", "models/ak13/ak13.mdl"} }; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd( "say /adminskin", "adminskin" ); //Fegyverváltás register_event("CurWeapon", "FegyverValtas", "be", "1=1"); } public adminskin(id) { if(get_user_flags(id) & ACCESS_FLAG) { ak47_menu(id); } else ColorChat(id, GREEN, "Információ - Ezt a menüt csak az Admin használhatja!"); } public plugin_precache() { for(new i;i < sizeof(ak_list); i++) precache_model(ak_list[i][Model]); } enum _:WPNS { v_AK47 }; new const kivalasztott[33][WPNS]; public FegyverValtas(id) { new fgy = get_user_weapon(id); for(new i;i < sizeof(ak_list); i++) if( kivalasztott[id][v_AK47] == i && is_user_alive(id) && fgy == CSW_AK47) set_pev(id, pev_viewmodel2, ak_list[i][Model]); } public ak47_menu(id) { new String[121]; new cim[512]; format(cim, charsmax(cim), "Szerver Név~ \wAK47 Skinek"); new menu = menu_create(cim, "ak47_handler" ); for(new i;i < sizeof(ak_list); i++) { new a[6]; num_to_str(i, a, 5); formatex(String, charsmax(String), "\w%s", ak_list[i][Nevei]); menu_additem(menu, String, a); } menu_setprop(menu, MPROP_BACKNAME, "Vissza"); menu_setprop(menu, MPROP_NEXTNAME, "Tovább"); menu_setprop(menu, MPROP_EXITNAME, "Kilépés"); menu_display(id, menu, 0); } public ak47_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[9], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); kivalasztott[id][v_AK47] = key; menu_destroy(menu); return PLUGIN_HANDLED; }
Illetve, ha jól emlékszem. Ilyennel is talákoztam: register_clcmd( "say /adminskin", "ak47_menu", ADMIN_LEVEL_C); Akkor már még kevesebb sorral van kész. De így még sosem probáltam. Lehet így rossz
|
|