Compare commits

..

7 Commits

Author SHA1 Message Date
76b568c248 Update TODOs 2023-07-24 05:17:23 +03:00
4c7f5ac14b Update TODOs 2023-07-24 05:16:25 +03:00
28386a0300 Update TODOs 2023-07-24 05:14:46 +03:00
8140b3347a Update docs 2023-07-24 05:11:58 +03:00
4276eb0fdb Use encoding="CP1251" for lua plugins; 2023-07-24 04:58:08 +03:00
d92aae7c47 I hate cobalt: cobaltSysChar!!!!!!!!! 2023-07-24 04:54:55 +03:00
6ccbe99d47 Pretty errors 2023-07-24 04:54:36 +03:00
6 changed files with 25 additions and 55 deletions

View File

@ -6,7 +6,7 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
## TODOs ## TODOs
- [x] Server core - [x] Server core:
- [x] BeamMP System: - [x] BeamMP System:
- [x] Private access (Without key, Direct connect) - [x] Private access (Without key, Direct connect)
- [x] Public access (With key, listing in Launcher) - [x] Public access (With key, listing in Launcher)
@ -26,18 +26,14 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
- [x] Delete cars - [x] Delete cars
- [x] Edit cars - [x] Edit cars
- [x] Reset cars - [x] Reset cars
- [x] "ABG:" (compressed data) - [x] "ABG": (compressed data)
- [x] Decompress data - [x] Decompress data
- [x] Compress data - [x] Compress data
- [x] UDP Server part: - [x] UDP Server part:
- [x] Ping - [x] Ping
- [x] Position synchronizations - [x] Position synchronizations
- [x] Additional: - [x] Additional:
- [ ] KuiToi System - [x] Logger:
- [ ] Servers counter
- [ ] Players counter
- [ ] Etc.
- [x] Logger
- [x] Just logging - [x] Just logging
- [x] Log in file - [x] Log in file
- [x] Log history (.1.log, .2.log, ...) - [x] Log history (.1.log, .2.log, ...)
@ -45,13 +41,17 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
- [x] Tabulation - [x] Tabulation
- [x] History - [x] History
- [x] Autocomplete - [x] Autocomplete
- [x] Events System - [x] Events System:
- [x] Call events - [x] Call events
- [x] Create custom events - [x] Create custom events
- [x] Return from events - [x] Return from events
- [x] Async support - [x] Async support
- [ ] Add all events - [ ] Add all events
- [x] Plugins supports - [x] MultiLanguage: (i18n support)
- [ ] Core
- [x] Console
- [x] WebAPI
- [x] Plugins supports:
- [x] Python part: - [x] Python part:
- [x] Load Python plugins - [x] Load Python plugins
- [x] Async support - [x] Async support
@ -62,15 +62,19 @@ BeamingDrive Multiplayer (BeamMP) server compatible with BeamMP clients.
- [x] MP Class - [x] MP Class
- [x] Util class - [x] Util class
- [x] FS class - [x] FS class
- [x] MultiLanguage (i18n support) - [ ] HTTP API Server: (fastapi)
- [ ] Core
- [x] Console
- [x] WebAPI
- [ ] HTTP API Server (fastapi)
- [x] Stop and Start with core - [x] Stop and Start with core
- [x] Configure FastAPI logger - [x] Configure FastAPI logger
- [ ] Sync with event system - [ ] Sync with event system
- [ ] Add methods... - [ ] Add methods...
- [ ] RCON System:
- [ ] Serving
- [ ] Client
- [ ] SSL encryption
- [ ] KuiToi System
- [ ] Servers counter
- [ ] Players counter
- [ ] Etc.
- [ ] [Documentation](./docs/) - [ ] [Documentation](./docs/)
## Installation ## Installation

View File

@ -11,18 +11,6 @@ KiuToi几乎完全支持BeamMP的lua插件所有必要的方法都已经创
#### Cobalt Essentials V1.7.5(免费,[github ↗](https://github.com/prestonelam2003/CobaltEssentials/) #### Cobalt Essentials V1.7.5(免费,[github ↗](https://github.com/prestonelam2003/CobaltEssentials/)
1. 要获取`pluginPath`,需要:`debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")`,因为路径返回值中包含`@`,这破坏了插件。 1. 要获取`pluginPath`,需要:`debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")`,因为路径返回值中包含`@`,这破坏了插件。
2. 必须将所有的`require()`移动到`onInit`之后。
3. 在某些情况下,必须在函数声明之后注册`MP.RegisterEvent`,即:
```lua
--这样不正确,可能无法注册
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
function onPlayerAuth(name, role, isGuest)
-- Some plugin code
end
--这样就可以了
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
```
### 工作原理 ### 工作原理

