# Creating Additional Networked Class

{% hint style="warning" %}
All Additional Networked classes must be placed under namespace **Plugin.Additional**\
Additional Networked classes use same logic as Room Event classes, because have same logic and spawns every time, unlike room classes, which require the room to exist.\
Don't forget to add class name to **MustSpawnClasses** array in **Plugin Info**.
{% endhint %}

### Class Functions

* Init() - <mark style="color:green;">\[OPTIONAL]</mark> class initialization.
* Update() - <mark style="color:green;">\[OPTIONAL]</mark> called every frame.

### Local Properties

* netEvent - return NetworkedEvent class.&#x20;

### Local Functions

* SendToEveryone(string FunctionName, params object\[] arguments) - send command to every player to call function with arguments.
* SendToClient(string FunctionName, NetworkConnection connection, params object\[] arguments) - send command to player with connection to call function with arguments.
* SendToServer(string FunctionName, params object\[] arguments) - send command to server to call function with arguments.
* Invoke(Function, float seconds) - same logic as UnityEngine.Object.Invoke, call function after time.

### Example

```csharp
using UnityEngine;

namespace Plugin.Additional
{
    public class TestCommunication : Akequ.Base.Room
    {
        public override void Init()
        {
            if (netEvent.isClient)
            {
                SendToServer("GetFromClient", "Test");
            }
        }
        
        public void GetFromClient(string someData, Mirror.NetworkConnectionToClient conn)
        {
            Debug.Log($"Got From Client: {someData}");
            SendToClient("GetFromServer", conn, "Test", 35);
        }
        
        public void GetFromServer(string data, int secData)
        {
            Debug.Log($"Got From Server: {data}, {secData}");
        }
    }
}
```

Example Solution can be downloaded here:\
[Link to archive](https://drive.google.com/file/d/1ijE_9o59W3Cpne86GQN3479spnhbinYT/view?usp=sharing)

### Testing

Now we can compile this plugin and move library to server plugins folder according to [folder-structure](folder-structure "mention")\
\
Now we can connect to server and see our message:

<figure><img src="https://3755727708-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXkmdCU0cuedNesyX1dbA%2Fuploads%2FWAaLt2g11K1waoH5IWwD%2Fimage.png?alt=media&#x26;token=7b2832ab-975c-42b9-8003-7db6e5588a01" alt=""><figcaption></figcaption></figure>
