> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript.md).

# Class ksServerRoomScript

Namespace: [KS.Reactor.Server](/reactor/api-reference/ks.reactor.server.md)\
Assembly: KSReactor.dll

Base class for scripts that can be attached to server rooms.

```csharp
public class ksServerRoomScript : ksScript<ksIServerRoom, ksServerRoomScript>, ksScript<ksIServerRoom, ksServerRoomScript>.IInternals
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← ksScript\<ksIServerRoom, ksServerRoomScript> ← [ksServerRoomScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript.md)

#### Implements

ksScript\<ksIServerRoom, ksServerRoomScript>.IInternals

#### Inherited Members

ksScript\<ksIServerRoom, ksServerRoomScript>.InstanceType, ksScript\<ksIServerRoom, ksServerRoomScript>.IsAttached, ksScript\<ksIServerRoom, ksServerRoomScript>.Scripts, ksScript\<ksIServerRoom, ksServerRoomScript>.Assets, ksScript\<ksIServerRoom, ksServerRoomScript>.Attached(), ksScript\<ksIServerRoom, ksServerRoomScript>.Initialize(), ksScript\<ksIServerRoom, ksServerRoomScript>.Detached(), ksScript\<ksIServerRoom, ksServerRoomScript>.Clone(), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Properties

### Cluster <a href="#ks_reactor_server_ksserverroomscript_cluster" id="ks_reactor_server_ksserverroomscript_cluster"></a>

Cluster interface

```csharp
public ksICluster Cluster { get; }
```

#### Property Value

[ksICluster](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksicluster.md)

### Physics <a href="#ks_reactor_server_ksserverroomscript_physics" id="ks_reactor_server_ksserverroomscript_physics"></a>

Physics API

```csharp
public ksBaseServerPhysics Physics { get; }
```

#### Property Value

[ksBaseServerPhysics](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaseserverphysics.md)

### Properties <a href="#ks_reactor_server_ksserverroomscript_properties" id="ks_reactor_server_ksserverroomscript_properties"></a>

Room properties

```csharp
public ksPropertyMap Properties { get; }
```

#### Property Value

ksPropertyMap

### Room <a href="#ks_reactor_server_ksserverroomscript_room" id="ks_reactor_server_ksserverroomscript_room"></a>

Access the underlying room

```csharp
public ksIServerRoom Room { get; }
```

#### Property Value

[ksIServerRoom](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverroom.md)

### Time <a href="#ks_reactor_server_ksserverroomscript_time" id="ks_reactor_server_ksserverroomscript_time"></a>

Access the room time

```csharp
public ksServerTime Time { get; }
```

#### Property Value

[ksServerTime](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksservertime.md)

## Methods

### Authenticate(ksIServerPlayer, ksMultiType\[]) <a href="#ks_reactor_server_ksserverroomscript_authenticate_ks_reactor_server_ksiserverplayer_ks_reactor_ksmul" id="ks_reactor_server_ksserverroomscript_authenticate_ks_reactor_server_ksiserverplayer_ks_reactor_ksmul"></a>

Authentication methods are called prior to a player joining the server. The default behavior is to return 0 (approved) for all connections. If any one authenication method returns a non-zero value, the player will be sent an authentication failure id before closing the connection.

```csharp
[Obsolete("Use 'Room.OnAuthenticate += handler' instead.")]
public virtual uint Authenticate(ksIServerPlayer player, ksMultiType[] args)
```

#### Parameters

`player` [ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)

`args` ksMultiType\[]

#### Returns

[uint](https://learn.microsoft.com/dotnet/api/system.uint32)

authentication failure id

### CreateVirtualPlayer(params ksMultiType\[]) <a href="#ks_reactor_server_ksserverroomscript_createvirtualplayer_ks_reactor_ksmultitype" id="ks_reactor_server_ksserverroomscript_createvirtualplayer_ks_reactor_ksmultitype"></a>

Create a virtual player and pass authentication arguments

```csharp
public void CreateVirtualPlayer(params ksMultiType[] authArgs)
```

#### Parameters

`authArgs` ksMultiType\[]

authentication arguments

### HasActivity(ActivityFlags) <a href="#ks_reactor_server_ksserverroomscript_hasactivity_ks_reactor_server_ksserverroomscript_activityflags" id="ks_reactor_server_ksserverroomscript_hasactivity_ks_reactor_server_ksserverroomscript_activityflags"></a>

Check for specific server activities.If a combination of flags is checked then the result will return true if any of the flags are set.

```csharp
public bool HasActivity(ksServerRoomScript.ActivityFlags flag)
```

#### Parameters

`flag` [ksServerRoomScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript.md).[ActivityFlags](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript/ks.reactor.server.ksserverroomscript.activityflags.md)

#### Returns

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

true if an activity corresponding to any of the set flags was tracked
