AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   No players map vote (https://forums.alliedmods.net/showthread.php?t=252796)

ArthHa 12-09-2014 14:21

No players map vote
 
Code:

#include <amxmodx>

#define Plugin "No Players Map"
#define Version "1.0"
#define Author "X-factor"


new cv_clients
new bool:good_maps

public plugin_init()
{
    register_plugin(Plugin, Version, Author)
    cv_clients = register_cvar("nomap_players", "6")
    set_task(20.0, "check_players", 0, _, _, "b")
   
    new szMapname[64];
    get_mapname(szMapname, 63)
   
    if (equali(szMapname, "cs_max") || equali(szMapname, "de_dust2_2x2") || equali(szMapname, "de_dust2_2x2_winter") || equali(szMapname, "de_inferno_2x2_winter") || equali(szMapname, "fy_snow") || equali(szMapname, "fy_pool_day") || equali(szMapname, "awp_india"))
    {
        good_maps = true
    }
}

public check_players()
{
    if(get_playersnum() < get_pcvar_num(cv_clients) && !good_maps)
    {
        client_print_color(0, print_chat, "^1[^4NoPlayers^1] Uz^3 10^1 sekundziu prasides balsavimas del mazesnio zemelapio!")
        set_task(10.0, "change_map" )
    }
    return PLUGIN_CONTINUE
}

public change_map()
{
    // COMMAND
}

How i need to start vote for changing the map? :} I want to players can choose from de_dust2_2x2 and cs_max

ghost95v 12-09-2014 16:57

Re: No players map vote
 
Remove mapchooser.amxx from plugins.ini, and try this...

PHP Code:



#include <amxmodx>
#include <amxmisc>

#define SELECTMAPS  5

#define charsof(%1) (sizeof(%1)-1)

new Array:g_mapName;
new 
g_mapNums;

new 
g_nextName[SELECTMAPS]
new 
g_voteCount[SELECTMAPS 2]
new 
g_mapVoteNum
new g_teamScore[2]
new 
g_lastMap[32]

new 
cv_clients
new bool:good_maps

new g_coloredMenus
new bool:g_selected false

public plugin_init()
{
    
register_plugin("Nextmap Chooser"AMXX_VERSION_STR"AMXX Dev Team")
    
register_dictionary("mapchooser.txt")
    
register_dictionary("common.txt")
    
    
g_mapName=ArrayCreate(32);
    
    new 
MenuName[64]
    
    
format(MenuName63"%L""en""CHOOSE_NEXTM")
    
register_menucmd(register_menuid(MenuName), (-1^(-1<<(SELECTMAPS+2))), "countVote")
    
register_cvar("amx_extendmap_max""90")
    
register_cvar("amx_extendmap_step""15")

    if (
cstrike_running())
        
register_event("TeamScore""team_score""a")

    
get_localinfo("lastMap"g_lastMap31)
    
set_localinfo("lastMap""")

    new 
maps_ini_file[64]
    
get_configsdir(maps_ini_file63);
    
format(maps_ini_file63"%s/maps.ini"maps_ini_file);
    
    if (!
file_exists(maps_ini_file))
        
get_cvar_string("mapcyclefile"maps_ini_file63)
    if (
loadSettings(maps_ini_file))
        
set_task(15.0"voteNextmap"987456""0"b")

    
g_coloredMenus colored_menus()
    
    
cv_clients register_cvar("nomap_players""6")
    
set_task(20.0"check_players"0__"b")
    
    new 
szMapname[64];
    
get_mapname(szMapname63)
    
    if (
equali(szMapname"cs_max") || equali(szMapname"de_dust2_2x2") || equali(szMapname"de_dust2_2x2_winter") || equali(szMapname"de_inferno_2x2_winter") || equali(szMapname"fy_snow") || equali(szMapname"fy_pool_day") || equali(szMapname"awp_india"))
    {
        
good_maps true
    
}
    
}

public 
checkVotes()
{
    new 
0
    
    
for (new 0g_mapVoteNum; ++a)
        if (
g_voteCount[b] < g_voteCount[a])
            
a

    
    
if (g_voteCount[SELECTMAPS] > g_voteCount[b]
        && 
g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1])
    {
        new 
mapname[32]
        
        
get_mapname(mapname31)
        new 
Float:steptime get_cvar_float("amx_extendmap_step")
        
set_cvar_float("mp_timelimit"get_cvar_float("mp_timelimit") + steptime)
        
client_print(0print_chat"%L"LANG_PLAYER"CHO_FIN_EXT"steptime)
        
log_amx("Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes"mapnamesteptime)
        
        return
    }
    
    new 
smap[32]
    if (
g_voteCount[b] && g_voteCount[SELECTMAPS 1] <= g_voteCount[b])
    {
        
ArrayGetString(g_mapNameg_nextName[b], smapcharsof(smap));
        
set_cvar_string("amx_nextmap"smap);
    }

    
    
get_cvar_string("amx_nextmap"smap31)
    
client_print(0print_chat"%L"LANG_PLAYER"CHO_FIN_NEXT"smap)
    
log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s"smap)
}

