23-05-13, 17:34
(This post was last modified: 23-05-13, 17:49 by akcaliberkk.)
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
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.
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 Code:
#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.
CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz: destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/


![[Image: amxxlarge.jpg]](https://www.amxmodx.org/images/amxxlarge.jpg)