Try the HasFlag used in the playerreplicationinfo.
This is intended for ctf games, but it reffers to all kinds of decorations.
Just do a decorationclass that looks like your object, and set your players playerreplicationinfo.hasflag = MyDeco;
and playerreplicationinfo.hasflag = none;
if you want it to disappear...
This way you can't use it for ctf, and you can't have more than one thing at a time, and it's carried on your back, but it's easy and built-in...
Another thing I haven't tried is the attach function in the actor class.
You just type: MyThing.Attach(something); and it should stick (I think)...
Else you might do something like this:
Subclass decoration or effects and use the tick function.
Code:
class MyThing extends decoration;
var vector ObjectOffset;
simulated function Tick(float DeltaTime)
{
local vector X,Y,Z;
GetAxes(Owner.Rotation,X,Y,Z);
SetLocation(Owner.Location + ObjectOffset);
SetRotation(Owner.Rotation);
}
defaultproperties
{
ObjectOffset=(X=10,Y=-20,Z=0)
Mesh=LodMesh'MyPackage.YadaYada'
Texture=texture'MyPackage.BlahBlah'
}
This makes the object's location and rotation be updated as often as possible, and the location is calculated with the extra vector you've added as an offset from the player's pivot point, thus if you want it to be a knife, place it a bit lower and to the left and it'll stay there (I think)