⭐🚀 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 Aynı Maplar Dönüyor.

Map oylama eklentisi aynı maplar dönüyor.
Merhaba aynı haritalar dönmekte yani 2 el önceki haritayı tekrar başlatıyor bazen oylamada , hemen hemen belli haritalarda sürekli dönmekte.
eklenti oynanan mapları "ze_playedmaps.ini" içine ekliyor oylamada o listede ise oylamıyor taki listedeki son harita kalana kadar mantığı ile yazılmış eklenti ancak 1 el önceki map yada 2 el önceki map veya listenin ilk 20 haritası vs oylamada çıkıyor.Problem nerede düzeltme şansımız varmıdır.

PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <zombie_escape>
#include <amx_settings_api>

#pragma compress 1 

#define PLUGIN "Map Vote System"
#define VERSION "FINAL"
#define AUTHOR "Jenessee"

new Array:Array_hours, Array:Array_modes, Array:Array_mapMinute, Array:Array_mapBunny, Array:Array_mapJump, Array:Array_mapParachute, Array:Array_expMultiplier, Array:Array_tokenMultiplier;
new Array:
Array_mapNames, Array:Array_mapMode;
new Array:
Array_mapsPlayed, Array:Array_modesPlayed;
new Array:
ArrayHours, Array:ArrayInstaVote;
new 
startHour;
new Array:
Array_mapsSelected, Array:Array_mapsSelectedName;
new 
bool:menuActive[MAX_PLAYERS + 1];
new 
mapMenu = INVALID_HANDLE;
new 
voteTime;

public 
plugin_init()
{
    
register_plugin(PLUGIN, VERSION, AUTHOR);

    
register_dictionary(LANGUAGE_FILE);

    new 
hour[4]; get_time("%H", hour, charsmax(hour));
    
startHour = str_to_num(hour);
    if(
startHour == 0) startHour = -1;
    
    new 
mapName[32]; get_mapname(mapName, charsmax(mapName));
    
ArrayHours = ArrayCreate(1, 1);
    
ArrayInstaVote = ArrayCreate(1, 1);
    
Array_hours = ArrayCreate(1, 1);
    
Array_modes = ArrayCreate(1, 1);
    
Array_expMultiplier = ArrayCreate(1, 1);
    
Array_tokenMultiplier = ArrayCreate(1, 1);
    
Array_mapMinute = ArrayCreate(1, 1);
    
Array_mapBunny = ArrayCreate(1, 1);
    
Array_mapJump = ArrayCreate(1, 1);
    
Array_mapParachute = ArrayCreate(1, 1);
    
Load_Hours_Modes();

    
Array_mapsPlayed = ArrayCreate(32, 1);
    
Array_modesPlayed = ArrayCreate(32, 1);
    
Load_Old_Maps();

    
Array_mapNames = ArrayCreate(32, 1);
    
Array_mapMode = ArrayCreate(32, 1);
    
Load_Mode_Maps();

    if(
ArraySize(Array_modes))
    {
        new 
bool:found;
        new Array:
modes = Array:ArrayGetCell(Array_modes, ArraySize(Array_modes)-1);
        if(
ArraySize(modes))
        {
            for(new 
arrayIndex = 0, modPlayed[32]; arrayIndex < ArraySize(modes); arrayIndex++)
            {
                
ArrayGetString(modes, arrayIndex, modPlayed, charsmax(modPlayed));
                for(new 
index = 0, mapName2[32], modName2[32]; index < ArraySize(Array_mapNames); index++)
                {
                    
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
                    if(
equal(mapName, mapName2))
                    {
                        
ArrayGetString(Array_mapMode, index, modName2, charsmax(modName2));
                        if(
equal(modPlayed, modName2))
                        {
                            for(new 
index2 = ArraySize(Array_mapsPlayed)-1, mapPlayed2[32], modPlayed2[32]; index2 >= 0; index2--)
                            {
                                
ArrayGetString(Array_modesPlayed, index2, modPlayed2, charsmax(modPlayed2));
                                
ArrayGetString(Array_mapsPlayed, index2, mapPlayed2, charsmax(mapPlayed2));

                                if(
equal(mapPlayed2, mapName2) && equal(modPlayed2, modName2))
                                {
                                    
found = true;
                                }
                            }

                            if(!
found)
                            {
                                
ArrayPushString(Array_mapsPlayed, mapName);
                                
ArrayPushString(Array_modesPlayed, modPlayed);
                                
Save_Map_Played(true);
                            } 
                            
                            
found = false;
                        }
                    }
                }
            }
        }
    }

    
ArrayClear(Array_mapNames);
    
ArrayClear(Array_mapMode);

    if(
equali(mapName, "fy_iceworld16"))
    {
        
remove_task(TASK_MAP_TIMELEFT, 1);
        
remove_task(TASK_MAP_TIMEEND, 1);

        
Load_Hours_Modes();
        
Load_Mode_Maps();

        if(
ArraySize(Array_modes))
        {
            new Array:
modes = Array:ArrayGetCell(Array_modes, ArraySize(Array_modes)-1);
            if(
ArraySize(modes))
            {
                for(new 
arrayIndex = 0, modPlayed[32]; arrayIndex < ArraySize(modes); arrayIndex++)
                {
                    
ArrayGetString(modes, arrayIndex, modPlayed, charsmax(modPlayed));
                    for(new 
index = ArraySize(Array_mapNames)-1, mapName2[32], modName2[32]; index >= 0; index--)
                    {
                        
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
                        
ArrayGetString(Array_mapMode, index, modName2, charsmax(modName2));
                        for(new 
index2 = ArraySize(Array_mapsPlayed)-1, mapPlayed2[32], modPlayed2[32]; index2 >= 0; index2--)
                        {
                            
ArrayGetString(Array_modesPlayed, index2, modPlayed2, charsmax(modPlayed2));
                            
ArrayGetString(Array_mapsPlayed, index2, mapPlayed2, charsmax(mapPlayed2));

                            if(
equal(mapPlayed2, mapName2) && equal(modPlayed2, modName2))
                            {
                                
ArrayDeleteItem(Array_mapNames, index);
                                
ArrayDeleteItem(Array_mapMode, index);
                            }
                        }
                    }
                }
            }
        }

        if(!
ArraySize(Array_mapNames))
        {
            
Save_Map_Played(false);
            
Load_Mode_Maps();
        }

        if(!
ArraySize(Array_mapNames))
        {
            return;
        }

        new Array:
Array_MapNames = ArrayCreate(32, 1);
        for(new 
index = ArraySize(Array_mapNames)-1; index >= 0; index--)
        {
            
ArrayGetString(Array_mapNames, index, mapName, charsmax(mapName));
            if(
ArrayFindString(Array_MapNames, mapName) != -1)
                continue;

            
ArrayPushString(Array_MapNames, mapName);
        }

        if(
ArraySize(Array_MapNames))
        {
            
ArrayGetString(Array_MapNames, random_num(0, ArraySize(Array_MapNames)-1), mapName, charsmax(mapName));
            
            
server_cmd("amx_map %s", mapName);
            
plugin_end();
        }
        
ArrayDestroy(Array_MapNames);
        return;
    }

    
set_task(5.0, "Task_Check_TimeLeft", TASK_MAP_TIMELEFT, .flags = "b");
}

