The message ingame when the players are ready says "You cannot become a spectator"
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "Beta tuelve"
#define VERSION "1.0"
#define AUTHOR "Maniatico"
new g_ready[33];
new g_player_ready;
const OFFSET_VGUIMENU = 2;
enum _:MESSAGES_STRUCT
{
SAYTEXT,
SHOWMENU,
VGUIMENU,
STATUSICON,
TEXTMSG,
HIDEWEAPON,
DEATHMSG
};
new g_message[MESSAGES_STRUCT];
new started_game = 0;
new iMaxplayers;
new HUD_readys;
const Task = 2323;
#define VEO_EL_HUD (taskid-Task)
#define TEXTO "The game will start when 7 players use /ready"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ready", "cmdready", ADMIN_ALL);
HUD_readys = CreateHudSyncObj();
iMaxplayers = get_maxplayers();
register_clcmd("chooseteam", "clcmd_chooseteam");
register_clcmd("jointeam", "clcmd_chooseteam");
g_message[SHOWMENU] = get_user_msgid("ShowMenu");
g_message[VGUIMENU] = get_user_msgid("VGUIMenu");
register_message(g_message[SHOWMENU], "message_showmenu");
register_message(g_message[VGUIMENU], "message_vguimenu");
}
public cmdready(id){
if(g_ready[id] != 1){
static name[33]
get_user_name(id, name, 32);
g_player_ready += 1;
chatcolor(0, "!yThe player !g%s !yis ready, there are !g%d/4 players !yready to play!", name, g_player_ready);
g_ready[id] = 1;
if(g_player_ready >= 4){
start_game(id);
started_game= 1;
remove_task(id+Task);
}
}
else{
chatcolor(id, "!yYou're already ready!");
}
}
public client_putinserver(id){
if(started_game != 1){
set_task(0.5, "client_jointeam", id);
set_task(1.0, "HudCentral", id + Task, _, _, "b");
}
else{
engclient_cmd(id, "jointeam", "6");
}
}
public client_jointeam(id){
if (is_user_bot(id))
return;
static vgui;
vgui = (get_pdata_int(id, 510) & (1<<0));
if (vgui)
set_pdata_int(id, 510, get_pdata_int(id, 510) & ~(1<<0));
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE);
set_msg_block(get_user_msgid("VGUIMenu"), BLOCK_ONCE);
engclient_cmd(id, "jointeam", "5");
engclient_cmd(id, "joinclass", "5");
set_msg_block(get_user_msgid("ShowMenu"), get_msg_block(get_user_msgid("ShowMenu")));
set_msg_block(get_user_msgid("ShowMenu"), get_msg_block(get_user_msgid("VGUIMenu")));
if (vgui)
set_pdata_int(id, 510, get_pdata_int(id, 510));
set_task(0.1, "respawn_player", id);
}
public respawn_player(id)
ExecuteHamB(Ham_CS_RoundRespawn, id);
public clcmd_chooseteam(id)
{
return PLUGIN_HANDLED;
}
public message_showmenu(msgid, dest, id)
{
static message[21];
get_msg_arg_string(4, message, charsmax(message));
if (containi(message, "Team_Select") != -1)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public message_vguimenu(msgid, dest, id)
{
if (get_msg_arg_int(1) != OFFSET_VGUIMENU)
return PLUGIN_CONTINUE;
return PLUGIN_HANDLED;
}
public client_disconnect(id){
if(g_ready[id] == 1){
g_player_ready -= 1;
}
remove_task(id+Task);
}
public HudCentral(taskid){
set_hudmessage(random_num(0,255), random_num(0,255), random_num(0,255), -1.0, -0.7, 1, 6.0, 1.1, 0.0, 0.0, -1)
ShowSyncHudMsg(VEO_EL_HUD, HUD_readys, "%s", TEXTO)
}
public start_game(id){
// This dont work
for(new i=1; i<=iMaxplayers; i++) {
if(!is_user_connected(i) || !is_user_alive(i)){
continue
engclient_cmd(0, "jointeam", "6");
}
}
}
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();
}