⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🌐 www.furiazm.com ⏰ 7/24 aktif Yönetim 💬 Discord.gg/furiaclancs 💰Ücretsiz Adminlik/Vip alımı 🌟 Türkiye’nin yeni en gelişmiş Zombie Plague sunucusu
Sponsor Görsel 2
SponsorSponsor

Zombie Escape Map Oylama Eklentisi Problem

Zombie Escape Map Oylama Eklentisi Problem
Merhaba Arkadaşlar;

Ekte veridiğim oylama eklentisinde şöyle bir şey istiyorum.

Mapın bitmesine 4 dk kala oylama yapılacak ve seçilen map süre bitiminde açılacak ancak süre bittiğin de round'un ortasındaysa el sonu açılacak.

Böyle bir şey mümkün müdür ?
.smaZe_Oylama.sma(Dosya Boyutu: 6,71 KB | İndirme Sayısı: 4)
RE: Zombie Escape Map Oylama Eklentisi Problem
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "CAKAL [T]R";

new const 
defaultMap[] = "ze_jurassicpark4"; 
// Gece 00:00 'dan "map_saatkactaBaslasin" cvarinda ayarladiginiz saate kadar bu map acik kalir !
// Ayrica  'map_kisiSiniri' cvarini 0 dan farkli girdiyseniz, oyuncu sayisi degerin altinda kalirsa bu map acilir!

new const file[] = "addons/amxmodx/configs/maps.ini"; // maps.ini 'de en az 7 tane map yazili olmasi gerekir !!!

enum _: g_Data { MapNum, Mapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasure, map[32], Dosya, g_Cvars[3];

const 
manualOylama_Yetkisi = ADMIN_IMMUNITY;


new 
Float: tutucu
new control = 0,mapdegissin=0

#define kac_dakika_kala 4 * 60

public plugin_init() {
    
register_plugin("Jailbreak Map Oylama Sistemi", "v1.0", "n.dgn");
    
    
register_clcmd("say /mapoyla", "mapseckontrol"); // Manual Oylama 
    
RegisterHookChain(RG_CSGameRules_RestartRound, "restartRound", true);
    
    
bind_pcvar_num(create_cvar("map_saatkactaBaslasin", "0"), g_Cvars[0]);
    
// Saat kactan - 00:00 'a kadar map oylama sistemi aktif olsun?
    // 0 Yaparsaniz map oylama sistemi surekli aktif olur !
    // [default : 12] > Sabah 12 - Aksam 12
    
    
bind_pcvar_num(create_cvar("map_gunRestart", "99999"), g_Cvars[1]); // 99999 yaparak bu yontemi devre disi biraktik.
    // Gun Kacta Map Oylamasi Yapilsin ?
    // Gece Map degisikligi olmazsa bu cvardan 1 gun sonra restart atilir!
    
    
bind_pcvar_num(create_cvar("map_kisiSiniri", "1"), g_Cvars[2]);
    
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
    // 0 yaparsaniz bu ozellik kapanir!
    
    
get_mapname(map, charsmax(map));
    
    
set_task(0.9,"kontrol",1,_,_,"b"); 
    
tutucu =  get_cvar_float("mp_timelimit") * 60
    
    register_clcmd
("say /dene","asd")
    
control = 0
    mapdegissin 
= 0
    
    
    
    register_logevent
("eRoundEnd",2,"1=Round_End");
}

public 
eRoundEnd(){
    if(
is_map_valid(sonuc) && mapdegissin == 1) 
        
server_cmd("changelevel %s", sonuc);
    
}

public 
asd(){
    
renkli_yazi(0,"!gSu kadar saniye sonra baslar: %f",(tutucu - kac_dakika_kala))
    
renkli_yazi(0,"!gTutucu:: %f",tutucu )
}

public 
restartRound() {
    new 
days = get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) + 1;
    
    if(
days == g_Cvars[1]) {
        new 
saat[4]; 
        
get_time("%H", saat, charsmax(saat));
        
        if(
str_to_num(saat) >= g_Cvars[0] && get_playersnum() >= g_Cvars[2]) 
            
set_task(5.0, "mapsec");
        
        else if(!
equal(map, defaultMap)) 
            
server_cmd("changelevel %s", defaultMap);
        
    } else if(
days > g_Cvars[1]) 
    
set_cvar_num("sv_restartround", 5);
    
}

public 
kontrol(){
    if( 
control== 1) return
    
    else if((
tutucu - kac_dakika_kala) > (0 + kac_dakika_kala)  ) {
        
tutucu--;
    }
    
    else if((
tutucu - kac_dakika_kala)  == 0 ) {
        
control=1;
        
mapsec()
    }
    return;
}


public 
mapseckontrol(id) {
    if(
get_user_flags(id) & manualOylama_Yetkisi) 
        
mapsec();
    
    return 
PLUGIN_HANDLED;
}

public 
mapsec() { 
    new 
maxlines = file_size(file, 1);
    if(
maxlines > 6) {
        
        new 
onceki1[32], onceki2[32], i=0;
        
nvault_get( Dosya , "2OncekiHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
        
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0, maxlines);
            
            switch(
i) {
                case 
1 : if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                    case 
2 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                    case 
3 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum] ||  maplar[i-3][MapNum] == maplar[i][MapNum]) continue;
                }
            
            