public 
plugin_end()
{
    
Load_Hours_Modes();
    
    if(
ArraySize(Array_mapBunny))
    {
        if(
ArrayGetCell(Array_mapBunny, ArraySize(Array_mapBunny)-1) > 0) 
        {
            
server_cmd("ze_bunny 1");
        } else {
            
server_cmd("ze_bunny 0");
        }
    }
    
    if(
ArraySize(Array_mapJump))
    {
        if(
ArrayGetCell(Array_mapJump, ArraySize(Array_mapJump)-1) > 0) 
        {
            
server_cmd("ze_triplejump 1");
        } else {
            
server_cmd("ze_triplejump 0");
        }
    }

    if(
ArraySize(Array_mapParachute))
    {
        if(
ArrayGetCell(Array_mapParachute, ArraySize(Array_mapParachute)-1) > 0) 
        {
            
server_cmd("ze_parachute 1");
        } else {
            
server_cmd("ze_parachute 0");
        }
    }

    if(
ArraySize(Array_tokenMultiplier))
    {
        
server_cmd("ze_token_multiplier %0.1f", Float:ArrayGetCell(Array_tokenMultiplier, ArraySize(Array_tokenMultiplier)-1));
    }

    if(
ArraySize(Array_expMultiplier))
    {
        
server_cmd("ze_exp_multiplier %0.1f", Float:ArrayGetCell(Array_expMultiplier, ArraySize(Array_expMultiplier)-1));
    }

    if(
ArraySize(Array_mapMinute))
    {
        
server_cmd("mp_timelimit %i", ArrayGetCell(Array_mapMinute, ArraySize(Array_mapMinute)-1));
    }
}

public 
Task_Check_TimeLeft()
{
    new 
hour[4]; get_time("%H", hour, charsmax(hour));
    new 
currentHour = str_to_num(hour);
    if(
currentHour == 0) currentHour = -1;
    if(
startHour != currentHour)
    {
        new 
arrayIndex;
        if((
arrayIndex = ArrayFindValue(ArrayHours, currentHour)) != -1)
        {
            if(
ArrayGetCell(ArrayInstaVote, arrayIndex) > 0)
            {
                
remove_task(TASK_MAP_TIMELEFT, 1);
                
set_task(1.0, "Task_Map_TimeEnd", TASK_MAP_TIMEEND, .flags = "b");

                
server_cmd("mp_timelimit 0");
                return;
            }
        }
    }

    if(
get_timeleft() <= 0 || get_timeleft() > 10)
        return;
 
    
remove_task(TASK_MAP_TIMELEFT, 1);
    
set_task(1.0, "Task_Map_TimeEnd", TASK_MAP_TIMEEND, .flags = "b");

    
server_cmd("mp_timelimit 0");
}

public 
Task_Map_TimeEnd(){}
public 
OnRoundStateChanged(const roundStates:oldState, const roundStates:newState)
{
    switch(
newState)
    {
        case 
ROUND_DRAW, ROUND_HUMANWIN, ROUND_ZOMBIEWIN:
        {
            if(
task_exists(TASK_MAP_TIMEEND, 1))
            {
                
remove_task(TASK_MAP_TIMEEND, 1);

                
Load_Hours_Modes();
                
Load_Mode_Maps();

                if(
ArraySize(Array_modes))
                {
                    new Array:
modes = Array:ArrayGetCell(Array_modes, ArraySize(Array_modes)-1);
                    if(
ArraySize(modes))
                    {
                        for(new 
arrayIndex = 0, modPlayed[32]; arrayIndex < ArraySize(modes); arrayIndex++)
                        {
                            
ArrayGetString(modes, arrayIndex, modPlayed, charsmax(modPlayed));
                            for(new 
index = ArraySize(Array_mapNames)-1, mapName2[32], modName2[32]; index >= 0; index--)
                            {
                                
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
                                
ArrayGetString(Array_mapMode, index, modName2, charsmax(modName2));
                                for(new 
index2 = ArraySize(Array_mapsPlayed)-1, mapPlayed2[32], modPlayed2[32]; index2 >= 0; index2--)
                                {
                                    
ArrayGetString(Array_modesPlayed, index2, modPlayed2, charsmax(modPlayed2));
                                    
ArrayGetString(Array_mapsPlayed, index2, mapPlayed2, charsmax(mapPlayed2));

                                    if(
equal(mapPlayed2, mapName2) && equal(modPlayed2, modName2))
                                    {
                                        
ArrayDeleteItem(Array_mapNames, index);
                                        
ArrayDeleteItem(Array_mapMode, index);
                                    }
                                }
                            }
                        }
                    }
                }

                if(!
ArraySize(Array_mapNames))
                {
                    
Save_Map_Played(false);
                    
Load_Mode_Maps();
                }

                if(!
ArraySize(Array_mapNames))
                {
                    
server_cmd("mp_timelimit 1");
                    return;
                }

                
Create_Map_Menu();
                if(
mapMenu != INVALID_HANDLE)
                {
                    
set_task(1.0, "Task_Map_VoteTime", TASK_MAP_TIMEEND, .flags = "b");
                    for(new 
arrayIndex = ArraySize(Array_PlayerList_Connected())-1, playerIndex; arrayIndex >= 0; arrayIndex--)
                    {
                        
playerIndex = ArrayGetCell(Array_PlayerList_Connected(), arrayIndex);
                    
                        
menuActive[playerIndex] = true;
                        
Show_MapMenu(playerIndex);
                    }
                }
            }
        }
    }
}

