Exemple #1
0
void AdminMatchStart ()
{
    gedict_t *p;
    int i = 0;

    for( p = world; (p = find_plr( p )); )
    {
		if( p->ready ) {
			i++;
		}
		else
		{
			G_bprint(2, "%s was kicked by admin forcestart\n", p->netname);
			G_sprint(p, 2, "Bye bye! Pay attention next time.\n");

			stuffcmd(p, "disconnect\n"); // FIXME: stupid way
		}
	}

    k_attendees = i;

    if( k_attendees ) {
        StartTimer();
	}
    else
    {
        G_bprint(2, "Can't start! More players needed.\n");
		EndMatch( 1 );
    }
}
Exemple #2
0
void AdminForceBreak ()
{
    if( is_adm( self ) && self->ct != ctPlayer && !match_in_progress )
    {
        k_force = 0;
        return;
    }

    if( !is_adm( self ) || !match_in_progress )
        return;

    if( self->ct != ctPlayer && match_in_progress == 1 )
    {
        k_force = 0;
        StopTimer( 1 );

        return;
    }

    if( k_oldmaxspeed ) // huh???
        cvar_fset( "sv_maxspeed", k_oldmaxspeed );

    G_bprint(2, "%s forces a break!\n", self->netname);

    EndMatch( 0 );
}
void AShooterGameMode::FinishMatch()
{
	AShooterGameState* const MyGameState = Cast<AShooterGameState>(GameState);
	if (IsMatchInProgress())
	{
		EndMatch();
		DetermineMatchWinner();		

		// notify players
		for (FConstControllerIterator It = GetWorld()->GetControllerIterator(); It; ++It)
		{
			AShooterPlayerState* PlayerState = Cast<AShooterPlayerState>((*It)->PlayerState);
			const bool bIsWinner = IsWinner(PlayerState);

			(*It)->GameHasEnded(NULL, bIsWinner);
		}

		// lock all pawns
		// pawns are not marked as keep for seamless travel, so we will create new pawns on the next match rather than
		// turning these back on.
		for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; ++It)
		{
			(*It)->TurnOff();
		}

		// set up to restart the match
		MyGameState->RemainingTime = TimeBetweenMatches;
	}
}
VOID LeagueOfLegendsHelperDlg::CheckButtonPresses()
{
    m_lcd.ModifyDisplay(LG_MONOCHROME);

    if (m_lcd.ButtonTriggered(LG_BUTTON_1))
        StartMatch();
	else if (m_lcd.ButtonTriggered(LG_BUTTON_2))
		EndMatch();
	else if (m_lcd.ButtonTriggered(LG_BUTTON_3))
		notify = !notify;
	else if (m_lcd.ButtonTriggered(LG_BUTTON_4))
		m_lcd.ShowPage((m_lcd.GetCurrentPageNumber() + 1) % m_lcd.GetPageCount());

	if(GetKeyState(VK_CONTROL) & 0x80 && GetKeyState(VK_SHIFT) & 0x80 && GetKeyState(VK_MENU) & 0x80)
	{
		if(GetKeyState(VK_F1) & 0x80)
			redFriendly.Trigger();
		else if(GetKeyState(VK_F2) & 0x80)
			redEnemy.Trigger();
		else if(GetKeyState(VK_F3) & 0x80)
			dragon.Trigger();
		else if(GetKeyState(VK_F4) & 0x80)
			blueFriendly.Trigger();
		else if(GetKeyState(VK_F5) & 0x80)
			blueEnemy.Trigger();
		else if(GetKeyState(VK_F6) & 0x80)
			baron.Trigger();
	}
}
void ALabyrinthGameMode::FinishMatch()
{
	ALGameState* const MyGameState = Cast<ALGameState>(GameState);
	if (IsMatchInProgress())
	{
		EndMatch();
		DetermineMatchWinner();

		// notify players
		for (FConstPlayerControllerIterator It = GetWorld()->GetPlayerControllerIterator(); It; It++)
		{
			ALPlayerState* PlayerState = Cast<ALPlayerState>((*It)->PlayerState);
			if (PlayerState)
			{
				const bool bIsWinner = IsWinner(PlayerState);

				(*It)->GameHasEnded(NULL, bIsWinner);
			}
		}
		// lock all pawns
		// pawns are not marked as keep for seamless travel, so we will create new ones
		// instead of turning these back on
		for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; It++)
		{
			(*It)->TurnOff();
		}

		// Setup to restart the match
		MyGameState->RemainingTime = TimeBetweenMatches;
	}
}
Exemple #6
0
// game
void IGameController::DoWincheckMatch()
{
	if(IsTeamplay())
	{
		// check score win condition
		if((g_Config.m_SvScorelimit > 0 && (m_aTeamscore[TEAM_RED] >= g_Config.m_SvScorelimit || m_aTeamscore[TEAM_BLUE] >= g_Config.m_SvScorelimit)) ||
			(g_Config.m_SvTimelimit > 0 && (Server()->Tick()-m_GameStartTick) >= g_Config.m_SvTimelimit*Server()->TickSpeed()*60))
		{
			if(m_aTeamscore[TEAM_RED] != m_aTeamscore[TEAM_BLUE] || m_GameFlags&GAMEFLAG_SURVIVAL)
				EndMatch();
			else
				m_SuddenDeath = 1;
		}
	}
	else
	{
		// gather some stats
		int Topscore = 0;
		int TopscoreCount = 0;
		for(int i = 0; i < MAX_CLIENTS; i++)
		{
			if(GameServer()->m_apPlayers[i])
			{
				if(GameServer()->m_apPlayers[i]->m_Score > Topscore)
				{
					Topscore = GameServer()->m_apPlayers[i]->m_Score;
					TopscoreCount = 1;
				}
				else if(GameServer()->m_apPlayers[i]->m_Score == Topscore)
					TopscoreCount++;
			}
		}

		// check score win condition
		if((g_Config.m_SvScorelimit > 0 && Topscore >= g_Config.m_SvScorelimit) ||
			(g_Config.m_SvTimelimit > 0 && (Server()->Tick()-m_GameStartTick) >= g_Config.m_SvTimelimit*Server()->TickSpeed()*60))
		{
			if(TopscoreCount == 1)
				EndMatch();
			else
				m_SuddenDeath = 1;
		}
	}
}
Exemple #7
0
// game
void CGameControllerCTF::DoWincheckMatch()
{
	// check score win condition
	if((g_Config.m_SvScorelimit > 0 && (m_aTeamscore[TEAM_RED] >= g_Config.m_SvScorelimit || m_aTeamscore[TEAM_BLUE] >= g_Config.m_SvScorelimit)) ||
		(g_Config.m_SvTimelimit > 0 && (Server()->Tick()-m_GameStartTick) >= g_Config.m_SvTimelimit*Server()->TickSpeed()*60))
	{
		if(m_SuddenDeath)
		{
			if(m_aTeamscore[TEAM_RED]/100 != m_aTeamscore[TEAM_BLUE]/100)
				EndMatch();
		}
		else
		{
			if(m_aTeamscore[TEAM_RED] != m_aTeamscore[TEAM_BLUE])
				EndMatch();
			else
				m_SuddenDeath = 1;
		}
	}
}
Exemple #8
0
void vote_check_break ()
{
	if ( !match_in_progress || intermission_running || match_over )
		return;

	if( !get_votes_req( OV_BREAK, true ) ) {
		vote_clear( OV_BREAK );

		G_bprint(2, "%s\n", redtext("Match stopped by majority vote"));

		EndMatch( 1 );

		return;
	}
}
void ATacticalOpsGameModeBase :: OnGameTimeExpired()
{
	switch (RoundState)
	{
	case (ERoundStateEnum::PreRound):
	//StopGameTimer et continuer le round
		break;

	case (ERoundStateEnum::InProgress):
		//StopGameTimer et finir le round
		break;

	case (ERoundStateEnum::RoundEnd):
		EndMatch();
		break;
	}
}
// post round terminé, on lance préround
void ATacticalOpsGameModeBase::NextRound()
{
	RoundState = ERoundStateEnum::PreRound;

	AMyGameStateBase *TOGameState = Cast<AMyGameStateBase>(GameState);
	if (bGameOver)
	{
		EndMatch();
	}

	else
	{
		TOGameState->RoundTimeRemaining = PreRoundTime;
		TOGameState->RoundPlayed++;
	}
	
		
}
void AOnlineArenaGameMode::DefaultTimer()
{
	const auto World = GetWorld();
	if (nullptr != World && World->IsPlayInEditor())
	{
		//!< PIE ‚Ì�ê�‡
		if (MatchState::WaitingToStart == GetMatchState())
		{
			StartMatch();
		}
	}
	else
	{
		const auto MatchSteate = GetMatchState();

		const auto GS = Cast<AOnlineGameState>(GameState);
		if (nullptr != GS)
		{
			--GS->RemainingTime;
			if (GS->RemainingTime <= 0)
			{
				GEngine->AddOnScreenDebugMessage(-1, 1.0f, FColor::Red, TEXT("TIME UP"));
				if (MatchState::WaitingPostMatch == MatchState)
				{
					RestartGame();
				}
				else if (MatchState::InProgress == MatchState)
				{
					EndMatch();
				}
			}
			else
			{
				GEngine->AddOnScreenDebugMessage(-1, 1.0f, FColor::Red, FString::FromInt(GS->RemainingTime));
				if (MatchState::WaitingToStart == MatchState)
				{
					StartMatch();
				}
			}
		}
	}
}
void ASGameMode::FinishMatch()
{
	ASGameState* const MyGameState = Cast<ASGameState>(GameState);
	if (IsMatchInProgress())
	{
		EndMatch();

		/* Stop spawning bots */
		GetWorldTimerManager().ClearTimer(TimerHandle_BotSpawns);

		for (FConstPlayerControllerIterator It = GetWorld()->GetPlayerControllerIterator(); It; It++)
		{
			ASPlayerController* MyController = Cast<ASPlayerController>(*It);
			if (MyController)
			{
				MyController->ClientHUDStateChanged(EHUDState::MatchEnd);
			}
		}
	}
}
Exemple #13
0
void IGameController::ChangeMap(const char *pToMap)
{
	str_copy(m_aMapWish, pToMap, sizeof(m_aMapWish));
	EndMatch();
}
Exemple #14
0
/*
============
Killed
============
*/
void Killed( gedict_t * targ, gedict_t * attacker, gedict_t * inflictor )
{
	gedict_t       *oself;

	oself = self;
	self = targ;

	if ( self->s.v.health < -99 )
		self->s.v.health = -99;	// don't let sbar look bad if a player

    self->dead_time = g_globalvars.time;

	if ( self->ct == ctPlayer )
	{
		; // empty
	}
	else if ( self->s.v.movetype == MOVETYPE_PUSH || self->s.v.movetype == MOVETYPE_NONE )
	{			// doors, triggers, etc
		if ( self->th_die )
			self->th_die();

		self = oself;
		return;
	}

	self->s.v.enemy = EDICT_TO_PROG( attacker );

	// bump the monster counter
	if ( ( ( int ) ( self->s.v.flags ) ) & FL_MONSTER )
	{
		float resp_time = bound( 0, cvar( "k_monster_spawn_time"), 999999 );

		// for nightmare mode
		self->monster_desired_spawn_time = ( resp_time ? g_globalvars.time + resp_time + resp_time * g_random() * 0.5 : 0 );

		g_globalvars.killed_monsters++;
		WriteByte( MSG_ALL, SVC_KILLEDMONSTER );

		// in coop, killing a monster gives you a frag
		if ( coop )
		{
			if ( attacker->ct == ctPlayer )
				attacker->s.v.frags++;
		}
	}

	ClientObituary( self, attacker );

	self->s.v.takedamage = DAMAGE_NO;
	self->s.v.touch = ( func_t ) SUB_Null;
	self->s.v.effects = 0;

	monster_death_use();

	if ( self->th_die )
		self->th_die();

	self = oself;

	// KTEAMS: check if sudden death is the case
	Check_SD( targ );

	// check fraglimit
	if (	fraglimit
		&& (   ( targ->s.v.frags >= fraglimit && targ->ct == ctPlayer )
			|| ( attacker->s.v.frags >= fraglimit && attacker->ct == ctPlayer )
		   )
		)
		EndMatch( 0 );

	if ( k_bloodfest )
		bloodfest_killed_hook( targ, attacker );
}
void AFSMGameMode::EndGameWithWinner(int ControllerIndex, FString WinnnerName)
{
	WinnerPlayerName = WinnnerName;
	EndMatch();
}