Raised This Month: $32 Target: $400
 8% 

Multimod Plugin


Post New Thread Reply   
 
Thread Tools Display Modes
LambStar
Member
Join Date: Aug 2012
Location: UAE
Old 07-04-2013 , 04:31   Re: Multimod Plugin
Reply With Quote #501

i just wanted people to know who started the vote and some admins will start the vote at the wrong time..
also it will tell me which admin has started it so i can warn him..

Last edited by LambStar; 07-04-2013 at 04:31.
LambStar is offline
DIS
Senior Member
Join Date: Jul 2013
Location: Somewhere Here xD
Old 07-10-2013 , 12:08   Re: Multimod Plugin
Reply With Quote #502

Hi fysiks
First of all, thanks for the multimod_edit2.sma so the current Mod will not be included in the Mod vote
Second, there is a problem in multimod_edit2.sma :- For example the Mod is DeathRun, and when the Mod vote starts, people choose soccer, so the map list will come to choose, but there is an option: extend deathrun_xxxx and when people choose to extend, it is printed in the chat: Choosing finished. The current map will be extended to next 15 minutes. But it reloads the map with the set of soccer plugins.
Is there any way to fix this issue?
Any help would be appreciated
Thanks
DIS is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 07-10-2013 , 14:50   Re: Multimod Plugin
Reply With Quote #503

Quote:
Originally Posted by DIS View Post
Hi fysiks
First of all, thanks for the multimod_edit2.sma so the current Mod will not be included in the Mod vote
Second, there is a problem in multimod_edit2.sma :- For example the Mod is DeathRun, and when the Mod vote starts, people choose soccer, so the map list will come to choose, but there is an option: extend deathrun_xxxx and when people choose to extend, it is printed in the chat: Choosing finished. The current map will be extended to next 15 minutes. But it reloads the map with the set of soccer plugins.
Is there any way to fix this issue?
Any help would be appreciated
Thanks
It seems to be working as I would expect other than the poor wording: "The current map will be extended to next 15 minutes" but should probably be more appropriately re-worded to: "The current map will now be played with soccer mod".

What are you wanting changed? Explain what you are wanting to happen and/or how you want things named/worded.
__________________

Last edited by fysiks; 07-10-2013 at 14:51.
fysiks is offline
DIS
Senior Member
Join Date: Jul 2013
Location: Somewhere Here xD
Old 07-11-2013 , 11:33   Re: Multimod Plugin
Reply With Quote #504

Quote:
Originally Posted by fysiks View Post
It seems to be working as I would expect other than the poor wording: "The current map will be extended to next 15 minutes" but should probably be more appropriately re-worded to: "The current map will now be played with soccer mod".

What are you wanting changed? Explain what you are wanting to happen and/or how you want things named/worded.
I need to remove/disable the "extend" option if possible

Last edited by DIS; 07-14-2013 at 05:57.
DIS is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 07-15-2013 , 16:34   Re: Multimod Plugin
Reply With Quote #505

Quote:
Originally Posted by DIS View Post
I need to remove/disable the "extend" option if possible
amxx.cfg:
Code:
amx_extendmap_max 0
__________________

Last edited by fysiks; 07-15-2013 at 16:35.
fysiks is offline
JoxBox
Junior Member
Join Date: Aug 2011
Old 07-15-2013 , 17:30   Re: Multimod Plugin
Reply With Quote #506

Hello everyone, ive made a multimod server and it currently has 9 mods on it, but when soccerjam is on, the votemod is messed with the votemap and vice versa, any idea how to fix this? Thanks in advance.
JoxBox is offline
DIS
Senior Member
Join Date: Jul 2013
Location: Somewhere Here xD
Old 07-16-2013 , 09:11   Re: Multimod Plugin
Reply With Quote #507