public 
Show_MapMenu(const clientIndex)
{
    if(!
is_player_connected(clientIndex) || !menuActive[clientIndex])
        return;

    
menu_setprop(mapMenu, MPROP_TITLE, fmt("%L", clientIndex, "MENU_MAP_TITLE", voteTime));
    
menu_setprop(mapMenu, MPROP_BACKNAME, fmt("\w%L", clientIndex, "MENU_BACK"));
    
menu_setprop(mapMenu, MPROP_NEXTNAME, fmt("\w%L", clientIndex, "MENU_NEXT"));
    
menu_setprop(mapMenu, MPROP_EXITNAME, fmt("\w%L", clientIndex, "MENU_EXIT"));
    
menu_display(clientIndex, mapMenu);
}

public 
Task_Map_VoteTime()
{
    if(--
voteTime <= 0)
    {
        
remove_task(TASK_MAP_TIMEEND, 1);
        new 
mapName[32], biggest = -1;
        for(new 
index = 0; index < ArraySize(Array_mapsSelected); index++)
        {
            if(
biggest == -1 || biggest < ArrayGetCell(Array_mapsSelected, index))
            {
                
biggest = ArrayGetCell(Array_mapsSelected, index);
                
ArrayGetString(Array_mapsSelectedName, index, mapName, charsmax(mapName));
            }
        }

        if(
biggest == -1)
        {
            
server_cmd("mp_timelimit 1");
        } else {
            for(new 
arrayIndex = ArraySize(Array_PlayerList_Connected())-1, playerIndex; arrayIndex >= 0; arrayIndex--)
            {
                
playerIndex = ArrayGetCell(Array_PlayerList_Connected(), arrayIndex);
            
                new 
modesName[128];
                for(new 
index = ArraySize(Array_mapNames)-1, modeName2[32], mapName2[32]; index >= 0; index--)
                {
                    
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
                    if(!
equal(mapName, mapName2))
                        continue;

                    
ArrayGetString(Array_mapMode, index, modeName2, charsmax(modeName2));
                    if(
strlen(modesName)) format(modesName, charsmax(modesName), "%s, %L", modesName, playerIndex, modeName2);
                    else 
formatex(modesName, charsmax(modesName), "%L", playerIndex, modeName2);
                }
                
Color_Chat(playerIndex, 0, "!g[%s]!n %L", Mod_Name, playerIndex, "MENU_MAP_CHANGING", mapName, biggest, modesName);
            }
            
set_task(3.0, "Task_Change_Level", TASK_MAP_TIMEEND);
        }    
        return;
    }
    
    for(new 
arrayIndex = ArraySize(Array_PlayerList_Connected())-1, playerIndex; arrayIndex >= 0; arrayIndex--)
    {
        
playerIndex = ArrayGetCell(Array_PlayerList_Connected(), arrayIndex);
        
Show_MapMenu(playerIndex);
    }
}

public 
Task_Change_Level()
{
    new 
mapName[32], biggest = -1;
    for(new 
index = 0; index < ArraySize(Array_mapsSelected); index++)
    {
        if(
biggest == -1 || biggest < ArrayGetCell(Array_mapsSelected, index))
        {
            
biggest = ArrayGetCell(Array_mapsSelected, index);
            
ArrayGetString(Array_mapsSelectedName, index, mapName, charsmax(mapName));
        }
    }

    
server_cmd("amx_map %s", mapName);
    
plugin_end();
}

Load_Old_Maps()
{
    new 
path[64]; get_configsdir(path, charsmax(path));
    
format(path, charsmax(path), "%s/%s", path, OLDMAPS_FILE);

    if(!
file_exists(path))
    {
        return;
    }

    
ArrayClear(Array_mapsPlayed);
    
ArrayClear(Array_modesPlayed);

    new 
modeName[32];
    new 
linedata[1024], File = fopen(path, "rt");
    while(
File && !feof(File))
    {
        
fgets(File, linedata, charsmax(linedata));
        
replace(linedata, charsmax(linedata), "^n", "");
        if(!
linedata[0] || linedata[0] == ';') continue;

        if(
linedata[0] == '[')
        {
            
copyc(linedata, charsmax(linedata), linedata[1], ']')
            
copy(modeName, charsmax(modeName), linedata);
            continue;
        }

        
ArrayPushString(Array_mapsPlayed, linedata);
        
ArrayPushString(Array_modesPlayed, modeName);
    }

    if(
File) fclose(File);
}

