Serwery wiaderko.com Zwiń / Rozwiń kategorię

HashJama [TP] 193.33.176.148:27015 | tp.wiaderko.com status serwera HashJama [TP] połącz

HashJama CS:GO [DM] 193.33.176.53:27015 | dm.wiaderko.com status serwera HashJama CS:GO [DM] połącz

HashJama CS:GO [FFA] 193.33.176.15:27015 | ffa.wiaderko.com status serwera HashJama CS:GO FFA [FFA] połącz

HashJama [TeamSpeak 3] 62.210.99.220:9987 | ts.wiaderko.com status serwera HashJama [TP ELITE] 62.210.99.220:27015 połącz

SPONSOR:
pukawka.pl

Nabór na JUNIOR ADMINA forum - Więcej informacji > Klik <
Pokaż wyniki od 1 do 16 z 16
  1. #1
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Mapchooser.amxx lub nextmap.amxx

    Witam mam problem z konfiguracją mapchoosera lub nextmap.amxx.
    Chciałbym by wybór mapy wyskakiwał 2 minuty przed zakończeniem servera (20 min trwa mapa). Nie wiem który jest za to odpowiedzialny(podejrzewam że mapchooser.
    Oto plik mapchooser.sma
    Kod:
    /* AMX Mod X
    *   Nextmap Chooser Plugin
    *
    * by the AMX Mod X Development Team
    *  originally developed by OLO
    *
    * This file is part of AMX Mod X.
    *
    *
    *  This program is free software; you can redistribute it and/or modify it
    *  under the terms of the GNU General Public License as published by the
    *  Free Software Foundation; either version 2 of the License, or (at
    *  your option) any later version.
    *
    *  This program is distributed in the hope that it will be useful, but
    *  WITHOUT ANY WARRANTY; without even the implied warranty of
    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    *  General Public License for more details.
    *
    *  You should have received a copy of the GNU General Public License
    *  along with this program; if not, write to the Free Software Foundation,
    *  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    *
    *  In addition, as a special exception, the author gives permission to
    *  link the code of this program with the Half-Life Game Engine ("HL
    *  Engine") and Modified Game Libraries ("MODs") developed by Valve,
    *  L.L.C ("Valve"). You must obey the GNU General Public License in all
    *  respects for all of the code used other than the HL Engine and MODs
    *  from Valve. If you modify this file, you may extend this exception
    *  to your version of the file, but you are not obligated to do so. If
    *  you do not wish to do so, delete this exception statement from your
    *  version.
    */
    
    #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 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(MenuName, 63, "%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_lastMap, 31)
    	set_localinfo("lastMap", "")
    
    	new maps_ini_file[64]
    	get_configsdir(maps_ini_file, 63);
    	format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file);
    	
    	if (!file_exists(maps_ini_file))
    		get_cvar_string("mapcyclefile", maps_ini_file, 63)
    	if (loadSettings(maps_ini_file))
    		set_task(18.0, "voteNextmap", 987456, "", 0, "b")
    
    	g_coloredMenus = colored_menus()
    	
    }
    
    public checkVotes()
    {
    	new b = 0
    	
    	for (new a = 0; a < g_mapVoteNum; ++a)
    		if (g_voteCount[b] < g_voteCount[a])
    			b = a
    
    	
    	if (g_voteCount[SELECTMAPS] > g_voteCount[b]
    	    && g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1])
    	{
    		new mapname[32]
    		
    		get_mapname(mapname, 31)
    		new Float:steptime = get_cvar_float("amx_extendmap_step")
    		set_cvar_float("mp_timelimit", get_cvar_float("mp_timelimit") + steptime)
    		client_print(0, print_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", mapname, steptime)
    		
    		return
    	}
    	
    	new smap[32]
    	if (g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b])
    	{
    		ArrayGetString(g_mapName, g_nextName[b], smap, charsof(smap));
    		set_cvar_string("amx_nextmap", smap);
    	}
    
    	
    	get_cvar_string("amx_nextmap", smap, 31)
    	client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap)
    	log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", smap)
    }
    
    public countVote(id, key)
    {
    	if (get_cvar_float("amx_vote_answers"))
    	{
    		new name[32]
    		get_user_name(id, name, 31)
    		
    		if (key == SELECTMAPS)
    			client_print(0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name)
    		else if (key < SELECTMAPS)
    		{
    			new map[32];
    			ArrayGetString(g_mapName, g_nextName[key], map, charsof(map));
    			client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map);
    		}
    	}
    	++g_voteCount[key]
    	
    	return PLUGIN_HANDLED
    }
    
    bool:isInMenu(id)
    {
    	for (new a = 0; a < g_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 c = winlimit - 2
    		
    		if ((c > g_teamScore[0]) && (c > 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 < 1 || timeleft > 129)
    		{
    			g_selected = false
    			return
    		}
    	}
    
    	if (g_selected)
    		return
    
    	g_selected = true
    	
    	new menu[512], a, mkeys = (1<<SELECTMAPS + 1)
    
    	new pos = format(menu, 511, g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM")
    	new dmax = (g_mapNums > SELECTMAPS) ? SELECTMAPS : g_mapNums
    	
    	for (g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum)
    	{
    		a = random_num(0, g_mapNums - 1)
    		
    		while (isInMenu(a))
    			if (++a >= g_mapNums) a = 0
    		
    		g_nextName[g_mapVoteNum] = a
    		pos += format(menu[pos], 511, "%d. %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a));
    		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(mapname, 31)
    
    	if ((winlimit + maxrounds) == 0 && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max")))
    	{
    		pos += format(menu[pos], 511, "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname)
    		mkeys |= (1<<SELECTMAPS)
    	}
    
    	format(menu[pos], 511, "%d. %L", SELECTMAPS+2, LANG_SERVER, "NONE")
    	new MenuName[64]
    	
    	format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM")
    	show_menu(0, mkeys, menu, 15, MenuName)
    	set_task(15.0, "checkVotes")
    	client_print(0, print_chat, "%L", LANG_SERVER, "TIME_CHOOSE")
    	client_cmd(0, "spk Gman/Gman_Choose2")
    	log_amx("Vote: Voting for the nextmap started")
    }
    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(currentMap, 31)
    
    	new fp=fopen(filename,"r");
    	
    	while (!feof(fp))
    	{
    		buff[0]='^0';
    		
    		fgets(fp, buff, charsof(buff));
    		
    		parse(buff, szText, charsof(szText));
    		
    		
    		if (szText[0] != ';' &&
    			ValidMap(szText) &&
    			!equali(szText, g_lastMap) &&
    			!equali(szText, currentMap))
    		{
    			ArrayPushString(g_mapName, szText);
    			++g_mapNums;
    		}
    		
    	}
    	
    	fclose(fp);
    
    	return g_mapNums
    }
    
    public team_score()
    {
    	new team[2]
    	
    	read_data(1, team, 1)
    	g_teamScore[(team[0]=='C') ? 0 : 1] = read_data(2)
    }
    
    public plugin_end()
    {
    	new current_map[32]
    
    	get_mapname(current_map, 31)
    	set_localinfo("lastMap", current_map)
    }
    Oto plik nextmap.sma
    Kod:
    /* AMX Mod X
    *   NextMap Plugin
    *
    * by the AMX Mod X Development Team
    *  originally developed by OLO
    *
    * This file is part of AMX Mod X.
    *
    *
    *  This program is free software; you can redistribute it and/or modify it
    *  under the terms of the GNU General Public License as published by the
    *  Free Software Foundation; either version 2 of the License, or (at
    *  your option) any later version.
    *
    *  This program is distributed in the hope that it will be useful, but
    *  WITHOUT ANY WARRANTY; without even the implied warranty of
    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    *  General Public License for more details.
    *
    *  You should have received a copy of the GNU General Public License
    *  along with this program; if not, write to the Free Software Foundation,
    *  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    *
    *  In addition, as a special exception, the author gives permission to
    *  link the code of this program with the Half-Life Game Engine ("HL
    *  Engine") and Modified Game Libraries ("MODs") developed by Valve,
    *  L.L.C ("Valve"). You must obey the GNU General Public License in all
    *  respects for all of the code used other than the HL Engine and MODs
    *  from Valve. If you modify this file, you may extend this exception
    *  to your version of the file, but you are not obligated to do so. If
    *  you do not wish to do so, delete this exception statement from your
    *  version.
    */
    
    #include <amxmodx>
    
    // WARNING: If you comment this line make sure
    // that in your mapcycle file maps don't repeat.
    // However the same map in a row is still valid.
    #define OBEY_MAPCYCLE
    
    new g_nextMap[32]
    new g_mapCycle[32]
    new g_pos
    
    public plugin_init()
    {
    	register_plugin("NextMap", AMXX_VERSION_STR, "AMXX Dev Team")
    	register_dictionary("nextmap.txt")
    	register_event("30", "changeMap", "a")
    	register_clcmd("say nextmap", "sayNextMap", 0, "- displays nextmap")
    	register_clcmd("say currentmap", "sayCurrentMap", 0, "- display current map")
    	register_clcmd("say ff", "sayFFStatus", 0, "- display friendly fire status")
    	register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
    
    	new szString[32], szString2[32], szString3[8]
    	
    	get_localinfo("lastmapcycle", szString, 31)
    	parse(szString, szString2, 31, szString3, 7)
    	g_pos = str_to_num(szString3)
    	get_cvar_string("mapcyclefile", g_mapCycle, 31)
    
    	if (!equal(g_mapCycle, szString2))
    		g_pos = 0	// mapcyclefile has been changed - go from first
    
    	readMapCycle(g_mapCycle, g_nextMap, 31)
    	set_cvar_string("amx_nextmap", g_nextMap)
    	format(szString3, 31, "%s %d", g_mapCycle, g_pos)	// save lastmapcycle settings
    	set_localinfo("lastmapcycle", szString3)
    }
    
    getNextMapName(szArg[], iMax)
    {
    	new len = get_cvar_string("amx_nextmap", szArg, iMax)
    	
    	if (ValidMap(szArg)) return len
    	len = copy(szArg, iMax, g_nextMap)
    	set_cvar_string("amx_nextmap", g_nextMap)
    	
    	return len
    }
    
    public sayNextMap()
    {
    	new name[32]
    	
    	getNextMapName(name, 31)
    	client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name)
    }
    
    public sayCurrentMap()
    {
    	new mapname[32]
    
    	get_mapname(mapname, 31)
    	client_print(0, print_chat, "%L: %s", LANG_PLAYER, "PLAYED_MAP", mapname)
    }
    
    public sayFFStatus()
    {
    	client_print(0, print_chat, "%L: %L", LANG_PLAYER, "FRIEND_FIRE", LANG_PLAYER, get_cvar_num("mp_friendlyfire") ? "ON" : "OFF")
    }
    
    public delayedChange(param[])
    {
    	set_cvar_float("mp_chattime", get_cvar_float("mp_chattime") - 2.0)
    	server_cmd("changelevel %s", param)
    }
    
    public changeMap()
    {
    	new string[32]
    	new Float:chattime = get_cvar_float("mp_chattime")
    	
    	set_cvar_float("mp_chattime", chattime + 2.0)		// make sure mp_chattime is long
    	new len = getNextMapName(string, 31) + 1
    	set_task(chattime, "delayedChange", 0, string, len)	// change with 1.5 sec. delay
    }
    
    new g_warning[] = "WARNING: Couldn't find a valid map or the file doesn't exist (file ^"%s^")"
    
    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;
    }
    
    #if defined OBEY_MAPCYCLE
    readMapCycle(szFileName[], szNext[], iNext)
    {
    	new b, i = 0, iMaps = 0
    	new szBuffer[32], szFirst[32]
    
    	if (file_exists(szFileName))
    	{
    		while (read_file(szFileName, i++, szBuffer, 31, b))
    		{
    			if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue
    			
    			if (!iMaps)
    				copy(szFirst, 31, szBuffer)
    			
    			if (++iMaps > g_pos)
    			{
    				copy(szNext, iNext, szBuffer)
    				g_pos = iMaps
    				return
    			}
    		}
    	}
    
    	if (!iMaps)
    	{
    		log_amx(g_warning, szFileName)
    		get_mapname(szFirst, 31)
    	}
    
    	copy(szNext, iNext, szFirst)
    	g_pos = 1
    }
    
    #else
    
    readMapCycle(szFileName[], szNext[], iNext)
    {
    	new b, i = 0, iMaps = 0
    	new szBuffer[32], szFirst[32], szCurrent[32]
    	
    	get_mapname(szCurrent, 31)
    	
    	new a = g_pos
    
    	if (file_exists(szFileName))
    	{
    		while (read_file(szFileName, i++, szBuffer, 31, b))
    		{
    			if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue
    			
    			if (!iMaps)
    			{
    				iMaps = 1
    				copy(szFirst, 31, szBuffer)
    			}
    			
    			if (iMaps == 1)
    			{
    				if (equali(szCurrent, szBuffer))
    				{
    					if (a-- == 0)
    						iMaps = 2
    				}
    			} else {
    				if (equali(szCurrent, szBuffer))
    					++g_pos
    				else
    					g_pos = 0
    				
    				copy(szNext, iNext, szBuffer)
    				return
    			}
    		}
    	}
    	
    	if (!iMaps)
    	{
    		log_amx(g_warning, szFileName)
    		copy(szNext, iNext, szCurrent)
    	}
    	else
    		copy(szNext, iNext, szFirst)
    	
    	g_pos = 0
    }
    #endif
    Z góry thx!
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  2. #2
    Tata Neo i Taza Awatar naven
    Dołączył
    Jan 2008
    Wiek
    28
    Posty
    10,802
    Thanks
    31
    Thanked 652 Times in 605 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Nie wiem jak tam mapchooser bo nie używam, ale inne pluginy tego typu robią voty 2-1,45 do końca mapy
    Najlepszy hosting Hidden Content href="Hidden Content target="_blank">tutaj
    Konfiguracja amxx, instalacja pluginów, pisanie pluginów AMXX. Więcej info na Hidden Content

    "At the end of the day, there are always going to be mental disorders and people who cause violence for no other reason than the fact that they're fucked up and lost. And all we can do is try to learn from it." Corey Taylor.

  3. #3
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    ale mi z alliedmodders lub jakos tak nie chodzi
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  4. #4
    Tata Neo i Taza Awatar naven
    Dołączył
    Jan 2008
    Wiek
    28
    Posty
    10,802
    Thanks
    31
    Thanked 652 Times in 605 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    A instalowałeś według mojej instrukcji deagles map manager?
    Najlepszy hosting Hidden Content href="Hidden Content target="_blank">tutaj
    Konfiguracja amxx, instalacja pluginów, pisanie pluginów AMXX. Więcej info na Hidden Content

    "At the end of the day, there are always going to be mental disorders and people who cause violence for no other reason than the fact that they're fucked up and lost. And all we can do is try to learn from it." Corey Taylor.

  5. #5
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    tak ale pisało potem w zatrzymywaniu pluginow unnkown czy jakos tak
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  6. #6
    Tata Neo i Taza Awatar naven
    Dołączył
    Jan 2008
    Wiek
    28
    Posty
    10,802
    Thanks
    31
    Thanked 652 Times in 605 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Źle wgrałeś coś, pokaż logi z tego czasu
    Najlepszy hosting Hidden Content href="Hidden Content target="_blank">tutaj
    Konfiguracja amxx, instalacja pluginów, pisanie pluginów AMXX. Więcej info na Hidden Content

    "At the end of the day, there are always going to be mental disorders and people who cause violence for no other reason than the fact that they're fucked up and lost. And all we can do is try to learn from it." Corey Taylor.

  7. #7
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    teraz mam inny problem jak ustawiłem ze od 18 minut się robi vote to od razu po nim zmienia się mapa. Jak zmienić by do końca rundy to poczekało?
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  8. #8
    Tata Neo i Taza Awatar naven
    Dołączył
    Jan 2008
    Wiek
    28
    Posty
    10,802
    Thanks
    31
    Thanked 652 Times in 605 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Cytat Zamieszczone przez Executor Zobacz posta
    teraz mam inny problem jak ustawiłem ze od 18 minut się robi vote to od razu po nim zmienia się mapa. Jak zmienić by do końca rundy to poczekało?
    Jak od 18 minut? Co zmieniłeś(jaki cvar)
    Najlepszy hosting Hidden Content href="Hidden Content target="_blank">tutaj
    Konfiguracja amxx, instalacja pluginów, pisanie pluginów AMXX. Więcej info na Hidden Content

    "At the end of the day, there are always going to be mental disorders and people who cause violence for no other reason than the fact that they're fucked up and lost. And all we can do is try to learn from it." Corey Taylor.

  9. #9
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Już nie pamiętam ale albo co innego juz nie wiem, porównaj z pierwszego postu ten
    Kod:
    /* AMX Mod X
    *   Nextmap Chooser Plugin
    *
    * by the AMX Mod X Development Team
    *  originally developed by OLO
    *
    * This file is part of AMX Mod X.
    *
    *
    *  This program is free software; you can redistribute it and/or modify it
    *  under the terms of the GNU General Public License as published by the
    *  Free Software Foundation; either version 2 of the License, or (at
    *  your option) any later version.
    *
    *  This program is distributed in the hope that it will be useful, but
    *  WITHOUT ANY WARRANTY; without even the implied warranty of
    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    *  General Public License for more details.
    *
    *  You should have received a copy of the GNU General Public License
    *  along with this program; if not, write to the Free Software Foundation,
    *  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    *
    *  In addition, as a special exception, the author gives permission to
    *  link the code of this program with the Half-Life Game Engine ("HL
    *  Engine") and Modified Game Libraries ("MODs") developed by Valve,
    *  L.L.C ("Valve"). You must obey the GNU General Public License in all
    *  respects for all of the code used other than the HL Engine and MODs
    *  from Valve. If you modify this file, you may extend this exception
    *  to your version of the file, but you are not obligated to do so. If
    *  you do not wish to do so, delete this exception statement from your
    *  version.
    */
    
    #include <amxmodx>
    #include <amxmisc>
    
    #define SELECTMAPS  6
    
    #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 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(MenuName, 63, "%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_lastMap, 31)
    	set_localinfo("lastMap", "")
    
    	new maps_ini_file[64]
    	get_configsdir(maps_ini_file, 63);
    	format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file);
    	
    	if (!file_exists(maps_ini_file))
    		get_cvar_string("mapcyclefile", maps_ini_file, 63)
    	if (loadSettings(maps_ini_file))
    		set_task(17.0, "voteNextmap", 987456, "", 0, "b")
    
    	g_coloredMenus = colored_menus()
    	
    }
    
    public checkVotes()
    {
    	new b = 0
    	
    	for (new a = 0; a < g_mapVoteNum; ++a)
    		if (g_voteCount[b] < g_voteCount[a])
    			b = a
    
    	
    	if (g_voteCount[SELECTMAPS] > g_voteCount[b]
    	    && g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1])
    	{
    		new mapname[32]
    		
    		get_mapname(mapname, 31)
    		new Float:steptime = get_cvar_float("amx_extendmap_step")
    		set_cvar_float("mp_timelimit", get_cvar_float("mp_timelimit") + steptime)
    		client_print(0, print_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", mapname, steptime)
    		
    		return
    	}
    	
    	new smap[32]
    	if (g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b])
    	{
    		ArrayGetString(g_mapName, g_nextName[b], smap, charsof(smap));
    		set_cvar_string("amx_nextmap", smap);
    	}
    
    	
    	get_cvar_string("amx_nextmap", smap, 31)
    	client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap)
    	log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", smap)
    }
    
    public countVote(id, key)
    {
    	if (get_cvar_float("amx_vote_answers"))
    	{
    		new name[32]
    		get_user_name(id, name, 31)
    		
    		if (key == SELECTMAPS)
    			client_print(0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name)
    		else if (key < SELECTMAPS)
    		{
    			new map[32];
    			ArrayGetString(g_mapName, g_nextName[key], map, charsof(map));
    			client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map);
    		}
    	}
    	++g_voteCount[key]
    	
    	return PLUGIN_HANDLED
    }
    
    bool:isInMenu(id)
    {
    	for (new a = 0; a < g_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 c = winlimit - 2
    		
    		if ((c > g_teamScore[0]) && (c > 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 < 1 || timeleft > 129)
    		{
    			g_selected = false
    			return
    		}
    	}
    
    	if (g_selected)
    		return
    
    	g_selected = true
    	
    	new menu[512], a, mkeys = (1<<SELECTMAPS + 1)
    
    	new pos = format(menu, 511, g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM")
    	new dmax = (g_mapNums > SELECTMAPS) ? SELECTMAPS : g_mapNums
    	
    	for (g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum)
    	{
    		a = random_num(0, g_mapNums - 1)
    		
    		while (isInMenu(a))
    			if (++a >= g_mapNums) a = 0
    		
    		g_nextName[g_mapVoteNum] = a
    		pos += format(menu[pos], 511, "%d. %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a));
    		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(mapname, 31)
    
    	if ((winlimit + maxrounds) == 0 && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max")))
    	{
    		pos += format(menu[pos], 511, "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname)
    		mkeys |= (1<<SELECTMAPS)
    	}
    
    	format(menu[pos], 511, "%d. %L", SELECTMAPS+2, LANG_SERVER, "NONE")
    	new MenuName[64]
    	
    	format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM")
    	show_menu(0, mkeys, menu, 15, MenuName)
    	set_task(18.0, "checkVotes")
    	client_print(0, print_chat, "%L", LANG_SERVER, "TIME_CHOOSE")
    	client_cmd(0, "spk Gman/Gman_Choose2")
    	log_amx("Vote: Voting for the nextmap started")
    }
    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(currentMap, 31)
    
    	new fp=fopen(filename,"r");
    	
    	while (!feof(fp))
    	{
    		buff[0]='^0';
    		
    		fgets(fp, buff, charsof(buff));
    		
    		parse(buff, szText, charsof(szText));
    		
    		
    		if (szText[0] != ';' &&
    			ValidMap(szText) &&
    			!equali(szText, g_lastMap) &&
    			!equali(szText, currentMap))
    		{
    			ArrayPushString(g_mapName, szText);
    			++g_mapNums;
    		}
    		
    	}
    	
    	fclose(fp);
    
    	return g_mapNums
    }
    
    public team_score()
    {
    	new team[2]
    	
    	read_data(1, team, 1)
    	g_teamScore[(team[0]=='C') ? 0 : 1] = read_data(2)
    }
    
    public plugin_end()
    {
    	new current_map[32]
    
    	get_mapname(current_map, 31)
    	set_localinfo("lastMap", current_map)
    }
    #edit
    A jednak to samo wybiera godzinę
    Ostatnio edytowane przez Executor ; 31-08-2009 o 09:41
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  10. #10
    Tata Neo i Taza Awatar seba
    Dołączył
    Jun 2007
    Wiek
    13
    Posty
    12,293
    Thanks
    7
    Thanked 662 Times in 376 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Odpowiada za to
    Kod:
    		set_task(18.0, "voteNextmap", 987456, "", 0, "b")
    oraz sprawdzanie
    Kod:
    		if (timeleft < 1 || timeleft > 129)
    		{
    			g_selected = false
    			return
    		}
    więc vote nigdy nie jest w tym samym momencie. Aczkolwiek możesz to poprawić zamieniając
    Kod:
    set_task(18.0, "voteNextmap", 987456, "", 0, "b")
    na
    Kod:
    set_task(120.0, "voteNextmap", 987456, "", 0, "d")

  11. #11
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    i kiedy sie bedzie pokazywac? Mam ustawione mp_timelimit 20
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  12. #12
    Tata Neo i Taza Awatar seba
    Dołączył
    Jun 2007
    Wiek
    13
    Posty
    12,293
    Thanks
    7
    Thanked 662 Times in 376 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Zawsze 2 minuty przed końcem mapy.

  13. #13
    el Wymiataczos Awatar Executor
    Dołączył
    May 2009
    Wiek
    23
    Posty
    696
    Thanks
    4
    Thanked 26 Times in 25 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Seba nie dziala ;/ Czy to napewno
    Kod:
    set_task(120.0, "voteNextmap", 987456, "", 0, "d")
    Na koncy b czy d?
    Pomogłem? Postaw GibonaHidden Content
    Nie wiesz jak?:
    Hidden Content

  14. #14
    pro Awatar peku33
    Dołączył
    Oct 2008
    Posty
    7,248
    Thanks
    29
    Thanked 534 Times in 453 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Jeśli chodzi o wybór mapy polecam GALILEO.
    MA na serio DUUUUUŻO fajnych funkcji i świetnie się sprawdza z
    meta 1.19-p
    amx 1.81
    dproto 0.33
    najnowsze steamowe binarki

  15. #15
    Tata Neo i Taza Awatar naven
    Dołączył
    Jan 2008
    Wiek
    28
    Posty
    10,802
    Thanks
    31
    Thanked 652 Times in 605 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    flaga d na końcu ma być, d-set_task before timelimit
    Najlepszy hosting Hidden Content href="Hidden Content target="_blank">tutaj
    Konfiguracja amxx, instalacja pluginów, pisanie pluginów AMXX. Więcej info na Hidden Content

    "At the end of the day, there are always going to be mental disorders and people who cause violence for no other reason than the fact that they're fucked up and lost. And all we can do is try to learn from it." Corey Taylor.

  16. #16
    Tata Neo i Taza Awatar seba
    Dołączył
    Jun 2007
    Wiek
    13
    Posty
    12,293
    Thanks
    7
    Thanked 662 Times in 376 Posts

    Domyślnie Odp: Mapchooser.amxx lub nextmap.amxx

    Musi działać, testowane.

Podobne wątki

  1. [nextmap.amxx] WARNING
    By hincyk in forum Problemy i konfiguracja AMXX
    Odpowiedzi: 6
    Ostatni post / autor: 17-02-2010, 19:54
  2. amxx
    By Lelek919 in forum Problemy z CS 1.6 oraz CS:Condition Zero
    Odpowiedzi: 1
    Ostatni post / autor: 01-07-2008, 07:04
  3. amxx
    By krysek in forum Amx Mod X
    Odpowiedzi: 2
    Ostatni post / autor: 21-04-2008, 17:50
  4. Problem z realnadedrop.amxx + dropallweapons.amxx
    By -=SFPT=-Mike in forum Amx Mod X
    Odpowiedzi: 6
    Ostatni post / autor: 24-03-2008, 17:58
  5. amxx
    By nigger1989 in forum Amx Mod X
    Odpowiedzi: 1
    Ostatni post / autor: 21-03-2008, 22:12
  6. AMXX MOD X
    By Marcinhoo in forum Amx Mod X
    Odpowiedzi: 7
    Ostatni post / autor: 22-02-2008, 05:53
  7. [amxx] mapchooser.amxx nie dziala
    By ciapek in forum Amx Mod X
    Odpowiedzi: 2
    Ostatni post / autor: 14-02-2008, 08:20
  8. admin_amxbans.amxx lub amxbans.amxx
    By maly93 in forum Amx Mod X
    Odpowiedzi: 4
    Ostatni post / autor: 12-02-2008, 15:54
  9. Opis konfiguracji AMXX (plik amxx.cfg)
    By seba in forum Amx Mod X
    Odpowiedzi: 0
    Ostatni post / autor: 14-01-2008, 00:37
  10. [AMXX] Gotowy AMXX WAR3FT
    By rAPTORs in forum Amx Mod X
    Odpowiedzi: 1
    Ostatni post / autor: 24-12-2007, 11:21

Odwiedzający poszukiwali:

nextmap.amxx

mapchooser.amxx

download nextmap.amxx cs 1.6nextmap amxxjak ustawic mapochooserjak wylaczyc mapchooser.amxxnextmap menu amxxnextmap chooser amxxcs 1.6 nextmap.amxxtelecharger Mapchooser cs 1.6nextmap_chooser.amxx - wybieranie mapy.cs 1.6 next map chooser how to enable the pluginmapchooser.amxx downloadnextmap chooser nie dzialamapchooser2.amxxmapchooser plugins cs 1.6mapy do wyboru amxxmapchooser cs 1.6jak wylączyc mapchooser.amxx i nextmap.amxxgdzie wyłączyć mapchooser.amxx i nextmap.amxx w cs 1.6nextmap amxx mapchooser amxxmapchooser. amxxcs amxx nextmapmapchooser plugin for cs 1.6galileo win_limit

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •