Jump to content

Auto stop repair after x second of no change


Ryz

Recommended Posts

Happened today... 7 SBH got spotted, started shooting the bar with 7 together and the building had ZERO damage. Guess a few ppl on GDI went afk and used start fire.

Suggestion:

I don't want to stop repairs when you are playing, cause I want people to be able to repair as long as they want, but... What I would like is that repairs automatically stop when the building status hasn't changed for (for example) 30 seconds... This way people cant do afk repair and make a building almost unkillable from the outside...

Link to comment
Share on other sites

Honestly I think the best way to deal with this non-stop repair is to give the repair guns the same function as the repair tool, but with additional ammo capacity and near instant recharge rate. This will make it so attacking buildings externally would be a lot more threatening, and would also fix the afk repair issue.

Still probably wouldn't have affected your scenario, but just an idea

Link to comment
Share on other sites

Honestly I think the best way to deal with this non-stop repair is to give the repair guns the same function as the repair tool, but with additional ammo capacity and near instant recharge rate. This will make it so attacking buildings externally would be a lot more threatening, and would also fix the afk repair issue.

Still probably wouldn't have affected your scenario, but just an idea

Or they could just make the startfire command redundant? Like disable it. I think it would be alot easier than adding an 'ammunition' aspect to the rep gun, but on that note, that is not actually a bad idea because the rep gun is kind of OP (atleast the adv rep gun is)

Link to comment
Share on other sites

  • Totem Arts Staff
Honestly I think the best way to deal with this non-stop repair is to give the repair guns the same function as the repair tool, but with additional ammo capacity and near instant recharge rate. This will make it so attacking buildings externally would be a lot more threatening, and would also fix the afk repair issue.

Still probably wouldn't have affected your scenario, but just an idea

Or they could just make the startfire command redundant? Like disable it. I think it would be alot easier than adding an 'ammunition' aspect to the rep gun, but on that note, that is not actually a bad idea because the rep gun is kind of OP (atleast the adv rep gun is)

StartFire is a semi hard-coded function I'm afraid, You see, this is how it looks here in config ini file

.Bindings=(Name="GBA_Fire",Command="StartFire | OnRelease StopFire")
.Bindings=(Name="GBA_AltFire",Command="StartAltFire | OnRelease StopAltFire")

////

.Bindings=(Name="LeftMouseButton",Command="GBA_Fire")
.Bindings=(Name="RightMouseButton",Command="GBA_AltFire")

and this is how function looks like

Engine.PlayerController

// The player wants to fire.
exec function StartFire( optional byte FireModeNum )
{
if ( WorldInfo.Pauser == PlayerReplicationInfo )
{
	SetPause( false );
	return;
}

if ( Pawn != None && !bCinematicMode && !WorldInfo.bPlayersOnly )
{
	Pawn.StartFire( FireModeNum );
}
}

exec function StopFire( optional byte FireModeNum )
{
if ( Pawn != None )
{
	Pawn.StopFire( FireModeNum );
}
}

Engine.Pawn

/**
* Pawn starts firing!
* Called from PlayerController::StartFiring
* Network: Local Player
*
* @param	FireModeNum		fire mode number
*/
simulated function StartFire(byte FireModeNum)
{
if( bNoWeaponFIring )
{
	return;
}

if( Weapon != None )
{
	Weapon.StartFire(FireModeNum);
}
}


/**
* Pawn stops firing!
* i.e. player releases fire button, this may not stop weapon firing right away. (for example press button once for a burst fire)
* Network: Local Player
*
* @param	FireModeNum		fire mode number
*/
simulated function StopFire(byte FireModeNum)
{
if( Weapon != None )
{
	Weapon.StopFire(FireModeNum);
}
}

Engine.Weapon

/**
* Called on the LocalPlayer, Fire sends the shoot request to the server (ServerStartFire)
* and them simulates the firing effects locally.
* Call path: PlayerController::StartFire -> Pawn::StartFire -> InventoryManager::StartFire
* Network: LocalPlayer
*/
simulated function StartFire(byte FireModeNum)
{
if( Instigator == None || !Instigator.bNoWeaponFiring )
{
	if( Role < Role_Authority )
	{
		// if we're a client, synchronize server
		ServerStartFire(FireModeNum);
	}

	// Start fire locally
	BeginFire(FireModeNum);
}
}


/**
* When StartFire() is called on a client, it replicates the start by calling ServerStartFire.  This
* begins the event on server.  Server side actors (such as bots) should not call ServerStartFire directly and should
* instead call StartFire().
*
* Network: Dedicated Server only, or Listen Server for remote clients.
*/
reliable server function ServerStartFire(byte FireModeNum)
{
if( Instigator == None || !Instigator.bNoWeaponFiring )
{
	// A client has fired, so the server needs to
	// begin to fire as well
	BeginFire(FireModeNum);
}
}

/**
* This initiates the shutdown of a weapon that is firing.
* Network: Local Player
*/

simulated function StopFire(byte FireModeNum)
{
// Locally shut down the fire sequence
EndFire(FireModeNum);

// Notify the server
if( Role < Role_Authority )
{
	ServerStopFire(FireModeNum);
}
}


