# How to create a plugin

In order to create a plugin follow these steps.

1 ) Go to your BisectHosting server console and type `createplugin YourPluginName` \
You should see the following :&#x20;

<figure><img src="/files/C9SA5V28XAHjSaR8NmvN" alt=""><figcaption></figcaption></figure>

2 ) You can now download your plugin project from /MyPluginsProjects/Tutorial.zip in the **Files** tab.

3 ) After extracting it somewhere on your computer, place all the dll's from your game folder in `Schedule I/Schedule I Data/Managed` in the **GameBinaries** folder as shown below.

<figure><img src="/files/add1rONkcqVJ2Bd3CTaE" alt=""><figcaption></figcaption></figure>

4 ) You can now open your visual studio project and start coding !

<figure><img src="/files/8YwZnBGd0eue1PSYlAYn" alt=""><figcaption></figcaption></figure>

5 ) Let's load your plugin.\
In order to load your plugins there's multiple ways here's some of them : \
\
&#x20; \- You can build your solution by right clicking it and selecting Build Solution which will generate a .hplugin file. If you simply upload this .hplugin file to your server in the plugins folder it'll work.\
However this is a bit annoying when developing.\
\
&#x20;\- The recommended way to create plugins on BisectHosting is simply to mount your Bisect SFTP server to a drive in Windows. It can be done by following this tutorial for example  <https://sftptogo.com/blog/how-to-map-sftp-as-a-windows-11/>\
Once you've done that, upload your whole plugin project to the plugins folder and create a file with the same name as the folder ending with .dev as shown below :\
![](/files/5zZs4d820ETxKWrNxGpF)\
Now your plugin should also load without being in an .hplugin file.\
It also means that every time you change your code it'll be uploaded on the server.

## Server Commands

The server software has various commands to help you during the development of your plugin.\
\
`refreshplugins` - will re-fetch the plugins in the plugins folder. Useful if you just uploaded a new one.\
`reloadplugin Name` - will reload the plugin with specified name.\
`unloadplugin Name` - will unload the plugin with specified name.\
`loadplugin Name` - will load the plugin with specified name.\
`reloadplugins` - will reload all plugins at once.\
`toggleclientapilogging` - will toggle the logs of client api calls (see more here).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://schedule-i-dedicated-servers.gitbook.io/docs/creating-plugins/how-to-create-a-plugin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
