Skip to content

Commit

Permalink
Merge branch 'main' into fix/multiple-mod-versions
Browse files Browse the repository at this point in the history
  • Loading branch information
Alystrasz authored Nov 5, 2024
2 parents c67879d + 730616d commit 5c62f23
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ Clique em Sim se você concorda. Esta escolha pode ser alterada a qualquer momen
"HIDE_LOCKED" "Esconder desativados"

// In-game chat
"HUD_CHAT_WHISPER_PREFIX" "[WHISPER]"
"HUD_CHAT_SERVER_PREFIX" "[SERVER]"
"HUD_CHAT_WHISPER_PREFIX" "[SUSSURRO]"
"HUD_CHAT_SERVER_PREFIX" "[SERVIDOR]"
"ONLY_HOST_MATCH_SETTINGS" "Somente o Host pode mudar as configurações da Partida Privada"
"ONLY_HOST_CAN_START_MATCH" "Somente o Host pode Iniciar a Partida"
"LOG_UNKNOWN_CLIENTCOMMANDS" "Registrar Comandos desconhecidos de Clientes"
Expand Down Expand Up @@ -355,8 +355,8 @@ Clique em Sim se você concorda. Esta escolha pode ser alterada a qualquer momen
"MOD_DL_DISABLED" "(download automático de mod está desabilitado)"
"DOWNLOADING_MOD_TITLE" "Baixando mod"
"DOWNLOADING_MOD_TEXT_W_PROGRESS" "Baixando %s1 v%s2...\n(%s3/%s4 MB)"
"CHECKSUMING_TITLE" "Verificando o mod"
"CHECKSUMING_TEXT" "Verificando conteúdo de %s1 v%s2..."
"CHECKSUMING_TITLE" "Verificando a integridade do mod"
"CHECKSUMING_TEXT" "Validando arquivos de %s1 v%s2..."
"EXTRACTING_MOD_TITLE" "Extraíndo mod (%s1%)"
"MOD_REQUIRED_WARNING" " Este mod pode ser desativado quando entrar em um servidor"
"AUTHENTICATION_FAILED_HEADER" "Autenticação Falhou"
Expand All @@ -376,5 +376,15 @@ Clique em Sim se você concorda. Esta escolha pode ser alterada a qualquer momen
"MOD_FETCHING_FAILED_GENERAL" "Extração do mod falhou. Verifique os logs para mais detalhes."
"MANIFESTO_FETCHING_TEXT" "Retornando a lista de mods verificados..."
"MANIFESTO_FETCHING_TITLE" "Preparando o download do mod"
"MODE_MENU_PVPVE" "JcJcA"
"MODE_MENU_PVE" "JcA"
"MODE_MENU_PVP" "JcJ"
"MODE_MENU_FFA" "TcT"
"MODE_MENU_OTHER" "Outros"
"MODE_MENU_CUSTOM" "Personalizado"
"MODE_MENU_ALL" "Todos"
"MODE_MENU_UNKNOWN" "Desconhecido"
"MODE_MENU_SWITCH" "Filtrar"
"MODE_MENU_TITAN_ONLY" "Somente Titãs"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,6 @@ void function AddInWorldMinimapObject( entity ent ) //TODO: If we want radar jam

