26/07/2020, 12:32 AM
(Última modificación: 26/07/2020, 12:35 AM por Ricardo01. Edited 2 times in total.)
Alguien me puede ayudar? tengo un problema cuando yo eleji un CT para mi equipo funciona bien pero al TT que es "capitan" no le sale el menu para elegir a un TT
Código PHP:
// Official post: http://forums.alliedmods.net/showthread.php?t=154943
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#define PLUGIN "Mix Selection"
#define VERSION "1.0"
#define AUTHOR "Neeeeeeeeeel.-"
// Original idea: Marcelo12
// Player list by meTaLiCroSS
// Thanks shinoda for the loop to open the menu to the other capitan
// Thanks lucas_7_94, some fixs and cvar to show servers running this plugin
// Vars
new CapitanCT[33], CapitanTT[33], MS_tag[20], SelectionON,
RoundKnife, CTsCount, TTsCount, g_iMaxplayers, g_iMsgMoney
// Pcvars
new cvar_tag, cvar_ms_enabled, cvar_MinPlayers
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /cut", "sayCut")
register_clcmd("say /public", "sayPublic")
register_clcmd("say /cortar", "sayCut")
register_clcmd("say /publico", "sayPublic")
register_concmd("jointeam", "BlockFuction")
register_dictionary("MixSelection.txt")
register_event( "Money", "EventMoney", "b" )
RegisterHam(Ham_Spawn, "player", "fw_playerspawn", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
register_cvar("MixSelection 1.0" , AUTHOR , FCVAR_SERVER | FCVAR_PROTECTED)
cvar_tag = register_cvar("ms_tag", "Server")
cvar_ms_enabled = register_cvar("ms_enable", "1")
cvar_MinPlayers = register_cvar("ms_min_players", "10")
get_pcvar_string(cvar_tag, MS_tag, charsmax(MS_tag))
g_iMaxplayers = get_maxplayers()
g_iMsgMoney = get_user_msgid("Money")
}
public sayPublic(id)
{
if(!SelectionON)
{
ChatColor(id, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_ALREADYPUBLIC")
return PLUGIN_HANDLED
}
if(get_user_flags(id) & ADMIN_KICK)
{
new players[32], pnum, tempid
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
CapitanCT[tempid] = false
CapitanTT[tempid] = false
}
RoundKnife = 0
SelectionON = 0
server_cmd("sv_restart 1")
ChatColor(0, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_PUBLIC")
}
else
{
ChatColor(id, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_NOT_ACCES")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public sayCut(id)
{
if(!get_pcvar_num(cvar_ms_enabled))
{
ChatColor(id, "!g[%s] !y%s %L", MS_tag, PLUGIN, LANG_PLAYER, "MS_NOT_ENABLED")
return PLUGIN_HANDLED
}
new PlayersON
for(new i = 1; i <= g_iMaxplayers; i++)
{
if(is_user_connected(i))
PlayersON++
}
if(PlayersON < get_pcvar_num(cvar_MinPlayers))
{
ChatColor(id, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_MIN_PLAYERS", get_pcvar_num(cvar_MinPlayers))
return PLUGIN_HANDLED
}
if(get_user_flags(id) & ADMIN_KICK)
{
if(SelectionON)
{
ChatColor(id, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_ALREADYON", PLUGIN, VERSION)
return PLUGIN_HANDLED
}
new players[32], num
get_players(players, num)
new player
for(new i = 0; i < num; i++)
{
player = players[i]
user_kill(player, 1)
cs_set_user_team(player, CS_TEAM_SPECTATOR)
}
ChatColor(0, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_SELECT_CAPITAN")
set_task(3.0, "menuCapCT", id)
SelectionON = 1
}
else
{
ChatColor(id, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_NOT_ACCES")
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
if(SelectionON)
set_task(5.0, "TranferSpect", id)
CapitanCT[id] = false
CapitanTT[id] = false
}
public TranferSpect(id)
{
user_kill(id, 1)
cs_set_user_team(id, CS_TEAM_SPECTATOR)
}
public menuCapCT(id)
{
new data[128], players[32], pnum, tempid, szName[33], szTempid[10]
formatex(data, charsmax(data), "\y%s^n\wVersion: \r%s^n^n\w%L", PLUGIN, VERSION, LANG_PLAYER, "MS_SELECT_CAP_CT")
new Menu = menu_create(data, "Show_CapCT")
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
get_user_name(tempid, szName, charsmax(szName))
num_to_str(tempid, szTempid, charsmax(szTempid))
menu_additem(Menu, szName, szTempid, 0)
}
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_NEXT_PAGE")
menu_setprop(Menu,MPROP_NEXTNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_BACK_PAGE")
menu_setprop(Menu,MPROP_BACKNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_EXIT")
menu_setprop(Menu,MPROP_EXITNAME, data)
menu_display(id, Menu, 0)
}
public Show_CapCT(id, Menu, item)
{
new data[6], iName[64]
new access, callback
menu_item_getinfo(Menu, item, access, data,5, iName, 63, callback)
new tempid = str_to_num(data)
cs_set_user_team(tempid, CS_TEAM_CT)
CapitanCT[tempid] = true
ChatColor(0, "!g[%s] !team%s %L", MS_tag, iName, LANG_PLAYER, "MS_CAPCT_SELECTED")
menuCapTT(id)
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public menuCapTT(id)
{
new data[128], players[32], pnum, tempid, szName[33], szTempid[10]
formatex(data, charsmax(data), "\y%s^n\wVersion: \r%s^n^n\w%L", PLUGIN, VERSION, LANG_PLAYER, "MS_SELECT_CAP_TT")
new Menu = menu_create(data, "Show_CapTT")
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
if(!CapitanCT[tempid])
{
get_user_name(tempid, szName, charsmax(szName))
num_to_str(tempid, szTempid, charsmax(szTempid))
menu_additem(Menu, szName, szTempid, 0)
}
}
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_NEXT_PAGE")
menu_setprop(Menu,MPROP_NEXTNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_BACK_PAGE")
menu_setprop(Menu,MPROP_BACKNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_EXIT")
menu_setprop(Menu,MPROP_EXITNAME, data)
menu_display(id, Menu, 0)
}
public Show_CapTT(id, Menu, item)
{
new data[6], iName[64]
new access, callback
menu_item_getinfo(Menu, item, access, data,5, iName, 63, callback)
new tempid = str_to_num(data)
new uName[33]
get_user_name(tempid, uName, charsmax(uName))
if(cs_get_user_team(tempid) == CS_TEAM_CT)
{
ChatColor(id, "!g[%s] !team%s %L", MS_tag, uName, LANG_PLAYER, "MS_SELECT_OTHER")
menuCapTT(id)
}
else
{
cs_set_user_team(tempid, CS_TEAM_T)
CapitanTT[tempid] = true
ChatColor(0, "!g[%s] !team%s %L", MS_tag, uName, LANG_PLAYER, "MS_CAPTT_SELECTED")
server_cmd("sv_restart 5")
set_task(4.0, "StartRoundKnife")
}
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public StartRoundKnife()
{
ChatColor(0, "!g[%s] !y%L", MS_tag, LANG_PLAYER, "MS_KNIFE_START")
RoundKnife = 1
}
public fw_playerspawn(id)
{
if(RoundKnife && is_user_alive(id))
{
fm_strip_user_weapons(id)
give_item(id, "weapon_knife")
}
}
public EventMoney(id)
{
if(RoundKnife && is_user_alive(id))
{
set_pdata_int(id, 115, 0)
message_begin( MSG_ONE_UNRELIABLE, g_iMsgMoney, _, id )
write_long (0)
write_byte (1)
message_end()
}
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(RoundKnife && is_user_alive(attacker))
{
new CapitanAttacker = get_user_team(attacker)
new CapitanVictim = get_user_team(victim)
new atName[33]
get_user_name(attacker, atName, charsmax(atName))
if(CapitanAttacker == 2 && CapitanVictim == 1)
{
ChatColor(0, "!g[%s] !team%s %L", MS_tag, atName, LANG_PLAYER, "MS_CAPCT_WIN")
set_task(5.0, "SelectCT", attacker)
}
else if(CapitanAttacker == 1 && CapitanVictim == 2)
{
ChatColor(0, "!g[%s] !team%s %L", MS_tag, atName, LANG_PLAYER, "MS_CAPTT_WIN")
set_task(5.0, "SelectTT", attacker)
}
RoundKnife = 0
}
}
public SelectTT(id)
{
new data[128], players[32], pnum, tempid, szName[33], szTempid[10]
formatex(data, charsmax(data), "\y%s^n\wVersion: \r%s^n^n\w%L", PLUGIN, VERSION, LANG_PLAYER, "MS_SELECT_TEAMMATES")
new Menu = menu_create(data, "Show_PlayersTT")
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
if(get_user_team(tempid) == 3)
{
get_user_name(tempid, szName, charsmax(szName))
num_to_str(tempid, szTempid, charsmax(szTempid))
menu_additem(Menu, szName, szTempid, 0)
}
}
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_NEXT_PAGE")
menu_setprop(Menu,MPROP_NEXTNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_BACK_PAGE")
menu_setprop(Menu,MPROP_BACKNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_EXIT")
menu_setprop(Menu,MPROP_EXITNAME, data)
menu_display(id, Menu, 0)
}
public Show_PlayersTT(id, Menu, item)
{
new data[6], iName[64]
new iaccess, callback
menu_item_getinfo(Menu, item, iaccess, data,5, iName, 63, callback)
new tempid = str_to_num(data)
new uName[33]
get_user_name(tempid, uName, charsmax(uName))
if(CapitanTT[id])
{
cs_set_user_team(tempid, CS_TEAM_T)
ChatColor(0, "!g[%s] !team%s %L", MS_tag, uName, LANG_PLAYER, "MS_TT_SELECTED")
TTsCount++
for(new i=1; i<=g_iMaxplayers; i++)
{
if(CapitanCT[i])
{
if((CTsCount + TTsCount) < 10)
{
SelectCT(i)
break
}
}
}
}
SelectionFinish()
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public SelectCT(id)
{
new data[128], players[32], pnum, tempid, szName[33], szTempid[10]
formatex(data, charsmax(data), "\y%s^n\wVersion: \r%s^n^n\w%L", PLUGIN, VERSION, LANG_PLAYER, "MS_SELECT_TEAMMATES")
new Menu = menu_create(data, "Show_PlayersCT")
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
if(get_user_team(tempid) == 3)
{
get_user_name(tempid, szName, charsmax(szName))
num_to_str(tempid, szTempid, charsmax(szTempid))
menu_additem(Menu, szName, szTempid, 0)
}
}
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_NEXT_PAGE")
menu_setprop(Menu,MPROP_NEXTNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_BACK_PAGE")
menu_setprop(Menu,MPROP_BACKNAME, data)
formatex(data, charsmax(data), "%L", LANG_PLAYER, "MS_EXIT")
menu_setprop(Menu,MPROP_EXITNAME, data)
menu_display(id, Menu, 0)
}
public Show_PlayersCT(id, Menu, item)
{
new data[6], iName[64]
new access, callback
menu_item_getinfo(Menu, item, access, data,5, iName, 63, callback)
new tempid = str_to_num(data)
new uName[33]
get_user_name(tempid, uName, charsmax(uName))
if(CapitanCT[id])
{
cs_set_user_team(tempid, CS_TEAM_CT)
ChatColor(0, "!g[%s] !team%s %L", MS_tag, uName, LANG_PLAYER, "MS_CT_SELECTED")
CTsCount++
for(new i=1; i<=g_iMaxplayers; i++)
{
if( CapitanTT[i] )
{
if((CTsCount + TTsCount) < 10)
{
SelectCT(i)
break
}
}
}
}
SelectionFinish()
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public SelectionFinish()
{
if((CTsCount + TTsCount) == 8)
{
ChatColor(0, "!g[%s] %L", MS_tag, LANG_PLAYER, "MS_END")
SelectionON = 0
server_cmd("sv_restart 5")
}
}
public BlockFuction(id)
{
if(cs_get_user_team(id) == CS_TEAM_SPECTATOR && SelectionON)
{
cs_set_user_team(id, CS_TEAM_SPECTATOR)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
stock fm_strip_user_weapons(id)
{
static ent
ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
if (!pev_valid(ent)) return;
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, id)
engfunc(EngFunc_RemoveEntity, ent)
}
stock ChatColor(id, const input[], any:...)
{
static szMsg[191], msgSayText;
if (!msgSayText)
msgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, input, 3);
replace_all(szMsg, 190, "!g", "^4");
replace_all(szMsg, 190, "!y", "^1");
replace_all(szMsg, 190, "!team", "^3");
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
write_byte(id ? id : 33);
write_string(szMsg);
message_end();
}