Load_Mode_Maps()
{
    new 
path[64]; get_configsdir(path, charsmax(path));
    
format(path, charsmax(path), "%s/%s", path, MODES_FILE);

    if (!
file_exists(path))
    {
        new 
Error[100]; formatex(Error, charsmax(Error), "[AMXX] Can't read file (%s)", path);
        
set_fail_state(Error);
        return;
    }

    
ArrayClear(Array_mapNames);
    
ArrayClear(Array_mapMode);

    new 
modeName[32];
    new 
linedata[1024], key[64], value[960], File = fopen(path, "rt");
    while(
File && !feof(File))
    {
        
fgets(File, linedata, charsmax(linedata));
        
replace(linedata, charsmax(linedata), "^n", "");
        if(!
linedata[0] || linedata[0] == ';') continue;

        if(
linedata[0] == '[')
        {
            
copyc(linedata, charsmax(linedata), linedata[1], ']')
            
copy(modeName, charsmax(modeName), "");
            if(!
ArraySize(Array_modes))
                continue;
            if(
ArrayFindString(Array:ArrayGetCell(Array_modes, ArraySize(Array_modes)-1), linedata) == -1)
            {
                continue;
            }

            
copy(modeName, charsmax(modeName), linedata);
            continue;
        }

        if(!
strlen(modeName))
            continue;

        if(
linedata[0] == '_')
        {
            
strtok(linedata[1], key, charsmax(key), value, charsmax(value), '=');
            
trim(key);
            
trim(value);

            if(
str_to_num(value))
            {
                
ArrayPushString(Array_mapNames, key);
                
ArrayPushString(Array_mapMode, modeName);
            }
        }
    }

    if(
File) fclose(File);
}

Load_Hours_Modes()
{
    new 
path[64]; get_configsdir(path, charsmax(path));
    
format(path, charsmax(path), "%s/%s", path, HOURS_FILE);

    if (!
file_exists(path))
    {
        new 
Error[100]; formatex(Error, charsmax(Error), "[AMXX] Can't read file (%s)", path);
        
set_fail_state(Error);
        return;
    }

    new 
hour[4]; get_time("%H", hour, charsmax(hour))
    new 
currentHour = str_to_num(hour);
    new 
modeHour;

    
ArrayClear(ArrayHours);
    
ArrayClear(ArrayInstaVote);
    
    new Array:
ArrayModes = ArrayCreate(1, 1);
    new Array:
ArrayExp = ArrayCreate(1, 1);
    new Array:
ArrayToken = ArrayCreate(1, 1);
    new Array:
ArrayBunny = ArrayCreate(1, 1);
    new Array:
ArrayJump = ArrayCreate(1, 1);
    new Array:
ArrayParachute = ArrayCreate(1, 1);
    new Array:
ArrayMapMinutes = ArrayCreate(1, 1);
    new 
linedata[1024], File = fopen(path, "rt");
    while(
File && !feof(File))
    {
        
fgets(File, linedata, charsmax(linedata));
        
replace(linedata, charsmax(linedata), "^n", "");
        if(!
linedata[0] || linedata[0] == ';') continue;

        if(
linedata[0] == '[')
        {
            
copyc(linedata, charsmax(linedata), linedata[1], ']')
            
modeHour = clamp(str_to_num(linedata), 0, 24);
            if(
modeHour == 0) modeHour = -1;
            if(
ArrayFindValue(ArrayHours, modeHour) == -1)
            {
                new 
arrayIndex = ArrayPushCell(ArrayHours, modeHour);
                new Array:
Array_modeHours = ArrayCreate(32, 1);
                
amx_load_setting_string_arr(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "MODES", Array_modeHours);
                
ArrayPushCell(ArrayModes, Array_modeHours);

                new 
instaVote; amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "INSTA VOTE", instaVote);
                if(
instaVote == 0) instaVote = -1;
                
ArrayPushCell(ArrayInstaVote, instaVote);

                new 
Float:expMultiplier; amx_load_setting_float(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "EXP MULTIPLIER", expMultiplier);
                if(
expMultiplier == 0.0) expMultiplier = -1.0;
                
ArrayPushCell(ArrayExp, expMultiplier);

                new 
Float:tokenMultiplier; amx_load_setting_float(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "TOKEN MULTIPLIER", tokenMultiplier);
                if(
tokenMultiplier == 0.0) tokenMultiplier = -1.0;
                
ArrayPushCell(ArrayToken, tokenMultiplier);

                new 
minute; amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "MAP MINUTE", minute);
                if(
minute == 0) minute = -1;
                
ArrayPushCell(ArrayMapMinutes, minute);

                new 
bunny; amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "BUNNY ACTIVE", bunny);
                if(
bunny == 0) bunny = -1;
                
ArrayPushCell(ArrayBunny, bunny);

                new 
jump; amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "TRIPLE JUMP ACTIVE", jump);
                if(
jump == 0) jump = -1;
                
ArrayPushCell(ArrayJump, jump);

                new 
parachute; amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "PARACHUTE ACTIVE", parachute);
                if(
parachute == 0) parachute = -1;
                
ArrayPushCell(ArrayParachute, parachute);

                new Array:
