Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
AmxModX Ayrıntılı Menü Dersi
#1
Bu derste amxmodx programlamanın en son çıkmış menü sistemine ait tüm özellikleri öğrenebilirsiniz.


Tüm Menü Fonksiyonları, [ newmenus.inc ]



menu_create(const title[], const handler[], ml=0)

Açıklama:
Bu fonksiyon menü yaratmak için kullanılır.

1. Parametre:
Menünün başlığı

Türü "string"
Buraya yazdığınız başlık, menü açıldığında, menünün en üstünde görünür.

2. Parametre: Menünün işletici fonksiyonu

Türü "string"
Menüler genel olarak 3 fonksiyondan oluşur.

A. Menünün Oluşturulduğu Kısım (menu_create fonksiyonunu kullandığımız kısım)
B. Menüyü İşlettiğimiz Kısım ( Menüde bir tuşa basıldığı zaman çalışacak olan fonksiyon)
C. Menünün geriçağrımı (callback) ( Bu kısım zorunlu değil ancak gelişmiş menülerde kullanılıyor ve bu derste de anlatılacak)

İkinci parametreye B kısmı fonksiyonu yazıyoruz.

3. Parametre: Bir işe yaramıyormuş. Biz sadece ilk iki parametreyi yazıcaz, üçüncü bir parametre girmenize gerek yok.

Return: Bu fonksiyon yaratılan menünün indexine döner.

Yani, bir değişken yaratıp bu fonksiyonu değişkene atarsak, bu değişken menümüzün indexi olacak. Ve bu menü indexi, diğer menü fonksiyonlarında menüyü ayarlamak için kullanılacak. Bu indexi diğer fonksiyonlarda menu olarak göstereceğiz.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_additem(menu, const name[], const info[]="", paccess=0, callback=-1)

Açıklama:
Bu fonksiyon yaratılmış bir menüye seçenek eklemek için kullanılır.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Seçeneğin ismi

Türü "string"
Buraya girdiğiniz isim, menüde başlığın altında eklenme sırasına göre liste şeklinde görünür.

3. Parametre: Seçenekle ilgili ekstra bilgi

Türü "string"
Buraya herhangi bir şey yazabiliriz. Buraya yazılan bilgi menüde görünmez. Bilgiyi yazarken seçenek sırasına göre numaralar yazarsak, işletici fonksiyonda, seçilen seçeneği kolayca ayırt edebiliriz. Örneklerde daha iyi anlaşılacaktır.

4. Parametre: Seçeneğe erişim yetkisi

Türü "integer"
Seçeneğe sadece belirli yetkideki kullanıcıların erişebilmesini istiyorsanız bu parametreye ilgili yetkiyi yazarsınız. Örneğin ADMIN_BAN yazarsanız sadece "d" yetkisine sahip kişiler bu seçeneğe basabilir. Herkesin kullanabilmesi için 0 yazın.

5. Parametre: Geriçağrım fonksiyonunun indexi.

Türü "integer"
Seçeneğe bağlamak istediğiniz geriçağrım fonksiyonunu buraya girin. Geriçağrımı anlattığım zaman daha iyi anlaşılacaktır.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_setprop(menu, prop, ...)

Açıklama:
Bu fonksiyon yaratılmış bir menünün özelliklerini değiştirir.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Değiştirilecek özellik

Türü "integer"
Buraya girdiğiniz özelliği, üçüncü parametrede değiştirirsiniz.

MPROP_PERPAGE: Bir sayfadaki maksimum seçenek sayısı (standart = 7) (parametre türü = integer)
MPROP_BACKNAME: Menünün "Geri" tuşunun ismi. ( standart = Geri veya Back )
(parametre türü = string )
MPROP_NEXTNAME:
Menünün "İleri" tuşunun ismi. ( standart = Ileri veya Next ) (parametre türü = string )
MPROP_EXITNAME:
Menünün "Çıkış" tuşunun ismi. ( standart = Cikis veya Exit) ( parametre türü = string )
MPROP_TITLE: Menünün başlığı ( Gereksiz, zaten menu_create fonksiyonu başlığı ayarlıyor )
( parametre türü = string )
MPROP_EXIT: Çıkış tuşunun işlevi ( standart = MEXIT_ALL ) ( parametre türü = integer )

