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 ); } }
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; } }
// 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; } } }
// 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; } } }
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); } } } }
void IGameController::ChangeMap(const char *pToMap) { str_copy(m_aMapWish, pToMap, sizeof(m_aMapWish)); EndMatch(); }
/* ============ 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(); }