Konu

#1
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: 213.238.173.206 | dns: cs6.csduragi.net | ts3: sbwcs6
#2
Otomatikten kastınız mapın değişmesine belli bir dk kala oylama yapması mı?
#3
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: 213.238.173.206 | dns: cs6.csduragi.net | ts3: sbwcs6
#4
Attığınız eklenti üzerinden değişmesi gerekenleri söylerseniz yardımcı olabiliriz.
Steam: Tıkla
#5
Ş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: 213.238.173.206 | dns: cs6.csduragi.net | ts3: sbwcs6
#6
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 MapNumMapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasuremap[32], Dosyag_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(mapcharsmax(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"saatcharsmax(saat));

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

        else if(!
equal(mapdefaultMap)) {
            new 
iMvp GetMvpPlayer();

            
freezeAll();

            
set_task(5.0"ChangeToDefault");

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

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

            
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.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(PlayersiNum"c");
    
SortCustom1D(PlayersiNum"ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1iPlayer2) {
    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 
1<= MaxClientsi++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(ivar_flagsget_entvar(ivar_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(file1);
    if(
maxlines 6) {

        new 
onceki1[32], onceki2[32], i=0;
        
nvault_getDosya "2OncekiHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );
    
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0maxlines);
            
            switch(
i) {
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                case 
: 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(filemaplar[i][MapNum], maplar[i][Mapisim], 31);

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

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

public 
oylama() {
    new 
players[MAX_PLAYERS], numidsi
    
get_players_ex(playersnumGetPlayers_ExcludeBots);

    for(
i=0i<4i++) 
        
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=0i<numi++) {

        
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(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
    
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.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(0ctmenu_koruma);

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

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

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

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

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

            if(
oylamakontrol[id]) 
                
menu_additem(Menundmenu"5");

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

        
menu_setprop(MenuMPROP_EXITNAME"\wCikis");
        
menu_display(idMenu);

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

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

    new 
data[6], key
    
menu_item_getinfo(menuitem_datacharsmax(data));
    
key str_to_num(data);

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

    } else 
        
client_print_color(idid"^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(sonuccharsmax(sonuc), "%s"maplar[0][Mapisim]);

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

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

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

    new 
iMvp GetMvpPlayer();

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

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

public 
mapdegis() {
    if(
is_map_valid(sonuc)) 
        
server_cmd("changelevel %s"sonuc);

    else {
        
client_print_color(0print_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_getDosya "SuanHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );

        
nvault_setDosya "1OncekiHarita" onceki1 );
        
nvault_setDosya "2OncekiHarita" onceki2 );
        
nvault_setDosya "SuanHarita" map );
    }
}

public 
plugin_end() 
    
nvault_closeDosya ); 
Steam: Tıkla
#7
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: 213.238.173.206 | dns: cs6.csduragi.net | ts3: sbwcs6
#8
(11-10-2024, 01: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 MapNumMapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasuremap[32], Dosyag_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(mapcharsmax(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"saatcharsmax(saat));

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

        else if(!
equal(mapdefaultMap)) {
            new 
iMvp GetMvpPlayer();

            
freezeAll();

            
set_task(5.0"ChangeToDefault");

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

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

            
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.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(0print_team_grey"^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!"SERVERISMI);
        
client_print_color(0print_team_grey"^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!"SERVERISMI);
        
client_print_color(0print_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(PlayersiNum"c");
    
SortCustom1D(PlayersiNum"ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1iPlayer2) {
    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 
1<= MaxClientsi++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(ivar_flagsget_entvar(ivar_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(file1);
    if(
maxlines 6) {

        new 
onceki1[32], onceki2[32], i=0;
        
nvault_getDosya "2OncekiHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );
    
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0maxlines);
            
            switch(
i) {
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                case 
: 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(filemaplar[i][MapNum], maplar[i][Mapisim], 31);

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

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

public 
oylama() {
    new 
players[MAX_PLAYERS], numidsi
    
get_players_ex(playersnumGetPlayers_ExcludeBots);

    for(
i=0i<4i++) 
        
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=0i<numi++) {

        
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(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
    
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.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(0ctmenu_koruma);

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

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

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

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

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

            if(
oylamakontrol[id]) 
                
menu_additem(Menundmenu"5");

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

        
menu_setprop(MenuMPROP_EXITNAME"\wCikis");
        
menu_display(idMenu);

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

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

    new 
data[6], key
    
menu_item_getinfo(menuitem_datacharsmax(data));
    
key str_to_num(data);

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

    } else 
        
client_print_color(idid"^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(sonuccharsmax(sonuc), "%s"maplar[0][Mapisim]);

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

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

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

    new 
iMvp GetMvpPlayer();

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

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

public 
mapdegis() {
    if(
is_map_valid(sonuc)) 
        
server_cmd("changelevel %s"sonuc);

    else {
        
client_print_color(0print_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_getDosya "SuanHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );

        
nvault_setDosya "1OncekiHarita" onceki1 );
        
nvault_setDosya "2OncekiHarita" onceki2 );
        
nvault_setDosya "SuanHarita" map );
    }
}

public 
plugin_end() 
    
nvault_closeDosya ); 
Steam: Tıkla
#9
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: 213.238.173.206 | dns: cs6.csduragi.net | ts3: sbwcs6
#10
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 MapNumMapisim[32], Oylamanum };
new 
maplar[4][g_Data], bool:oylamakontrol[MAX_CLIENTS+1], sonuc[32], oylamasuremap[32], Dosyag_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(mapcharsmax(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"saatcharsmax(saat));

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

        else if(!
equal(mapdefaultMap)) {
            new 
iMvp GetMvpPlayer();

            
freezeAll();

            
set_task(5.0"ChangeToDefault");

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

            
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.0);
            
ShowSyncHudMsg(0iSyncObj"Oyuncu sayisi az oldugu icin %s mapi aciliyor!"defaultMap);
        }

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

        
client_print_color(0print_team_grey"^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!"SERVERISMI);
        
client_print_color(0print_team_grey"^1[^3%s^1]^4 Takimlar yer degisti ve restart atiliyor!"SERVERISMI);
        
client_print_color(0print_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(PlayersiNum"ch");
    
SortCustom1D(PlayersiNum"ListPlayers");

    return 
Players[0];
}

/* scuro */
public ListPlayers(iPlayer1iPlayer2) {
    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 
1<= MaxClientsi++) {
        if(
is_user_connected(i) && is_user_alive(i)) {
            
set_entvar(ivar_flagsget_entvar(ivar_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(file1);
    if(
maxlines 6) {

        new 
onceki1[32], onceki2[32], i=0;
        
nvault_getDosya "2OncekiHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );
    
        while(
i<4) {
            
maplar[i][MapNum] = random_num(0maxlines);
            
            switch(
i) {
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum]) continue;
                case 
: if(maplar[i-1][MapNum] == maplar[i][MapNum] || maplar[i-2][MapNum] == maplar[i][MapNum]) continue;
                case 
: 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(filemaplar[i][MapNum], maplar[i][Mapisim], 31);

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

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

public 
oylama() {
    new 
players[MAX_PLAYERS], numidsi
    
get_players_ex(playersnumGetPlayers_ExcludeBots);

    for(
i=0i<4i++) 
        
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=0i<numi++) {

        
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(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
client_print_color(0print_team_grey"^1[^3%s^1]^4 Map oylamasi basladi.^3 15 saniye^4 sonra oylama bitecektir!"SERVERISMI);
    
    
set_hudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.2000.010.0);
    
ShowSyncHudMsg(0iSyncObj"Map oylamasi basladi. 15 saniye sonra oylama bitecektir!");

    
client_cmd(0"stopsound"), set_task(0.1"caldir");
}

public 
caldir()
    
rg_send_audio(0ctmenu_koruma);

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

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

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

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

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

            if(
oylamakontrol[id]) 
                
menu_additem(Menundmenu"5");

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

        
menu_setprop(MenuMPROP_EXITNAME"\wCikis");
        
menu_display(idMenu);

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

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

    new 
data[6], key
    
menu_item_getinfo(menuitem_datacharsmax(data));
    
key str_to_num(data);

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

    } else 
        
client_print_color(idid"^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(sonuccharsmax(sonuc), "%s"maplar[0][Mapisim]);

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

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

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

    new 
iMvp GetMvpPlayer();

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

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

public 
mapdegis() {
    if(
is_map_valid(sonuc)) 
        
server_cmd("changelevel %s"sonuc);

    else {
        
client_print_color(0print_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_getDosya "SuanHarita" onceki1 charsmax(onceki1) );
        
nvault_getDosya "1OncekiHarita" onceki2 charsmax(onceki2) );

        
nvault_setDosya "1OncekiHarita" onceki1 );
        
nvault_setDosya "2OncekiHarita" onceki2 );
        
nvault_setDosya "SuanHarita" map );
    }
}

public 
plugin_end() 
    
nvault_closeDosya ); 
Steam: Tıkla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task
Kayıt Ol