menu_setprop( menu, prop, ...) 
 
Menünün özelliklerini ayarlar. 
 
properties:
 
MPROP_PERPAGE = Bir Sayfadaki Maksimum İtem Sayısı [default = 7] [ parametre türü = sayı ]
MPROP_BACKNAME = Geri tuşunun, görünecek olan ismi [ parametre türü = string ]
MPROP_NEXTNAME = İleri tuşunun, görünecek olan ismi [ parametre türü = string ]
MPROP_EXITNAME = Çıkış tuşunun, görünecek olan ismi [ parametre türü = string ]
 
Bu üçü zaten standart olarak İleri, Geri, Çıkış şeklinde ayarlıdır. Aynısını yazdığın sürece bunlara dokunmaya gerek yok.
 
MPROP_TITLE = Gereksiz. Menünün başlığını ayarlıyor. Halbuki menu_create ile başlığı ayarlayabiliyoruz.
 
MPROP_EXIT = Çıkış tuşunun fonksiyonunu ayarlar. İki farklı ayarı var:
 
MEXIT_ALL = Çıkış tuşu menüyü kapatır.
MEXIT_NEVER = Çıkış tuşu menüyü kapatmaz.
 
 
---------
Fonksiyon parametreleri;
menu_additem ( menu, item_adı[], info[], access = 0)
 
Örneğin;
menu_additem( menu, "AK47 Satin Al", "2")
 
Buradaki "2" yazısını, menu_handler da bu fonksiyon ile buluyoruz;
 
menu_item_getinfo ( menu , item , access , info[], infolen, name[], namelen, &callback)
 
Buradaki item, klavyeden basılan tuş. 
access = item için gerekn yetki
info[] = menu_additem deki 3. parametre. Bu item ile ilgili oraya yazdığımız bilgiyi depoluyor. Biz "2" yazmıştık, bilgi olarak.
infolen = veriyi kaydettiğimiz değişkenin uzunluğu.
name[] = iteme girdiğimiz isim.
namelen = girilen ismi depolayan değişkenin uzunluğu
&callback = çok karışık bir olaydır. Neredeyse hiç işimize yaramıyor. Yetkisi olmayan kişilerin, menüdeki ilgili itemleri soluk renkte görmesini sağlayan bir özellik.
 
Bu fonksiyonu kullanarak item için girdiğimiz infoyu yani bilgiyi ( "2" idi), data[6] dizisinde depoladık.
Daha sonra bu bilgiyi switch de kullanmak için sayıya çevirdik
 
str_to_num [string to number] 
 
Olay bundan ibaret. Eğer sayıya çevirmeseydik, birden çok haneli sayılarda sıkıntı yaşardık.
 
-----
Oyuncunun elindeki silahı attırmak istiyorsan;
client_cmd(index, "drop") 
------
Ve hatan şu; menu_item_getinfo kullanmamışsın. Yani ordaki data[6] değişkeni boş. Onu doldurman gerekiyordu.
 
 
Ek olarak data olayını kavraman ve stringleri formatlamayı anlaman için şöyle bir şey yaptım
  PHP- Kodu:
  #include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say /buy","buymenu")
    register_clcmd("say_team /buy","buymenu")
    
}
public buymenu (id) {
    new menu = menu_create("Buy Menu","menu_handler")
    
    menu_additem(menu,"AWP","awp",0);
    menu_additem(menu,"DEAGLE","deagle",0);
    menu_additem(menu,"M4A1","m4a1",0);
    menu_additem(menu,"AK47","ak47",0);
    
    menu_setprop(menu,MPROP_EXIT,MEXIT_ALL);
    menu_display(id, menu, 0);
    return PLUGIN_CONTINUE
}
public menu_handler(id,menu,item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu)
    }
    
    new data[10],name[32];
    new access,callback;
    menu_item_getinfo(menu,item,access,data,9,name,31,callback)
    
    new item_name[32];
    formatex(item_name,31,"weapon_%s",data)
    give_item(id,item_name)
    cs_set_user_bpammo(id,get_weaponid(item_name),90)
    
    menu_destroy(menu)
} 
  
  Burda switch kullanmadım örneğin. Tabi sen her silah için bir sürü farklı koşul koymuşsun. Böyle durumlarda bunu kullanamazsın. Sadece ek bilgi olarak verdim.
Senin menu_item_getinfo dışında hatan yok. Onu da burdan öğrenebilirsin.