⭐🚀 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

Map Oylama Eklentisi Hk.

Map Oylama Eklentisi Hk.
Arkadaşlar Merhaba ;

Pro Public sunucum için otomatik map oylama sistemi eklentisi ihtiyacım vardır. Ücreti karşılığında yapabilecek olanlar tarafıma dönüş yapabilirse sevinirim.

Bu eklenti üzerinden de gidebiliriz. Çünkü istediğim değişiklikler bu eklenti üzerinden de yapılabilir. 

https://www.webailesi.com/konu-reapi-map-oylama-sistemi-eklentisi-7979

Kolay gelsin,
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
RE: Map Oylama Eklentisi Hk.
Otomatikten kastınız mapın değişmesine belli bir dk kala oylama yapması mı?
RE: Map Oylama Eklentisi Hk.
Evet örneğin 25 round oynandıktan sonra örnek sunucuda 30 oyuncu varsa otomatik oylama gelmesi, oyuncu sayısı 30 kişiden az ise takımları swaplayıp restart atması vs.
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
RE: Map Oylama Eklentisi Hk.
Attığınız eklenti üzerinden değişmesi gerekenleri söylerseniz yardımcı olabiliriz.
Steam:Tıkla • Discord: lynchk
RE: Map Oylama Eklentisi Hk.
Şu şekilde sıralayabilirim.

1- Toplam harita 25 el oynandıktan sonra sunucudaki oyuncu sayısı 30 kişi ise son round oynandıktan sonra otomatik harita oylamasının başlatılması, saydan ve huddan bilgi mesajı verilerek.
2- Kişi sayısı 30 kişinin altında ise 25 el oynandıktan sonra remap yaparak dust2 geri dönülmesi, saydan ve huddan bilgi mesajı verilerek.
3- Harita oylaması başladığında tüm oyuncuların hareketsiz kalacak şekilde oylama sonucunu beklemesi,
4- Her 25 el sonunda en iyi oyuncunun MVP olarak bilgi mesajı olarak huddan gösterilmesi,

Kolay gelsin,
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
RE: Map Oylama Eklentisi Hk.
Deneyin;
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "Tag";

new const 
defaultMap[] = "de_dust2"; 
// 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];

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_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", "25"), 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", "25"), g_Cvars[2]); 
                            
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
                            // 0 yaparsaniz bu ozellik kapanir!

    
get_mapname(map, charsmax(map));
}

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)) {
            new 
iMvp = GetMvpPlayer();

            
freezeAll();

            
set_task(5.0, "ChangeToDefault");

            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Oyuncu sayisi az oldugu icin %s mapi aciliyor!", SERVERISMI, defaultMap);

            if(
is_user_connected(iMvp))
                
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);

            
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
            
show_dhudmessage(0, "Oyuncu sayisi az oldugu icin %s mapi aciliyor!", defaultMap);
        }

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

public 
GetMvpPlayer() {
    new 
Players[32], iNum;
    
get_players(Players, iNum, "c");
    
SortCustom1D(Players, iNum, "ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1, iPlayer2) {
    new 
Player1Frag = get_user_frags(iPlayer1);
    new 
Player2Frag = get_user_frags(iPlayer2);
    new 
Player1Death = get_user_deaths(iPlayer1);
    new 
Player2Death = get_user_deaths(iPlayer2);
    if(
Player1Frag > Player2Frag) {
        return -
1;
    }
    else if(
Player1Frag == Player2Frag) {
        if(
Player1Death > Player2Death) {
            return 
1;
        }
        else if(
Player1Death == Player2Death) {
            return 
0;
        }
        else {
            return -
1;
        }
    }
    else {
        return 
1;
    }
}

public 
freezeAll() {
    for(new 
i = 1; i <= MaxClients; i++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(i, var_flags, get_entvar(i, var_flags) | FL_FROZEN);
        }
    }
}

public 
ChangeToDefault() {
    
server_cmd("changelevel %s", defaultMap);
}

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);
    }

    
freezeAll();

    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
    
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
    
show_dhudmessage(0, "Map oylamasi basladi. 15 saniye sonra oylama bitecektir!");

    
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");

    new 
iMvp = GetMvpPlayer();

    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);

    if(
is_user_connected(iMvp))
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);
}

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_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: Map Oylama Eklentisi Hk.
Kayra Selam ;

Harita oylaması için sayı henüz oluşmadı onu deneyemedim. Kişi sayısına spec botları da ekliyor mu ?

Yalnız D2 oynanırken 25 el bittiğinde direk restart atıyor. Onu şu şekilde yapabilir miyiz ?

Restart attığında takımlar swaplanıp yer değiştirmesi ve saydan bilgi mesajı geçilmesi.
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
RE: Map Oylama Eklentisi Hk.
(11-10-2024, 04:03)commander61 Adlı Kullanıcıdan Alıntı: Kayra Selam ;

Harita oylaması için sayı henüz oluşmadı onu deneyemedim. Kişi sayısına spec botları da ekliyor mu ?

Yalnız D2 oynanırken 25 el bittiğinde direk restart atıyor. Onu şu şekilde yapabilir miyiz ?

Restart attığında takımlar swaplanıp yer değiştirmesi ve saydan bilgi mesajı geçilmesi.
Spec botlarını da dahil eder.
Deneyin;
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "KaoS Gaming";

new const 
defaultMap[] = "de_dust2"; 
// 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];

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_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", "25"), 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", "25"), g_Cvars[2]); 
                            
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
                            // 0 yaparsaniz bu ozellik kapanir!

    