MPROP_EXIT parametreleri:

MEXIT_ALL: Menüyü kapatır
MEXIT_NEVER: Menüyü kapatma tuşunu kaldırır. Menü kapanmaz.

3. Parametre: Değiştirilecek özelliğin yeni değeri

Türü "integer/string"
2. Parametrede belirtilen özelliğin yeni değerini buraya gireriz.

Return: Bu fonksiyon, işlem başarılı olursa 1'e, başarısız olursa 0'a döner.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_display(id, menu,
page=0)

Açıklama:
Bu fonksiyon yaratılmış bir menüyü, belirtilen oyuncuya görüntüler.

1. Parametre:
Oyuncu indexi

Türü "integer"

2. Parametre: Menü indexi

Türü "integer"

3. Parametre: Gösterilecek sayfa

Türü "integer"
0 = İlk Sayfa
1 = 2. Sayfa
...

Boş bırakılırsa page=0 olduğundan otomatik 0 olarak kabul eder.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_destroy(menu)

Açıklama:
Bu fonksiyon yaratılmış bir menüyü yok eder.

1. Parametre:
Menünün indexi

Türü "integer"

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_item_getinfo(
menu, item, &access, info[], infolen, name[]="", namelen=0, &callback)

Açıklama:
Bu fonksiyon belirtilen seçeneğin indexinden seçeneğe ait bilgileri toplamayı sağlar.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: .Seçeneğin indexi

Türü "integer"
Program buraya girdiğiniz indexi kullanarak ilgili seçeneğin bilgilerini toplar.

3. Parametre: Seçeneğin erişim yetkisi

Türü "integer"
Erişim yetkisi, buraya yazdığınız değişkende depolanır.

4. Parametre: Seçeneğin ekstra bilgileri

Türü "string"
Seçeneğe ait ekstra bilgi, buraya yazdığınız değişkende depolanır.

5. Parametre: 4. Parametredeki değişkenin uzunluğu

Türü "integer"
Örneğin: szData[6] ise buraya 5 yazılır. Veya charsmax(szData) yazabilirsiniz.

6. Parametre: Seçeneğin ismi

Türü "string"
Seçeneğin ismi, buraya yazdığınız değişkende depolanır.

7. Parametre: 6. Parametredeki değişkenin uzunluğu

Türü "integer"

8. Parametre: Seçeneğin geriçağrım fonksiyonu

Türü "integer"
Seçeneğin geriçağrım fonksiyonunun indexi, buraya yazılan değişkende depolanır.

Return: Bu fonksiyon, işlem başarılı olursa 1'e, başarısız olursa 0'a döner.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_pages(
menu)

Açıklama:
Bu fonksiyon belirtilen menünün kaç sayfadan oluştuğunu verir.

1. Parametre:
Menünün indexi

Türü "integer"

Return: Bu fonksiyonun değeri, menünün toplam sayfa sayısına döner.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_items(
menu)

Açıklama:
Bu fonksiyon belirtilen menünün kaç adet seçenekten oluştuğunu verir.

1. Parametre:
Menünün indexi

Türü "integer"

Return: Bu fonksiyonun değeri, menünün toplam seçenek sayısına döner.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_find_id(
menu, page, key)

Açıklama:
Bu fonksiyon belirtilen sayfada, belirtilen tuştaki seçeneğin indexini verir.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Sayfa numarası

Türü "integer"

3. Parametre: Tuş

Türü "integer"

Return: Belirtilen adresteki seçeneğin indexine döner.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_item_setname(
menu, item, const name[])

Açıklama:
Bu fonksiyon belirtilen seçeneğin görünen ismini değiştirir.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: .Seçeneğin indexi

Türü "integer"

3. Parametre: Seçeneğin yeni ismi

Türü "string"

Return: Bu fonksiyon, işlem başarılı olursa 1'e, başarısız olursa 0'a döner.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_item_setcmd(
menu, item, const info[])

Açıklama:
Bu fonksiyon belirtilen seçeneğin ekstra bilgi değerini değiştirir.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: .Seçeneğin indexi

