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.