Array_modeHours2 = ArrayCreate(32, 1);
                if(
amx_load_setting_string_arr(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "MODES2", Array_modeHours2) && ArraySize(Array_modeHours2))
                {
                    new 
bool:sameMod;
                    if(
ArraySize(Array_hours))
                    {
                        if(
modeHour == ArrayGetCell(Array_hours, ArraySize(Array_hours)-1))
                        {
                            
sameMod = true;
                        }
                    } 

                    if(
sameMod)
                    {
                        new 
Float:expMultiplier2;
                        if(
amx_load_setting_float(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "EXP MULTIPLIER2", expMultiplier2))
                        {
                            if(
expMultiplier2 == 0.0) expMultiplier2 = -1.0;
                            
ArrayDeleteItem(ArrayExp, arrayIndex);
                            
ArrayPushCell(ArrayExp, expMultiplier2);
                        }

                        new 
Float:tokenMultiplier2;
                        if(
amx_load_setting_float(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "TOKEN MULTIPLIER2", tokenMultiplier2))
                        {
                            if(
tokenMultiplier2 == 0.0) tokenMultiplier2 = -1.0;
                            
ArrayDeleteItem(ArrayToken, arrayIndex);
                            
ArrayPushCell(ArrayToken, tokenMultiplier2);
                        }

                        new 
minute2; 
                        if(
amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "MAP MINUTE2", minute2))
                        {
                            if(
minute2 == 0) minute2 = -1;
                            
ArrayDeleteItem(ArrayMapMinutes, arrayIndex);
                            
ArrayPushCell(ArrayMapMinutes, minute2);
                        }

                        new 
bunny2; 
                        if(
amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "BUNNY ACTIVE2", bunny2))
                        {
                            if(
bunny2 == 0) bunny2 = -1;
                            
ArrayDeleteItem(ArrayBunny, arrayIndex);
                            
ArrayPushCell(ArrayBunny, bunny2);
                        }

                        new 
jump2; 
                        if(
amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "TRIPLE JUMP ACTIVE2", jump2))
                        {
                            if(
jump2 == 0) jump2 = -1;
                            
ArrayDeleteItem(ArrayJump, arrayIndex);
                            
ArrayPushCell(ArrayJump, jump2);
                        }

                        new 
parachute2; 
                        if(
amx_load_setting_int(HOURS_FILE, fmt("%i", modeHour == -1 ? 0 : modeHour), "PARACHUTE ACTIVE2", parachute2))
                        {
                            if(
parachute2 == 0) parachute2 = -1;
                            
ArrayDeleteItem(ArrayParachute, arrayIndex);
                            
ArrayPushCell(ArrayParachute, parachute2);
                        }

                        new Array:
ArrayModesDelete = Array:ArrayGetCell(ArrayModes, arrayIndex);
                        
ArrayDestroy(ArrayModesDelete);
                        
ArrayDeleteItem(ArrayModes, arrayIndex);
                        
ArrayPushCell(ArrayModes, Array_modeHours2);
                    } else {
                        
ArrayDestroy(Array_modeHours2);
                    }
                } else {
                    
ArrayDestroy(Array_modeHours2);
                }
            } 
        }
    }

    if(
File) fclose(File);

    
ArrayClear(Array_hours);
    
ArrayClear(Array_mapMinute);
    
ArrayClear(Array_expMultiplier);
    
ArrayClear(Array_tokenMultiplier);
    
ArrayClear(Array_mapBunny);
    
ArrayClear(Array_mapJump);
    
ArrayClear(Array_mapParachute);
    for(new 
arrayIndex = ArraySize(Array_modes)-1, Array:deleteArrays; arrayIndex >= 0; arrayIndex--)
    {
        
deleteArrays = Array:ArrayGetCell(Array_modes, arrayIndex);
        
ArrayDestroy(deleteArrays);
    }    
    
ArrayClear(Array_modes);

    if(
ArraySize(ArrayHours))
    {
        for(new 
searchValue = -1, arrayIndex; searchValue <= 24; searchValue++)
        {
            if(
searchValue == 0)
                continue;
            if((
arrayIndex = ArrayFindValue(ArrayHours, searchValue)) == -1)
                continue;
            
            
ArrayPushCell(Array_hours, ArrayGetCell(ArrayHours, arrayIndex));
            
ArrayPushCell(Array_mapMinute, arrayIndex);
        }

        new 
selectedArray = NULLENT;
        new 
arrayIndex;
        for(
arrayIndex = 0; arrayIndex < ArraySize(Array_hours); arrayIndex++)
        {
            if(
currentHour < ArrayGetCell(Array_hours, arrayIndex))
                continue;

            
selectedArray = ArrayGetCell(Array_mapMinute, arrayIndex);
        }

        if(
selectedArray == NULLENT)
        {
            
arrayIndex = ArraySize(Array_hours)-1;
            
selectedArray = ArrayGetCell(Array_mapMinute, arrayIndex);
        }
        
        
ArrayClear(Array_hours);
        
ArrayClear(Array_mapMinute);

        
ArrayPushCell(Array_hours, ArrayGetCell(ArrayHours, selectedArray));
        
ArrayPushCell(Array_expMultiplier, Float:ArrayGetCell(ArrayExp, selectedArray));
        
ArrayPushCell(Array_tokenMultiplier, Float:ArrayGetCell(ArrayToken, selectedArray));
        
ArrayPushCell(Array_mapMinute, ArrayGetCell(ArrayMapMinutes, selectedArray));
        
ArrayPushCell(Array_mapBunny, ArrayGetCell(ArrayBunny, selectedArray));
        
ArrayPushCell(Array_mapJump, ArrayGetCell(ArrayJump, selectedArray));
        
ArrayPushCell(Array_mapParachute, ArrayGetCell(ArrayParachute, selectedArray));
        new Array:
saveModes = ArrayClone(Array:ArrayGetCell(ArrayModes, selectedArray));
        
ArrayPushCell(Array_modes, saveModes);
    }

    
ArrayDestroy(ArrayExp);
    
ArrayDestroy(ArrayToken);
    
ArrayDestroy(ArrayMapMinutes);
    
ArrayDestroy(ArrayBunny);
    
ArrayDestroy(ArrayJump);
    
ArrayDestroy(ArrayParachute);
    for(new 
arrayIndex = ArraySize(ArrayModes)-1, Array:deleteArrays; arrayIndex >= 0; arrayIndex--)
    {
        
deleteArrays = Array:ArrayGetCell(ArrayModes, arrayIndex);
        
ArrayDestroy(deleteArrays);
    }    
    
ArrayDestroy(ArrayModes);
}

