75 lines
2.8 KiB
Markdown
75 lines
2.8 KiB
Markdown
|
|
# Getting started
|
|
|
|
## Resources and Scripts
|
|
|
|
A **Script** stands for class that inherits from RageCoop's script class ( [ServerScript](api/RageCoop.Server.Scripting.ServerScript.html) and [ClientScript](api/RageCoop.Client.Scripting.ClientScript.html) ) and will be loaded at runtime, one assembly can have multiple scripts in it.
|
|
|
|
A **Resource** consists of one or more assemblies and other files. Server-side resource will be loaded at startup and is isolated from other resources, while client-side resource will be sent to each client and loaded after they connected to the server. A **Resource** can either be in a folder or packed inside a zip archive.
|
|
|
|
|
|
## Directory structure
|
|
|
|
Below is the server's directory structure
|
|
```
|
|
ServerRoot
|
|
│ Settings.xml
|
|
| RageCoop.Server.exe
|
|
│
|
|
└───Resources
|
|
└───Server
|
|
│ │ RageCoop.Resources.Management.zip
|
|
│ │ RageCoop.Resources.FreeRoam.Server.zip
|
|
│ │
|
|
│
|
|
│───Client
|
|
│ │ RageCoop.Resources.FreeRoam.Client.zip
|
|
│ │
|
|
│
|
|
└───Temp
|
|
```
|
|
### Settings.xml
|
|
|
|
This file will be generated first time you started the server, you can then change the server's configuration option by editing it, refer to [ServerSettings](api/RageCoop.Server.ServerSettings.html) for detailed description.
|
|
|
|
## Server Reource
|
|
|
|
To create a server resource:
|
|
1. Create a C# class library project targeting .NET 6.0.
|
|
2. Add reference to **RageCoop.Server.dll** and **RageCoop.Core.dll**.
|
|
3. Add following namespace(s):
|
|
```
|
|
using RageCoop.Server.Scripting;
|
|
|
|
// Optional
|
|
using RageCoop.Server;
|
|
using RageCoop.Core.Scripting;
|
|
using RageCoop.Core;
|
|
|
|
```
|
|
4. Inherit a class from [ServerScript](api/RageCoop.Server.Scripting.ServerScript.html).
|
|
5. Implement `OnStart()` and `OnStop()`, your cs file should look like this:
|
|
```
|
|
using RageCoop.Server.Scripting;
|
|
|
|
namespace NiceGuy.MyFirstResource
|
|
{
|
|
public class Main : ServerScript
|
|
{
|
|
public override void OnStart()
|
|
{
|
|
// Initiate your script here
|
|
}
|
|
public override void OnStop()
|
|
{
|
|
// Free all resources and perform cleanup
|
|
}
|
|
}
|
|
}
|
|
```
|
|
6. Now you can have some fun by using the [API](api/RageCoop.Server.Scripting.API.html) instance, please refer to the [GitHub repo](https://github.com/RAGECOOP/GTAV-RESOURCES) for more examples.
|
|
7. For convenience, you can create a symlink in `ServerRoot/Resources/Server/NiceGuy.MyFirstResource` targeting your output folder:
|
|
```
|
|
mklink /d ServerRoot/Resources/Server/NiceGuy.MyFirstResource C:/MyRepos/NiceGuy.MyFirstResource/bin/Debug
|
|
```
|
|
8. That's it! Start your server and you should see your resource loading. |