Quote:
Originally Posted by JoxBox View Post
Hello everyone, ive made a multimod server and it currently has 9 mods on it, but when soccerjam is on, the votemod is messed with the votemap and vice versa, any idea how to fix this? Thanks in advance.
Put these two lines in your soccer plugins:-
PHP Code:
multimod.amxx
mapchooser_multimod
.amxx 
DIS is offline
DIS
Senior Member
Join Date: Jul 2013
Location: Somewhere Here xD
Old 07-16-2013 , 09:54   Re: Multimod Plugin
Reply With Quote #508

Quote:
Originally Posted by fysiks View Post
amxx.cfg:
Code:
amx_extendmap_max 0
Thanks man you're awesome
Just the last last thing and the second important thing:-
Is it possible to get_user_name and then print_chat when someone starts a vote (as lambstar said):- %s started the vote.
That is very good because some admins are not following our rules, and its good to catch them when they don't know it shows
Any help would be appreciated
Thanks
DIS is offline
BLacking98
Veteran Member
Join Date: Oct 2012
Location: California
Old 07-16-2013 , 11:34   Re: Multimod Plugin
Reply With Quote #509

The idea is pretty awesome, altough, I think many many mods will crash with this mod. I bet CSDM will, but for the rest, it's pretty cool. Neat! c:
__________________
BLacking98 is offline
JoooN
BANNED
Join Date: Jul 2013
Location: Ban List :P
Old 08-02-2013 , 10:52   Re: Multimod Plugin
Reply With Quote #510

Ok so if anyone wanna print chat message %s started the Mod Vote, here it is attached
And note that this is fysik's edited plugin (That ignores the current Mod in the vote) so what is different in this plugin added 2 features:
  • Ignores current Mod for the Vote
  • Prints a message when someone starts the vote: name started the Mod Vote
Plugin:
PHP Code:
/*

--- multimod.ini ---
[Gun Game]:[gungame-plugins.ini]:[gungame-config.cfg]
[Paint Ball]:[paintball-plugins.ini]:[paintball-config.cfg]
[Hid'N Seek]:[hns-plugins.ini]:[hns-config.cfg]
[Death Run]:[deathrun-plugins.ini]:[deathrun-config.cfg]
[Zombie Plague]:[zombieplague-plugins.ini]:[zombieplague-config.cfg]
[Biohazard]:[biohazard-plugins.ini]:[biohazard-config.cfg]
--------------------

TODO
* add some commands for admins

v0.1
* The very first release
v0.2
* Fixed warning 204 with one unused symbol
v0.3
* Fixed wrong use of cvar amx_nextmod instead of amx_mm_nextmod
* Added admin command amx_votemod
v0.4
* Added hud message every 15 seconds to display current mod name
* Added check for connected players before mod votting
* Added control to remove task avoiding duplicate amx_votemod commands
v0.5
* Added say nextmod command
* Added say /votemod command
* Execute cfg files in first round instead of game_commencing
v0.6
* Added multilangual support (thanks crazyeffect!)
* Added intermission at map change to show scoreboard
* Added timer to execute *.cfg
* Modified where I do sv_restart
* Deleted unused cvar amx_mm_nextmap
* Changed cvar amx_mm_nextmod to amx_nextmod
v0.8
* Added 30 seconds of warmup to avoid conflict/crash with other plugins
* Changed all cvars to amx_xxx format (removed _mm_ part)
* Fixed and improved pcvar usage
v2.0
* Removed a lot of code
* Removed map voting code
* Added compatibility with galileo
* Added semi-compatibility with mapchooser (requires mapchooser patch)
v2.1
* Tested under czero
* Fixed all issues with languaje change
* Pending tests withing Galileo
v2.2
* Fixed votemod DoS
* Fixed galileo plugin lookup problem
* Fixed mapchooser_multimod plugin lookup problem
* Fixed nextmod client command problem
* Added currentmod client command
* Added cvar to disallow votemod client command

Credits:

fysiks: The first to realize the idea and some code improvements
crazyeffect: Colaborate with multilangual support
dark vador 008: Time and server for testing under czero

*/