void function AddInWorldMinimapObjectInternal( entity ent, var screen )
{
printt( "AddInWorldMinimapObject" )
printt( screen )
printt( ent )

bool isNPCTitan = ent.IsNPC() && ent.IsTitan()
bool isPetTitan = ent == GetLocalViewPlayer().GetPetTitan()
bool isLocalPlayer = ent == GetLocalViewPlayer()
Expand Down
2 changes: 1 addition & 1 deletion Northstar.Client/mod/scripts/vscripts/ui/atlas_auth.nut
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ void function AtlasAuthDialog_Threaded()
if ( res.errorCode != "" )
dialogData.message += format( "\n\n%s", Localize( "#AUTHENTICATION_FAILED_ERROR_CODE", res.errorCode ) )

string link = "https://r2northstar.gitbook.io/r2northstar-wiki/installing-northstar/troubleshooting"
string link = "https://docs.northstar.tf/Wiki/installing-northstar/troubleshooting/"
// link to generic troubleshooting page if we don't have an error code from Atlas
if ( res.errorCode != "" )
link = format( "%s#%s", link, res.errorCode )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ string function GetSelectedBurnCardRef( entity player )

#if SERVER
if ( GetItemDisplayData( ref ).hidden )
ClientCommand( player, "disconnect" )
NSDisconnectPlayer( player, "" )
#endif

#if SERVER || CLIENT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ void function EarnMeterMP_PlayerLifeThink( entity player )
EarnObject pilotReward = PlayerEarnMeter_GetReward( player )
float pilotRewardFrac = PlayerEarnMeter_GetRewardFrac( player )
int lastEarnMeterMode = PlayerEarnMeter_GetMode( player )
bool saidTitanSoon = false
bool titanReadyMsg = false
float lastPassiveGainTime = Time()

OnThreadEnd(
Expand Down Expand Up @@ -148,15 +150,34 @@ void function EarnMeterMP_PlayerLifeThink( entity player )

if ( lastEarnMeterMode == eEarnMeterMode.DEFAULT )
{
if ( Riff_TitanAvailability() != eTitanAvailability.Never )
{
if ( PlayerEarnMeter_GetOwnedFrac( player ) >= 0.75 && PlayerEarnMeter_GetOwnedFrac( player ) < 0.95 && !saidTitanSoon )
{
PlayFactionDialogueToPlayer( "mp_titanSoon", player )
saidTitanSoon = true
}
else if( PlayerEarnMeter_GetOwnedFrac( player ) < 0.75 )
saidTitanSoon = false
}

if ( PlayerEarnMeter_GetOwnedFrac( player ) < 1.0 )
{
PlayerEarnMeter_DisableGoal( player )
titanReadyMsg = false
}
else if ( player.GetPlayerNetInt( "goalState" ) != eRewardState.UNAVAILABLE )
{
// if goal is enabled then the client will show "titan ready" alerts even if it isn't
// the problem is that if the goal isn't available when we fill the earnmeter, then it won't make it available
// so unfortunately we have to do this manually
player.SetPlayerNetInt( "goalState", eRewardState.AVAILABLE )
PlayerEarnMeter_RefreshGoal( player )
if( !titanReadyMsg )
{
Remote_CallFunction_NonReplay( player, "ServerCallback_TitanReadyMessage" )
titanReadyMsg = true
}
}

if ( Time() - lastPassiveGainTime > 4.0 && file.passiveMeterGainEnabled ) // this might be 5.0
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -226,37 +226,7 @@ void function SetWinner( int team, string winningReason = "", string losingReaso
SetGameState( eGameState.WinnerDetermined )
ScoreEvent_MatchComplete( team )

array<entity> players = GetPlayerArray()
int functionref( entity, entity ) compareFunc = GameMode_GetScoreCompareFunc( GAMETYPE )
if ( compareFunc != null )
{
players.sort( compareFunc )
int playerCount = players.len()
int currentPlace = 1
for ( int i = 0; i < 3; i++ )
{
if ( i >= playerCount )
continue

if ( i > 0 && compareFunc( players[i - 1], players[i] ) != 0 )
currentPlace += 1

switch( currentPlace )
{
case 1:
UpdatePlayerStat( players[i], "game_stats", "mvp" )
UpdatePlayerStat( players[i], "game_stats", "mvp_total" )
UpdatePlayerStat( players[i], "game_stats", "top3OnTeam" )
break
case 2:
UpdatePlayerStat( players[i], "game_stats", "top3OnTeam" )
break
case 3:
UpdatePlayerStat( players[i], "game_stats", "top3OnTeam" )
break
}
}
}
RegisterMatchStats_OnMatchComplete()
}
}
}
Expand Down
44 changes: 21 additions & 23 deletions Northstar.CustomServers/mod/scripts/vscripts/mp/_stats.nut
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ global function UpdateTitanCoreEarnedStat
global function PreScoreEventUpdateStats
global function PostScoreEventUpdateStats
global function Stats_OnPlayerDidDamage
global function RegisterMatchStats_OnMatchComplete

struct {
table< string, array<string> > refs
Expand All @@ -36,7 +37,6 @@ void function Stats_Init()
AddCallback_OnPlayerRespawned( OnPlayerRespawned )
AddCallback_OnClientConnected( OnClientConnected )
AddCallback_OnClientDisconnected( OnClientDisconnected )
AddCallback_GameStateEnter( eGameState.WinnerDetermined, OnWinnerDetermined )

thread HandleDistanceAndTimeStats_Threaded()
thread SaveStatsPeriodically_Threaded()
Expand Down Expand Up @@ -813,7 +813,7 @@ void function OnPlayerRespawned( entity player )
thread SetLastPosForDistanceStatValid_Threaded( player, true )
}

void function OnWinnerDetermined()
void function RegisterMatchStats_OnMatchComplete()
{
// award players for match completed, wins, and losses
foreach ( entity player in GetPlayerArray() )
Expand Down Expand Up @@ -888,30 +888,28 @@ void function OnWinnerDetermined()
player.SetPersistentVar( "kdratio_lifetime_pvp", kdratio_lifetimepvp )
}

// award mvp and top 3 in each team
if ( !IsFFAGame() )
array<entity> players = GetPlayerArray()
players.sort( GetScoreboardCompareFunc() )
int playerCount = players.len()
int currentPlace = 1
for ( int i = 0; i < 3; i++ )
{
string gamemode = GameRules_GetGameMode()
int functionref( entity, entity ) compareFunc = GameMode_GetScoreCompareFunc( gamemode )

for( int team = 0; team < MAX_TEAMS; team++ )
if ( i >= playerCount )
continue

int functionref( entity, entity ) compareFunc = GetScoreboardCompareFunc()
if ( i > 0 && compareFunc( players[i - 1], players[i] ) != 0 )
currentPlace += 1
switch( currentPlace )
{
array<entity> players = GetPlayerArrayOfTeam( team )
if ( compareFunc == null )
{
printt( "gamemode doesn't have a compare func to get the top 3" )
return
}
players.sort( compareFunc )
int maxAwards = int( min( players.len(), 3 ) )
for ( int i = 0; i < maxAwards; i++ )
{
if ( i == 0 )
Stats_IncrementStat( players[ i ], "game_stats", "mvp", "", 1.0 )
Stats_IncrementStat( players[ i ], "game_stats", "top3OnTeam", "", 1.0 )
}
case 1: // MVP have two parallel stats which one registers MVP for the map played and the other goes to the player's stats menu as a total MVP times
UpdatePlayerStat( players[i], "game_stats", "mvp" )
UpdatePlayerStat( players[i], "game_stats", "mvp_total" )
case 2:
case 3:
UpdatePlayerStat( players[i], "game_stats", "top3OnTeam" ) // Ingame this is the "Times Top 3" for the whole match, not per team
break
}

}
}