Save_Map_Played(bool:Save)
{
    new 
path[64]; get_configsdir(path, charsmax(path));
    
format(path, charsmax(path), "%s", path);

    if(!(
dir_exists(path)))
    {
        
mkdir(path);
    }

    
format(path, charsmax(path), "%s/%s", path, OLDMAPS_FILE);

    
delete_file(path);

    if(!
Save)
    {
        new 
iFile = fopen(path, "a+");
        if(
iFile)
        {
            for(new 
arrayIndex = ArraySize(Array_mapsPlayed)-1, mapPlayed[32], modPlayed[32]; arrayIndex >= 0; arrayIndex--)
            {
                
ArrayGetString(Array_modesPlayed, arrayIndex, modPlayed, charsmax(modPlayed));
                if(
ArraySize(Array_modes))
                {
                    if(
ArrayFindString(Array:ArrayGetCell(Array_modes, ArraySize(Array_modes)-1), modPlayed) != -1)
                    {
                        
ArrayDeleteItem(Array_mapsPlayed, arrayIndex);
                        
ArrayDeleteItem(Array_modesPlayed, arrayIndex);
                        continue;
                    }
                }

                
ArrayGetString(Array_mapsPlayed, arrayIndex, mapPlayed, charsmax(mapPlayed));
                
fprintf(iFile, "^n[%s]^n", modPlayed);
                
fprintf(iFile, "%s^n", mapPlayed);
            }

            
fclose(iFile);
            return;
        }    
    }    

    new 
iFile = fopen(path, "a+");
    if(
iFile)
    {
        for(new 
arrayIndex = ArraySize(Array_mapsPlayed)-1, mapPlayed[32], modPlayed[32]; arrayIndex >= 0; arrayIndex--)
        {
            
ArrayGetString(Array_mapsPlayed, arrayIndex, mapPlayed, charsmax(mapPlayed));
            
ArrayGetString(Array_modesPlayed, arrayIndex, modPlayed, charsmax(modPlayed));

            
fprintf(iFile, "^n[%s]^n", modPlayed);
            
fprintf(iFile, "%s^n", mapPlayed);
        }

        
fclose(iFile);
    }    
   
}

Create_Map_Menu()
{
    
Array_mapsSelected = ArrayCreate(6, 1);
    
Array_mapsSelectedName = ArrayCreate(32, 1);
    
voteTime = 15;

    new 
menuTitle[64]; formatex(menuTitle, charsmax(menuTitle), "-"); 
    
mapMenu = menu_create(menuTitle, "MenuHandle_Map");
    new 
iCallback = menu_makecallback("MenuCallback_Map");

    new Array:
Array_MapNames = ArrayCreate(32, 1);
    for(new 
index = ArraySize(Array_mapNames)-1, mapName[32]; index >= 0; index--)
    {
        
ArrayGetString(Array_mapNames, index, mapName, charsmax(mapName));
        if(
ArrayFindString(Array_MapNames, mapName) != -1)
            continue;

        
ArrayPushString(Array_MapNames, mapName);
    }

    
menu_additem(mapMenu, "-", "one", _, iCallback);
    new 
mapName[32], index, mapCount = min(5, ArraySize(Array_MapNames));
    while(
index < mapCount)
    {
        
ArrayGetString(Array_MapNames, random_num(0, ArraySize(Array_MapNames)-1), mapName, charsmax(mapName));
        if(
ArrayFindString(Array_mapsSelectedName, mapName) != -1)
            continue;

        
menu_additem(mapMenu, mapName, fmt("%i", index), _, iCallback);
        
ArrayPushString(Array_mapsSelectedName, mapName);
        
ArrayPushCell(Array_mapsSelected, 0);
        
index++;
    }
    
ArrayDestroy(Array_MapNames);
    
menu_setprop(mapMenu, MPROP_EXIT, MEXIT_NEVER);
}

public 
MenuCallback_Map(const clientIndex, const iMenu, const Item)
{
    new 
szInfo[6];
    
menu_item_getinfo(iMenu, Item, _, szInfo, charsmax(szInfo), _, _, _);

    new 
mapName[32];
    if(
equal(szInfo, "one"))
    {
        new 
biggest = -1;
        for(new 
index = 0; index < ArraySize(Array_mapsSelected); index++)
        {
            if(
biggest == -1 || biggest < ArrayGetCell(Array_mapsSelected, index))
            {
                
biggest = ArrayGetCell(Array_mapsSelected, index);
                
ArrayGetString(Array_mapsSelectedName, index, mapName, charsmax(mapName));
            }
        }

        if(
biggest == -1) menu_item_setname(iMenu, Item, fmt("%L", clientIndex, "MENU_MAP_NO_MAP_REGISTERED"));
        else 
        {
            new 
modesName[128];
            for(new 
index = ArraySize(Array_mapNames)-1, modeName2[32], mapName2[32]; index >= 0; index--)
            {
                
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
                if(!
equal(mapName, mapName2))
                    continue;

                
ArrayGetString(Array_mapMode, index, modeName2, charsmax(modeName2));
                if(
strlen(modesName)) format(modesName, charsmax(modesName), "%s, %L", modesName, clientIndex, modeName2);
                else 
formatex(modesName, charsmax(modesName), "%L", clientIndex, modeName2);
            }

            
menu_item_setname(iMenu, Item, fmt("%s \y(%i) \r(%s)", mapName, biggest, modesName));
        }
        return 
ITEM_DISABLED;
    }

    new 
mapIndex = str_to_num(szInfo);
    
ArrayGetString(Array_mapsSelectedName, mapIndex, mapName, charsmax(mapName));

    new 
modesName[128];
    for(new 
index = ArraySize(Array_mapNames)-1, modeName2[32], mapName2[32]; index >= 0; index--)
    {
        
ArrayGetString(Array_mapNames, index, mapName2, charsmax(mapName2));
        if(!
equal(mapName, mapName2))
            continue;

        
ArrayGetString(Array_mapMode, index, modeName2, charsmax(modeName2));
        if(
strlen(modesName)) format(modesName, charsmax(modesName), "%s, %L", modesName, clientIndex, modeName2);
        else 
formatex(modesName, charsmax(modesName), "%L", clientIndex, modeName2);
    }
    
menu_item_setname(iMenu, Item, fmt("%s \y(%i) \r(%s)", mapName, ArrayGetCell(Array_mapsSelected, mapIndex), modesName));
    return 
ITEM_ENABLED;
}

