PDA

View Full Version : Republic Commando XMP based Engine Throwweapon Crash


SOBS
28th September, 2009, 12:42 PM
Republic Commando - http://wiki.beyondunreal.com/Legacy:Unreal_Engine_Versions/2

Were having a slight problem on one of our servers with a Throwweapons loop. Throwweapons does not loop(spam) in single player mode. You can throwweapon and just 1 comes out. But in multiplayer online throwweapon can spam(loop) weapons. Someone can run and hit the Throwweapons and create a bunch of weapons that will crash the server. Is there a way to prevent this. I've tried the ballowthrowweapons settings in both true and false. If I set it so they cannot throwweapons it creates and endless supply of weapons at the spawn point and they just stand there and crash the server also. Its making me. If anyone has any solutions besided the smartbutt ones like "Just stop playing Unreal games." It would be a great help.

Thanks

SOBS

In the multiplayer version if you hit your throwweapon button and run it will throw weapons of the same type as fast as you can push the key. It doesn't do it in single player mode though. If you do it enough it will crash the server.

I'm trying to find out how to stop it. I'm currently going threw the .u files looking for the difference between single player and multiplayer. If anyone can point me in the right direction.


Here is a .u file for the multiplayer I"m still searching for the single player version. Any help if another Unreal based engine has solved this problem.


Weapon changing functions

/* ThrowWeapon()
Throw out current weapon, and switch to a new weapon
*/
exec function ThrowWeapon()
{
if ( (Pawn == None) || (Pawn.Weapon == None) )
return;

ServerThrowWeapon(Pawn.Weapon);
}

function ServerThrowWeapon(Weapon WeaponToThrow)
{
local Vector TossVel;

if (Pawn.CanThrowWeapon(WeaponToThrow))
{
TossVel = Vector(GetViewRotation());
TossVel = TossVel * ((Pawn.Velocity Dot TossVel) + 500) + Vect(0,0,200);
Pawn.TossWeapon(WeaponToThrow, TossVel);
ClientSwitchToBestWeapon();
}



Update(28 Dec 09) .... After searching the Engine.u file I've found the following script that controls the server I believe. I'm going to copy this file and see what I can extract and modify with it.

// Functions client can call.
unreliable if( Role<ROLE_Authority )
ServerUpdatePing, ShortServerMove, ServerMove, DualServerMove,
RocketServerMove, Say, TeamSay, ServerSetHandedness,
ServerViewNextPlayer, ServerViewSelf,ServerUse, ServerDrive, ServerToggleBehindView;
reliable if( Role<ROLE_Authority )
Speech, Pause, ServerSetPause, Mutate, ServerSetFOV, ServerAcknowledgePossession, ServerShortTimeout,
PrevItem, ActivateItem, ServerReStartGame, AskForPawn, ServerShowWeaponState, ServerShowPCState,
ChangeName, ChangeTeam, Suicide,
ServerThrowWeapon, BehindView, Typing,
ServerChangeVoiceChatter,
ServerGetVoiceChatters,
ServerChangeHasVoice,
ServerValidationResponse, ServerVerifyViewTarget, ServerSpectateSpeed, ServerSetClientDemo,
BroadcastSound,
ServerUTrace, //UTrace
ServerChooseTeam, ServerSpectate, BecomeSpectator, BecomeActivePlayer;

reliable if (ROLE==ROLE_Authority)
ClientBecameSpectator, ClientBecameActivePlayer;

unreliable if (ROLE==ROLE_Authority)
TracerProxy;
}