#include <amxmodx>
#include <amxmisc>

#define PLUGIN_NAME    "MultiMod Manager"
#define PLUGIN_AUTHOR    "JoRoPiTo"
#define PLUGIN_VERSION    "2.2"

#define AMX_MULTIMOD    "amx_multimod"
#define AMX_PLUGINS    "amxx_plugins"
#define AMX_MAPCYCLE    "mapcyclefile"
#define AMX_LASTCYCLE    "lastmapcycle"

#define AMX_DEFAULTCYCLE    "mapcycle.txt"
#define AMX_DEFAULTPLUGINS    "addons/amxmodx/configs/plugins.ini"
#define    AMX_BASECONFDIR        "multimod"

#define TASK_VOTEMOD 2487002
#define TASK_CHVOMOD 2487004
#define MAXMODS 10
#define LSTRING 193
#define SSTRING 33

new g_menuname[] = "MENU NAME"
new g_votemodcount[MAXMODS]
new 
g_modnames[MAXMODS][SSTRING]    // Per-mod Mod Names
new g_filemaps[MAXMODS][LSTRING]    // Per-mod Maps Files
new g_fileplugins[MAXMODS][LSTRING]    // Per-mod Plugin Files

new g_fileconf[LSTRING]
new 
g_coloredmenus
new g_modcount = -1            // integer with configured mods count
new g_alreadyvoted
new gp_allowedvote
new g_nextmodid
new g_currentmodid
new g_multimod[SSTRING]
new 
g_nextmap[SSTRING]
new 
g_currentmod[SSTRING]
new 
g_confdir[LSTRING]

new 
gp_mintime
new gp_voteanswers
new gp_timelimit

new gp_mode
new gp_mapcyclefile

// galileo specific cvars
new gp_galileo_nommapfile
new gp_galileo_votemapfile

public plugin_init()
{
    new 
MenuName[63]

    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR)
    
register_cvar("MultiModManager"PLUGIN_VERSIONFCVAR_SERVER|FCVAR_SPONLY)
    
register_dictionary("mapchooser.txt")
    
register_dictionary("multimod.txt")

    
    
gp_mode register_cvar("amx_multimod_mode""0")    // 0=auto ; 1=mapchooser ; 2=galileo
    
gp_mintime register_cvar("amx_mintime""15")
    
gp_allowedvote register_cvar("amx_multimod_voteallowed""0")

    
get_configsdir(g_confdircharsmax(g_confdir))

    
register_clcmd("amx_votemod""cmdVoteMod"ADMIN_MAP"Vote for the next mod")
    
register_clcmd("say nextmod""user_nextmod")
    
register_clcmd("say_team nextmod""user_nextmod")
    
register_clcmd("say currentmod""user_currentmod")
    
register_clcmd("say /votemod""user_votemod")
    
register_clcmd("say_team /votemod""user_votemod")

    
format(MenuNamecharsmax(MenuName), "%L"LANG_PLAYER"MM_VOTE")
    
register_menucmd(register_menuid(g_menuname), 1023"player_vote")
    
g_coloredmenus colored_menus()
}

public 
plugin_cfg()
{
    
gp_voteanswers get_cvar_pointer("amx_vote_answers")
    
gp_timelimit get_cvar_pointer("mp_timelimit")
    
gp_mapcyclefile get_cvar_pointer(AMX_MAPCYCLE)

    if(!
get_pcvar_num(gp_mode))
    {
        if(
find_plugin_byfile("mapchooser_multimod.amxx") != -1)
            
set_pcvar_num(gp_mode1)
        else if(
find_plugin_byfile("galileo.amxx") != -1)
            
set_pcvar_num(gp_mode2)
    }
    
get_localinfo(AMX_MULTIMODg_multimodcharsmax(g_multimod))
    
load_cfg()

    if(!
equal(g_currentmodg_multimod) || (g_multimod[0] == 0))
    {
        
set_multimod(0)
        
get_firstmap(0)
        
server_print("Server restart - First Run")
        
server_cmd("changelevel %s"g_nextmap)
    }
    else
    {
        
server_cmd("exec %s"g_fileconf)
    }
}