read_file(file, maplar[i][MapNum], maplar[i][Mapisim], 31);
            
            if( 
contain(maplar[i][Mapisim], ";") == -1 && strlen(maplar[i][Mapisim]) > 1 && 
            !
equal(maplar[i][Mapisim], map) && 
            !
equal(maplar[i][Mapisim], onceki1) && 
            !
equal(maplar[i][Mapisim], onceki2)  ) {
                
                
i++;
            }
        }
        
oylama();
    }
}

public 
oylama() {
    new 
players[MAX_PLAYERS], num, ids, i; 
    
get_players_ex(players, num, GetPlayers_ExcludeBots);
    
    for(
i=0; i<4; i++) 
        
maplar[i][Oylamanum]=0;
    
    
oylamasure=15;
    
remove_task(1340); 
    
set_task_ex(1.0, "eksilt", 1340, .flags = SetTask_Repeat);
    
set_task(15.5, "oylamabitir", 1340);
    
    for(
i=0; i<num; i++) {
        
        
ids=players[i];
        
oylamakontrol[ids]=false;
        
remove_task(ids+1340);
        
oylamamenu(ids+1340);
        
        
set_task_ex(1.0, "oylamamenu", ids+1340, .flags = SetTask_Repeat);
    }
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
}

public 
oylamamenu(id) {
    
id=id-1340;
    
    if(
oylamasure>0 && is_user_connected(id)) {
        
        new 
ndmenu[128], nums[4]; 
        
formatex(ndmenu, charsmax(ndmenu),"\y%s \r• \wMap Oylamasi^n\dOylamanin bitmesine son \r%d saniye\d kaldi!", SERVERISMI, oylamasure);
        new 
Menu = menu_create(ndmenu, "korumaoylamamenu2");
        
        for(new 
i=0; i<4; i++) {
            
            
formatex(ndmenu, charsmax(ndmenu), "%s%s \r[ \w%d Oy\r ]",oylamakontrol[id] ? "\d":"\y", maplar[i][Mapisim], maplar[i][Oylamanum]);
            
            if(
oylamakontrol[id]) 
                
menu_additem(Menu, ndmenu, "5");
            
            else { 
                
num_to_str(i+1, nums, charsmax(nums));
                
menu_additem(Menu, ndmenu, nums); 
            }
        }
        
menu_addtext(Menu, "^n\r• \yOylamada Esitlik Olursa Rastgele secilir!");
        
        
menu_setprop(Menu, MPROP_EXITNAME, "\wCikis");
        
menu_display(id, Menu);
        
    } else 
remove_task(id+1340), show_menu(id, 0, "");
}

