Basit Oylama Menüsü yapılırken menüyü herkese göstermek gerekiyor. O bölümü iyi anlamanız gerekiyor.
PHP Kod:
#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;
}
)