Türü "integer"

3. Parametre: Seçeneğin yeni bilgisi

Türü "string"

Return: Bu fonksiyon, işlem başarılı olursa 1'e, başarısız olursa 0'a döner.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_addblank(
menu, slot=1)

Açıklama:
Bu fonksiyon belirtilen menüde iki seçenek arasına bir satır boşluk bırakmaya yarar.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Boşluk bırakma metodu

Türü "integer"
1 = Boşluk bırakır ve seçenekleri numaralandırırken 1 numara kaydırarak numaralandırır. Örneğin:

5. Seçenek 5
// BOŞLUK
7. Seçenek 6

0 = Boşluk bırakır ve seçenekleri numaralandırırken, numara sırasını bozmaz. Örneğin:

5. Seçenek 5
// BOŞLUK
6. Seçenek 6

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_addtext(
menu, const text[], slot=1)

Açıklama:
Bu fonksiyon belirtilen menüde numarasız bir yazı ekler. Seçeneklerden bağımsızdır. Seçilemez.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Görünecek yazı

Türü "string"

3. Parametre: Yazı yazdırma metodu
1 = Yazı ekler ve seçenekleri numaralandırırken 1 numara kaydırarak numaralandırır. Örneğin:

5. Seçenek 5
Örnek Yazı
7. Seçenek 6

0 = Yazı ekler ve seçenekleri numaralandırırken, numara sırasını bozmaz. Örneğin:

5. Seçenek 5
Örnek Yazı
6. Seçenek 6

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_cancel(
player)

Açıklama:
Bu fonksiyon belirtilen oyuncuya zorla MENU_EXIT seçtirir. Menü görüntülenmeye devam eder ancak seçim yaptığında işlemez.

1. Parametre:
Oyuncu indexi

Türü "integer"

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_makecallback(
const function[])

Açıklama:
Bu fonksiyon bir menü geriçağrım işleticisi yaratır.

1. Parametre:
Fonksiyon ismi

Türü "string"

Return: Bu fonksiyon, yaratılan geriçağrım fonksiyonunun indexine döner.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu_item_setcall(
menu, item, callback = -1)

Açıklama:
Bu fonksiyon belirtilen seçeneğin geriçağrım işleticisini ayarlar.

1. Parametre:
Menünün indexi

Türü "integer"

2. Parametre: Seçeneğin indexi

Türü "integer"

3. Parametre: Geriçağrım fonksiyonunun bağlı olduğu değişken

Türü "integer"

Return: Bu fonksiyon, işlem başarılı olursa 1'e, başarısız olursa 0'a döner.
Örnekler:

Menüler local (yerel) ve global (küresel) olmak üzere ikiye ayrılır. Local menüler; tek kullanımlık, sadece kullanılacağı an yaratılan ve hemen kullanılıp yok edilen menülerdir. Global menüler ise plugin_init veya plugin_cfg forwardında bir defa olmak üzere yaratılır, tekrar tekrar yaratılmadan defalarca kez kullanılabilir.

Örnekleri sırayla okumanız önerilir. Bir örnekte anlatılan, sonraki örneklerde anlatılmayacaktır.

Local Menüler

Basit Menü


PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>