public 
korumaoylamamenu2(id, menu, item) {
    if(
item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; }
    
    new 
data[6], key; 
    
menu_item_getinfo(menu, item, _, data, charsmax(data));
    
key = str_to_num(data);
    
    if(
key != 5) {
        
maplar[key-1][Oylamanum]++;
        
oylamakontrol[id]=true;
        
    } else 
    
client_print_color(id, id, "^1[^3%s^1]^4 Siz oy verdiniz!", SERVERISMI);
    
    
oylamamenu(id+1340);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
oylamabitir() {
    
remove_task(1340);
    
    new 
max=maplar[0][Oylamanum];
    
formatex(sonuc, charsmax(sonuc), "%s", maplar[0][Mapisim]);
    
    for(new 
i=1; i<4; i++) {
        
        if((
maplar[i][Oylamanum] > max) || (maplar[i][Oylamanum] == max && random_num(1, 2) == 1)) {
            
            
max = maplar[i][Oylamanum];
            
formatex(sonuc, charsmax(sonuc), "%s", maplar[i][Mapisim]);
        }
    }
    
mapdegissin = 1
    
    
for(new i=0; i<5; i++) 
        
client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Oylamada ^3[^1%s^3]^4 Kazandi! ^1Harita degistiriliyor^3...", SERVERISMI, sonuc);
}

public 
mapdegis() {
    if(
is_map_valid(sonuc)) {
        
//server_cmd("changelevel %s", sonuc);
    
}
    
    else {
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
        
set_task(5.0, "mapsec");
    }
}

public 
eksilt() 
    
oylamasure--;

public 
plugin_cfg() {
    
Dosya = nvault_open("gecmismaplar");
    
    if(
Dosya == INVALID_HANDLE)    
        
set_fail_state( "Vault Dosyasi Acilamadi !" );
    
    else {
        
        new 
onceki1[32], onceki2[32];
        
nvault_get( Dosya , "SuanHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
        
        
nvault_set( Dosya , "1OncekiHarita" , onceki1 );
        
nvault_set( Dosya , "2OncekiHarita" , onceki2 );
        
nvault_set( Dosya , "SuanHarita" , map );
    }
}

public 
plugin_end() 
    
nvault_close( Dosya );


stock renkli_yazi(const id, const input[], any:...)
{
    new 
count = 1, players[32];
    static 
msg[191];
    
vformat(msg, 190, input, 3);
    
replace_all(msg, 190, "!n", "^x01");
    
replace_all(msg, 190, "!g", "^x04");
    
replace_all(msg, 190, "!t", "^x03");
    if (
id) players[0] = id; else get_players(players, count, "ch");{
        for (new 
i = 0; i < count; i++)    {
            if (
is_user_connected(players[i])){
                
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
} 
RE: Zombie Escape Map Oylama Eklentisi Problem
(02-06-2023, 13:50)Smash Adlı Kullanıcıdan Alıntı:
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "CAKAL [T]R";

new const 
defaultMap[] = "ze_jurassicpark4"; 
// Gece 00:00 'dan "map_saatkactaBaslasin" cvarinda ayarladiginiz saate kadar bu map acik kalir !
// Ayrica  'map_kisiSiniri' cvarini 0 dan farkli girdiyseniz, oyuncu sayisi degerin altinda kalirsa bu map acilir!

new const file[] = "addons/amxmodx/configs/maps.ini"; // maps.ini 'de en az 7 tane map yazili olmasi gerekir !!!

enum _: g_Data { MapNum, Mapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasure, map[32], Dosya, g_Cvars[3];

const 
manualOylama_Yetkisi = ADMIN_IMMUNITY;


new 
Float: tutucu
new control = 0,mapdegissin=0

#define kac_dakika_kala 4 * 60

public plugin_init() {
    
register_plugin("Jailbreak Map Oylama Sistemi", "v1.0", "n.dgn");
    
    
register_clcmd("say /mapoyla", "mapseckontrol"); // Manual Oylama 
    
RegisterHookChain(RG_CSGameRules_RestartRound, "restartRound", true);
    
    
bind_pcvar_num(create_cvar("map_saatkactaBaslasin", "0"), g_Cvars[0]);
    
// Saat kactan - 00:00 'a kadar map oylama sistemi aktif olsun?
    // 0 Yaparsaniz map oylama sistemi surekli aktif olur !
    // [default : 12] > Sabah 12 - Aksam 12
    
    
bind_pcvar_num(create_cvar("map_gunRestart", "99999"), g_Cvars[1]); // 99999 yaparak bu yontemi devre disi biraktik.
    // Gun Kacta Map Oylamasi Yapilsin ?
    // Gece Map degisikligi olmazsa bu cvardan 1 gun sonra restart atilir!
    
    
bind_pcvar_num(create_cvar("map_kisiSiniri", "1"), g_Cvars[2]);
    
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
    // 0 yaparsaniz bu ozellik kapanir!
    
    
get_mapname(map, charsmax(map));
    
    
set_task(0.9,"kontrol",1,_,_,"b"); 
    
tutucu =  get_cvar_float("mp_timelimit") * 60
    
    register_clcmd
("say /dene","asd")
    
control = 0
    mapdegissin 
= 0
    
    
    
    register_logevent
("eRoundEnd",2,"1=Round_End");
}

public 
eRoundEnd(){
    if(
is_map_valid(sonuc) && mapdegissin == 1) 
        
server_cmd("changelevel %s", sonuc);
    
}

public 
asd(){
    
renkli_yazi(0,"!gSu kadar saniye sonra baslar: %f",(tutucu - kac_dakika_kala))
    
renkli_yazi(0,"!gTutucu:: %f",tutucu )
}

public 
restartRound() {
    new 
days = get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) + 1;
    
    if(
days == g_Cvars[1]) {
        new 
saat[4]; 
        
get_time("%H", saat, charsmax(saat));
        
        if(
str_to_num(saat) >= g_Cvars[0] && get_playersnum() >= g_Cvars[2]) 
            
set_task(5.0, "mapsec");
        
        else if(!
equal(map, defaultMap)) 
            
server_cmd("changelevel %s", defaultMap);
        
    } else if(
days > g_Cvars[1]) 
    
set_cvar_num("sv_restartround", 5);
    
}

public 
kontrol(){
    if( 
control== 1) return
    
    else if((
tutucu - kac_dakika_kala) > (0 + kac_dakika_kala)  ) {
        
tutucu--;
    }
    
    else if((
tutucu - kac_dakika_kala)  == 0 ) {
        
control=1;
        
mapsec()
    }
    return;
}


public 
mapseckontrol(id) {
    if(
get_user_flags(id) & manualOylama_Yetkisi) 
        
mapsec();
    
    return 
PLUGIN_HANDLED;
}

public 
mapsec() { 
    new 
maxlines = file_size(file, 1);
    if(
maxlines > 6) {
        
        new 
onceki1[32], onceki2[32], i=0;
        
nvault_get( Dosya , "2OncekiHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
        
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0, maxlines);
            
            switch(
i) {
                case 
1 : if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                    case 
2 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                    case 
3 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum] ||  maplar[i-3][MapNum] == maplar[i][MapNum]) continue;
                }
            
            
read_file(file, maplar[i][MapNum], maplar[i][Mapisim], 31);
            
            if( 
contain(maplar[i][Mapisim], ";") == -1 && strlen(maplar[i][Mapisim]) > 1 && 
            !
equal(maplar[i][Mapisim], map) && 
            !
equal(maplar[i][Mapisim], onceki1) && 
            !
equal(maplar[i][Mapisim], onceki2)  ) {
                
                
i++;
            }
        }
        
oylama();
    }
}

public 
oylama() {
    new 
players[MAX_PLAYERS], num, ids, i; 
    
get_players_ex(players, num, GetPlayers_ExcludeBots);
    
    for(
i=0; i<4; i++) 
        
maplar[i][Oylamanum]=0;
    
    
oylamasure=15;
    
remove_task(1340); 
    
set_task_ex(1.0, "eksilt", 1340, .flags = SetTask_Repeat);
    
set_task(15.5, "oylamabitir", 1340);
    
    for(
i=0; i<num; i++) {
        
        
ids=players[i];
        
oylamakontrol[ids]=false;
        
remove_task(ids+1340);
        
oylamamenu(ids+1340);
        
        
set_task_ex(1.0, "oylamamenu", ids+1340, .flags = SetTask_Repeat);
    }
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
}

public 
oylamamenu(id) {
    
id=id-1340;
    
    if(
oylamasure>0 && is_user_connected(id)) {
        
        new 
ndmenu[128], nums[4]; 
        
formatex(ndmenu, charsmax(ndmenu),"\y%s \r• \wMap Oylamasi^n\dOylamanin bitmesine son \r%d saniye\d kaldi!", SERVERISMI, oylamasure);
        new 
Menu = menu_create(ndmenu, "korumaoylamamenu2");
        
        for(new 
i=0; i<4; i++) {
            
            
formatex(ndmenu, charsmax(ndmenu), "%s%s \r[ \w%d Oy\r ]",oylamakontrol[id] ? "\d":"\y", maplar[i][Mapisim], maplar[i][Oylamanum]);
            
            if(
oylamakontrol[id]) 
                
menu_additem(Menu, ndmenu, "5");
            
            else { 
                
num_to_str(i+1, nums, charsmax(nums));
                
menu_additem(Menu, ndmenu, nums); 
            }
        }
        
menu_addtext(Menu, "^n\r• \yOylamada Esitlik Olursa Rastgele secilir!");
        
        
menu_setprop(Menu, MPROP_EXITNAME, "\wCikis");
        
menu_display(id, Menu);
        
    } else 
remove_task(id+1340), show_menu(id, 0, "");
}

public 
korumaoylamamenu2(id, menu, item) {
    if(
item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; }
    
    new 
data[6], key; 
    
menu_item_getinfo(menu, item, _, data, charsmax(data));
    
key = str_to_num(data);
    
    if(
key != 5) {
        
maplar[key-1][Oylamanum]++;
        
oylamakontrol[id]=true;
        
    } else 
    
client_print_color(id, id, "^1[^3%s^1]^4 Siz oy verdiniz!", SERVERISMI);
    
    
oylamamenu(id+1340);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
oylamabitir() {
    
remove_task(1340);
    
    new 
max=maplar[0][Oylamanum];
    
formatex(sonuc, charsmax(sonuc), "%s", maplar[0][Mapisim]);
    
    for(new 
i=1; i<4; i++) {
        
        if((
maplar[i][Oylamanum] > max) || (maplar[i][Oylamanum] == max && random_num(1, 2) == 1)) {
            
            
max = maplar[i][Oylamanum];
            
formatex(sonuc, charsmax(sonuc), "%s", maplar[i][Mapisim]);
        }
    }
    
mapdegissin = 1
    
    
for(new i=0; i<5; i++) 
        
client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Oylamada ^3[^1%s^3]^4 Kazandi! ^1Harita degistiriliyor^3...", SERVERISMI, sonuc);
}

public 
mapdegis() {
    if(
is_map_valid(sonuc)) {
        
//server_cmd("changelevel %s", sonuc);
    
}
    
    else {
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
        
set_task(5.0, "mapsec");
    }
}

public 
eksilt() 
    
oylamasure--;

public 
plugin_cfg() {
    
Dosya = nvault_open("gecmismaplar");
    
    if(
Dosya == INVALID_HANDLE)    
        
set_fail_state( "Vault Dosyasi Acilamadi !" );
    
    else {
        
        new 
onceki1[32], onceki2[32];
        
nvault_get( Dosya , "SuanHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
        
        
nvault_set( Dosya , "1OncekiHarita" , onceki1 );
        
nvault_set( Dosya , "2OncekiHarita" , onceki2 );
        
nvault_set( Dosya , "SuanHarita" , map );
    }
}

public 
plugin_end() 
    
nvault_close( Dosya );


stock renkli_yazi(const id, const input[], any:...)
{
    new 
count = 1, players[32];
    static 
msg[191];
    
vformat(msg, 190, input, 3);
    
replace_all(msg, 190, "!n", "^x01");
    
replace_all(msg, 190, "!g", "^x04");
    
replace_all(msg, 190, "!t", "^x03");
    if (
id) players[0] = id; else get_players(players, count, "ch");{
        for (new 
i = 0; i < count; i++)    {
            if (
is_user_connected(players[i])){
                
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }
} 
Yok reis 4 dk kala oylama yapmadı.

Güncel

Güncel
Son Düzenleme: 07-06-2023, 20:05, Düzenleyen: Cassis
RE: Zombie Escape Map Oylama Eklentisi Problem
Deneyin;
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "KaoS Gaming";

new const 
defaultMap[] = "jail_buyukisyan_dark"; 
// Gece 00:00 'dan "map_saatkactaBaslasin" cvarinda ayarladiginiz saate kadar bu map acik kalir !
// Ayrica  'map_kisiSiniri' cvarini 0 dan farkli girdiyseniz, oyuncu sayisi degerin altinda kalirsa bu map acilir!


new const ctmenu_koruma[] = "ctmenum/oylama.wav";
new const 
file[] = "addons/amxmodx/configs/maps.ini"; // maps.ini 'de en az 7 tane map yazili olmasi gerekir !!!

enum _: g_Data { MapNum, Mapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasure, map[32], Dosya, g_Cvars[3], bool:InRound, bool:ChangeLevel;

const 
manualOylama_Yetkisi = ADMIN_RCON;

public 
plugin_init() {
    
register_plugin("Jailbreak Map Oylama Sistemi", "v1.0", "n.dgn");

    
register_clcmd("say /mapoyla", "mapseckontrol"); // Manual Oylama 
    
RegisterHookChain(RG_RoundEnd, "RoundEnd", .post = true);
    
RegisterHookChain(RG_CSGameRules_RestartRound, "restartRound", true);

    
bind_pcvar_num(create_cvar("map_saatkactaBaslasin", "12"), g_Cvars[0]); 
                            
// Saat kactan - 00:00 'a kadar map oylama sistemi aktif olsun?
                            // 0 Yaparsaniz map oylama sistemi surekli aktif olur !
                            // [default : 12] > Sabah 12 - Aksam 12

    
bind_pcvar_num(create_cvar("map_gunRestart", "20"), g_Cvars[1]); 
                            
// Gun Kacta Map Oylamasi Yapilsin ?
                            // Gece Map degisikligi olmazsa bu cvardan 1 gun sonra restart atilir!

    
bind_pcvar_num(create_cvar("map_kisiSiniri", "8"), g_Cvars[2]); 
                            
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
                            // 0 yaparsaniz bu ozellik kapanir!

    
set_task(5.0, "ControlTheTime", 890, .flags = "b");

    
get_mapname(map, charsmax(map));
}

public 
ControlTheTime()
{
    new 
iTimeLeft = get_timeleft();

    if(
iTimeLeft <= 240)
    {
        
mapsec();
        
remove_task(890);
    }
}

public 
RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) {
    if(
ChangeLevel) {
        
client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Harita degistiriliyor^3...", SERVERISMI, sonuc);

        
set_task(3.0, "ChangeLevelFinal");
    }

    
InRound = false;
}

public 
ChangeLevelFinal() {
    if(
is_map_valid(sonuc)) 
        
server_cmd("changelevel %s", sonuc);
    else {
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
        
set_task(5.0, "mapsec");
    }
}

public 
restartRound() {
    
InRound = true;
    new 
days = get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) + 1;

    if(
days == g_Cvars[1]) {
        new 
saat[4]; 
        
get_time("%H", saat, charsmax(saat));

        if(
str_to_num(saat) >= g_Cvars[0] && get_playersnum() >= g_Cvars[2]) 
            
set_task(5.0, "mapsec");

        else if(!
equal(map, defaultMap)) 
            
server_cmd("changelevel %s", defaultMap);

    } else if(
days > g_Cvars[1]) 
        
set_cvar_num("sv_restartround", 5);

}

public 
mapseckontrol(id) {
    if(
get_user_flags(id) & manualOylama_Yetkisi) 
        
mapsec();

    return 
PLUGIN_HANDLED;
}

public 
mapsec() { 
    new 
maxlines = file_size(file, 1);
    if(
maxlines > 6) {

        new 
onceki1[32], onceki2[32], i=0;
        
nvault_get( Dosya , "2OncekiHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
    
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0, maxlines);
            
            switch(
i) {
                case 
1 : if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                case 
2 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                case 
3 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum] ||  maplar[i-3][MapNum] == maplar[i][MapNum]) continue;
            }
            
            
read_file(file, maplar[i][MapNum], maplar[i][Mapisim], 31);

            if( 
contain(maplar[i][Mapisim], ";") == -1 && strlen(maplar[i][Mapisim]) > 1 && 
                !
equal(maplar[i][Mapisim], map) && 
                !
equal(maplar[i][Mapisim], onceki1) && 
                !
equal(maplar[i][Mapisim], onceki2)  ) {

                
i++;
            }
        }
        
oylama();
    }
}

public 
oylama() {
    new 
players[MAX_PLAYERS], num, ids, i; 
    
get_players_ex(players, num, GetPlayers_ExcludeBots);

    for(
i=0; i<4; i++) 
        
maplar[i][Oylamanum]=0;

    
oylamasure=15;
    
remove_task(1340); 
    
set_task_ex(1.0, "eksilt", 1340, .flags = SetTask_Repeat);
    
set_task(15.5, "oylamabitir", 1340);

    for(
i=0; i<num; i++) {

        
ids=players[i];
        
oylamakontrol[ids]=false;
        
remove_task(ids+1340);
        
oylamamenu(ids+1340);

        
set_task_ex(1.0, "oylamamenu", ids+1340, .flags = SetTask_Repeat);
    }
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
    
client_cmd(0, "stopsound"), set_task(0.1, "caldir");

}

public 
caldir()
    
rg_send_audio(0, ctmenu_koruma);

public 
oylamamenu(id) {
    
id=id-1340;

    if(
oylamasure>0 && is_user_connected(id)) {

        new 
ndmenu[128], nums[4]; 
        
formatex(ndmenu, charsmax(ndmenu),"\w%s \d|| \yMap Oylamasi^n\dOylamanin bitmesine son \r%d saniye\d kaldi!", SERVERISMI, oylamasure);
        new 
Menu = menu_create(ndmenu, "korumaoylamamenu2");

        for(new 
i=0; i<4; i++) {

            
formatex(ndmenu, charsmax(ndmenu), "%s%s \r[ \w%d Oy\r ]",oylamakontrol[id] ? "\d":"\y", maplar[i][Mapisim], maplar[i][Oylamanum]);

            if(
oylamakontrol[id]) 
                
menu_additem(Menu, ndmenu, "5");

            else { 
                
num_to_str(i+1, nums, charsmax(nums));
                
menu_additem(Menu, ndmenu, nums); 
            }
        }
        
menu_addtext(Menu, "\y^nOylamada Esitlik Olursa Rastgele secilir!");

        
menu_setprop(Menu, MPROP_EXITNAME, "\wCikis");
        
menu_display(id, Menu);

    } else 
remove_task(id+1340), show_menu(id, 0, "");
}

public 
korumaoylamamenu2(id, menu, item) {
    if(
item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; }

    new 
data[6], key; 
    
menu_item_getinfo(menu, item, _, data, charsmax(data));
    
key = str_to_num(data);

    if(
key != 5) {
        
maplar[key-1][Oylamanum]++;
        
oylamakontrol[id]=true;

    } else 
        
client_print_color(id, id, "^1[^3%s^1]^4 Siz oy verdiniz!", SERVERISMI);

    
oylamamenu(id+1340);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
oylamabitir() {
    
remove_task(1340);

    new 
max=maplar[0][Oylamanum];
    
formatex(sonuc, charsmax(sonuc), "%s", maplar[0][Mapisim]);

    for(new 
i=1; i<4; i++) {

        if((
maplar[i][Oylamanum] > max) || (maplar[i][Oylamanum] == max && random_num(1, 2) == 1)) {

            
max = maplar[i][Oylamanum];
            
formatex(sonuc, charsmax(sonuc), "%s", maplar[i][Mapisim]);
        }
    }
    
set_task(4.0, "mapdegis");

    
// for(new i=0; i<5; i++) 
    //     client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Oylamada ^3[^1%s^3]^4 Kazandi! ^1Harita degistiriliyor^3...", SERVERISMI, sonuc);
}

public 
mapdegis() {
    if(
InRound) {
        
ChangeLevel = true;
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Round bitmedigi icin map acilamadi, el sonu map degisecek^4!!!", SERVERISMI);
    }
    else {
        if(
is_map_valid(sonuc)) 
            
server_cmd("changelevel %s", sonuc);

        else {
            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
            
set_task(5.0, "mapsec");
        }
    }
}

public 
eksilt() 
    
oylamasure--;

public 
plugin_precache() 
    
precache_sound(ctmenu_koruma);

public 
plugin_cfg() {
    
Dosya = nvault_open("gecmismaplar");

    if(
Dosya == INVALID_HANDLE)    
        
set_fail_state( "Vault Dosyasi Acilamadi !" );

    else {

        new 
onceki1[32], onceki2[32];
        
nvault_get( Dosya , "SuanHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );

        
nvault_set( Dosya , "1OncekiHarita" , onceki1 );
        
nvault_set( Dosya , "2OncekiHarita" , onceki2 );
        
nvault_set( Dosya , "SuanHarita" , map );
    }
}

public 
plugin_end() 
    
nvault_close( Dosya ); 
Steam:Tıkla • Discord: lynchk
RE: Zombie Escape Map Oylama Eklentisi Problem
(08-06-2023, 10:09)orucoglukayra Adlı Kullanıcıdan Alıntı: Deneyin;
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "KaoS Gaming";

new const 
defaultMap[] = "jail_buyukisyan_dark"; 
// Gece 00:00 'dan "map_saatkactaBaslasin" cvarinda ayarladiginiz saate kadar bu map acik kalir !
// Ayrica  'map_kisiSiniri' cvarini 0 dan farkli girdiyseniz, oyuncu sayisi degerin altinda kalirsa bu map acilir!


new const ctmenu_koruma[] = "ctmenum/oylama.wav";
new const 
file[] = "addons/amxmodx/configs/maps.ini"; // maps.ini 'de en az 7 tane map yazili olmasi gerekir !!!

enum _: g_Data { MapNum, Mapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasure, map[32], Dosya, g_Cvars[3], bool:InRound, bool:ChangeLevel;

const 
manualOylama_Yetkisi = ADMIN_RCON;

public 
plugin_init() {
    
register_plugin("Jailbreak Map Oylama Sistemi", "v1.0", "n.dgn");

    
register_clcmd("say /mapoyla", "mapseckontrol"); // Manual Oylama 
    
RegisterHookChain(RG_RoundEnd, "RoundEnd", .post = true);
    
RegisterHookChain(RG_CSGameRules_RestartRound, "restartRound", true);

    
bind_pcvar_num(create_cvar("map_saatkactaBaslasin", "12"), g_Cvars[0]); 
                            
// Saat kactan - 00:00 'a kadar map oylama sistemi aktif olsun?
                            // 0 Yaparsaniz map oylama sistemi surekli aktif olur !
                            // [default : 12] > Sabah 12 - Aksam 12

    
bind_pcvar_num(create_cvar("map_gunRestart", "20"), g_Cvars[1]); 
                            
// Gun Kacta Map Oylamasi Yapilsin ?
                            // Gece Map degisikligi olmazsa bu cvardan 1 gun sonra restart atilir!

    
bind_pcvar_num(create_cvar("map_kisiSiniri", "8"), g_Cvars[2]); 
                            
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
                            // 0 yaparsaniz bu ozellik kapanir!

    
set_task(5.0, "ControlTheTime", 890, .flags = "b");

    
get_mapname(map, charsmax(map));
}

public 
ControlTheTime()
{
    new 
iTimeLeft = get_timeleft();

    if(
iTimeLeft <= 240)
    {
        
mapsec();
        
remove_task(890);
    }
}

public 
RoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay) {
    if(
ChangeLevel) {
        
client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Harita degistiriliyor^3...", SERVERISMI, sonuc);

        
set_task(3.0, "ChangeLevelFinal");
    }

    
InRound = false;
}

public 
ChangeLevelFinal() {
    if(
is_map_valid(sonuc)) 
        
server_cmd("changelevel %s", sonuc);
    else {
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
        
set_task(5.0, "mapsec");
    }
}

public 
restartRound() {
    
InRound = true;
    new 
days = get_member_game(m_iNumCTWins) + get_member_game(m_iNumTerroristWins) + 1;

    if(
days == g_Cvars[1]) {
        new 
saat[4]; 
        
get_time("%H", saat, charsmax(saat));

        if(
str_to_num(saat) >= g_Cvars[0] && get_playersnum() >= g_Cvars[2]) 
            
set_task(5.0, "mapsec");

        else if(!
equal(map, defaultMap)) 
            
server_cmd("changelevel %s", defaultMap);

    } else if(
days > g_Cvars[1]) 
        
set_cvar_num("sv_restartround", 5);

}

public 
mapseckontrol(id) {
    if(
get_user_flags(id) & manualOylama_Yetkisi) 
        
mapsec();

    return 
PLUGIN_HANDLED;
}

public 
mapsec() { 
    new 
maxlines = file_size(file, 1);
    if(
maxlines > 6) {

        new 
onceki1[32], onceki2[32], i=0;
        
nvault_get( Dosya , "2OncekiHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );
    
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0, maxlines);
            
            switch(
i) {
                case 
1 : if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                case 
2 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                case 
3 : if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum] ||  maplar[i-3][MapNum] == maplar[i][MapNum]) continue;
            }
            
            
read_file(file, maplar[i][MapNum], maplar[i][Mapisim], 31);

            if( 
contain(maplar[i][Mapisim], ";") == -1 && strlen(maplar[i][Mapisim]) > 1 && 
                !
equal(maplar[i][Mapisim], map) && 
                !
equal(maplar[i][Mapisim], onceki1) && 
                !
equal(maplar[i][Mapisim], onceki2)  ) {

                
i++;
            }
        }
        
oylama();
    }
}

public 
oylama() {
    new 
players[MAX_PLAYERS], num, ids, i; 
    
get_players_ex(players, num, GetPlayers_ExcludeBots);

    for(
i=0; i<4; i++) 
        
maplar[i][Oylamanum]=0;

    
oylamasure=15;
    
remove_task(1340); 
    
set_task_ex(1.0, "eksilt", 1340, .flags = SetTask_Repeat);
    
set_task(15.5, "oylamabitir", 1340);

    for(
i=0; i<num; i++) {

        
ids=players[i];
        
oylamakontrol[ids]=false;
        
remove_task(ids+1340);
        
oylamamenu(ids+1340);

        
set_task_ex(1.0, "oylamamenu", ids+1340, .flags = SetTask_Repeat);
    }
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
    
client_cmd(0, "stopsound"), set_task(0.1, "caldir");

}

public 
caldir()
    
rg_send_audio(0, ctmenu_koruma);

public 
oylamamenu(id) {
    
id=id-1340;

    if(
oylamasure>0 && is_user_connected(id)) {

        new 
ndmenu[128], nums[4]; 
        
formatex(ndmenu, charsmax(ndmenu),"\w%s \d|| \yMap Oylamasi^n\dOylamanin bitmesine son \r%d saniye\d kaldi!", SERVERISMI, oylamasure);
        new 
Menu = menu_create(ndmenu, "korumaoylamamenu2");

        for(new 
i=0; i<4; i++) {

            
formatex(ndmenu, charsmax(ndmenu), "%s%s \r[ \w%d Oy\r ]",oylamakontrol[id] ? "\d":"\y", maplar[i][Mapisim], maplar[i][Oylamanum]);

            if(
oylamakontrol[id]) 
                
menu_additem(Menu, ndmenu, "5");

            else { 
                
num_to_str(i+1, nums, charsmax(nums));
                
menu_additem(Menu, ndmenu, nums); 
            }
        }
        
menu_addtext(Menu, "\y^nOylamada Esitlik Olursa Rastgele secilir!");

        
menu_setprop(Menu, MPROP_EXITNAME, "\wCikis");
        
menu_display(id, Menu);

    } else 
remove_task(id+1340), show_menu(id, 0, "");
}

public 
korumaoylamamenu2(id, menu, item) {
    if(
item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; }

    new 
data[6], key; 
    
menu_item_getinfo(menu, item, _, data, charsmax(data));
    
key = str_to_num(data);

    if(
key != 5) {
        
maplar[key-1][Oylamanum]++;
        
oylamakontrol[id]=true;

    } else 
        
client_print_color(id, id, "^1[^3%s^1]^4 Siz oy verdiniz!", SERVERISMI);

    
oylamamenu(id+1340);
    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

public 
oylamabitir() {
    
remove_task(1340);

    new 
max=maplar[0][Oylamanum];
    
formatex(sonuc, charsmax(sonuc), "%s", maplar[0][Mapisim]);

    for(new 
i=1; i<4; i++) {

        if((
maplar[i][Oylamanum] > max) || (maplar[i][Oylamanum] == max && random_num(1, 2) == 1)) {

            
max = maplar[i][Oylamanum];
            
formatex(sonuc, charsmax(sonuc), "%s", maplar[i][Mapisim]);
        }
    }
    
set_task(4.0, "mapdegis");

    
// for(new i=0; i<5; i++) 
    //     client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Oylamada ^3[^1%s^3]^4 Kazandi! ^1Harita degistiriliyor^3...", SERVERISMI, sonuc);
}

public 
mapdegis() {
    if(
InRound) {
        
ChangeLevel = true;
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Round bitmedigi icin map acilamadi, el sonu map degisecek^4!!!", SERVERISMI);
    }
    else {
        if(
is_map_valid(sonuc)) 
            
server_cmd("changelevel %s", sonuc);

        else {
            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map yuklu degil. ^1Oylama tekrar ^3yapiliyor^4...", SERVERISMI);
            
set_task(5.0, "mapsec");
        }
    }
}

public 
eksilt() 
    
oylamasure--;

public 
plugin_precache() 
    
precache_sound(ctmenu_koruma);

public 
plugin_cfg() {
    
Dosya = nvault_open("gecmismaplar");

    if(
Dosya == INVALID_HANDLE)    
        
set_fail_state( "Vault Dosyasi Acilamadi !" );

    else {

        new 
onceki1[32], onceki2[32];
        
nvault_get( Dosya , "SuanHarita" , onceki1 , charsmax(onceki1) );
        
nvault_get( Dosya , "1OncekiHarita" , onceki2 , charsmax(onceki2) );

        
nvault_set( Dosya , "1OncekiHarita" , onceki1 );
        
nvault_set( Dosya , "2OncekiHarita" , onceki2 );
        
nvault_set( Dosya , "SuanHarita" , map );
    }
}

public 
plugin_end() 
    
nvault_close( Dosya ); 
Merhaba, Teşekkür ederim hepsi olmuş, ancak oylama bittikten sonra seçilen mapı da saydan yazabilir mi ?
RE: Zombie Escape Map Oylama Eklentisi Problem
(09-06-2023, 02:49)KadirAydın Adlı Kullanıcıdan Alıntı: Merhaba, Teşekkür ederim hepsi olmuş, ancak oylama bittikten sonra seçilen mapı da saydan yazabilir mi ?

Kod:
    // for(new i=0; i<5; i++)
    //     client_print_color(0, print_team_blue, "^1[^3%s^1]^4 Oylamada ^3[^1%s^3]^4 Kazandi! ^1Harita degistiriliyor^3...", SERVERISMI, sonuc);

Burayı devre dışı bırakmıştım.Başındaki // kaldırıp mesajı istediğiniz gibi düzenleyebilirsiniz.
Steam:Tıkla • Discord: lynchk
RE: Zombie Escape Map Oylama Eklentisi Problem
İstek konusu, @"orucoglukayra" adlı kullanıcı tarafından 8 gün içinde çözülmüştür.
İsteği çözdüğü için orucoglukayra Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
orucoglukayra Adlı kullanıcı sizin dışınızda toplam 667 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Konuyu Okuyanlar: 1 Ziyaretçi
Task