Expand Down
5 changes: 3 additions & 2 deletions Northstar.CustomServers/mod/scripts/vscripts/sh_loadouts.nut
Original file line number Diff line number Diff line change
Expand Up @@ -1509,7 +1509,7 @@ string function GetValidatedPersistentLoadoutValue( entity player, string loadou
{
printt( "Invalid Loadout Property: ", loadoutType, loadoutIndex, loadoutProperty, value )
value = ResetLoadoutPropertyToDefault( player, loadoutType, loadoutIndex, loadoutProperty ) //TODO: This will call player.SetPersistentVar() directly. Awkward to do this in a getter function
ClientCommand( player, "disconnect #RESETTING_LOADOUT", 0 ) //Kick player out with a "Resetting Invalid Loadout" message. Mainly necessary so UI/Client script don't crash out later with known, bad data from persistence
NSDisconnectPlayer( player, "#RESETTING_LOADOUT" ) // Kick player out with a "Resetting Invalid Loadout" message. Mainly necessary so UI/Client script don't crash out later with known, bad data from persistence
}
}

Expand All @@ -1519,7 +1519,8 @@ string function GetValidatedPersistentLoadoutValue( entity player, string loadou
{
printt( "Invalid Loadout Property: ", loadoutType, loadoutIndex, loadoutProperty, value )
value = ResetLoadoutPropertyToDefault( player, loadoutType, loadoutIndex, loadoutProperty ) //TODO: This will call player.SetPersistentVar() directly. Awkward to do this in a getter function
ClientCommand( player, "disconnect #RESETTING_LOADOUT", 0 ) //Kick player out with a "Resetting Invalid Loadout" message. Mainly necessary so UI/Client script don't crash out later with known, bad data from persistence
NSDisconnectPlayer( player, "#RESETTING_LOADOUT" ) // Kick player out with a "Resetting Invalid Loadout" message. Mainly necessary so UI/Client script don't crash out later with known, bad data from persistence

}

ValidateSkinAndCamoIndexesAsAPair( player, loadoutType, loadoutIndex, loadoutProperty, value ) //TODO: This is awkward, has the potential to call a SetPersistentLoadoutValue() if skinIndex and camoIndex are not correct as a pair
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<img src="https://translate.harmony.tf/widgets/northstar/-/client/svg-badge.svg" alt="Translation status" />
</a>

[Squirrel](http://www.squirrel-lang.org/squirreldoc/reference/index.html) scripts used to recreate server-side gamelogic and add [custom content](https://r2northstar.gitbook.io/r2northstar-wiki/using-northstar/gamemodes) to the game.
[Squirrel](http://www.squirrel-lang.org/squirreldoc/reference/index.html) scripts used to recreate server-side gamelogic and add [custom content](https://docs.northstar.tf/Wiki/using-northstar/gamemodes/) to the game.

## Contents:

Expand Down

0 comments on commit 5c62f23

Please sign in to comment.