Exemple #1
0
// ************** READY / NOTREADY
//
// Sets a player's "ready" status.
void G_ready_cmd(gentity_t * ent, unsigned int dwCommand, qboolean state)
{
	char           *status[2] = { " NOT", "" };

	if(g_gamestate.integer == GS_PLAYING || g_gamestate.integer == GS_INTERMISSION)
	{
		CP("cpm \"Match is already in progress!\n\"");
		return;
	}

	if(!state && g_gamestate.integer == GS_WARMUP_COUNTDOWN)
	{
		CP("cpm \"Countdown started.... ^3notready^7 ignored!\n\"");
		return;
	}

	if(ent->client->sess.sessionTeam == TEAM_SPECTATOR)
	{
		CP("cpm \"You must be in the game to be ^3ready^7!\n\"");
		return;
	}

	// Can't ready until enough players.
	if(level.numPlayingClients < match_minplayers.integer)
	{
		CP("cpm \"Not enough players to start match!\n\"");
		return;
	}

	if(!G_cmdDebounce(ent, aCommandInfo[dwCommand].pszCommandName))
	{
		return;
	}

	// Move them to correct ready state
	if(ent->client->pers.ready == state)
	{
		CP(va("print \"You are already%s ready!\n\"", status[state]));
	}
	else
	{
		ent->client->pers.ready = state;
		if(!level.intermissiontime)
		{
			if(state)
			{
				G_MakeReady(ent);
			}
			else
			{
				G_MakeUnready(ent);
			}

			AP(va("print \"%s^7 is%s ready!\n\"", ent->client->pers.netname, status[state]));
			AP(va("cp \"\n%s\n^3is%s ready!\n\"", ent->client->pers.netname, status[state]));
		}
	}

	G_readyMatchState();
}
Exemple #2
0
// ************** TEAMREADY
//
// Sets a player's team "ready" status.
void G_teamready_cmd(gentity_t *ent, unsigned int dwCommand, qboolean state)
{
    int       i, tteam = G_teamID(ent);
    gclient_t *cl;

    // forty - in mod flood protection
    if (ClientIsFlooding(ent, qfalse))
    {
        CP("print \"^1Spam Protection: ^7dropping teamready\n\"");
        return;
    }

    if (g_gamestate.integer == GS_PLAYING || g_gamestate.integer == GS_INTERMISSION)
    {
        CP("cpm \"Match is already in progress!\n\"");
        return;
    }

    if (ent->client->sess.sessionTeam == TEAM_SPECTATOR)
    {
        CP("cpm \"Spectators can't ready a team!\n\"");
        return;
    }

    // Can't ready until enough players.
    if (level.numPlayingClients < match_minplayers.integer)
    {
        CP("cpm \"Not enough players to start match!\n\"");
        return;
    }

    if (!G_cmdDebounce(ent, aCommandInfo[dwCommand].pszCommandName))
    {
        return;
    }

    // Move them to correct ready state
    for (i = 0; i < level.numPlayingClients; i++)
    {
        cl = level.clients + level.sortedClients[i];
        if (cl->sess.sessionTeam == tteam)
        {
            cl->pers.ready = qtrue;

            G_MakeReady(ent);
        }
    }

    G_printFull(va("%s readied the %s team!", ent->client->pers.netname, aTeams[tteam]), NULL);
    G_readyMatchState();
}