Raised This Month: $ Target: $400
 0% 

1, 2, 1, 2 Count


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Diblo
Junior Member
Join Date: Mar 2009
Old 06-12-2009 , 11:00   1, 2, 1, 2 Count
Reply With Quote #1

Hey, I've tried to build this code into the mapchooser.
But it will not really help to select the file 1, 2, 1 etc.

Code:
   //get the map number
   new g_mndb_file[128]
   get_datadir(g_mndb_file, 127)
   format(g_mndb_file, 127, "%s/maps_chooser.dat", g_mndb_file)

   new mn[5]=1;
   new mndb_file = fopen(g_mndb_file, "wt+")

   if ( ! mndb_file )
   {
      fprintf(mndb_file, "%s", mn)
      fclose(mndb_file)
   }
   else
   {
      fgets(mndb_file, mn, 4)

      if (mn[3] == 1)
      {
         mn[3]=2;
         fprintf(mndb_file, "%s", mn)
         fclose(mndb_file)
      }
      else
      {
         mn[3]=1;
         fprintf(mndb_file, "%s", mn)
         fclose(mndb_file)
      }
   }

    new maps_ini_file[64]
    get_configsdir(maps_ini_file, 63);
    format(maps_ini_file, 63, "%s/maps_chooser%s.ini", maps_ini_file, mn)
Diblo is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 06-12-2009 , 18:35   Re: 1, 2, 1, 2 Count
Reply With Quote #2

What's it supposed to do and what are your errors?
__________________
fysiks is offline
Diblo
Junior Member
Join Date: Mar 2009
Old 06-12-2009 , 22:04   Re: 1, 2, 1, 2 Count
Reply With Quote #3

There are no errors.

It must be able to switch between maps_chooser1.ini and maps_chooser2.ini, without forgetting where it had come to.

Code:
//mn (map number)

format(maps_ini_file, 63, "%s/maps_chooser%s.ini", maps_ini_file, mn)
I have chosen to use a file to remember where it has come to.

Code:
format(g_mndb_file, 127, "%s/maps_chooser.dat", g_mndb_file)
....
fprintf(mndb_file, "%s", mn)
....
fgets(mndb_file, mn, 4)
But it does not work.
Diblo is offline
Diblo
Junior Member
Join Date: Mar 2009
Old 06-12-2009 , 22:11   Re: 1, 2, 1, 2 Count
Reply With Quote #4

As a result, there is an error.
I just do not know whether the problem lies.
But the file does not contain the correct info and I have an idea that is being written and read in the wrong way from the file.
Diblo is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 06-12-2009 , 23:20   Re: 1, 2, 1, 2 Count
Reply With Quote #5

No need to use a file to remember.

What is the overall purpose of using two map ini files? Do you want to alternate between them on each map so that on the first map your choices come from the first ini and then on the second map they come from your second ini? If so, I think I can make a solution that will be relatively easy.
__________________
fysiks is offline
Diblo
Junior Member
Join Date: Mar 2009
Old 06-13-2009 , 01:29   Re: 1, 2, 1, 2 Count
Reply With Quote #6

No.
I will create a setup with two different types of maps, which should not be mixed together.
If we assume that the plugin has just been installed.
It will so, use the file maps_chooser1.ini to get maps from to the vote (list 1).
On the next level/map it will use maps_chooser2.ini (List 2) to get maps from to the vote. On next level/map it will use list 1 again. etc.

I want to be able to control what maps goes to vote. It can easy be make to have a list 1 2 3 4 5 6 7 with a amx_maps_Maxfile cvars. But there is only need for 2 maps list right now.
Diblo is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 06-13-2009 , 01:39   Re: 1, 2, 1, 2 Count
Reply With Quote #7

You say "No" to my question yet you describe exactly what I said.


. . .

Using the default mapchooser plugin to start with (mapchooser.sma):

I added lines 51,77,82-89,327-334. This should use maps1.ini on the first map then maps2.ini on the second map and maps1.ini on the third map and so on.

PHP Code:
/* 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_szMapFile[2]

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""")
    
    
get_localinfo("mapfile"g_szMapFile1)

    new 
maps_ini_file[64]
    
get_configsdir(maps_ini_file63);
    
    if(
g_szMapFile[0])
    {
        
format(maps_ini_file63"%s/maps1.ini"maps_ini_file);
    }
    else
    {
        
format(maps_ini_file63"%s/maps2.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()
    
}

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")
}
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)
    
    if(
g_szMapFile[0])
    {
        
set_localinfo("mapfile""")
    }
    else
    {
        
set_localinfo("mapfile""1")
    }

__________________

Last edited by fysiks; 06-13-2009 at 01:51.
fysiks is offline
Diblo
Junior Member
Join Date: Mar 2009
Old 06-13-2009 , 09:52   Re: 1, 2, 1, 2 Count
Reply With Quote #8

Sorry
Diblo is offline
Diblo
Junior Member
Join Date: Mar 2009
Old 06-13-2009 , 09:59   Re: 1, 2, 1, 2 Count
Reply With Quote #9

Very nice thanks.
Diblo is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 14:05.


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