From 13ff3207b25a70fedf86f6a80c06e9a71d2ca2af Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Sat, 15 Jul 2023 16:32:07 +0300 Subject: [PATCH] Update en docs --- docs/en/multilanguage/readme.md | 4 ++ docs/en/plugins/async_example.py | 37 ++++++++++++ docs/en/plugins/example.py | 55 +++++++++--------- docs/en/plugins/readme.md | 96 ++++++++++++++++++++++++++------ docs/en/readme.md | 4 +- docs/en/setup/readme.md | 70 ++++++++++++++++++----- docs/en/web/readme.md | 16 +++++- 7 files changed, 219 insertions(+), 63 deletions(-) create mode 100644 docs/en/plugins/async_example.py diff --git a/docs/en/multilanguage/readme.md b/docs/en/multilanguage/readme.md index e69de29..31a321e 100644 --- a/docs/en/multilanguage/readme.md +++ b/docs/en/multilanguage/readme.md @@ -0,0 +1,4 @@ +# MultiLanguage - i18n Support + +In [example.json](./example.json) you will find a copy of [src/modules/i18n/files/ru.json](../../../src/modules/i18n/files/ru.json).\ +If you want to translate to a language that has not been translated before or update an existing translation, I would be happy to receive your pull requests. diff --git a/docs/en/plugins/async_example.py b/docs/en/plugins/async_example.py new file mode 100644 index 0000000..1244eda --- /dev/null +++ b/docs/en/plugins/async_example.py @@ -0,0 +1,37 @@ +import json + +try: + import KuiToi +except ImportError: + pass + +kt = KuiToi("Example") +log = kt.log +config = {"config_version": 0.1, "sql": {"enabled": False, "host": "127.0.0.1", "port": 3363, "database": "fucklua"}} +cfg_file = "config.json" + + +async def my_event_handler(event_data): + log.info(f"{event_data}") + + +async def load(): + # Инициализация плагина + with open(cfg_file, 'w') as f: + json.dump(config, f) + cgf = config + log.info(cgf) + ev.register_event("my_event", my_event_handler) + log.info("Плагин загружен успешно.") + + +async def start(): + # Запуск процессов плагина + await ev.call_async_event("my_event") + await ev.call_async_event("my_event", "Some data", data="some data too") + log.info("Плагин запустился успешно.") + + +async def unload(): + # Код завершающий все процессы + log.info("Плагин выгружен успешно.") diff --git a/docs/en/plugins/example.py b/docs/en/plugins/example.py index 7d82475..536a170 100644 --- a/docs/en/plugins/example.py +++ b/docs/en/plugins/example.py @@ -1,36 +1,37 @@ -import KuiToi # Import server object +import json -beam = KuiToi("TestPlugin") # Init plugin with name "TestPlugin" -log = beam.log # Use logger from server +try: + import KuiToi +except ImportError: + pass + +kt = KuiToi("Example") +log = kt.log +config = {"config_version": 0.1, "sql": {"enabled": False, "host": "127.0.0.1", "port": 3363, "database": "fucklua"}} +cfg_file = "config.json" -def on_load(): - # When plugin initialization Server uses plugin.load() to load plugin. - # def load(): is really needed - log.info(beam.name) +def my_event_handler(event_data): + log.info(f"{event_data}") -# Events handlers - -def on_started(): - # Simple event handler - log.info("Server starting...") +def load(): + # Инициализация плагина + with open(cfg_file, 'w') as f: + json.dump(config, f) + cgf = config + log.info(cgf) + ev.register_event("my_event", my_event_handler) + log.info("Плагин загружен успешно.") -# Simple event register -beam.register_event("on_started", on_started) +def start(): + # Запуск процессов плагина + ev.call_event("my_event") + ev.call_event("my_event", "Some data", data="some data too") + log.info("Плагин запустился успешно.") -def any_func(data=None): - # Custom event handler - log.info(f"Data from any_func: {data}") - - -# Create custom event -beam.register_event("my_event", any_func) - -# Call custom event -beam.call_event("my_event") -beam.call_event("my_event", "Some data") -# This will be an error since any_func accepts only one argument at the input -beam.call_event("my_event", "Some data", "Some data1") +def unload(): + # Код завершающий все процессы + log.info("Плагин выгружен успешно.") diff --git a/docs/en/plugins/readme.md b/docs/en/plugins/readme.md index bcd9d36..d72234d 100644 --- a/docs/en/plugins/readme.md +++ b/docs/en/plugins/readme.md @@ -1,32 +1,92 @@ -# Plugins System +# Plugin System -## Install -###### (Lib can't ready to use) +## Installing the Library with "Stubs" +###### (This means that it will not work without a server, but the IDE will suggest the API) +###### (The library is still under development) -* From pip:\ +* Using pip:\ `$ pip install KuiToi` -* From source:\ +* From source code:\ `git clone https://github.com/KuiToi/KuiToi-PyLib` ## Example ```python -import KuiToi +try: + import KuiToi +except ImportError: + pass -beam = KuiToi("TestPlugin") -logger = beam.log +kt = KuiToi("Example") +log = kt.log -def load(): # Plugins load from here - print(beam.name) +def my_event_handler(event_data): + log.info(f"{event_data}") -def on_started(): - logger.info("Server starting...") +def load(): + # Plugin initialization + ev.register_event("my_event", my_event_handler) + log.info("Plugin loaded successfully.") -beam.register_event("on_started", on_started) + +def start(): + # Running plugin processes + ev.call_event("my_event") + ev.call_event("my_event", "Some data", data="some data too") + log.info("Plugin started successfully.") + + +def unload(): + # Code that ends all processes + log.info("Plugin unloaded successfully.") ``` -* Basic Events: ['on_started', 'on_auth, 'on_stop'] -* Create new event : `beam.register_event("my_event", my_event_function)` -* Call event: `beam.call_event("my_event")` -* Call event with some data: `beam.call_event("my_event", data, data2)` -* Calls _**can't support**_ like this: `beam.call_event("my_event", data=data)` +* It is recommended to use `open()` after `load()`. Otherwise, use `kt.load()` - creates a file in the `plugin//` folder. +* Creating your own event: `kt.register_event("my_event", my_event_function)` +* Calling an event: `kt.call_event("my_event")` +* Calling an event with data: `kt.call_event("my_event", data, data2=data2)` +* Basic events: _Will write later_ + +## Async Functions + +Async support is available. + +```python +try: + import KuiToi +except ImportError: + pass + +kt = KuiToi("Example") +log = kt.log + + +async def my_event_handler(event_data): + log.info(f"{event_data}") + + +async def load(): + # Plugin initialization + ev.register_event("my_event", my_event_handler) + log.info("Plugin loaded successfully.") + + +async def start(): + # Running plugin processes + await ev.call_async_event("my_event") + await ev.call_async_event("my_event", "Some data", data="some data too") + log.info("Plugin started successfully.") + + +async def unload(): + # Code that ends all processes + log.info("Plugin unloaded successfully.") + +``` + +A more extensive example can also be found in [async_example.py](./async_example.py). + +* Creating your own event: `kt.register_event("my_event", my_event_function)` (register_event checks for function) +* Calling an async event: `kt.call_async_event("my_event")` +* Calling an async event with data: `kt.call_async_event("my_event", data, data2=data2)` +* Basic async events: _Will write later_ \ No newline at end of file diff --git a/docs/en/readme.md b/docs/en/readme.md index c526d91..fdd4d64 100644 --- a/docs/en/readme.md +++ b/docs/en/readme.md @@ -1,7 +1,7 @@ # Documentation for KuiToi Server -#### At the moment, the English documentation is out of date and its usage is not recommended. - +### The documentation is not perfect yet, but it will be one day + 1. Setup and Start server - [here](setup) 2. Plugins and Events system - [here](plugins) 3. MultiLanguage - [here](./multilanguage) diff --git a/docs/en/setup/readme.md b/docs/en/setup/readme.md index f2d2ebe..4851aa6 100644 --- a/docs/en/setup/readme.md +++ b/docs/en/setup/readme.md @@ -1,18 +1,32 @@ -# Hello from KuiToi Server +# Greetings from KuiToi Server -## Start +## Well, let's begin -* Need **Python 3.10.x** to start! -* After cloning use this: +###### _(Here are the commands for Linux)_ + +* **Python 3.10.x** is required to run the server! It won't work on Python 3.11... +* You can check the version of your Python installation with the following command: ```bash -$ python3 --version # Python 3.10.6 -$ python3 main.py --help # Show help message -$ python3 main.py # Start server +python3 --version # Python 3.10.6 +``` +* Clone the repository and navigate to it. +* Install everything that's needed. +* Then, using my "script", remove all unnecessary files and move to the core source code. +```bash +git clone -b Stable https://github.com/kuitoi/KuiToi-Server.git && cd KuiToi-Server +pip install -r requirements.txt +mv ./src/ $HOME/ktsrc/ && rm -rf ./* && mv $HOME/ktsrc/* . && rm -rf $HOME/ktsrc +``` +* Here's how to view information about the server and start it: +```bash +python3 main.py --help # Displays all available commands +python3 main.py # Starts the server ``` -## Setup +## Configuration -* After starting server creating `kuitoi.yaml`; Default: +* After starting the server, a `kuitoi.yaml` file will be created. +* By default, it looks like this: ```yaml !!python/object:modules.ConfigProvider.config_provider.Config Auth: @@ -23,11 +37,39 @@ Game: max_cars: 1 players: 8 Server: - debug: true - description: This server uses KuiToi! + debug: false + description: Welcome to KuiToi Server! + language: en name: KuiToi-Server server_ip: 0.0.0.0 - server_port: 30814 -``` -* Server can't start without BEAM Auth.key + server_port: 30813 +WebAPI: + enabled: false + secret_key: + server_ip: 127.0.0.1 + server_port: 8433 +``` +### Auth + +* If you set `private: false` and do not set a `key`, the server will request a BeamMP key and will not start without it. +* By entering a BeamMP key, the server will appear in the launcher list. +* You can get a key here: [https://beammp.com/k/keys ↗](https://beammp.com/k/keys) + +### Game + +* `map` specifies only the name of the map. That is, open the mod with the map in `map.zip/levels` - the name of the map will be there, and that's what you need to insert. +* `max_cars` - the maximum number of cars per player +* `players` - the maximum number of players + +### Server + +* `debug` - should debug messages be displayed (for experienced users only; slightly affects performance) +* `description` - server description for the BeamMP launcher +* `language` - the language in which the server will run (currently available: en, ru) +* `name` - server name for the BeamMP launcher +* `server_ip` - the IP address to be used by the server (for experienced users only; defaults to 0.0.0.0) +* `server_port` - the port on which the server will run + +### WebAPI +##### _Docs are not ready yet_ \ No newline at end of file diff --git a/docs/en/web/readme.md b/docs/en/web/readme.md index d8e995d..2ba785d 100644 --- a/docs/en/web/readme.md +++ b/docs/en/web/readme.md @@ -1,3 +1,15 @@ -# Web RESP API for the Server +Here's the translation of the readme.txt content: -In development... +# WebAPI for the server + +## Available endpoints + +* `/stop`: + * Required parameters: + * `secret_key` - The key specified in the server configuration + + +* `/event.get` + * The endpoint is not yet ready + * Required parameters: + * `secret_key` - The key specified in the server configuration