public 
load_cfg()
{
    new 
szData[LSTRING]
    new 
szFilename[LSTRING]

    
formatex(szFilenamecharsmax(szFilename), "%s/%s"AMX_BASECONFDIR"multimod.ini")

    new 
fopen(szFilename"rt")
    new 
szTemp[SSTRING],szModName[SSTRING], szTag[SSTRING], szCfg[SSTRING]
    while(!
feof(f)) {
        
fgets(fszDatacharsmax(szData))
        
trim(szData)
        if(!
szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue

        if(
szData[0] == '[') {
            
g_modcount++
            
replace_all(szDatacharsmax(szData), "[""")
            
replace_all(szDatacharsmax(szData), "]""")

            
strtok(szDataszModNamecharsmax(szModName), szTempcharsmax(szTemp), ':'0)
            
strtok(szTempszTagcharsmax(szTag), szCfgcharsmax(szCfg), ':'0)

            if(
equal(szModNameg_multimod)) {
                
formatex(g_fileconf192"%s/%s"AMX_BASECONFDIRszCfg)
                
copy(g_currentmodcharsmax(g_currentmod), szModName)
                
g_currentmodid g_modcount
                server_print
("[AMX MultiMod] %L"LANG_PLAYER"MM_WILL_BE"g_multimodszTagszCfg)
            }
            
formatex(g_modnames[g_modcount], 32"%s"szModName)
            
formatex(g_filemaps[g_modcount], 192"%s/%s-maps.ini"AMX_BASECONFDIRszTag)
            
formatex(g_fileplugins[g_modcount], 192"%s/%s-plugins.ini"AMX_BASECONFDIRszTag)
            
server_print("MOD Loaded: %s %s %s"g_modnames[g_modcount], g_filemaps[g_modcount], g_fileconf)
        }
    }
    
fclose(f)
    
set_task(10.0"check_task"TASK_VOTEMOD""0"b")
}

public 
get_firstmap(modid)
{
    new 
ilen

    
if(!file_exists(g_filemaps[modid]))
        
get_mapname(g_nextmapcharsmax(g_nextmap))
    else
        
read_file(g_filemaps[modid], 0g_nextmapcharsmax(g_nextmap), ilen)
}

public 
set_multimod(modid)
{
    
server_print("Setting multimod to %i - %s"modidg_modnames[modid])
    
set_localinfo("amx_multimod"g_modnames[modid])
    
server_cmd("localinfo amxx_plugins ^"^"")
    
server_cmd("localinfo lastmapcycle ^"^"")
    
set_localinfo(AMX_PLUGINSfile_exists(g_fileplugins[modid]) ? g_fileplugins[modid] : AMX_DEFAULTPLUGINS)
    
set_localinfo(AMX_LASTCYCLEfile_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)
    
set_pcvar_string(gp_mapcyclefilefile_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)


    switch(
get_pcvar_num(gp_mode))
    {
        case 
2:
        {
            if(
gp_galileo_nommapfile)
                
set_pcvar_string(gp_galileo_nommapfilefile_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)

            if(
gp_galileo_votemapfile)
                
set_pcvar_string(gp_galileo_votemapfilefile_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE)
        }
        case 
1:
        {
            
callfunc_begin("plugin_init""mapchooser_multimod.amxx");
            
callfunc_end();
        }
    }
}

public 
check_task()
{
    new 
timeleft get_timeleft()
    if(
timeleft || timeleft 180)
        return

    
start_vote()
}

public 
cmdVoteMod(idlevelcid)
{
    new 
szName[32];
    
get_user_name(idszName31);
    if( 
cmd_access(idlevelcid1) )
    {
        
client_print0print_chat"%s started the Mod Vote"szName );  
        
start_vote()
    }
}