get_mapname(map, charsmax(map));
}

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)) {
            new 
iMvp = GetMvpPlayer();

            
freezeAll();

            
set_task(5.0, "ChangeToDefault");

            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Oyuncu sayisi az oldugu icin %s mapi aciliyor!", SERVERISMI, defaultMap);

            if(
is_user_connected(iMvp))
                
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);

            
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
            
show_dhudmessage(0, "Oyuncu sayisi az oldugu icin %s mapi aciliyor!", defaultMap);
        }

    } else if(
days > g_Cvars[1]) {
        
rg_swap_all_players();

        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);

        
set_cvar_num("sv_restartround", 5);
    }
}

public 
GetMvpPlayer() {
    new 
Players[32], iNum;
    
get_players(Players, iNum, "c");
    
SortCustom1D(Players, iNum, "ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1, iPlayer2) {
    new 
Player1Frag = get_user_frags(iPlayer1);
    new 
Player2Frag = get_user_frags(iPlayer2);
    new 
Player1Death = get_user_deaths(iPlayer1);
    new 
Player2Death = get_user_deaths(iPlayer2);
    if(
Player1Frag > Player2Frag) {
        return -
1;
    }
    else if(
Player1Frag == Player2Frag) {
        if(
Player1Death > Player2Death) {
            return 
1;
        }
        else if(
Player1Death == Player2Death) {
            return 
0;
        }
        else {
            return -
1;
        }
    }
    else {
        return 
1;
    }
}

public 
freezeAll() {
    for(new 
i = 1; i <= MaxClients; i++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(i, var_flags, get_entvar(i, var_flags) | FL_FROZEN);
        }
    }
}

public 
ChangeToDefault() {
    
server_cmd("changelevel %s", defaultMap);
}

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);
    }

    
freezeAll();

    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
    
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
    
show_dhudmessage(0, "Map oylamasi basladi. 15 saniye sonra oylama bitecektir!");

    
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");

    new 
iMvp = GetMvpPlayer();

    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);

    if(
is_user_connected(iMvp))
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);
}

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_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: Map Oylama Eklentisi Hk.
Kayra tekrardan selamlar ;

MVP çalışmıyor ve gösterilmiyor. Ayrıca HUD mesajları da aktif olmuyor.

Birde restart atıldığında takımlar yer değiştirirken şöyle bir durum var. Diyelim TE takımı 25 el bitip restart beklerken t basede komple CT oluyor, restart geldikten sonra herkes yerine geçiyor.
Stand Back Warrior's   | ip: cs.sbwpro.com | ts3: ts3.sbwpro.com
RE: Map Oylama Eklentisi Hk.
Hud mesajları ve mvp için bir şey ekledim;
Mvp gözükmüyorsa chatte log basmış olabilir eklenti hatalarına bakınız.Restart 5 saniye içinde atıldığı için takımların farklı baselerde olmasında sakınca görmedim düzeltme içinde restart süresini azaltabiliriz ama gerek yok bence.
PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>

new const SERVERISMI[] = "KaoS Gaming";

new const 
defaultMap[] = "de_dust2"; 
// 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], iSyncObj;

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_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", "25"), 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", "25"), g_Cvars[2]); 
                            
// Oyuncu sayisi bu sayinin altindaysa otomatik 'defaultMap' acilir.
                            // 0 yaparsaniz bu ozellik kapanir!

    
get_mapname(map, charsmax(map));

    
iSyncObj = CreateHudSyncObj();
}

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)) {
            new 
iMvp = GetMvpPlayer();

            
freezeAll();

            
set_task(5.0, "ChangeToDefault");

            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Oyuncu sayisi az oldugu icin %s mapi aciliyor!", SERVERISMI, defaultMap);
            
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);

            
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
            
ShowSyncHudMsg(0, iSyncObj, "Oyuncu sayisi az oldugu icin %s mapi aciliyor!", defaultMap);
        }

    } else if(
days > g_Cvars[1]) {
        
rg_swap_all_players();

        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);
        
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!", SERVERISMI);

        
set_cvar_num("sv_restartround", 5);
    }
}

public 
GetMvpPlayer() {
    new 
Players[32], iNum;
    
get_players(Players, iNum, "ch");
    
SortCustom1D(Players, iNum, "ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1, iPlayer2) {
    new 
Player1Frag = get_user_frags(iPlayer1);
    new 
Player2Frag = get_user_frags(iPlayer2);
    new 
Player1Death = get_user_deaths(iPlayer1);
    new 
Player2Death = get_user_deaths(iPlayer2);
    if(
Player1Frag > Player2Frag) {
        return -
1;
    }
    else if(
Player1Frag == Player2Frag) {
        if(
Player1Death > Player2Death) {
            return 
1;
        }
        else if(
Player1Death == Player2Death) {
            return 
0;
        }
        else {
            return -
1;
        }
    }
    else {
        return 
1;
    }
}

public 
freezeAll() {
    for(new 
i = 1; i <= MaxClients; i++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(i, var_flags, get_entvar(i, var_flags) | FL_FROZEN);
        }
    }
}

public 
ChangeToDefault() {
    
server_cmd("changelevel %s", defaultMap);
}

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);
    }

    
freezeAll();

    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!", SERVERISMI);
    
    
set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.20, 0, 0.0, 10.0);
    
ShowSyncHudMsg(0, iSyncObj, "Map oylamasi basladi. 15 saniye sonra oylama bitecektir!");

    
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");

    new 
iMvp = GetMvpPlayer();

    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);

    
client_print_color(0, print_team_grey, "^1[^3%s^1]^4 Mvp oyuncu: %s!", SERVERISMI, iMvp);
}

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_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

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