25/04/2018, 10:44 AM
Saludos.
Alguno tiene la mas minima idea de como instalar este plugin
MultiMod Extended
He hecho todo tal cual los instalado.. pero aun no me inicia los mod
post original https://forums.alliedmods.net/showthread.php?t=95568
Alguno tiene la mas minima idea de como instalar este plugin
MultiMod Extended
Código PHP:
#include <amxmodx>
#include <amxmisc>
#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 "addons/amxmodx/configs/multimod"
#define TASK_VOTEMOD 2487002
#define TASK_CHVOMOD 2487004
#define MAXMODS 100
#define LSTRING 193
#define SSTRING 33
#define VM_FLAG ADMIN_MAP // votemod flag
#define NMM_FLAG ADMIN_MAP // nextmod menu flag
#define CM_FLAG ADMIN_MAP // cancel mod flag
#define BMM_FLAG ADMIN_MAP // block mods menu flag
#define COLOR BLUE
new sPrefix[]= "[CSD]"; // Prefix for messages
new sMenuPrefix[]= "CSDudes"; // Menu Prefix
new bool:g_rockedVote[33], g_rockedVoteCnt;
new bool:g_hasbeenrocked = false;
new bool:nextmodchosed = false;
new bool:modnexted = false;
new g_votemodcount[MAXMODS];
new g_modnames[MAXMODS][SSTRING];
new g_filemaps[MAXMODS][LSTRING];
new g_fileplugins[MAXMODS][LSTRING];
new g_fileconf[LSTRING];
new g_modcount = -1;
new g_nextmodid;
new g_currentmodid;
new g_multimod[SSTRING];
new g_nextmap[SSTRING];
new g_currentmod[SSTRING];
new g_confdir[LSTRING];
new cvar_rtv_ratio;
new g_blockedmod[LSTRING] = -1;
new gp_mode;
new gp_mapcyclefile;
new bool:countdownrun = false;
// galileo specific cvars
new gp_galileo_nommapfile;
new gp_galileo_votemapfile;
// ColorChat
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
public plugin_init( )
{
new MenuName[63];
register_plugin("MultiMod Manager", "3.0", "JoRoPiTo");
register_cvar("MultiModManager", "3.0", FCVAR_SERVER|FCVAR_SPONLY);
gp_mode = register_cvar("amx_multimod_mode", "1"); // 0=auto ; 1=mapchooser ; 2=galileo
register_cvar("amx_mintime", "10");
register_cvar("amx_multimod_voteallowed", "0");
cvar_rtv_ratio = register_cvar("rtv_ratio", "0.51");
register_dictionary( "multimod_ml.txt" );
get_configsdir(g_confdir, charsmax(g_confdir));
register_clcmd("amx_votemod", "start_vote", VM_FLAG, "Vote for the next mod");
// register_clcmd("amx_nextmodmenu", "setmodmenu", NMM_FLAG, "- Menu for the NextMod");
// register_clcmd("amx_cancelmod", "cancelmod", CM_FLAG, "- cancel the nextmod ( amx_nextmodmenu )");
// register_clcmd("amx_blockmodmenu", "blockmenu", BMM_FLAG, "- Menu to Block Mods");
register_clcmd("say /mm_menu", "mmmenu");
register_clcmd("say /mods", "mods");
register_clcmd("say nextmod", "user_nextmod");
register_clcmd("say_team nextmod", "user_nextmod");
register_clcmd("say currentmod", "user_currentmod");
register_clcmd("say_team currentmod", "user_currentmod");
register_clcmd("say rtv", "cmdSayRTV");
register_clcmd("say rtvm", "cmdSayRTV");
register_clcmd("say_team rtv", "cmdSayRTV");
register_clcmd("say_team rtvm", "cmdSayRTV");
format(MenuName, charsmax(MenuName), "Vote Nextmod");
}
public mods( id )
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_CHECK_CONSOLE", sPrefix);
console_print(id, "======= %L =======", LANG_PLAYER, "MM_AVAILABLEMODS");
for(new i = 0 ; i <= g_modcount ; i++)
{
if(i == g_currentmodid)
{
console_print(id, "%d.%s %L", i + 1, g_modnames[i], LANG_PLAYER, "MM_CURRENTMOD");
}
else
{
console_print(id, i == g_blockedmod[i] ? "%d.%s %L" : "%d.%s", i + 1, g_modnames[i], LANG_PLAYER, "MM_BLOCKED");
}
}
console_print(id, "=========================");
}
public client_connect( id )
{
g_rockedVote[id] = false;
}
public client_disconnected( id )
{
if(g_rockedVote[id])
{
g_rockedVote[id] = false;
g_rockedVoteCnt--;
}
}
public plugin_cfg( )
{
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_mode, 1);
else if(find_plugin_byfile("galileo.amxx") != -1)
set_pcvar_num(gp_mode, 2);
}
get_localinfo(AMX_MULTIMOD, g_multimod, charsmax(g_multimod));
load_cfg();
if(!equal(g_currentmod, g_multimod) || (g_multimod[0] == 0))
{
set_multimod(0);
get_firstmap(0);
server_print("%L", LANG_SERVER, "MM_FIRSTRUN");
server_cmd("changelevel %s", g_nextmap);
}
else
{
server_cmd("exec %s", g_fileconf);
}
}
public load_cfg( )
{
new szData[LSTRING];
new szFilename[LSTRING];
formatex(szFilename, charsmax(szFilename), "%s/%s", AMX_BASECONFDIR, "multimod.ini");
new f = fopen(szFilename, "rt");
new szTemp[SSTRING],szModName[SSTRING], szTag[SSTRING], szCfg[SSTRING];
while(!feof(f)) {
fgets(f, szData, charsmax(szData));
trim(szData);
if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue;
if(szData[0] == '[') {
g_modcount++;
replace_all(szData, charsmax(szData), "[", "");
replace_all(szData, charsmax(szData), "]", "");
strtok(szData, szModName, charsmax(szModName), szTemp, charsmax(szTemp), ':', 0);
strtok(szTemp, szTag, charsmax(szTag), szCfg, charsmax(szCfg), ':', 0);
if(equal(szModName, g_multimod)) {
formatex(g_fileconf, 192, "%s/%s", AMX_BASECONFDIR, szCfg);
copy(g_currentmod, charsmax(g_currentmod), szModName);
g_currentmodid = g_modcount;
server_print("%s Selected mod will be: %s (%s:%s)", sPrefix, g_multimod, szTag, szCfg);
}
formatex(g_modnames[g_modcount], 32, "%s", szModName);
formatex(g_filemaps[g_modcount], 192, "%s/%s-maps.ini", AMX_BASECONFDIR, szTag);
formatex(g_fileplugins[g_modcount], 192, "%s/%s-plugins.ini", AMX_BASECONFDIR, szTag);
server_print("%L %s %s %s", LANG_SERVER, "MM_MODLOADED", 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_nextmap, charsmax(g_nextmap));
else
read_file(g_filemaps[modid], 0, g_nextmap, charsmax(g_nextmap), ilen);
}
public set_multimod( modid )
{
server_print("Setting multimod to %i - %s", modid, g_modnames[modid]);
set_localinfo("amx_multimod", g_modnames[modid]);
server_cmd("localinfo amxx_plugins ^"^"");
server_cmd("localinfo lastmapcycle ^"^"");
set_localinfo(AMX_PLUGINS, file_exists(g_fileplugins[modid]) ? g_fileplugins[modid] : AMX_DEFAULTPLUGINS);
set_localinfo(AMX_LASTCYCLE, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE);
set_pcvar_string(gp_mapcyclefile, file_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_nommapfile, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE);
if(gp_galileo_votemapfile)
set_pcvar_string(gp_galileo_votemapfile, file_exists(g_filemaps[modid]) ? g_filemaps[modid] : AMX_DEFAULTCYCLE);
}
case 1:
{
callfunc_begin("plugin_init", "mapchooser_multimod.amxx");
callfunc_end();
}
}
}
public check_task( )
{
if(!g_hasbeenrocked)
{
if(!countdownrun)
{
if(get_timeleft() > 1 && get_timeleft() < 195)
{
set_task(1.0, "votecountdown", _, _, _, "a", 15);
set_task(16.0, "start_vote");
}
}
}
else
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public votecountdown( )
{
static countdown = 15;
set_hudmessage(0, 222, 50, -1.0, 0.13, 0, 1.0, 0.94, 0.0, 0.0, -1);
show_hudmessage(0, "%L", LANG_PLAYER, "MM_COUNTDOWN", modnexted ? "Map" : "Mod", countdown);
countdownrun = true;
countdown--;
}
public mmmenu( id )
{
new title[512];
format(title, 511, "%L", LANG_PLAYER, "MM_MMMENU", sMenuPrefix);
new menu = menu_create(title, "mm_handler");
new callback = menu_makecallback("mmcallback");
new blockmods[512]
format(blockmods, 511, "%L", LANG_PLAYER, "MM_BLOCKMODS")
menu_additem(menu, blockmods);
new choosenextmod[512]
format(choosenextmod, 511, "%L", LANG_PLAYER, "MM_CHOOSENEXTMOD");
menu_additem(menu, choosenextmod);
new menucancelmod[512]
format(menucancelmod, 511, "%L", LANG_PLAYER, "MM_CANCELNEXTMOD" );
menu_additem(menu, menucancelmod, "", _, callback);
menu_display(id, menu, 0);
}
public mm_handler( id, menu, item )
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0:
{
blockmenu(id);
}
case 1:
{
setmodmenu(id);
}
case 2:
{
cancelmod(id);
}
}
return PLUGIN_HANDLED;
}
public mmcallback( id, menu, item )
{
static _access, info[4], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
if( !modnexted )
{
return ITEM_DISABLED;
}
if( g_hasbeenrocked )
{
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public start_vote( id, level, cid )
{
if(!cmd_access( id, level, cid, 1 ))
return PLUGIN_HANDLED;
if( g_hasbeenrocked )
{
console_print(id, "%L", LANG_PLAYER, "MM_VOTEMODSTARTED");
return PLUGIN_HANDLED;
}
if( modnexted )
{
g_hasbeenrocked = true;
callfunc_begin("doVoteNextmap", "mapchooser_multimod.amxx");
callfunc_end();
if( id != 0 )
{
new sAdminName[32];
get_user_name(id, sAdminName, 31);
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_STARTEDVOTEMAPS", sAdminName, g_modnames[g_nextmodid]);
}
}
else
{
g_hasbeenrocked = true;
if( id != 0 )
{
new sAdminName[32];
get_user_name(id, sAdminName, 31);
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_STARTEDVOTEMOD", sAdminName);
}
remove_task(TASK_VOTEMOD);
remove_task(TASK_CHVOMOD);
new choosethenextmod[512]
format( choosethenextmod, 511, "%L", LANG_PLAYER, "MM_ITSTIMETOCHOOSE");
new menu = menu_create(choosethenextmod, "vm_handler");
new callback = menu_makecallback("votemodcallback");
for(new i = 0 ; i <= g_modcount ; i++)
{
new curmodline[512];
format(curmodline, 511, i == g_currentmodid ? "%s %L" : "%s", g_modnames[i], LANG_PLAYER, "MM_CURRENTMOD");
menu_additem(menu, curmodline, "", _, callback);
}
new players[32], pnum;
get_players(players, pnum);
for (new i = 0 ; i < pnum ; i++)
{
new tempid = players[i];
menu_display(tempid, menu, 0);
}
client_cmd(0, "spk Gman/Gman_Choose2");
set_task(15.0, "check_vote", TASK_CHVOMOD);
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public user_nextmod( id )
{
if( nextmodchosed )
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_NEXTMODIS", sPrefix, g_modnames[g_nextmodid]);
else
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_NEXTMODSTILL", sPrefix);
}
public user_currentmod( id )
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_CURRENTMODIS", sPrefix, g_currentmod);
}
public vm_handler( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
default:
{
new player[SSTRING];
get_user_name(id, player, charsmax(player));
if(get_user_team(id) == 1)
ColorChat(0, RED, "%s ^1%L ^4%s", player, LANG_PLAYER, "MM_CHOSE", g_modnames[item]);
else if(get_user_team(id) == 2)
ColorChat(0, BLUE, "%s ^1%L ^4%s", player, LANG_PLAYER, "MM_CHOSE", g_modnames[item]);
else
ColorChat(0, GREY, "%s ^1%L ^4%s", player, LANG_PLAYER, "MM_CHOSE", g_modnames[item]);
}
}
++g_votemodcount[item];
// this is destroying the menu for all players
// menu_destroy(menu);
return PLUGIN_HANDLED;
}
public votemodcallback( id, menu, item )
{
static _access, info[4], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
if(item == g_currentmodid)
{
return ITEM_DISABLED;
}
if(item == g_blockedmod[item])
{
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public check_vote( )
{
new b = 0;
for(new a = 0; a <= g_modcount; a++)
if(g_votemodcount[b] < g_votemodcount[a]) b = a;
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_VOTINGFINISHED", sPrefix, g_modnames[b]);
server_print("%L", LANG_SERVER, "MM_VOTINGFINISHED_SERVER", g_modnames[b]);
set_multimod(b);
callfunc_begin("doVoteNextmap", "mapchooser_multimod.amxx");
callfunc_end();
g_nextmodid = b;
nextmodchosed = true;
}
public setmodmenu( id )
{
new choosenextmod[512]
format(choosenextmod, 511, "%L", LANG_PLAYER, "MM_CHOOSENEXTMOD");
new menu = menu_create(choosenextmod, "menu_handler");
new callback = menu_makecallback("setmodcallback");
for(new i = 0 ; i <= g_modcount ; i++)
{
if(i == g_currentmodid)
{
new curmodline[512];
format(curmodline, 511, "%s %L", g_modnames[g_currentmodid], LANG_PLAYER, "MM_CURRENTMOD");
menu_additem(menu, curmodline, "", _, callback);
}
else
{
if(nextmodchosed)
{
new nexmodline[512];
format(nexmodline, 511, i == g_nextmodid ? "%s %L" : "%s", g_modnames[i], LANG_PLAYER, "MM_NEXTMOD");
menu_additem(menu, nexmodline, "", _, callback);
}
else
{
new nexmodline[512];
format(nexmodline, 511, "%s", g_modnames[i]);
menu_additem(menu, nexmodline, "", _, callback);
}
}
}
menu_display(id, menu, 0);
return PLUGIN_CONTINUE;
}
public menu_handler( id, menu, item )
{
if(item == MENU_EXIT)
{
mmmenu(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
new sAdminName[32];
get_user_name(id, sAdminName, 31);
switch(item)
{
default:
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_ADMINCHOSENEXTMOD", sPrefix, sAdminName, g_modnames[item]);
set_multimod(item);
modnexted = true;
g_nextmodid = item;
nextmodchosed = true;
}
}
setmodmenu(id);
return PLUGIN_HANDLED;
}
public setmodcallback( id, menu, item )
{
static _access, info[4], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
if( !( get_user_flags( id ) & NMM_FLAG ) )
{
return ITEM_DISABLED;
}
if( item == g_currentmodid )
{
return ITEM_DISABLED;
}
if( nextmodchosed && item == g_nextmodid )
{
return ITEM_DISABLED;
}
if( g_hasbeenrocked )
{
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public blockmenu( id )
{
new blockkmods[512]
format(blockkmods, 511, "%L", LANG_PLAYER, "MM_BLOCKMODS");
new menu = menu_create(blockkmods, "block_handler");
new callback = menu_makecallback("blockcallback");
for(new i = 0 ; i <= g_modcount ; i++)
{
if(i == g_currentmodid)
{
new curmodline[512];
format(curmodline, 511, "%s %L", g_modnames[g_currentmodid], LANG_PLAYER, "MM_CURRENTMOD");
menu_additem(menu, curmodline, "", _, callback);
}
else
{
if(i == g_blockedmod[i])
{
new nexmodline[512];
format(nexmodline, 511, "%s \r%L", g_modnames[i], LANG_PLAYER, "MM_BLOCKED");
menu_additem(menu, nexmodline, "", _, callback);
}
else
{
new nexmodline[512];
format(nexmodline, 511, "%s", g_modnames[i]);
menu_additem(menu, nexmodline, "", _, callback);
}
}
}
menu_display(id, menu, 0);
return PLUGIN_CONTINUE;
}
public block_handler( id, menu, item )
{
if( item == MENU_EXIT )
{
mmmenu(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
new sAdminName[32];
get_user_name(id, sAdminName, 31);
switch(item)
{
default:
{
if(item == g_blockedmod[item])
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_ADMINUNLOCKED", sPrefix, sAdminName, g_modnames[item]);
g_blockedmod[item] =! item;
}
else
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_ADMINLOCKED", sPrefix, sAdminName, g_modnames[item]);
g_blockedmod[item] = item;
}
}
}
blockmenu( id );
return PLUGIN_HANDLED;
}
public blockcallback( id, menu, item )
{
static _access, info[4], callback;
menu_item_getinfo(menu, item, _access, info, sizeof(info) - 1, _, _, callback);
if(!(get_user_flags(id) & BMM_FLAG))
{
return ITEM_DISABLED;
}
if( item == g_currentmodid )
{
return ITEM_DISABLED;
}
if( g_hasbeenrocked )
{
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
public cancelmod( id )
{
if( !( get_user_flags( id ) & CM_FLAG ) )
return PLUGIN_HANDLED;
if( modnexted )
{
new sAdminName[32];
get_user_name(id, sAdminName, 31);
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_ADMINCANCELNEXTMOD", sPrefix, sAdminName);
modnexted = false;
nextmodchosed = false;
}
mmmenu( id );
return PLUGIN_HANDLED;
}
public cmdSayRTV( id )
{
if( modnexted )
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_NEXTMODCHOOSED", sPrefix);
return PLUGIN_HANDLED;
}
if( g_hasbeenrocked )
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_VOTEMODROCKED", sPrefix);
return PLUGIN_HANDLED;
}
if( g_rockedVote[id] )
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_YOUROCKEDRTV", sPrefix);
rtv_remind();
return PLUGIN_CONTINUE;
}
new Float:time_elapsed = get_cvar_float("mp_timelimit") - (float( get_timeleft() ) / 60.0);
if( time_elapsed < 10.0 )
{
new Float:time_til_votebegin = 10.0 - time_elapsed;
new a = get_timeleft();
new Float:wmin_to_vote = time_til_votebegin - 0.5;
new min_to_vote = floatround(wmin_to_vote);
if( min_to_vote == 0 )
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_YOUCANTSECONDS", sPrefix, (a % 60), (a % 60) == 1 ? "" : "s" );
}
else
{
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_YOUCANTMINS", sPrefix, min_to_vote, min_to_vote == 1 ? "" : "s", (a % 60), (a % 60) == 1 ? "" : "s" );
}
return PLUGIN_HANDLED;
}
g_rockedVote[id] = true;
g_rockedVoteCnt++;
ColorChat(id, COLOR, "%L", LANG_PLAYER, "MM_RTV_YOUHAVEROCKED", sPrefix);
if( g_rockedVoteCnt >= get_RocksNeeded() )
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_RTV_VOTEMODWILLSTART", sPrefix);
set_task(4.0,"startRockVote");
}
else
{
rtv_remind( );
}
return PLUGIN_CONTINUE;
}
public startRockVote( )
{
set_task(1.0,"start_vote");
}
get_RocksNeeded( )
{
return floatround(get_pcvar_float(cvar_rtv_ratio) * float(get_realplayersnum()), floatround_ceil);
}
stock get_realplayersnum( )
{
new players[32], playerCnt;
get_players(players, playerCnt, "ch");
return playerCnt;
}
rtv_remind( )
{
ColorChat(0, COLOR, "%L", LANG_PLAYER, "MM_RTV_NEEDMOREPLAYERS", sPrefix, get_RocksNeeded() - g_rockedVoteCnt, get_RocksNeeded() - g_rockedVoteCnt > 1 ? "s" : "");
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
if( !get_playersnum() ) return;
new message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
new team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used)
{
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
new i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
return i;
}
return -1;
}
He hecho todo tal cual los instalado.. pero aun no me inicia los mod
post original https://forums.alliedmods.net/showthread.php?t=95568