/**
* When StopFire is called on a client, ServerStopFire is used to initiate the sequence on the server.
* Network: Dedicated Server only, or Listen Server for remote clients.
*/
reliable server function ServerStopFire(byte FireModeNum)
{
EndFire(FireModeNum);
}

So here's how it works here for those who lack the knowledge of scripting. The player is given one button to initiate two function that starts and stop the weapon firing. When button is pressed, the StartFire is initiated, causing the weapon to fire, and when the button is released, the StopFire function is initiated, causing the weapon to stop firing.

The information goes this way.

1. Player gives command to start/stop fire to his pawn (character)

2. Character gives command to weapon

3. Weapon fires/stops firing

Disabling StartFire as a function means that a whole weapon rescripting is in order, which unfortunately is far too much work for far too little

Link to comment
Share on other sites

Honestly I think the best way to deal with this non-stop repair is to give the repair guns the same function as the repair tool, but with additional ammo capacity and near instant recharge rate. This will make it so attacking buildings externally would be a lot more threatening, and would also fix the afk repair issue.

Still probably wouldn't have affected your scenario, but just an idea

Or they could just make the startfire command redundant? Like disable it. I think it would be alot easier than adding an 'ammunition' aspect to the rep gun, but on that note, that is not actually a bad idea because the rep gun is kind of OP (atleast the adv rep gun is)

StartFire is a semi hard-coded function I'm afraid, You see, this is how it looks here in config ini file

.Bindings=(Name="GBA_Fire",Command="StartFire | OnRelease StopFire")
.Bindings=(Name="GBA_AltFire",Command="StartAltFire | OnRelease StopAltFire")

////

.Bindings=(Name="LeftMouseButton",Command="GBA_Fire")
.Bindings=(Name="RightMouseButton",Command="GBA_AltFire")

and this is how function looks like

Engine.PlayerController

// The player wants to fire.
exec function StartFire( optional byte FireModeNum )
{
if ( WorldInfo.Pauser == PlayerReplicationInfo )
{
	SetPause( false );
	return;
}

if ( Pawn != None && !bCinematicMode && !WorldInfo.bPlayersOnly )
{
	Pawn.StartFire( FireModeNum );
}
}

exec function StopFire( optional byte FireModeNum )
{
if ( Pawn != None )
{
	Pawn.StopFire( FireModeNum );
}
}

Engine.Pawn

/**
* Pawn starts firing!
* Called from PlayerController::StartFiring
* Network: Local Player
*
* @param	FireModeNum		fire mode number
*/
simulated function StartFire(byte FireModeNum)
{
if( bNoWeaponFIring )
{
	return;
}

if( Weapon != None )
{
	Weapon.StartFire(FireModeNum);
}
}


/**
* Pawn stops firing!
* i.e. player releases fire button, this may not stop weapon firing right away. (for example press button once for a burst fire)
* Network: Local Player
*
* @param	FireModeNum		fire mode number
*/
simulated function StopFire(byte FireModeNum)
{
if( Weapon != None )
{
	Weapon.StopFire(FireModeNum);
}
}

Engine.Weapon

/**
* Called on the LocalPlayer, Fire sends the shoot request to the server (ServerStartFire)
* and them simulates the firing effects locally.
* Call path: PlayerController::StartFire -> Pawn::StartFire -> InventoryManager::StartFire
* Network: LocalPlayer
*/
simulated function StartFire(byte FireModeNum)
{
if( Instigator == None || !Instigator.bNoWeaponFiring )
{
	if( Role < Role_Authority )
	{
		// if we're a client, synchronize server
		ServerStartFire(FireModeNum);
	}

	// Start fire locally
	BeginFire(FireModeNum);
}
}


/**
* When StartFire() is called on a client, it replicates the start by calling ServerStartFire.  This
* begins the event on server.  Server side actors (such as bots) should not call ServerStartFire directly and should
* instead call StartFire().
*
* Network: Dedicated Server only, or Listen Server for remote clients.
*/
reliable server function ServerStartFire(byte FireModeNum)
{
if( Instigator == None || !Instigator.bNoWeaponFiring )
{
	// A client has fired, so the server needs to
	// begin to fire as well
	BeginFire(FireModeNum);
}
}

/**
* This initiates the shutdown of a weapon that is firing.
* Network: Local Player
*/

simulated function StopFire(byte FireModeNum)
{
// Locally shut down the fire sequence
EndFire(FireModeNum);

// Notify the server
if( Role < Role_Authority )
{
	ServerStopFire(FireModeNum);
}
}


/**
* When StopFire is called on a client, ServerStopFire is used to initiate the sequence on the server.
* Network: Dedicated Server only, or Listen Server for remote clients.
*/
reliable server function ServerStopFire(byte FireModeNum)
{
EndFire(FireModeNum);
}

So here's how it works here for those who lack the knowledge of scripting. The player is given one button to initiate two function that starts and stop the weapon firing. When button is pressed, the StartFire is initiated, causing the weapon to fire, and when the button is released, the StopFire function is initiated, causing the weapon to stop firing.

The information goes this way.

1. Player gives command to start/stop fire to his pawn (character)

2. Character gives command to weapon

3. Weapon fires/stops firing

Disabling StartFire as a function means that a whole weapon rescripting is in order, which unfortunately is far too much work for far too little

And I here I thought your suggestion was overkill.. Anyway scratch my idea then.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...