public 
countVote(idkey)
{
    if (
get_cvar_float("amx_vote_answers"))
    {
        new 
name[32]
        
get_user_name(idname31)
        
        if (
key == SELECTMAPS)
            
client_print(0print_chat"%L"LANG_PLAYER"CHOSE_EXT"name)
        else if (
key SELECTMAPS)
        {
            new 
map[32];
            
ArrayGetString(g_mapNameg_nextName[key], mapcharsof(map));
            
client_print(0print_chat"%L"LANG_PLAYER"X_CHOSE_X"namemap);
        }
    }
    ++
g_voteCount[key]
    
    return 
PLUGIN_HANDLED
}

bool:isInMenu(id)
{
    for (new 
0g_mapVoteNum; ++a)
        if (
id == g_nextName[a])
            return 
true
    
return false
}

public 
voteNextmap()
{
    new 
winlimit get_cvar_num("mp_winlimit")
    new 
maxrounds get_cvar_num("mp_maxrounds")
    
    if (
winlimit)
    {
        new 
winlimit 2
        
        
if ((g_teamScore[0]) && (g_teamScore[1]))
        {
            
g_selected false
            
return
        }
    }
    else if (
maxrounds)
    {
        if ((
maxrounds 2) > (g_teamScore[0] + g_teamScore[1]))
        {
            
g_selected false
            
return
        }
    } else {
        new 
timeleft get_timeleft()
        
        if (
timeleft || timeleft 129)
        {
            
g_selected false
            
return
        }
    }

    if (
g_selected)
        return

    
g_selected true
    
    
new menu[512], amkeys = (1<<SELECTMAPS 1)

    new 
pos format(menu511g_coloredMenus "\y%L:\w^n^n" "%L:^n^n"LANG_SERVER"CHOOSE_NEXTM")
    new 
dmax = (g_mapNums SELECTMAPS) ? SELECTMAPS g_mapNums
    
    
for (g_mapVoteNum 0g_mapVoteNum dmax; ++g_mapVoteNum)
    {
        
random_num(0g_mapNums 1)
        
        while (
isInMenu(a))
            if (++
>= g_mapNums0
        
        g_nextName
[g_mapVoteNum] = a
        pos 
+= format(menu[pos], 511"%d. %a^n"g_mapVoteNum 1ArrayGetStringHandle(g_mapNamea));
        
mkeys |= (1<<g_mapVoteNum)
        
g_voteCount[g_mapVoteNum] = 0
    
}
    
    
menu[pos++] = '^n'
    
g_voteCount[SELECTMAPS] = 0
    g_voteCount
[SELECTMAPS 1] = 0
    
    
new mapname[32]
    
get_mapname(mapname31)

    if ((
winlimit maxrounds) == && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max")))
    {
        
pos += format(menu[pos], 511"%d. %L^n"SELECTMAPS 1LANG_SERVER"EXTED_MAP"mapname)
        
mkeys |= (1<<SELECTMAPS)
    }

    
format(menu[pos], 511"%d. %L"SELECTMAPS+2LANG_SERVER"NONE")
    new 
MenuName[64]
    
    
format(MenuName63"%L""en""CHOOSE_NEXTM")
    
show_menu(0mkeysmenu15MenuName)
    
set_task(15.0"checkVotes")
    
client_print(0print_chat"%L"LANG_SERVER"TIME_CHOOSE")
    
client_cmd(0"spk Gman/Gman_Choose2")
    
log_amx("Vote: Voting for the nextmap started")
}

public 
check_players()
{
    if(
get_playersnum() < get_pcvar_num(cv_clients) && !good_maps)
    {
        
client_print(0print_chat"[NoPlayers] Uz 10 sekundziu prasides balsavimas del mazesnio zemelapio!")
        
set_task(10.0"checkVotes" )
    }
    return 
PLUGIN_CONTINUE
}
stock bool:ValidMap(mapname[])
{
    if ( 
is_map_valid(mapname) )
    {
        return 
true;
    }
    
// If the is_map_valid check failed, check the end of the string
    
new len strlen(mapname) - 4;
    
    
// The mapname was too short to possibly house the .bsp extension
    
if (len 0)
    {
        return 
false;
    }
    if ( 
equali(mapname[len], ".bsp") )
    {
        
// If the ending was .bsp, then cut it off.
        // the string is byref'ed, so this copies back to the loaded text.
        
mapname[len] = '^0';
        
        
// recheck
        
if ( is_map_valid(mapname) )
        {
            return 
true;
        }
    }
    
    return 
false;
}

loadSettings(filename[])
{
    if (!
file_exists(filename))
        return 
0

    
new szText[32]
    new 
currentMap[32]
    
    new 
buff[256];
    
    
get_mapname(currentMap31)

    new 
fp=fopen(filename,"r");
    
    while (!
feof(fp))
    {
        
buff[0]='^0';
        
        
fgets(fpbuffcharsof(buff));
        
        
parse(buffszTextcharsof(szText));
        
        
        if (
szText[0] != ';' &&
            
ValidMap(szText) &&
            !
equali(szTextg_lastMap) &&
            !
equali(szTextcurrentMap))
        {
            
ArrayPushString(g_mapNameszText);
            ++
g_mapNums;
        }
        
    }
    
    
fclose(fp);

    return 
g_mapNums
}

public 
team_score()
{
    new 
team[2]
    
    
read_data(1team1)
    
g_teamScore[(team[0]=='C') ? 1] = read_data(2)
}

public 
plugin_end()
{
    new 
current_map[32]

    
get_mapname(current_map31)
    
set_localinfo("lastMap"current_map)




All times are GMT -4. The time now is 15:28.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.