Raised This Month: $ Target: $400
 0% 

[HELP] Need to add print_chat message to this plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
JoooN
BANNED
Join Date: Jul 2013
Location: Ban List :P
Old 08-01-2013 , 07:34   [HELP] Need to add print_chat message to this plugin
Reply With Quote #1

Hi, so this is MultiMod plugin from jorporito:
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)
{
    if( 
cmd_access(idlevelcid1) )
    {
        
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

I wanna add a message "%s started the vote"
Now, I can get_user_name, but I don't know how to write when user accesses cmdVoteMod ->
PHP Code:
register_clcmd("amx_votemod""cmdVoteMod"ADMIN_MAP"Vote for the next mod"
Can someone teach me how to add print_chat message for cmdVoteMod?
Thanks
JoooN is offline
Shooting King
RAAASENGAN
Join Date: Mar 2012
Location: India
Old 08-01-2013 , 08:45   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #2

Add this before start_vote() in cmdVoteMod.
PHP Code:
new szName[32];
get_user_name(idszName31);
client_print0print_chat"%s started the vote"szName ); 
__________________
As every time said, don't ever UNDERESTIMATE me.

Donate - Here
Shooting King is offline
JoooN
BANNED
Join Date: Jul 2013
Location: Ban List :P
Old 08-01-2013 , 09:11   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #3

Quote:
Originally Posted by Shooting King View Post
Add this before start_vote() in cmdVoteMod.
PHP Code:
new szName[32];
get_user_name(idszName31);
client_print0print_chat"%s started the vote"szName ); 
Not working also in compile console it says szName is not defined.
JoooN is offline
Shooting King
RAAASENGAN
Join Date: Mar 2012
Location: India
Old 08-02-2013 , 07:28   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #4

"szName is not defined" means you have not declared szName variable. Check if you have written new szName[32] line.
__________________
As every time said, don't ever UNDERESTIMATE me.

Donate - Here

Last edited by Shooting King; 08-02-2013 at 07:31.
Shooting King is offline
JoooN
BANNED
Join Date: Jul 2013
Location: Ban List :P
Old 08-02-2013 , 09:01   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #5

Quote:
Originally Posted by Shooting King View Post
"szName is not defined" means you have not declared szName variable. Check if you have written new szName[32] line.
Ok so i tried every way didnt work can u edit it and post it so i can see where u put it for next time?
JoooN is offline
Shooting King
RAAASENGAN
Join Date: Mar 2012
Location: India
Old 08-02-2013 , 09:11   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #6

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 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

__________________
As every time said, don't ever UNDERESTIMATE me.

Donate - Here
Shooting King is offline
Moody92
Veteran Member
Join Date: May 2011
Location: Oman
Old 08-02-2013 , 10:30   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #7

You could have just posted in Suggestions/Requests
Moody92 is offline
JoooN
BANNED
Join Date: Jul 2013
Location: Ban List :P
Old 08-02-2013 , 10:43   Re: [HELP] Need to add print_chat message to this plugin
Reply With Quote #8

Quote:
Originally Posted by Shooting King View Post
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 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

Thank you very much
Quote:
Originally Posted by Moody92 View Post
You could have just posted in Suggestions/Requests
Yeah I was about to post there but I thought cuz I am asking abt the command to print chat that's y i posted here now admins transfer this thread to sug and req.
Thanks
JoooN is offline
Old 08-03-2013, 01:19
JoooN
This message has been deleted by ConnorMcLeod. Reason: Rule broken: https://forums.alliedmods.net/misc.php?do=showrules
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 00:15.


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