-
Notifications
You must be signed in to change notification settings - Fork 0
/
Server_Plugins.txt
83 lines (68 loc) · 3.27 KB
/
Server_Plugins.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Плагины:
========
Наборы GML-скриптов, выполняемых сервером в различных ситуациях (эвентах).
Хранятся каждый в своей подпапке в data/plugins.
В папке обязательно должен присутствовать файл info.gml (см. ниже).
Каждый плагин - отдельный объект типа o_plugin в игре.
o_plugin:
=========
plug_dir - имя подпапки с плаином
plug_step - тикрейт плагина (сколько тиков ждать перед следующим выполнением ONSTEP)
plug_name - полное имя (описание) плагина
plug_code[] - массив со строками из кода, которые выполняет плагин. Индекс в массиве соответствует номеру эвента.
Новые цвары и команды:
======================
sv_plugins 0/1
plugins_reload
plugin_load PLUGIN_DIR_NAME
plugin_unload PLUGIN_DIR_NAME
plugin_list
plugin_stat PLUGIN_DIR_NAME
Эвенты:
=======
№ /Константа /Выполняется
0: PLUG_ONSTART: При загрузке плагина.
1: PLUG_ONMAPSTART: После загрузки карты.
2: PLUG_ONMAPEND: Перед загрузкой карты.
3: PLUG_ONSTEP: Каждые (sv_fps_max/plug_step) секунд.
4: PLUG_ONCONNECT: При подключении нового игрока. При этом:
IP нового игрока передается плагину в локальную переменную last_plr_ip;
ID нового игрока - в last_plr_id;
Имя нового игрока - в last_plr_name;
Инстанция нового игрока - в last_plr.
5: PLUG_ONDISCONNECT: При отключении игрока.
Те же параметры передаются в те же переменные.
6: PLUG_ONCONCMD: При вводе команды в консоль.
Команда передается в last_con.
7: PLUG_ONCHAT: При появлении нового сообщения в чате.
last_plr = игрок, который прислал сообщение (инст);
last_chat = сообщение (стр).
8: PLUG_ONFRAG: При смерти игрока.
last_scored = убийца (инст);
last_died = убитый (инст);
9: PLUG_ONSCORE: Не используется.
10:PLUG_ONEND: При выгрузке плагина.
info.gml
========
Выполняется перед ONSTART при загрузке плагина.
Должен содержать plug_name, plug_step и plug_code[]. plug_dir в нем не изменять!
Пример:
plug_name = "NAME";
plug_step = 60;
plug_code[EVENT_ID] = loadfile("SCRIPT_FILENAME");
Незаполненные поля plug_code выполняться не будут.
Кроме plugin_load для загрузки плагинов можно использовать файл /cfg/plugins.txt.
Все плагины оттуда будут загружены автоматом при старте сервера.
Новые скрипты, которые рекомендуется использовать в плагинах:
=============================================================
NOTE: все имена файлов считаются относительно папки со скриптом.
loadfile('filename') - грузит .gml-скрипт, убирает оттуда запрещенные кейворды и возвращает скрипт в виде строки.
dofile('filename') - грузит файл, чистит, сразу выполняет. Возвращает true, если без ошибок.
dostring('str') - чистит строку и выполняет ее как код. true если без ошибок.
assert(EXPRESSION, 'STRING') - если EXPRESSION != true, то выводит ошибку STRING в консоль.
ini_load('filename') - грузит ini-файл. То же, что и Ini_open(), но сначала копирует ini из папки со скриптом. Создавать новых не может.
ini_free() - сохраняет изменения в открытом ini и копирует его обратно в папку со скриптом.
whoami() - возвращает plug_dir
getmyname() - возвращает plug_name
getmycode(EVENT_INDEX) - возвращает plug_code[EVENT_INDEX]
getmyspeed() - возвращает plug_speed.