public 
MenuHandle_Map(const clientIndex, const iMenu, const iItem)
{
    if(!
is_player_connected(clientIndex) || !voteTime)
        return;
    if(
iItem == MENU_EXIT || iItem < 0)
    {
        return;
    }

    new 
szData[6]; menu_item_getinfo(iMenu, iItem, _, szData, charsmax(szData), _, _, _);
    new 
mapIndex = str_to_num(szData);
    new 
mapName[32]; ArrayGetString(Array_mapsSelectedName, mapIndex, mapName, charsmax(mapName));
    new 
selectCount = ArrayGetCell(Array_mapsSelected, mapIndex)+1;

    
menuActive[clientIndex] = false;
    
ArraySetCell(Array_mapsSelected, mapIndex, selectCount);
    for(new 
arrayIndex = ArraySize(Array_PlayerList_Connected())-1, playerIndex; arrayIndex >= 0; arrayIndex--)
    {
        
playerIndex = ArrayGetCell(Array_PlayerList_Connected(), arrayIndex);

        
Color_Chat(playerIndex, 0, "!g[%s]!n %L", Mod_Name, playerIndex, "MENU_MAP_SELECTED", clientIndex, mapName, selectCount);
        
Show_MapMenu(playerIndex);
    }
} 
RE: Map oylama eklentisi aynı maplar dönüyor.
(26-03-2025, 22:11)EmReiS^ Adlı Kullanıcıdan Alıntı: Merhaba aynı haritalar dönmekte yani 2 el önceki haritayı tekrar başlatıyor bazen oylamada , hemen hemen belli haritalarda sürekli dönmekte.
eklenti oynanan mapları "ze_playedmaps.ini" içine ekliyor oylamada o listede ise oylamıyor taki listedeki son harita kalana kadar mantığı ile yazılmış eklenti ancak 1 el önceki map yada 2 el önceki map veya listenin ilk 20 haritası vs oylamada çıkıyor.Problem nerede düzeltme şansımız varmıdır.
düzeltebiliriz ze_playedmaps.ini kısmından random map çeker bir el onceki haritayı oraya koymaz detayları yazarsanız ayarlamayı yapalım ve kaç map olacak şeklinde vs detaylı yazarsanız iyi olur

.ini dosyanızı ekelmeyi unutmayınız
Son Düzenleme: 26-03-2025, 22:51, Düzenleyen: Merhabalarr
RE: Map oylama eklentisi aynı maplar dönüyor.
map listesini ze_modes.ini den çekiyor.
oynanan haritayı ze_playedmaps.ini de kaydediyor.
harita ze_playedmaps.ini de daha önce yazıldıysa oylamaya koymuyor.

lakin ara sıra aynı haritalıda çekiyor ze_xx1 haritası 2 el önce oynandıysa bidaha oyluyor mesela. Tabi bu durum %100 her zamanda olmuyor yani kayıt etmede kayıttaki mapı çekmede bi problem yaşıyor bazen.

Tüm maplar bitene kadar aynı harita bugün tekrar oylamaya gelmesin.

ze_playedmaps.ini içeriği :

PHP Kod:
[MODE_NEMESIS]
de_pathway

[MODE_INFECTION]
ze_liberation_xmas_dawnx

[MODE_AMONGUS]
amongus_kabul_32

[MODE_INFECTION]
ze_castle_dawnx_rmk

[MODE_NEMESIS]
cs_assault_aged_dawn

[MODE_INFECTION]
ze_watery_escape2022

[MODE_AMONGUS]
amongus_cliffx

[MODE_INFECTION]
ze_forgettenlands_v1

[MODE_NEMESIS]
de_kabul_32

[MODE_INFECTION]
ze_jp4_reverse

[MODE_INFECTION]
ze_altiplano_dgx

[MODE_INFECTION]
ze_isla_nublar_level4_finals

[MODE_NEMESIS]
de_westwood

[MODE_INFECTION]
ze_island_rock_escape_v1

[MODE_INFECTION]
ze_rushed_aztec_e4

[MODE_INFECTION]
ze_military_v1_2024

[MODE_INFECTION]
ze_freezy_xmas_x3x

[MODE_INFECTION]
ze_xmas_city_bp

[MODE_INFECTION]
ze_rock_escapes_dpfixs

[MODE_INFECTION]
ze_ultrapower_surfx

[MODE_INFECTION]
ze_frostworld_tg

[MODE_INFECTION]
ze_isla_nublar_rt

[MODE_INFECTION]
ze_italyinf_2024_dawn_v3

[MODE_INFECTION]
ze_factory_escape_dawnx

[MODE_INFECTION]
ze_emergencydawn_update1

[MODE_INFECTION]
ze_jurassickpark4_dawn_xmass

[MODE_INFECTION]
ze_warz_fearless_v5

[MODE_INFECTION]
ze_isla_nublar_level3_dpfix

[MODE_INFECTION]
ze_minecraftworld2_dg

[MODE_INFECTION]
ze_blacktrain_dawn_2025

[MODE_INFECTION]
ze_rock_escape2_dpfix

[MODE_INFECTION]
ze_trainyard_pg

[MODE_NEMESIS]
de_pathway_dawn3

[MODE_INFECTION]
ze_jurassicpark_battle_dww1

