hlmod.hu
https://hlmod.hu/

Fegyver skin menü.
https://hlmod.hu/viewtopic.php?f=29&t=30542
Oldal: 2 / 2

Szerző:  FonoK [ 2020.08.07. 19:11 ]
Hozzászólás témája:  Re: Fegyver skin menü.

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.



  1. #include <amxmodx>
  2. #include <colorchat>
  3. #include <fakemeta>
  4.  
  5. new const PLUGIN[] = "Admin fegyverskin";
  6. new const VERSION[] = "1.0";
  7. new const AUTHOR[] = "author"; //NE ÍRD A NEVEM, KÖSZI
  8.  
  9.  
  10. #define ACCESS_FLAG ADMIN_LEVEL_C
  11.  
  12. enum _:Adatok { Nevei[64], Model[64]};
  13.  
  14. new const ak_list[][Adatok] =
  15. {
  16. {"AK47 | Assiimov", "models/ak1/ak1.mdl"},
  17. {"AK47 | Transparent", "models/uzimac2/uzimac2.mdl"},
  18. {"AK47 | Cafrev", "models/ak3/ak3.mdl"},
  19. {"AK47 | Redline", "models/ak4/ak4.mdl"},
  20. {"AK47 | Furios", "models/ak5/ak5.mdl"},
  21. {"AK47 | Wasteland", "models/ak6/ak6.mdl"},
  22. {"AK47 | \rThe Empress", "models/ak7/ak7.mdl"},
  23. {"AK47 | Astronaut", "models/ak8/ak1..mdl"},
  24. {"AK47 | Nightmare", "models/ak9/ak9.mdl"},
  25. {"AK47 | Red Galaxy", "models/ak10/ak10.mdl"},
  26. {"AK47 | BLUE", "models/ak11/ak11.mdl"},
  27. {"AK47 | VIP", "models/ak12/ak12.mdl"},  
  28. {"AK47 | Crystal", "models/ak13/ak13.mdl"}
  29. };
  30. public plugin_init()
  31. {
  32.     register_plugin(PLUGIN, VERSION, AUTHOR)
  33.  
  34.     register_clcmd( "say /adminskin", "adminskin" );
  35.    
  36.     //Fegyverváltás
  37.     register_event("CurWeapon", "FegyverValtas", "be", "1=1");
  38. }
  39.  
  40. public adminskin(id)
  41. {
  42.  
  43. if(get_user_flags(id) & ACCESS_FLAG)
  44. {
  45. ak47_menu(id);
  46. }
  47. else ColorChat(id, GREEN, "Információ - Ezt a menüt csak az Admin használhatja!");
  48. }
  49.  
  50. public plugin_precache()
  51. {
  52.  
  53. for(new i;i < sizeof(ak_list); i++) precache_model(ak_list[i][Model]);
  54.  
  55. }
  56. enum _:WPNS
  57. {
  58.     v_AK47
  59. };
  60.  
  61. new const kivalasztott[33][WPNS];
  62.  
  63. public FegyverValtas(id)
  64. {
  65. new fgy = get_user_weapon(id);
  66.  
  67.  
  68. for(new i;i < sizeof(ak_list); i++)
  69. if( kivalasztott[id][v_AK47] == i && is_user_alive(id) &&  fgy  == CSW_AK47) set_pev(id, pev_viewmodel2, ak_list[i][Model]);
  70. }
  71. public ak47_menu(id)
  72. {
  73.  
  74.     new String[121];
  75.    
  76.     new cim[512];
  77.         format(cim, charsmax(cim), "Szerver Név~ \wAK47 Skinek");
  78.         new menu = menu_create(cim, "ak47_handler" );
  79.        
  80.     for(new i;i < sizeof(ak_list); i++)
  81.     {
  82.     new a[6]; num_to_str(i, a, 5);
  83.     formatex(String, charsmax(String), "\w%s", ak_list[i][Nevei]);
  84.     menu_additem(menu, String, a);
  85.    
  86.     }
  87.    
  88.     menu_setprop(menu, MPROP_BACKNAME, "Vissza");
  89.     menu_setprop(menu, MPROP_NEXTNAME, "Tovább");
  90.     menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  91.    
  92.         menu_display(id, menu, 0);
  93. }
  94. public ak47_handler(id, menu, item)
  95. {
  96.         if( item == MENU_EXIT )
  97.         {
  98.         menu_destroy(menu);
  99.         return PLUGIN_HANDLED;
  100.         }
  101.         new data[9], szName[64];
  102.         new access, callback;
  103.         menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  104.         new key = str_to_num(data);
  105.    
  106.         kivalasztott[id][v_AK47] = key;
  107.  
  108.         menu_destroy(menu);
  109.         return PLUGIN_HANDLED;
  110. }





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

Oldal: 2 / 2 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/