public 
start_vote()
{
    
g_alreadyvoted true
    remove_task
(TASK_VOTEMOD)
    
remove_task(TASK_CHVOMOD)

    new 
menu[512], mkeysi
    
new pos format(menu511g_coloredmenus "\y%L:\w^n^n" "%L:^n^n"LANG_PLAYER"MM_CHOOSE")

    for(
i=0i<= g_modcounti++)
    {
        if( 
!= g_currentmodid // Added check for current mod to exclude it from vote.
        
{
            
pos += format(menu[pos], 511"%d. %s^n"1g_modnames[i])
            
g_votemodcount[i] = 0
            mkeys 
|= (1<<i)
        }
    }

    new 
szMenuName[63]
    
formatex(szMenuNamecharsmax(szMenuName), "%L"LANG_PLAYER"MM_VOTE")
    
server_print("show menu %s %s %i"menug_menunamemkeys)
    
show_menu(0mkeysmenu15g_menuname)
    
client_cmd(0"spk Gman/Gman_Choose2")

    
set_task(15.0"check_vote"TASK_CHVOMOD)
    return
}

public 
user_nextmod(id)
{
    
client_print(0print_chat"%L"LANG_PLAYER"MM_NEXTMOD"g_modnames[g_nextmodid])
    return 
PLUGIN_HANDLED
}

public 
user_currentmod(id)
{
    
client_print(0print_chat"%L"LANG_PLAYER"MM_NEXTMOD"g_currentmod)
    return 
PLUGIN_HANDLED
}

public 
user_votemod(id)
{
    if(
gp_allowedvote)
        return 
PLUGIN_HANDLED

    
if(g_alreadyvoted)
    {
        
client_print(0print_chat"%L"LANG_PLAYER"MM_VOTEMOD"g_modnames[g_nextmodid])
        return 
PLUGIN_HANDLED
    
}

    new 
Float:elapsedTime get_pcvar_float(gp_timelimit) - (float(get_timeleft()) / 60.0)
    new 
Float:minTime
    minTime 
get_pcvar_float(gp_mintime)

    if(
elapsedTime minTime) {
        
client_print(0print_chat"[AMX MultiMod] %L"LANG_PLAYER"MM_PL_WAIT"floatround(minTime elapsedTimefloatround_ceil))
        return 
PLUGIN_HANDLED
    
}

    new 
timeleft get_timeleft()
    if(
timeleft 180)
        return 
PLUGIN_HANDLED

    start_vote
()
    return 
PLUGIN_HANDLED
}

public 
player_vote(idkey)
{
    if(
key <= g_modcount)
    {
        if(
get_pcvar_num(gp_voteanswers))
        {
            new 
player[SSTRING]
            
get_user_name(idplayercharsmax(player))
            
client_print(0print_chat"%L"LANG_PLAYER"X_CHOSE_X"playerg_modnames[key])
        }
        
g_votemodcount[key]++
    }
}

public 
check_vote()
{
    new 
0
    
for(new 0<= g_modcounta++)
        if(
g_votemodcount[b] < g_votemodcount[a]) a

    client_print
(0print_chat"%L"LANG_PLAYER"MM_VOTEMOD"g_modnames[b])
    
server_print("%L"LANG_PLAYER"MM_VOTEMOD"g_modnames[b])
    if(
!= g_currentmodid)
        
set_multimod(b)

    
callfunc_begin("doVoteNextmap""mapchooser_multimod.amxx");
    
callfunc_end();
    
g_nextmodid b

Credits goes to Shooting King and fysiks for editing this plugin.

Last edited by JoooN; 08-02-2013 at 10:55.
JoooN is offline
Old 08-05-2013, 05:15
Aughelder
This message has been deleted by YamiKaitou. Reason: spambot
Reply


Thread Tools
Display Modes

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 13:57.


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