public plugin_init() {
    
// Menümüzün açılması için konsola komut kaydettik.
    
register_clcmd("MenuAc","MenuFunc")
    
// Bu gerekli değil ancak yaratılmış bir menü nasıl açılır örnek olması açısından ekledim.
}
// A kısmı olarak anlattığımız, menünün oluşturulma fonksiyonunu yaratıyoruz.
public MenuFunc(id) {
    
    
// Menümüzü yaratmak için menu_create kullanıyoruz.
    // En başta belirttiğimiz gibi, menu_create fonksiyonu, yaratılan menünün indexine döner demiştik.
    // Öyleyse bu indexi, diğer fonksiyonlarda kullanabilmek için menu olarak yarattığımız değişkende depoluyoruz.
    // Not: Fonksiyonların parametrelerini ayrı ayrı açıklamayacağım. Yukarıda tüm fonksiyonları anlattım zaten.
    
new menu menu_create("\r Silah Menusu","MenuHandler")
    
    
// Menümüzü yarattık. Şimdi seçeneklerimizi eklemeliyiz.
    
menu_additem(menu,"AK47",  "",ADMIN_BAN)
    
menu_additem(menu,"M4A1",  "",ADMIN_BAN)
    
menu_additem(menu,"DEAGLE","",ADMIN_BAN)
    
    
// Seçenekler de eklendi. Şimdi sıra menünün özelliklerini ayarlamakta;
    // Exit tuşuna basıldığında menümüzün kapanmasını istiyoruz. Bu durumda özelliği bu şekilde ayarlıyoruz.
    
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
    
// Not: Bu ayar default olarak zaten MEXIT_ALL dır. Bu yüzden bunu tekrar yazmak gereksiz. Sadece örnek olması açısından ekledim.
    
    // Menümüzün her şeyini ayarladık. Şimdi bu menüyü, fonksiyonu çalıştıran kişiye gösteriyoruz.
    // Not: Eğer zaten ilk sayfayı göstericekseniz, menu_display(id,menu) yazmanız yeterli. Örnek olsun diye ekledim.
    
menu_display(id,menu,0)
}
// Ve B kısmı olarak anlattığımız bölüm. Yani menüde bir tuşa basıldığında işleyecek olan fonksiyon. Bu kısım menüyü işletir.
public MenuHandle(idmenuitem) {
    
// item = seçilen seçeneğin indexi demiştik. Seçilen seçeneğin indexinden yola çıkarak oyuncuya silah vereceğiz.
    // seçenek indexleri 0 dan başlar. Yani birinci seçeneğin indexi 0 dır. İkinci seçeneğin 1, üçüncününki 2 şeklinde gider.
    
switch(item) {
        case 
MENU_EXIT:{
            
// Eğer çıkış tuşuna basılmış ise, seçenek indexi MENU_EXIT olur.
            
client_print(id,print_chat,"Cikis Tusuna Bastiniz")
        }
        case 
0: {
            
give_item(id,"weapon_ak47")
            
client_print(id,print_chat,"AK47 Aldiniz")
        }
        case 
1: {
            
give_item(id,"weapon_m4a1")
            
client_print(id,print_chat,"M4A1 Aldiniz")
        }
        case 
2: {
            
give_item(id,"weapon_deagle")
            
client_print(id,print_chat,"DEAGLE Aldiniz")
        }
    }
    
// Kişiye seçimine ait silahı verdik. Şimdi yarattığımız menüyü yok etme zamanı.
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED


Oyuncu Menüsü

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

public plugin_init() {
    
register_clcmd("amx_revivemenu","MenuFunc")
}
public 
MenuFunc(id) {
    new 
menu menu_create("\r Canlandirmak Istediginiz Oyuncuyu Secin","MenuHandle")
    
    
// Oyunda olan oyuncuları buluyoruz.
    
new players[32],inum;
    
get_players(players,inum)
    
    
    
// Birkaç değişken de döngü içinde kullanmak için
    /**
     *  Static değikenlerin, new ile yaratılanlarından farkı; her yeni değer atandığında yeninden yıkılıp yapılmamalarıdır. Basit bir örnekle: 
     
     *  New ile yaratmış olsaydık: döngü içinde tempid tekrar tekrar yaratılacaktı. 
     *  Static ile yaratırsak, döngü boyunca sadece değeri değiştirilecek.
     
     *  Kafa karıştırıcı buluyorsanız, bilmeseniz de olur. Sadece bu tür yerlerde bu şekilde kullanımının daha uygun olduğunu bilin yeterli.
    **/ 
    
static tempidname[32], szID[6];
    
    for( new 
inum i++ ) {
        
// yazım kolaylığı açısından indexi değişkene bağlıyoruz.
        
tempid players[i];
        
// Eğer kişi canlı ise bu indexi atlıyoruz. Böylece zaten canlı olan kişiler menüde görünmeyecek.
        
if(is_user_alive(tempid)) continue;
        
        
// Seçenek ismi = kişinin ismi olucak. Bu yüzden ismi bulduruyoruz.
        // Seçenek bilgisi = kişinin indexi olucak. Böylece menü işleticide direk indexden kişiyi canlandırıcaz.
        // Fakat seçenek bilgisi başta belirttiğimiz gibi string olmak zorunda. Bu yüzden önce stringe çeviriyoruz.
        
get_user_nametempidname31)
        
num_to_strtempidszID5)
        
        
// Seçeneği ekliyoruz
        
menu_additemmenunameszIDADMIN_SLAY )
    }
    
    