[MODE_INFECTION]
ze_coffeelobbys_ocean_escape_v2

[MODE_NEMESIS]
cs_assault_dawn6

[MODE_INFECTION]
ze_unstopple_strengh_dawn1

[MODE_INFECTION]
ze_darkness_city_2024

[MODE_INFECTION]
ze_paty_escaper_2023

[MODE_INFECTION]
ze_cave_dw_v2

[MODE_INFECTION]
ze_lasthope_2024_v1

[MODE_INFECTION]
ze_lasthope_reverse

[MODE_INFECTION]
ze_longdead_dawn_2024

[MODE_INFECTION]
ze_unmerciful_dawnx

[MODE_INFECTION]
ze_dark_surf_dpfix

[MODE_INFECTION]
ze_atix_panic_v1_fix

[MODE_INFECTION]
ze_forest3_dawn3

[MODE_INFECTION]
ze_portal2_dw

[MODE_INFECTION]
ze_nasa_rocket_shuttlex

[MODE_INFECTION]
ze_jurasicpark3snow_dw

[MODE_INFECTION]
ze_atix_assault_dawn_spring1

[MODE_INFECTION]
ze_dust_escape_rmk_dp

[MODE_INFECTION]
ze_extreme_prox_dawn

[MODE_INFECTION]
ze_parkour_fabi_dawnx

[MODE_CANNIBAL]
dawn_special_mode5

[MODE_TAG]
dawn_special_mode5

[MODE_INFECTION]
ze_orient_v3_fixed

[MODE_INFECTION]
ze_dark_lab_dpfix

[MODE_INFECTION]
ze_houses_v1

[MODE_INFECTION]
ze_green_heaven_dawnx

[MODE_INFECTION]
ze_jurassicpark_edition

[MODE_INFECTION]
ze_area51_dawn

[MODE_INFECTION]
ze_freed_desire_dawnx

[MODE_INFECTION]
ze_black_hawk_dawn 
Son Düzenleme: 26-03-2025, 23:02, Düzenleyen: EmReiS^
RE: Map oylama eklentisi aynı maplar dönüyor.
(26-03-2025, 22:11)EmReiS^ Adlı Kullanıcıdan Alıntı: Merhaba aynı haritalar dönmekte yani 2 el önceki haritayı tekrar başlatıyor bazen oylamada , hemen hemen belli haritalarda sürekli dönmekte.
eklenti oynanan mapları "ze_playedmaps.ini" içine ekliyor oylamada o listede ise oylamıyor taki listedeki son harita kalana kadar mantığı ile yazılmış eklenti ancak 1 el önceki map yada 2 el önceki map veya listenin ilk 20 haritası vs oylamada çıkıyor.Problem nerede düzeltme şansımız varmıdır.
map randommu açılacak

(26-03-2025, 22:11)EmReiS^ Adlı Kullanıcıdan Alıntı: Merhaba aynı haritalar dönmekte yani 2 el önceki haritayı tekrar başlatıyor bazen oylamada , hemen hemen belli haritalarda sürekli dönmekte.
eklenti oynanan mapları "ze_playedmaps.ini" içine ekliyor oylamada o listede ise oylamıyor taki listedeki son harita kalana kadar mantığı ile yazılmış eklenti ancak 1 el önceki map yada 2 el önceki map veya listenin ilk 20 haritası vs oylamada çıkıyor.Problem nerede düzeltme şansımız varmıdır.
 buyrun deneyiniz https://www.webailesi.com/ds-mapvote-14973.sma

Yapılan Değişiklikler
Oylamada son 2 harita asla çıkmaz
Tüm oynanan haritalar mapler.ini'de tutulur (silinmez)
Not: Eğer MAX_RECENT_MAPS 5 yaparsanız, son 5 harita oylamaya çıkmaz!
Oylama süresini 15 dakika yaptım kendinize göre değiştirebilirsiniz
mapler.ini'den rastgele 5 harita seçer
Aynı haritanın tekrar seçilmemesini garantiler
Geri Sayım
15 dakikalık süre başlar
Ekranda dakika saniye şeklinde geri sayım gösterir
Oy Kullanma
Oyuncular menüden harita seçer
Seçim yapınca "[OY] x haritasına oy verdiniz" mesajı alırlar

daha optimize ve daha iyi hali olarak bunu deneyiniz ekranda gereksiz bir hud vardı kaldırdım ve deneyınız extra yaptırmak ıstedıgınız bırsey varsa ekleyın yapalım ayrıca adminler /oylama yazarak oylama baslatabilirler U yetkisine ayarlıdır https://www.webailesi.com/ds-mapvote-14975.sma

eğer mapler.ini dosyasnız var ise gerek yok fakat eklenti zaten kendi bir dosya açıyordu kendi ama siz her ihtimale karşı dosyayı amxmodx/configs/mapler.ini kısmına atmayı unutmayınız.
https://www.webailesi.com/ds-mapler-14976.ini

kodunuzu düzelttim herşey sorunsuz çalışmaktaydı fakat kodda mod seçimi olduğunu farkettim buyrun mode seçimli hali budur deneyip dönersiniz https://www.webailesi.com/ds-webailesi-istek-14978.sma
Anlatım
maplar.ini # Mod-harita eşleşmeleri (EL İLE DÜZENLENİR)
ze_playedmaps.ini # Oynanan mapleri tutar
vote_hours.ini # Özel oylama saatleri
Son Düzenleme: 27-03-2025, 22:36, Düzenleyen: Merhabalarr
RE: Map oylama eklentisi aynı maplar dönüyor.
İstek konusu, @Merhabalarr adlı kullanıcı tarafından 4 gün içinde çözülmüştür.
İsteği çözdüğü için Merhabalarr Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
Merhabalarr Adlı kullanıcı sizin dışınızda toplam 11 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