aboutsummaryrefslogtreecommitdiff
path: root/Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut
diff options
context:
space:
mode:
Diffstat (limited to 'Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut')
-rw-r--r--Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut261
1 files changed, 0 insertions, 261 deletions
diff --git a/Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut b/Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut
deleted file mode 100644
index 2b7b90b3..00000000
--- a/Northstar.CustomServers/scripts/vscripts/_loadouts_mp.gnut
+++ /dev/null
@@ -1,261 +0,0 @@
-untyped
-global function SvLoadoutsMP_Init
-
-global function SetLoadoutGracePeriodEnabled
-global function SetWeaponDropsEnabled
-global function GetTitanLoadoutForPlayer
-
-struct {
- bool loadoutGracePeriodEnabled = true
- bool weaponDropsEnabled = true
- array<entity> dirtyLoadouts
-} file
-
-void function SvLoadoutsMP_Init()
-{
- InitDefaultLoadouts() // titan loadout code relies on this, not called on server by default
-
- // most of these are fairly insecure right now, could break pdata if called maliciously, need fixing eventually
- RegisterSignal( "EndUpdateCachedLoadouts" )
- RegisterSignal( "GracePeriodDone" ) // temp to get weapons\_weapon_utility.nut:2271 to behave
-
- AddCallback_OnClientConnected( UpdateCallsignOnConnect )
-
- AddClientCommandCallback( "RequestPilotLoadout", ClientCommandCallback_RequestPilotLoadout )
- AddClientCommandCallback( "RequestTitanLoadout", ClientCommandCallback_RequestTitanLoadout )
- AddClientCommandCallback( "SetPersistentLoadoutValue", ClientCommandCallback_SetPersistentLoadoutValue )
- AddClientCommandCallback( "SwapSecondaryAndWeapon3PersistentLoadoutData", ClientCommandCallback_SwapSecondaryAndWeapon3PersistentLoadoutData )
- AddClientCommandCallback( "SetBurnCardPersistenceSlot", ClientCommandCallback_SetBurnCardPersistenceSlot )
-
- if ( IsLobby() ) // can't usually set these in real games
- {
- AddClientCommandCallback( "SetCallsignIcon", ClientCommandCallback_SetCallsignIcon )
- AddClientCommandCallback( "SetCallsignCard", ClientCommandCallback_SetCallsignCard )
- AddClientCommandCallback( "SetFactionChoicePersistenceSlot", ClientCommandCallback_SetFactionChoicePersistenceSlot )
- }
- else
- {
- AddClientCommandCallback( "InGameMPMenuClosed", ClientCommandCallback_InGameMPMenuClosed )
- AddClientCommandCallback( "LoadoutMenuClosed", ClientCommandCallback_LoadoutMenuClosed )
- }
-
- AddCallback_OnPlayerKilled( DestroyDroppedWeapon )
-}
-
-void function SetLoadoutGracePeriodEnabled( bool enabled )
-{
- file.loadoutGracePeriodEnabled = enabled
-}
-
-void function SetWeaponDropsEnabled( bool enabled )
-{
- file.weaponDropsEnabled = enabled
-}
-
-void function DestroyDroppedWeapon( entity victim, entity attacker, var damageInfo )
-{
- if ( !file.weaponDropsEnabled && IsValid( victim.GetActiveWeapon() ) )
- victim.GetActiveWeapon().Destroy()
-}
-
-TitanLoadoutDef function GetTitanLoadoutForPlayer( entity player )
-{
- SetActiveTitanLoadout( player ) // set right loadout
-
- // fix bug with titan weapons having null mods
- // null mods aren't valid and crash if we try to give them to npc
- TitanLoadoutDef def = GetActiveTitanLoadout( player )
- def.primaryMods.removebyvalue( "null" )
-
- return def
-}
-
-void function UpdateCallsignOnConnect( entity player )
-{
- // these netints are required for callsigns and such to display correctly on other clients
- player.SetPlayerNetInt( "activeCallingCardIndex", player.GetPersistentVarAsInt( "activeCallingCardIndex" ) )
- player.SetPlayerNetInt( "activeCallsignIconIndex", player.GetPersistentVarAsInt( "activeCallsignIconIndex" ) )
-}
-
-// loadout clientcommands
-bool function ClientCommandCallback_RequestPilotLoadout( entity player, array<string> args )
-{
- if ( args.len() != 1 )
- return true
-
- print( player + " RequestPilotLoadout " + args[0] )
-
- // insecure, could be used to set invalid spawnloadout index potentially
- SetPersistentSpawnLoadoutIndex( player, "pilot", args[0].tointeger() )
-
- SetPlayerLoadoutDirty( player )
-
- return true
-}
-
-bool function ClientCommandCallback_RequestTitanLoadout( entity player, array<string> args )
-{
- if ( args.len() != 1 )
- return true
-
- print( player + " RequestTitanLoadoutLoadout " + args[0] )
-
- // insecure, could be used to set invalid spawnloadout index potentially
- SetPersistentSpawnLoadoutIndex( player, "titan", args[0].tointeger() )
-
- if ( !IsLobby() )
- EarnMeterMP_SetTitanLoadout( player )
-
- return true
-}
-
-bool function ClientCommandCallback_SetPersistentLoadoutValue( entity player, array<string> args )
-{
- //if ( args.len() != 4 )
- // return true
-
- if ( args.len() < 4 )
- return true
-
- string val = args[ 3 ]
- if ( args.len() > 4 ) // concat args after 3 into last arg so we can do strings with spaces and such
- for ( int i = 4; i < args.len(); i++ )
- val += " " + args[ i ]
-
- val = strip( val ) // remove any tailing whitespace
-
- print( player + " SetPersistentLoadoutValue " + args[0] + " " + args[1] + " " + args[2] + " " + val )
-
- // VERY temp and insecure
- SetPersistentLoadoutValue( player, args[0], args[1].tointeger(), args[2], val )
-
- if ( args[0] == "pilot" )
- SetPlayerLoadoutDirty( player )
-
- return true
-}
-
-bool function ClientCommandCallback_SwapSecondaryAndWeapon3PersistentLoadoutData( entity player, array<string> args )
-{
- if ( args.len() != 1 )
- return true
-
- print( "SwapSecondaryAndWeapon3PersistentLoadoutData " + args[0] )
-
- // get loadout
- int index = args[0].tointeger()
- PilotLoadoutDef loadout = GetPilotLoadoutFromPersistentData( player, index )
-
- // swap loadouts
- // is this a good way of doing it? idk i think this is the best way of doing it
- // can't use validation because when you swap, you'll have a secondary/weapon3 in 2 slots at once at one point, which fails validation
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondary", loadout.weapon3 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondaryMod1", loadout.weapon3Mod1 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondaryMod2", loadout.weapon3Mod2 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondaryMod3", loadout.weapon3Mod3 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondarySkinIndex", loadout.weapon3SkinIndex.tostring() )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "secondaryCamoIndex", loadout.weapon3CamoIndex.tostring() )
-
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3", loadout.secondary )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3Mod1", loadout.secondaryMod1 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3Mod2", loadout.secondaryMod2 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3Mod3", loadout.secondaryMod3 )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3SkinIndex", loadout.secondarySkinIndex.tostring() )
- SetPlayerPersistentVarWithoutValidation( player, "pilot", index, "weapon3CamoIndex", loadout.secondaryCamoIndex.tostring() )
-
- SetPlayerLoadoutDirty( player )
-
- return true
-}
-
-bool function ClientCommandCallback_SetBurnCardPersistenceSlot( entity player, array<string> args )
-{
- if ( args.len() != 1 || GetGameState() >= eGameState.Playing )
- return true
-
- print( player + " SetBurnCardPersistenceSlot " + args[0] )
-
- // insecure, could be used to set invalid burnmeterslot potentially
- if ( IsRefValidAndOfType( args[0], eItemTypes.BURN_METER_REWARD ) )
- player.SetPersistentVar( "burnmeterSlot", BurnReward_GetByRef( args[0] ).id )
- else
- print( player + " invalid ref " + args[0] )
-
- return true
-}
-
-// lobby clientcommands
-bool function ClientCommandCallback_SetCallsignIcon( entity player, array<string> args )
-{
- print( player + " SetCallsignIcon " + args[0] )
-
- if ( IsRefValidAndOfType( args[0], eItemTypes.CALLSIGN_ICON ) )
- PlayerCallsignIcon_SetActiveByRef( player, args[0] )
- else
- print( player + " invalid ref " + args[0] )
-
- return true
-}
-
-bool function ClientCommandCallback_SetCallsignCard( entity player, array<string> args )
-{
- print( player + " SetCallsignIcon " + args[0] )
-
- if ( IsRefValidAndOfType( args[0], eItemTypes.CALLING_CARD ) )
- PlayerCallingCard_SetActiveByRef( player, args[0] )
- else
- print( player + " invalid ref " + args[0] )
-
- return true
-}
-
-bool function ClientCommandCallback_SetFactionChoicePersistenceSlot( entity player, array<string> args )
-{
- print( player + " SetFactionChoicePersistenceSlot " + args[0] )
-
- if ( IsRefValidAndOfType( args[0], eItemTypes.FACTION ) )
- player.SetPersistentVar( "factionChoice", args[0] ) // no function for this so gotta set directly lol
-
- return true
-}
-
-bool function ClientCommandCallback_LoadoutMenuClosed( entity player, array<string> args )
-{
- SavePdataForEntityIndex( player.GetPlayerIndex() )
- TryGivePilotLoadoutForGracePeriod( player )
- return true
-}
-
-bool function ClientCommandCallback_InGameMPMenuClosed( entity player, array<string> args )
-{
- SavePdataForEntityIndex( player.GetPlayerIndex() )
- //TryGivePilotLoadoutForGracePeriod( player )
- return true
-}
-
-bool function IsRefValidAndOfType( string ref, int itemType )
-{
- return IsRefValid( ref ) && GetItemType( ref ) == itemType
-}
-
-void function SetPlayerLoadoutDirty( entity player )
-{
- if ( file.loadoutGracePeriodEnabled || player.p.usingLoadoutCrate )
- file.dirtyLoadouts.append( player )
-}
-
-void function TryGivePilotLoadoutForGracePeriod( entity player )
-{
- if ( !IsLobby() && file.dirtyLoadouts.contains( player ) )
- {
- file.dirtyLoadouts.remove( file.dirtyLoadouts.find( player ) )
-
- if ( Time() - player.s.respawnTime <= CLASS_CHANGE_GRACE_PERIOD || player.p.usingLoadoutCrate )
- {
- Loadouts_TryGivePilotLoadout( player )
- player.p.usingLoadoutCrate = false
- }
- else
- SendHudMessage( player, "#LOADOUT_CHANGE_NEXT_BOTH", -1, 0.4, 255, 255, 255, 255, 0.15, 3.0, 0.5 ) // like 90% sure this is innacurate lol
- }
-} \ No newline at end of file