View File

@ -11,18 +11,6 @@ KiuToi does not support: `MP.Set()`
#### Cobalt Essentials V1.7.5 (Free, [github](https://github.com/prestonelam2003/CobaltEssentials/)) #### Cobalt Essentials V1.7.5 (Free, [github](https://github.com/prestonelam2003/CobaltEssentials/))
1. To obtain `pluginPath`, use: `debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")` as the path returns with `@`, which broke the plugin. 1. To obtain `pluginPath`, use: `debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")` as the path returns with `@`, which broke the plugin.
2. All `require()` statements had to be moved after `onInit`.
3. In some cases, `MP.RegisterEvent` had to be moved after the function declaration, i.e.:
```lua
--This is incorrect, registration may fail
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
function onPlayerAuth(name, role, isGuest)
-- Some plugin code
end
--This is the correct version
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
```
### A Little About How it Works ### A Little About How it Works

View File

@ -11,18 +11,6 @@
#### Cobalt Essentials V1.7.5 (Бесплатный, [github](https://github.com/prestonelam2003/CobaltEssentials/)) #### Cobalt Essentials V1.7.5 (Бесплатный, [github](https://github.com/prestonelam2003/CobaltEssentials/))
1. Для получения `pluginPath` нужно: `debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")` так как пусть возвращается с `@`, что сломало плагин. 1. Для получения `pluginPath` нужно: `debug.getinfo(1).source:gsub("\\","/")` => `debug.getinfo(1).source:gsub("\\","/"):gsub("@", "")` так как пусть возвращается с `@`, что сломало плагин.
2. Пришлось перенести все `require()` за `onInit`
3. В некоторых моментах пришлось перенести `MP.RegisterEvent` уже после объявления функции, т.е.:
```lua
--Вот так не правильно, может не пройти регистрация
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
function onPlayerAuth(name, role, isGuest)
-- Some plugin code
end
--Вот такой вариант пройдёт
MP.RegisterEvent("onPlayerAuth","onPlayerAuth")
```
### Немного о принципе работы ### Немного о принципе работы

View File

@ -152,8 +152,9 @@ class EventsSystem:
funcs_data.append(fd) funcs_data.append(fd)
except Exception as e: except Exception as e:
# TODO: i18n # TODO: i18n
self.log.error(f'Error while calling lua event "{event_name}"; In function: "{func_name}"') self.log.error(f'Error: "{e}" - while calling lua event "{event_name}" with arguments: {args} - '
self.log.exception(e) f'in function: "{func_name}"')
# self.log.exception(e)
else: else:
# TODO: i18n # TODO: i18n
self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. " self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. "

View File

@ -116,8 +116,9 @@ class MP:
funcs_data.append(fd) funcs_data.append(fd)
except Exception as e: except Exception as e:
# TODO: i18n # TODO: i18n
self.log.error(f'Error while calling lua event "{event_name}"; In function: "{func_name}"') self.log.error(f'Error: "{e}" - while calling lua event "{event_name}" with arguments: {args} - '
self.log.exception(e) f'in function: "{func_name}"')
# self.log.exception(e)
else: else:
# TODO: i18n # TODO: i18n
self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. " self.log.warning(f"Event {event_name} does not exist, maybe ev.call_lua_event() or MP.Trigger<>Event()?. "
@ -626,7 +627,7 @@ class LuaPluginsLoader:
for name in self.lua_dirs: for name in self.lua_dirs:
# noinspection PyArgumentList # noinspection PyArgumentList
lua = LuaRuntime(encoding=config.enc, source_encoding=config.enc, unpack_returned_tuples=True) lua = LuaRuntime(encoding="CP1251", source_encoding=config.enc, unpack_returned_tuples=True)
lua_globals = lua.globals() lua_globals = lua.globals()
lua_globals.printRaw = lua.globals().print lua_globals.printRaw = lua.globals().print
lua_globals.exit = lambda x: self.log.info(f"KuiToi: You can't disable server..") lua_globals.exit = lambda x: self.log.info(f"KuiToi: You can't disable server..")