Basit Oylama Menüsü Nasıl Yapılır?

LSR

Üye
Yönetici
Administrator
16 Tem 2016
166
19
18
59 | Tekirdağ
Basit Oylama Menüsü yapılırken menüyü herkese göstermek gerekiyor. O bölümü iyi anlamanız gerekiyor.

JavaScript:
#include <amxmodx>

//Menüyü oluşturmak için global bir değişken belirleyeceğiz.
new g_iVoteMenu;
//Oyları çekebilmemiz için bir oy değeri oluşturacağız. [] içindeki değer menü seçeneği + 1 sayısında olmalıdır.
new g_iVotes[2];
//Oylamanın devam edip etmediğini algılatmak için bir değer oluşturmamız gerekiyor.
new g_iVoting;

public OylamaMenusu(pPlayer) {
    //Oylama varsa, tekrardan başlamaması için koruma yapıyoruz.
    if(g_blVoting) {
        client_print_color(pPlayer, pPlayer, "Oylama Devam Ediyor");
        return PLUGIN_HANDLED;
    }

    //Oylamaya başlamadan önce değerleri sıfırlıyoruz.
    g_iVotes[0] = g_iVotes[1] = 0;
    // Eğer 2den fazla değere sahipse, aşağıdaki gibi yapmanız daha iyi olacaktır.
    //arrayset(g_iVotes, 0, sizeof g_iVotes);

    //Öncelikle menü ve menü değeri oluşturmalıyız. Oluşturduğumuz global değere bağlıyoruz.
    g_iVoteMenu = menu_create("Oylama Başlığı", "OylamaMenusu_handler");

    //Menüye seçenek ekleyin
    menu_additem(g_iVoteMenu, "Seçenek 1");
    menu_additem(g_iVoteMenu, "Seçenek 2");

    //Herkese yollamak için bir döngü oluşturacağız. Döngü olayını Oyuncu Menüsünde anlattım.
    for(new id = 1; id <= MaxClients; id++) {
        if(is_user_connected(id)) {
            //Oylamayı göster
            menu_display(id, g_iVoteMenu);

            //Oylamaya katılan sayı kadar artacaktır.
            g_iVoting++;
        }
    }

    //Oylamayı belirlediğin saniye sonra bitir.
    set_task(10.0, "OylamayiBitir");

    return PLUGIN_HANDLED;
}

public OylamaMenusu_handler(pPlayer, iMenu, iItem) {
    //Menüden çıktıysa veya hiç oy yoksa menüyü kapatacak
    if(iItem == MENU_EXIT || !g_iVoting) {
        //Burada menüyü yok etmiyoruz. Aksi takdirde oy vermeyenlerde de menü yok olacaktır.
        return PLUGIN_HANDLED;
    }

    //Seçilen seçeneğin oyunu artırır.
    g_iVotes[iItem]++;

    //Menüyü yok etmiyoruz.
    return PLUGIN_HANDLED;
}

public OylamayiBitir() {
    //En çok oy alan seçeneği belirliyoruz. Birinci seçenecek > İkinci Seçenek
    if(g_iVotes[0] > g_iVotes[1]) {
        client_print_color(0, 0, "Birinci seçenek kazandı");
    }

    //Değilse, tam tersini deniyoruz. İkinci Seçenek > Birinci Seçenek
    else if(g_iVotes[1] > g_iVotes[2]) {
        client_print_color(0, 0, "İkinci seçenek kazandı");
    }

    //Değilse, berabere
    else {
        client_print_color(0, 0, "Berabere");
    }

    //Oylama bittiğine göre menüyü yok edebiliriz.
    menu_destroy(iMenu);

    //Oy sayısını da sıfırlayabiliriz
    g_iVoting = 0;
}
 
  • Beğen
Tepkiler: emresudo