menu_display(idmenu)
}
public 
MenuHandle(idmenuitem) {
    
// Eğer çıkışa basmışsa menüyü yok et.
    
if(item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    
// Basılan seçenek hakkında seçenek indexinden, seçeneğin diğer bilgilerini buldurmak için menu_item_getinfo kullandığımızı en başta göstermiştik
    // Şimdi bu fonksiyon için gereken değişkenleri yaratıyoruz.
    
new szID[6], name[32];
    new 
accesscallback;
    
menu_item_getinfomenuitemaccessszID5name31callback)
    
    
// Seçeneğin indexinden, seçeneğin bilgisini ( info[] ) bulduk. Bu bilgiyi kişinin indexi olarak kaydetmiştik
    // Şimdi stringi fonksiyonlarda kullanmak için integer'a çeviriyoruz.
    
    
new Uid str_to_num(szID);
    
    
// Eğer kişi oyundaysa ve hala ölüyse kişiyi canlandır.
    
if(is_user_connected(Uid) && !is_user_alive(Uid)) {
        
ExecuteHamB(Ham_CS_RoundRespawn,Uid)
    }
    
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
    


Oylama Menüsü

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new oylar[2]; // Oy sayılarını depolayacak olan değişken
new szSecenekler[2][32]; // Oylanan seceneklerin isimlerini depolayacak olan değişken
new bool:oylama_var// Oylama olup olmadığını gösteren değişken

public plugin_init() {
    
register_concmd("amx_vote","cmdVote",ADMIN_VOTE,"<1.secenek> <2.secenek>")
}
public 
cmdVote(id,level,cid) {
    if(!
cmd_access(id,level,cid,3)) return PLUGIN_HANDLED
    
    
// Eğer oylama varsa, çağrıyı durdur.
    
if(oylama_var) {
        
console_print(id,"Zaten Bir Oylama Var")
        return 
PLUGIN_HANDLED
    
}
    
// Tüm değişkenleri sıfırla. Önceki oylamadan kalanlar sıfırlanmalı.
    
oylar[0] = 0;
    
oylar[1] = 0;
    
szSecenekler[0][0] = 0;
    
szSecenekler[1][0] = 0;
    
// Oylama başladığı için bu değişken true
    
oylama_var true;
    
    
// Konsolda girilen komutun parametrelerini oku.
    
new arg1[32],arg2[32];
    
read_argv(1,arg1,31)
    
read_argv(2,arg2,31)
    
// Seçenekleri değişkende depola
    
copy(szSecenekler[0],31,arg1)
    
copy(szSecenekler[1],31,arg2)
    
    
// Oylama menüsünü yarat
    
new menu menu_create("\r Oylama:\y Birini Secin","MenuHandle")
    
// Oylanacak seçenekleri ekle
    
menu_additem(menuarg1"")
    
menu_additem(menuarg2"")
    
// Çıkış tuşunu kaldıralım. Böylece herkes oy kullanmak zorunda olsun.
    
menu_setprop(menu,MPROP_EXIT,MEXIT_NEVER)
    
    
// Herkese menüyü gösterelim
    
new players[32],inum;
    
get_players(players,inum)
    for(new 
ii<inumi++) {
        
menu_display(players,menu)
    }
    
// 15 saniye sonra oylama bitsin ve sonuç açıklansın
    
set_task(15.0,"OylamaBitir",menu)
    return 
PLUGIN_HANDLED
}
public 
MenuHandle(idmenuitem) {
    
// Eğer oylama bitmiş ise, girilen seçenekler geçersiz kabul edilsin.
    
if(!oylama_var) return PLUGIN_HANDLED
    
// Oylanan seçeneğin indexine +1 oy.
    
oylar[item]++;
    
// Not: Burada sakın menu_destroy kullanmayın. Yoksa ilk oy kullanandan sonra herkesde menü kapanır.
    
return PLUGIN_HANDLED
}
public 
OylamaBitir(menu) {
    
// Oylamayı kapatalım
    
oylama_var false;
    
// Karşılaştırmalar
    
if(oylar[0] > oylar[1]) {
        
client_print(0,print_chat,"[Oylama Bitti] Kazanan Secenek: %s",szSecenekler[0])
    }
    else if( 
oylar[0] < oylar[1]) {
        
client_print(0,print_chat,"[Oylama Bitti] Kazanan Secenek: %s",szSecenekler[1])
    }
    else {
        
client_print(0,print_chat,"[Oylama Bitti] Iki Secenek Esit Oy Aldi")
    }
    
// Ve menüyü yok edelim.
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
    


Alt Menü

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("MenuAc","AnaMenu")
}
public 
AnaMenu(id) {
    new 
menu menu_create("\r Ana Menu","AnaMenuHandle")
    
    
menu_additem(menu"Secenek 1","")
    
menu_additem(menu"Alt Menu","")
    
    
menu_display(id,menu)
    return 
PLUGIN_HANDLED
}
public 
AnaMenuHandle(idmenuitem) {
    switch(
item) {
        case 
0: {
            
// Secenek 1'e basıldı.
        
}
        case 
1: {
            
// Alt Menü Fonksiyonunu çalıştıralım
            
AltMenu(id);
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}
public 
AltMenu(id) {
    new 
menu menu_create("\r Alt Menu","AltMenuHandle")
    
    
menu_additem(menu"Alt Secenek 1","")
    
menu_additem(menu"Alt Secenek 2","")
    
    
// Çıkış tuşunun ismini "Geri" yapalım. Böylece bu tuşa basıldığında, kişi ana menüye geri döneceğini anlasın.
    
menu_setprop(menu,MPROP_EXITNAME,"Geri")
    
menu_display(id,menu)
}
public 
AltMenuHandle(idmenuitem) {
    switch(
item) {
        case 
0: {
            
// Alt Secenek 1 e basıldı
        
}
        case 
1: {
            
// Alt Secenek 2 ye basıldı
        
}
        case 
MENU_EXIT: {
            
// Çıkışa basıldı. Yani "Geri" yazan tuşa basıldı.
            // Öyleyse ana menüye geri dönelim
            
AnaMenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED


Birden Çok Menüye Bir İşletici Bağlamak

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
    
register_clcmd("MenuAc","AnaMenu")
}
public 
AnaMenu(id) {
    
    new 
menu menu_create("\r Ana Menu","GlobalHandle")
    
    
// Menü işleticisinde basılan tuş ana menünün mü alt menünün mü ayırt etmek için seçenek bilgisi kısmına
    // Burada "a" diğer menüde "b" yazalım.
    
menu_additem(menu"Secenek 1","a")
    
menu_additem(menu"Secenek 2","a")
    
menu_additem(menu"Alt Menu","a")
    
    
menu_display(id,menu)
}
public 
AltMenu(id) {
    
// Menü işleticisi, Ana menü işleticisiyle aynı.
    
new menu menu_create("\r Alt Menu","GlobalHandle")
    
    
menu_additem(menu"Secenek 1","b")
    
menu_additem(menu"Secenek 2","b")
    
    
menu_display(id,menu)
}
public 
GlobalHandle(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
// Hangi menünün tuşuna basıldığını öğrenmek için, seçenek bilgisi almamız gerek.
    
new data[6],name[32];
    new 
accesscallback;
    
menu_item_getinfo(menu,item,access,data,5,name,31,callback)
    
    
// Seçenek bilgisinin ilk karakterine göre switch alalım.
    
switch(data[0]) {
        case 
'a': {
            
// Ana Menü seçeneğidir.
            
switch(item) {
                case 
0:{
                    
// Seçenek 1 e basıldı
                
}
                case 
1:{
                    
// Seçenek 2 ye basıldı
                
}
                case 
2:{
                    
// Alt Menu ye basıldı
                    
AltMenu(id)
                }
            }
        }
        case 
'b': {
            
// Alt Menü seçeneğidir.
            
switch(item) {
                case 
0:{
                    
// Seçenek 1 e basıldı
                
}
                case 
1:{
                    
// Seçenek 2 ye basıldı
                
}
            }
            
// İlgili tuşa ait fonksiyonlar işletildikten sonra AnaMenu ye geri dönelim.
            
AnaMenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED



Geriçağrım ( Callback )

Öncelikle biraz geriçağrımın ne olduğunu anlatayım. Geriçağrım, menüdeki seçenekleri belirli kurallar çerçevesinde devre dışı bırakmak veya aktif etmek için kullanılır. Örneğin devre dışı bırakılmış bir seçenek, menüde sönük renkte (yarı saydam beyaz) görünür ve hiçbir şekilde basılamaz.

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

new gMenuCallBack// Geriçağrım fonksiyonunu tutacak değişken.
public plugin_init() {
    
    
register_clcmd("amx_revivemenu","MenuFunc")
    
    
// Geriçağrım fonksiyonu yarattık. Daha sonra istediğimiz seçeneğe bu geriçağrımı göstericez
    // Böylece o seçeneğin aktifliği bu fonksiyonun sonucuna göre belirlenicek.
    
gMenuCallBack menu_makecallback("MenuCallBack")
    
}
public 
MenuFunc(id) {
    
// Normal oyuncu menüsü yaratıyoruz.
    
new menu menu_create("\r Oyuncu Secin","MenuHandle")
    
    new 
players[32],inum;
    
get_players(players,inum)
    
    static 
tempidname[32], szID[6];
    for(new 
ii<inum i++) {
        
tempid players;
        
get_user_name(tempid,name,31)
        
num_to_str(tempid,szID,5)
        
// Seçeneği geriçağrım fonksiyonuna bağladık. Bundan sonra geriçağrım ne derse, seçenek onu yapıcak.
        
menu_additem(menunameszIDADMIN_SLAYgMenuCallBack)
    }
    
menu_display(id,menu)
    return 
PLUGIN_HANDLED
}
public 
MenuHandle(idmenuitem) {
    
// İşletici kısmında bir değişiklik yok.
    
if(item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
szID[6], name[32];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessszID5name31callback)
    
    new 
Uid str_to_num(szID);
    
    if(
is_user_connected(Uid) && !is_user_alive(Uid)) {
        
ExecuteHamB(Ham_CS_RoundRespawn,Uid)
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}
public 
MenuCallBack(idmenuitem) {
    
// Basılan seçeneğin özelliklerini toplayalım
    
new szID[6], name[32];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessszID5name31callback)
    
    new 
Uid str_to_num(szID);
    
    
// Eğer seçenekteki kişi canlı ise, seçenek deaktif olsun. Yani basılamasın ve rengi soluk görünsün.
    
if(is_user_alive(Uid)) return ITEM_DISABLED
    
// Eğer canlı değilse seçeneğe dokunma. 
    
    // Not: Eğer ITEM_ENABLED dersek, kişinin erişim yetkisi olmasa bile seçeneği aktif ettiğimizden dolayı herkes basabilir.
    // Bu yüzden seçeneğe dokunma diyoruz :) 
    
return ITEM_IGNORE


Global Menü

PHP Code:
#include <amxmodx>
#include <amxmisc>

new gMenu// Global menümüzün indexini bu değişkende depolayacağız
public plugin_init() {
    
register_clcmd("MenuAc","MenuShow")
    
// Menüyü pluginler yüklenirken yaratalım
    
gMenu menu_create("\r Global Menu","MenuHandle")
    
    
menu_additem(gMenu"Secenek 1","")
    
menu_additem(gMenu"Secenek 2","")
    
menu_additem(gMenu"Secenek 3","")
}
public 
MenuHandle(idmenuitem) {
    switch(
item) {
        case 
0: {
            
// Secenek 1 e basıldı
        
}
        case 
1: {
            
// Secenek 2 ye basıldı
        
}
        case 
2: {
            
// Secenek 3 e basıldı
        
}
    }
    return 
PLUGIN_HANDLED
}
public 
MenuShow(id) {
    
// İsteyene menüyü gösterelim
    
menu_display(idgMenu)
}
// NOT: Eğer herhangi bir yerde menu_destroy kullanırsak, kimse bir daha bu menüyü açamaz. Menü silinir. 

Ekstra Notlar:

--> Menüyü renklendirirken kullanabileceğiniz renk kodları:

\r - Kırmızı
\y - Sarı
\w - Beyaz
\d - Deaktif rengi / yarı saydam beyaz

--> Yazıları sağa dayalı yapmak için:

\R

--> Bir menü, eğer hiç seçenek eklenmemiş ise kendini göstermeyecektir.

--> Global menüler, local menüler gibi tekrar tekrar yaratıp, yok etme gerektirmez. Bu yüzden performansı daha yüksektir. Daha az CPU tüketir.

--> 10 Seçenek birden göstermek ve Geri, İleri, Çıkış tuşlarını kaldırmak için:

menu_setprop(menu, MPROP_PERPAGE, 0)
[/i][/i][/i]


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/

Reply
#2
Ellerine Sağlık Kolun Kopmuyormu yaw Smile
CFG İle İlgili Sorularınızı Sorabilirsiniz
Reply
#3
2 Günde yaptım Big Grin


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/

Reply
#4
Plugin Kodlamayı Hiçmi Hiç Beceremem Bende Big Grin
CFG İle İlgili Sorularınızı Sorabilirsiniz
Reply
#5
Öncelikle teşekkür ediyorum, emeğine sağlık. Senide yordum tarzı cümleler kurmayacağım çünkü anladığım kadarıyla pawnla uğraşmak senin de hoşuna gidiyor Smile) Teşekkürler tekrardan
Reply
#6
Rica ederim Smile


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/

Reply
#7
Gerçekten güzel bence sabitlenmesi gerek Smile
[Image: a1Jp0z.png] [Image: NO6NWO.png] [Image: DyVm9O.png] [Image: kX3pJW.png]
Reply
#8
Yetkim Olsaydı Derdimki Konu Kendimce Sabite Alınmıştır Big Grin
CFG İle İlgili Sorularınızı Sorabilirsiniz
Reply
#9
Pluginle ilgili okuduğum en bilgilendirici konuydu, özellikle hakkında çoğu şeyi bilmediğim menü konusu da açıklığa kavuştu benim için, çok teşekkür ederim Smile
uhcakiP
Özel Plugin Kodlanır!

Steam_ID = STEAM_0:0:54912140
Steam_Nick = Ragnar Lothbrok
https://steamcommunity.com/id/lothbrok
Reply
#10
Eline emeğine sağlık kardeşim.
Anlatamıyorsan yaz, Yazamıyorsan anlat. Her ikisini de beceremiyorsan sadece sus.

PHP Code:
chat_color(id,SKYPE,"  kApO.1905 " )    
     
chat_color(id,HOTMAIL,"  [email protected] " )      
           
chat_color(id,STEAM," herge1 "  

Hedef büyük , hayırlısıyla.Smile
[Image: moderator.png] [Image: sigpic19388_2.gif]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [PROGRAM]Basit Menü Oluşturma Programı toybaby 0 8,118 16-01-18, 00:22
Last Post: toybaby
  Boş Temiz Menu Istediginiz Gibi Kullanın к4dανяα 101 31,894 03-04-17, 23:11
Last Post: Ayarsiz
  jb menu yardım asdsadz123 1 4,628 15-04-16, 14:44
Last Post: asdsadz123
  [PROGRAM] Menu Oluşturucu AnqRfLow 5 7,493 12-04-16, 00:05
Last Post: orak98
  Admin Menu Plugin Nasıl Yapabilirim abdullah24 1 4,778 21-03-15, 00:47
Last Post: abdullah24
  Plugin (Ekletiyi) Açıp Kapatma Dersi к4dανяα 30 9,754 12-02-14, 23:35
Last Post: azem

Foruma Atla:


Users browsing this thread: 1 Guest(s)